// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.26.0
// 	protoc        v3.6.1
// source: routerrpc/router.proto

package routerrpc

import (
	lnrpc "github.com/lightningnetwork/lnd/lnrpc"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	reflect "reflect"
	sync "sync"
)

const (
	// Verify that this generated code is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	// Verify that runtime/protoimpl is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

type FailureDetail int32

const (
	FailureDetail_UNKNOWN                 FailureDetail = 0
	FailureDetail_NO_DETAIL               FailureDetail = 1
	FailureDetail_ONION_DECODE            FailureDetail = 2
	FailureDetail_LINK_NOT_ELIGIBLE       FailureDetail = 3
	FailureDetail_ON_CHAIN_TIMEOUT        FailureDetail = 4
	FailureDetail_HTLC_EXCEEDS_MAX        FailureDetail = 5
	FailureDetail_INSUFFICIENT_BALANCE    FailureDetail = 6
	FailureDetail_INCOMPLETE_FORWARD      FailureDetail = 7
	FailureDetail_HTLC_ADD_FAILED         FailureDetail = 8
	FailureDetail_FORWARDS_DISABLED       FailureDetail = 9
	FailureDetail_INVOICE_CANCELED        FailureDetail = 10
	FailureDetail_INVOICE_UNDERPAID       FailureDetail = 11
	FailureDetail_INVOICE_EXPIRY_TOO_SOON FailureDetail = 12
	FailureDetail_INVOICE_NOT_OPEN        FailureDetail = 13
	FailureDetail_MPP_INVOICE_TIMEOUT     FailureDetail = 14
	FailureDetail_ADDRESS_MISMATCH        FailureDetail = 15
	FailureDetail_SET_TOTAL_MISMATCH      FailureDetail = 16
	FailureDetail_SET_TOTAL_TOO_LOW       FailureDetail = 17
	FailureDetail_SET_OVERPAID            FailureDetail = 18
	FailureDetail_UNKNOWN_INVOICE         FailureDetail = 19
	FailureDetail_INVALID_KEYSEND         FailureDetail = 20
	FailureDetail_MPP_IN_PROGRESS         FailureDetail = 21
	FailureDetail_CIRCULAR_ROUTE          FailureDetail = 22
)

// Enum value maps for FailureDetail.
var (
	FailureDetail_name = map[int32]string{
		0:  "UNKNOWN",
		1:  "NO_DETAIL",
		2:  "ONION_DECODE",
		3:  "LINK_NOT_ELIGIBLE",
		4:  "ON_CHAIN_TIMEOUT",
		5:  "HTLC_EXCEEDS_MAX",
		6:  "INSUFFICIENT_BALANCE",
		7:  "INCOMPLETE_FORWARD",
		8:  "HTLC_ADD_FAILED",
		9:  "FORWARDS_DISABLED",
		10: "INVOICE_CANCELED",
		11: "INVOICE_UNDERPAID",
		12: "INVOICE_EXPIRY_TOO_SOON",
		13: "INVOICE_NOT_OPEN",
		14: "MPP_INVOICE_TIMEOUT",
		15: "ADDRESS_MISMATCH",
		16: "SET_TOTAL_MISMATCH",
		17: "SET_TOTAL_TOO_LOW",
		18: "SET_OVERPAID",
		19: "UNKNOWN_INVOICE",
		20: "INVALID_KEYSEND",
		21: "MPP_IN_PROGRESS",
		22: "CIRCULAR_ROUTE",
	}
	FailureDetail_value = map[string]int32{
		"UNKNOWN":                 0,
		"NO_DETAIL":               1,
		"ONION_DECODE":            2,
		"LINK_NOT_ELIGIBLE":       3,
		"ON_CHAIN_TIMEOUT":        4,
		"HTLC_EXCEEDS_MAX":        5,
		"INSUFFICIENT_BALANCE":    6,
		"INCOMPLETE_FORWARD":      7,
		"HTLC_ADD_FAILED":         8,
		"FORWARDS_DISABLED":       9,
		"INVOICE_CANCELED":        10,
		"INVOICE_UNDERPAID":       11,
		"INVOICE_EXPIRY_TOO_SOON": 12,
		"INVOICE_NOT_OPEN":        13,
		"MPP_INVOICE_TIMEOUT":     14,
		"ADDRESS_MISMATCH":        15,
		"SET_TOTAL_MISMATCH":      16,
		"SET_TOTAL_TOO_LOW":       17,
		"SET_OVERPAID":            18,
		"UNKNOWN_INVOICE":         19,
		"INVALID_KEYSEND":         20,
		"MPP_IN_PROGRESS":         21,
		"CIRCULAR_ROUTE":          22,
	}
)

func (x FailureDetail) Enum() *FailureDetail {
	p := new(FailureDetail)
	*p = x
	return p
}

func (x FailureDetail) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (FailureDetail) Descriptor() protoreflect.EnumDescriptor {
	return file_routerrpc_router_proto_enumTypes[0].Descriptor()
}

func (FailureDetail) Type() protoreflect.EnumType {
	return &file_routerrpc_router_proto_enumTypes[0]
}

func (x FailureDetail) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use FailureDetail.Descriptor instead.
func (FailureDetail) EnumDescriptor() ([]byte, []int) {
	return file_routerrpc_router_proto_rawDescGZIP(), []int{0}
}

type PaymentState int32

const (
	//
	//Payment is still in flight.
	PaymentState_IN_FLIGHT PaymentState = 0
	//
	//Payment completed successfully.
	PaymentState_SUCCEEDED PaymentState = 1
	//
	//There are more routes to try, but the payment timeout was exceeded.
	PaymentState_FAILED_TIMEOUT PaymentState = 2
	//
	//All possible routes were tried and failed permanently. Or were no
	//routes to the destination at all.
	PaymentState_FAILED_NO_ROUTE PaymentState = 3
	//
	//A non-recoverable error has occured.
	PaymentState_FAILED_ERROR PaymentState = 4
	//
	//Payment details incorrect (unknown hash, invalid amt or
	//invalid final cltv delta)
	PaymentState_FAILED_INCORRECT_PAYMENT_DETAILS PaymentState = 5
	//
	//Insufficient local balance.
	PaymentState_FAILED_INSUFFICIENT_BALANCE PaymentState = 6
)

// Enum value maps for PaymentState.
var (
	PaymentState_name = map[int32]string{
		0: "IN_FLIGHT",
		1: "SUCCEEDED",
		2: "FAILED_TIMEOUT",
		3: "FAILED_NO_ROUTE",
		4: "FAILED_ERROR",
		5: "FAILED_INCORRECT_PAYMENT_DETAILS",
		6: "FAILED_INSUFFICIENT_BALANCE",
	}
	PaymentState_value = map[string]int32{
		"IN_FLIGHT":                        0,
		"SUCCEEDED":                        1,
		"FAILED_TIMEOUT":                   2,
		"FAILED_NO_ROUTE":                  3,
		"FAILED_ERROR":                     4,
		"FAILED_INCORRECT_PAYMENT_DETAILS": 5,
		"FAILED_INSUFFICIENT_BALANCE":      6,
	}
)

func (x PaymentState) Enum() *PaymentState {
	p := new(PaymentState)
	*p = x
	return p
}

func (x PaymentState) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (PaymentState) Descriptor() protoreflect.EnumDescriptor {
	return file_routerrpc_router_proto_enumTypes[1].Descriptor()
}

func (PaymentState) Type() protoreflect.EnumType {
	return &file_routerrpc_router_proto_enumTypes[1]
}

func (x PaymentState) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use PaymentState.Descriptor instead.
func (PaymentState) EnumDescriptor() ([]byte, []int) {
	return file_routerrpc_router_proto_rawDescGZIP(), []int{1}
}

type ResolveHoldForwardAction int32

const (
	ResolveHoldForwardAction_SETTLE ResolveHoldForwardAction = 0
	ResolveHoldForwardAction_FAIL   ResolveHoldForwardAction = 1
	ResolveHoldForwardAction_RESUME ResolveHoldForwardAction = 2
)

// Enum value maps for ResolveHoldForwardAction.
var (
	ResolveHoldForwardAction_name = map[int32]string{
		0: "SETTLE",
		1: "FAIL",
		2: "RESUME",
	}
	ResolveHoldForwardAction_value = map[string]int32{
		"SETTLE": 0,
		"FAIL":   1,
		"RESUME": 2,
	}
)

func (x ResolveHoldForwardAction) Enum() *ResolveHoldForwardAction {
	p := new(ResolveHoldForwardAction)
	*p = x
	return p
}

func (x ResolveHoldForwardAction) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (ResolveHoldForwardAction) Descriptor() protoreflect.EnumDescriptor {
	return file_routerrpc_router_proto_enumTypes[2].Descriptor()
}

func (ResolveHoldForwardAction) Type() protoreflect.EnumType {
	return &file_routerrpc_router_proto_enumTypes[2]
}

func (x ResolveHoldForwardAction) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use ResolveHoldForwardAction.Descriptor instead.
func (ResolveHoldForwardAction) EnumDescriptor() ([]byte, []int) {
	return file_routerrpc_router_proto_rawDescGZIP(), []int{2}
}

type ChanStatusAction int32

const (
	ChanStatusAction_ENABLE  ChanStatusAction = 0
	ChanStatusAction_DISABLE ChanStatusAction = 1
	ChanStatusAction_AUTO    ChanStatusAction = 2
)

// Enum value maps for ChanStatusAction.
var (
	ChanStatusAction_name = map[int32]string{
		0: "ENABLE",
		1: "DISABLE",
		2: "AUTO",
	}
	ChanStatusAction_value = map[string]int32{
		"ENABLE":  0,
		"DISABLE": 1,
		"AUTO":    2,
	}
)

func (x ChanStatusAction) Enum() *ChanStatusAction {
	p := new(ChanStatusAction)
	*p = x
	return p
}

func (x ChanStatusAction) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (ChanStatusAction) Descriptor() protoreflect.EnumDescriptor {
	return file_routerrpc_router_proto_enumTypes[3].Descriptor()
}

func (ChanStatusAction) Type() protoreflect.EnumType {
	return &file_routerrpc_router_proto_enumTypes[3]
}

func (x ChanStatusAction) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use ChanStatusAction.Descriptor instead.
func (ChanStatusAction) EnumDescriptor() ([]byte, []int) {
	return file_routerrpc_router_proto_rawDescGZIP(), []int{3}
}

type HtlcEvent_EventType int32

const (
	HtlcEvent_UNKNOWN HtlcEvent_EventType = 0
	HtlcEvent_SEND    HtlcEvent_EventType = 1
	HtlcEvent_RECEIVE HtlcEvent_EventType = 2
	HtlcEvent_FORWARD HtlcEvent_EventType = 3
)

// Enum value maps for HtlcEvent_EventType.
var (
	HtlcEvent_EventType_name = map[int32]string{
		0: "UNKNOWN",
		1: "SEND",
		2: "RECEIVE",
		3: "FORWARD",
	}
	HtlcEvent_EventType_value = map[string]int32{
		"UNKNOWN": 0,
		"SEND":    1,
		"RECEIVE": 2,
		"FORWARD": 3,
	}
)

func (x HtlcEvent_EventType) Enum() *HtlcEvent_EventType {
	p := new(HtlcEvent_EventType)
	*p = x
	return p
}

func (x HtlcEvent_EventType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (HtlcEvent_EventType) Descriptor() protoreflect.EnumDescriptor {
	return file_routerrpc_router_proto_enumTypes[4].Descriptor()
}

func (HtlcEvent_EventType) Type() protoreflect.EnumType {
	return &file_routerrpc_router_proto_enumTypes[4]
}

func (x HtlcEvent_EventType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use HtlcEvent_EventType.Descriptor instead.
func (HtlcEvent_EventType) EnumDescriptor() ([]byte, []int) {
	return file_routerrpc_router_proto_rawDescGZIP(), []int{24, 0}
}

type SendPaymentRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The identity pubkey of the payment recipient
	Dest []byte `protobuf:"bytes,1,opt,name=dest,proto3" json:"dest,omitempty"`
	//
	//Number of satoshis to send.
	//
	//The fields amt and amt_msat are mutually exclusive.
	Amt int64 `protobuf:"varint,2,opt,name=amt,proto3" json:"amt,omitempty"`
	//
	//Number of millisatoshis to send.
	//
	//The fields amt and amt_msat are mutually exclusive.
	AmtMsat int64 `protobuf:"varint,12,opt,name=amt_msat,json=amtMsat,proto3" json:"amt_msat,omitempty"`
	// The hash to use within the payment's HTLC
	PaymentHash []byte `protobuf:"bytes,3,opt,name=payment_hash,json=paymentHash,proto3" json:"payment_hash,omitempty"`
	//
	//The CLTV delta from the current height that should be used to set the
	//timelock for the final hop.
	FinalCltvDelta int32 `protobuf:"varint,4,opt,name=final_cltv_delta,json=finalCltvDelta,proto3" json:"final_cltv_delta,omitempty"`
	// An optional payment addr to be included within the last hop of the route.
	PaymentAddr []byte `protobuf:"bytes,20,opt,name=payment_addr,json=paymentAddr,proto3" json:"payment_addr,omitempty"`
	//
	//A bare-bones invoice for a payment within the Lightning Network.  With the
	//details of the invoice, the sender has all the data necessary to send a
	//payment to the recipient. The amount in the payment request may be zero. In
	//that case it is required to set the amt field as well. If no payment request
	//is specified, the following fields are required: dest, amt and payment_hash.
	PaymentRequest string `protobuf:"bytes,5,opt,name=payment_request,json=paymentRequest,proto3" json:"payment_request,omitempty"`
	//
	//An upper limit on the amount of time we should spend when attempting to
	//fulfill the payment. This is expressed in seconds. If we cannot make a
	//successful payment within this time frame, an error will be returned.
	//This field must be non-zero.
	TimeoutSeconds int32 `protobuf:"varint,6,opt,name=timeout_seconds,json=timeoutSeconds,proto3" json:"timeout_seconds,omitempty"`
	//
	//The maximum number of satoshis that will be paid as a fee of the payment.
	//If this field is left to the default value of 0, only zero-fee routes will
	//be considered. This usually means single hop routes connecting directly to
	//the destination. To send the payment without a fee limit, use max int here.
	//
	//The fields fee_limit_sat and fee_limit_msat are mutually exclusive.
	FeeLimitSat int64 `protobuf:"varint,7,opt,name=fee_limit_sat,json=feeLimitSat,proto3" json:"fee_limit_sat,omitempty"`
	//
	//The maximum number of millisatoshis that will be paid as a fee of the
	//payment. If this field is left to the default value of 0, only zero-fee
	//routes will be considered. This usually means single hop routes connecting
	//directly to the destination. To send the payment without a fee limit, use
	//max int here.
	//
	//The fields fee_limit_sat and fee_limit_msat are mutually exclusive.
	FeeLimitMsat int64 `protobuf:"varint,13,opt,name=fee_limit_msat,json=feeLimitMsat,proto3" json:"fee_limit_msat,omitempty"`
	//
	//Deprecated, use outgoing_chan_ids. The channel id of the channel that must
	//be taken to the first hop. If zero, any channel may be used (unless
	//outgoing_chan_ids are set).
	//
	// Deprecated: Do not use.
	OutgoingChanId uint64 `protobuf:"varint,8,opt,name=outgoing_chan_id,json=outgoingChanId,proto3" json:"outgoing_chan_id,omitempty"`
	//
	//The channel ids of the channels are allowed for the first hop. If empty,
	//any channel may be used.
	OutgoingChanIds []uint64 `protobuf:"varint,19,rep,packed,name=outgoing_chan_ids,json=outgoingChanIds,proto3" json:"outgoing_chan_ids,omitempty"`
	//
	//The pubkey of the last hop of the route. If empty, any hop may be used.
	LastHopPubkey []byte `protobuf:"bytes,14,opt,name=last_hop_pubkey,json=lastHopPubkey,proto3" json:"last_hop_pubkey,omitempty"`
	//
	//An optional maximum total time lock for the route. This should not exceed
	//lnd's `--max-cltv-expiry` setting. If zero, then the value of
	//`--max-cltv-expiry` is enforced.
	CltvLimit int32 `protobuf:"varint,9,opt,name=cltv_limit,json=cltvLimit,proto3" json:"cltv_limit,omitempty"`
	//
	//Optional route hints to reach the destination through private channels.
	RouteHints []*lnrpc.RouteHint `protobuf:"bytes,10,rep,name=route_hints,json=routeHints,proto3" json:"route_hints,omitempty"`
	//
	//An optional field that can be used to pass an arbitrary set of TLV records
	//to a peer which understands the new records. This can be used to pass
	//application specific data during the payment attempt. Record types are
	//required to be in the custom range >= 65536. When using REST, the values
	//must be encoded as base64.
	DestCustomRecords map[uint64][]byte `protobuf:"bytes,11,rep,name=dest_custom_records,json=destCustomRecords,proto3" json:"dest_custom_records,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	// If set, circular payments to self are permitted.
	AllowSelfPayment bool `protobuf:"varint,15,opt,name=allow_self_payment,json=allowSelfPayment,proto3" json:"allow_self_payment,omitempty"`
	//
	//Features assumed to be supported by the final node. All transitive feature
	//dependencies must also be set properly. For a given feature bit pair, either
	//optional or remote may be set, but not both. If this field is nil or empty,
	//the router will try to load destination features from the graph as a
	//fallback.
	DestFeatures []lnrpc.FeatureBit `protobuf:"varint,16,rep,packed,name=dest_features,json=destFeatures,proto3,enum=lnrpc.FeatureBit" json:"dest_features,omitempty"`
	//
	//The maximum number of partial payments that may be use to complete the full
	//amount.
	MaxParts uint32 `protobuf:"varint,17,opt,name=max_parts,json=maxParts,proto3" json:"max_parts,omitempty"`
	//
	//If set, only the final payment update is streamed back. Intermediate updates
	//that show which htlcs are still in flight are suppressed.
	NoInflightUpdates bool `protobuf:"varint,18,opt,name=no_inflight_updates,json=noInflightUpdates,proto3" json:"no_inflight_updates,omitempty"`
	//
	//The largest payment split that should be attempted when making a payment if
	//splitting is necessary. Setting this value will effectively cause lnd to
	//split more aggressively, vs only when it thinks it needs to. Note that this
	//value is in milli-satoshis.
	MaxShardSizeMsat uint64 `protobuf:"varint,21,opt,name=max_shard_size_msat,json=maxShardSizeMsat,proto3" json:"max_shard_size_msat,omitempty"`
	//
	//If set, an AMP-payment will be attempted.
	Amp bool `protobuf:"varint,22,opt,name=amp,proto3" json:"amp,omitempty"`
}

func (x *SendPaymentRequest) Reset() {
	*x = SendPaymentRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_routerrpc_router_proto_msgTypes[0]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *SendPaymentRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SendPaymentRequest) ProtoMessage() {}

func (x *SendPaymentRequest) ProtoReflect() protoreflect.Message {
	mi := &file_routerrpc_router_proto_msgTypes[0]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SendPaymentRequest.ProtoReflect.Descriptor instead.
func (*SendPaymentRequest) Descriptor() ([]byte, []int) {
	return file_routerrpc_router_proto_rawDescGZIP(), []int{0}
}

func (x *SendPaymentRequest) GetDest() []byte {
	if x != nil {
		return x.Dest
	}
	return nil
}

func (x *SendPaymentRequest) GetAmt() int64 {
	if x != nil {
		return x.Amt
	}
	return 0
}

func (x *SendPaymentRequest) GetAmtMsat() int64 {
	if x != nil {
		return x.AmtMsat
	}
	return 0
}

func (x *SendPaymentRequest) GetPaymentHash() []byte {
	if x != nil {
		return x.PaymentHash
	}
	return nil
}

func (x *SendPaymentRequest) GetFinalCltvDelta() int32 {
	if x != nil {
		return x.FinalCltvDelta
	}
	return 0
}

func (x *SendPaymentRequest) GetPaymentAddr() []byte {
	if x != nil {
		return x.PaymentAddr
	}
	return nil
}

func (x *SendPaymentRequest) GetPaymentRequest() string {
	if x != nil {
		return x.PaymentRequest
	}
	return ""
}

func (x *SendPaymentRequest) GetTimeoutSeconds() int32 {
	if x != nil {
		return x.TimeoutSeconds
	}
	return 0
}

func (x *SendPaymentRequest) GetFeeLimitSat() int64 {
	if x != nil {
		return x.FeeLimitSat
	}
	return 0
}

func (x *SendPaymentRequest) GetFeeLimitMsat() int64 {
	if x != nil {
		return x.FeeLimitMsat
	}
	return 0
}

// Deprecated: Do not use.
func (x *SendPaymentRequest) GetOutgoingChanId() uint64 {
	if x != nil {
		return x.OutgoingChanId
	}
	return 0
}

func (x *SendPaymentRequest) GetOutgoingChanIds() []uint64 {
	if x != nil {
		return x.OutgoingChanIds
	}
	return nil
}

func (x *SendPaymentRequest) GetLastHopPubkey() []byte {
	if x != nil {
		return x.LastHopPubkey
	}
	return nil
}

func (x *SendPaymentRequest) GetCltvLimit() int32 {
	if x != nil {
		return x.CltvLimit
	}
	return 0
}

func (x *SendPaymentRequest) GetRouteHints() []*lnrpc.RouteHint {
	if x != nil {
		return x.RouteHints
	}
	return nil
}

func (x *SendPaymentRequest) GetDestCustomRecords() map[uint64][]byte {
	if x != nil {
		return x.DestCustomRecords
	}
	return nil
}

func (x *SendPaymentRequest) GetAllowSelfPayment() bool {
	if x != nil {
		return x.AllowSelfPayment
	}
	return false
}

func (x *SendPaymentRequest) GetDestFeatures() []lnrpc.FeatureBit {
	if x != nil {
		return x.DestFeatures
	}
	return nil
}

func (x *SendPaymentRequest) GetMaxParts() uint32 {
	if x != nil {
		return x.MaxParts
	}
	return 0
}

func (x *SendPaymentRequest) GetNoInflightUpdates() bool {
	if x != nil {
		return x.NoInflightUpdates
	}
	return false
}

func (x *SendPaymentRequest) GetMaxShardSizeMsat() uint64 {
	if x != nil {
		return x.MaxShardSizeMsat
	}
	return 0
}

func (x *SendPaymentRequest) GetAmp() bool {
	if x != nil {
		return x.Amp
	}
	return false
}

type TrackPaymentRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The hash of the payment to look up.
	PaymentHash []byte `protobuf:"bytes,1,opt,name=payment_hash,json=paymentHash,proto3" json:"payment_hash,omitempty"`
	//
	//If set, only the final payment update is streamed back. Intermediate updates
	//that show which htlcs are still in flight are suppressed.
	NoInflightUpdates bool `protobuf:"varint,2,opt,name=no_inflight_updates,json=noInflightUpdates,proto3" json:"no_inflight_updates,omitempty"`
}

func (x *TrackPaymentRequest) Reset() {
	*x = TrackPaymentRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_routerrpc_router_proto_msgTypes[1]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *TrackPaymentRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TrackPaymentRequest) ProtoMessage() {}

func (x *TrackPaymentRequest) ProtoReflect() protoreflect.Message {
	mi := &file_routerrpc_router_proto_msgTypes[1]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TrackPaymentRequest.ProtoReflect.Descriptor instead.
func (*TrackPaymentRequest) Descriptor() ([]byte, []int) {
	return file_routerrpc_router_proto_rawDescGZIP(), []int{1}
}

func (x *TrackPaymentRequest) GetPaymentHash() []byte {
	if x != nil {
		return x.PaymentHash
	}
	return nil
}

func (x *TrackPaymentRequest) GetNoInflightUpdates() bool {
	if x != nil {
		return x.NoInflightUpdates
	}
	return false
}

type RouteFeeRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	//
	//The destination once wishes to obtain a routing fee quote to.
	Dest []byte `protobuf:"bytes,1,opt,name=dest,proto3" json:"dest,omitempty"`
	//
	//The amount one wishes to send to the target destination.
	AmtSat int64 `protobuf:"varint,2,opt,name=amt_sat,json=amtSat,proto3" json:"amt_sat,omitempty"`
}

func (x *RouteFeeRequest) Reset() {
	*x = RouteFeeRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_routerrpc_router_proto_msgTypes[2]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *RouteFeeRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RouteFeeRequest) ProtoMessage() {}

func (x *RouteFeeRequest) ProtoReflect() protoreflect.Message {
	mi := &file_routerrpc_router_proto_msgTypes[2]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RouteFeeRequest.ProtoReflect.Descriptor instead.
func (*RouteFeeRequest) Descriptor() ([]byte, []int) {
	return file_routerrpc_router_proto_rawDescGZIP(), []int{2}
}

func (x *RouteFeeRequest) GetDest() []byte {
	if x != nil {
		return x.Dest
	}
	return nil
}

func (x *RouteFeeRequest) GetAmtSat() int64 {
	if x != nil {
		return x.AmtSat
	}
	return 0
}

type RouteFeeResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	//
	//A lower bound of the estimated fee to the target destination within the
	//network, expressed in milli-satoshis.
	RoutingFeeMsat int64 `protobuf:"varint,1,opt,name=routing_fee_msat,json=routingFeeMsat,proto3" json:"routing_fee_msat,omitempty"`
	//
	//An estimate of the worst case time delay that can occur. Note that callers
	//will still need to factor in the final CLTV delta of the last hop into this
	//value.
	TimeLockDelay int64 `protobuf:"varint,2,opt,name=time_lock_delay,json=timeLockDelay,proto3" json:"time_lock_delay,omitempty"`
}

func (x *RouteFeeResponse) Reset() {
	*x = RouteFeeResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_routerrpc_router_proto_msgTypes[3]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *RouteFeeResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RouteFeeResponse) ProtoMessage() {}

func (x *RouteFeeResponse) ProtoReflect() protoreflect.Message {
	mi := &file_routerrpc_router_proto_msgTypes[3]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RouteFeeResponse.ProtoReflect.Descriptor instead.
func (*RouteFeeResponse) Descriptor() ([]byte, []int) {
	return file_routerrpc_router_proto_rawDescGZIP(), []int{3}
}

func (x *RouteFeeResponse) GetRoutingFeeMsat() int64 {
	if x != nil {
		return x.RoutingFeeMsat
	}
	return 0
}

func (x *RouteFeeResponse) GetTimeLockDelay() int64 {
	if x != nil {
		return x.TimeLockDelay
	}
	return 0
}

type SendToRouteRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The payment hash to use for the HTLC.
	PaymentHash []byte `protobuf:"bytes,1,opt,name=payment_hash,json=paymentHash,proto3" json:"payment_hash,omitempty"`
	// Route that should be used to attempt to complete the payment.
	Route *lnrpc.Route `protobuf:"bytes,2,opt,name=route,proto3" json:"route,omitempty"`
}

func (x *SendToRouteRequest) Reset() {
	*x = SendToRouteRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_routerrpc_router_proto_msgTypes[4]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *SendToRouteRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SendToRouteRequest) ProtoMessage() {}

func (x *SendToRouteRequest) ProtoReflect() protoreflect.Message {
	mi := &file_routerrpc_router_proto_msgTypes[4]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SendToRouteRequest.ProtoReflect.Descriptor instead.
func (*SendToRouteRequest) Descriptor() ([]byte, []int) {
	return file_routerrpc_router_proto_rawDescGZIP(), []int{4}
}

func (x *SendToRouteRequest) GetPaymentHash() []byte {
	if x != nil {
		return x.PaymentHash
	}
	return nil
}

func (x *SendToRouteRequest) GetRoute() *lnrpc.Route {
	if x != nil {
		return x.Route
	}
	return nil
}

type SendToRouteResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The preimage obtained by making the payment.
	Preimage []byte `protobuf:"bytes,1,opt,name=preimage,proto3" json:"preimage,omitempty"`
	// The failure message in case the payment failed.
	Failure *lnrpc.Failure `protobuf:"bytes,2,opt,name=failure,proto3" json:"failure,omitempty"`
}

func (x *SendToRouteResponse) Reset() {
	*x = SendToRouteResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_routerrpc_router_proto_msgTypes[5]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *SendToRouteResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SendToRouteResponse) ProtoMessage() {}

func (x *SendToRouteResponse) ProtoReflect() protoreflect.Message {
	mi := &file_routerrpc_router_proto_msgTypes[5]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SendToRouteResponse.ProtoReflect.Descriptor instead.
func (*SendToRouteResponse) Descriptor() ([]byte, []int) {
	return file_routerrpc_router_proto_rawDescGZIP(), []int{5}
}

func (x *SendToRouteResponse) GetPreimage() []byte {
	if x != nil {
		return x.Preimage
	}
	return nil
}

func (x *SendToRouteResponse) GetFailure() *lnrpc.Failure {
	if x != nil {
		return x.Failure
	}
	return nil
}

type ResetMissionControlRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *ResetMissionControlRequest) Reset() {
	*x = ResetMissionControlRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_routerrpc_router_proto_msgTypes[6]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ResetMissionControlRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ResetMissionControlRequest) ProtoMessage() {}

func (x *ResetMissionControlRequest) ProtoReflect() protoreflect.Message {
	mi := &file_routerrpc_router_proto_msgTypes[6]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ResetMissionControlRequest.ProtoReflect.Descriptor instead.
func (*ResetMissionControlRequest) Descriptor() ([]byte, []int) {
	return file_routerrpc_router_proto_rawDescGZIP(), []int{6}
}

type ResetMissionControlResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *ResetMissionControlResponse) Reset() {
	*x = ResetMissionControlResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_routerrpc_router_proto_msgTypes[7]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ResetMissionControlResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ResetMissionControlResponse) ProtoMessage() {}

func (x *ResetMissionControlResponse) ProtoReflect() protoreflect.Message {
	mi := &file_routerrpc_router_proto_msgTypes[7]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ResetMissionControlResponse.ProtoReflect.Descriptor instead.
func (*ResetMissionControlResponse) Descriptor() ([]byte, []int) {
	return file_routerrpc_router_proto_rawDescGZIP(), []int{7}
}

type QueryMissionControlRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *QueryMissionControlRequest) Reset() {
	*x = QueryMissionControlRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_routerrpc_router_proto_msgTypes[8]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *QueryMissionControlRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*QueryMissionControlRequest) ProtoMessage() {}

func (x *QueryMissionControlRequest) ProtoReflect() protoreflect.Message {
	mi := &file_routerrpc_router_proto_msgTypes[8]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use QueryMissionControlRequest.ProtoReflect.Descriptor instead.
func (*QueryMissionControlRequest) Descriptor() ([]byte, []int) {
	return file_routerrpc_router_proto_rawDescGZIP(), []int{8}
}

// QueryMissionControlResponse contains mission control state.
type QueryMissionControlResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Node pair-level mission control state.
	Pairs []*PairHistory `protobuf:"bytes,2,rep,name=pairs,proto3" json:"pairs,omitempty"`
}

func (x *QueryMissionControlResponse) Reset() {
	*x = QueryMissionControlResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_routerrpc_router_proto_msgTypes[9]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *QueryMissionControlResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*QueryMissionControlResponse) ProtoMessage() {}

func (x *QueryMissionControlResponse) ProtoReflect() protoreflect.Message {
	mi := &file_routerrpc_router_proto_msgTypes[9]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use QueryMissionControlResponse.ProtoReflect.Descriptor instead.
func (*QueryMissionControlResponse) Descriptor() ([]byte, []int) {
	return file_routerrpc_router_proto_rawDescGZIP(), []int{9}
}

func (x *QueryMissionControlResponse) GetPairs() []*PairHistory {
	if x != nil {
		return x.Pairs
	}
	return nil
}

type XImportMissionControlRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Node pair-level mission control state to be imported.
	Pairs []*PairHistory `protobuf:"bytes,1,rep,name=pairs,proto3" json:"pairs,omitempty"`
}

func (x *XImportMissionControlRequest) Reset() {
	*x = XImportMissionControlRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_routerrpc_router_proto_msgTypes[10]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *XImportMissionControlRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*XImportMissionControlRequest) ProtoMessage() {}

func (x *XImportMissionControlRequest) ProtoReflect() protoreflect.Message {
	mi := &file_routerrpc_router_proto_msgTypes[10]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use XImportMissionControlRequest.ProtoReflect.Descriptor instead.
func (*XImportMissionControlRequest) Descriptor() ([]byte, []int) {
	return file_routerrpc_router_proto_rawDescGZIP(), []int{10}
}

func (x *XImportMissionControlRequest) GetPairs() []*PairHistory {
	if x != nil {
		return x.Pairs
	}
	return nil
}

type XImportMissionControlResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *XImportMissionControlResponse) Reset() {
	*x = XImportMissionControlResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_routerrpc_router_proto_msgTypes[11]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *XImportMissionControlResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*XImportMissionControlResponse) ProtoMessage() {}

func (x *XImportMissionControlResponse) ProtoReflect() protoreflect.Message {
	mi := &file_routerrpc_router_proto_msgTypes[11]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use XImportMissionControlResponse.ProtoReflect.Descriptor instead.
func (*XImportMissionControlResponse) Descriptor() ([]byte, []int) {
	return file_routerrpc_router_proto_rawDescGZIP(), []int{11}
}

// PairHistory contains the mission control state for a particular node pair.
type PairHistory struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The source node pubkey of the pair.
	NodeFrom []byte `protobuf:"bytes,1,opt,name=node_from,json=nodeFrom,proto3" json:"node_from,omitempty"`
	// The destination node pubkey of the pair.
	NodeTo  []byte    `protobuf:"bytes,2,opt,name=node_to,json=nodeTo,proto3" json:"node_to,omitempty"`
	History *PairData `protobuf:"bytes,7,opt,name=history,proto3" json:"history,omitempty"`
}

func (x *PairHistory) Reset() {
	*x = PairHistory{}
	if protoimpl.UnsafeEnabled {
		mi := &file_routerrpc_router_proto_msgTypes[12]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *PairHistory) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PairHistory) ProtoMessage() {}

func (x *PairHistory) ProtoReflect() protoreflect.Message {
	mi := &file_routerrpc_router_proto_msgTypes[12]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PairHistory.ProtoReflect.Descriptor instead.
func (*PairHistory) Descriptor() ([]byte, []int) {
	return file_routerrpc_router_proto_rawDescGZIP(), []int{12}
}

func (x *PairHistory) GetNodeFrom() []byte {
	if x != nil {
		return x.NodeFrom
	}
	return nil
}

func (x *PairHistory) GetNodeTo() []byte {
	if x != nil {
		return x.NodeTo
	}
	return nil
}

func (x *PairHistory) GetHistory() *PairData {
	if x != nil {
		return x.History
	}
	return nil
}

type PairData struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Time of last failure.
	FailTime int64 `protobuf:"varint,1,opt,name=fail_time,json=failTime,proto3" json:"fail_time,omitempty"`
	//
	//Lowest amount that failed to forward rounded to whole sats. This may be
	//set to zero if the failure is independent of amount.
	FailAmtSat int64 `protobuf:"varint,2,opt,name=fail_amt_sat,json=failAmtSat,proto3" json:"fail_amt_sat,omitempty"`
	//
	//Lowest amount that failed to forward in millisats. This may be
	//set to zero if the failure is independent of amount.
	FailAmtMsat int64 `protobuf:"varint,4,opt,name=fail_amt_msat,json=failAmtMsat,proto3" json:"fail_amt_msat,omitempty"`
	// Time of last success.
	SuccessTime int64 `protobuf:"varint,5,opt,name=success_time,json=successTime,proto3" json:"success_time,omitempty"`
	// Highest amount that we could successfully forward rounded to whole sats.
	SuccessAmtSat int64 `protobuf:"varint,6,opt,name=success_amt_sat,json=successAmtSat,proto3" json:"success_amt_sat,omitempty"`
	// Highest amount that we could successfully forward in millisats.
	SuccessAmtMsat int64 `protobuf:"varint,7,opt,name=success_amt_msat,json=successAmtMsat,proto3" json:"success_amt_msat,omitempty"`
}

func (x *PairData) Reset() {
	*x = PairData{}
	if protoimpl.UnsafeEnabled {
		mi := &file_routerrpc_router_proto_msgTypes[13]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *PairData) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PairData) ProtoMessage() {}

func (x *PairData) ProtoReflect() protoreflect.Message {
	mi := &file_routerrpc_router_proto_msgTypes[13]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PairData.ProtoReflect.Descriptor instead.
func (*PairData) Descriptor() ([]byte, []int) {
	return file_routerrpc_router_proto_rawDescGZIP(), []int{13}
}

func (x *PairData) GetFailTime() int64 {
	if x != nil {
		return x.FailTime
	}
	return 0
}

func (x *PairData) GetFailAmtSat() int64 {
	if x != nil {
		return x.FailAmtSat
	}
	return 0
}

func (x *PairData) GetFailAmtMsat() int64 {
	if x != nil {
		return x.FailAmtMsat
	}
	return 0
}

func (x *PairData) GetSuccessTime() int64 {
	if x != nil {
		return x.SuccessTime
	}
	return 0
}

func (x *PairData) GetSuccessAmtSat() int64 {
	if x != nil {
		return x.SuccessAmtSat
	}
	return 0
}

func (x *PairData) GetSuccessAmtMsat() int64 {
	if x != nil {
		return x.SuccessAmtMsat
	}
	return 0
}

type GetMissionControlConfigRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *GetMissionControlConfigRequest) Reset() {
	*x = GetMissionControlConfigRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_routerrpc_router_proto_msgTypes[14]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *GetMissionControlConfigRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetMissionControlConfigRequest) ProtoMessage() {}

func (x *GetMissionControlConfigRequest) ProtoReflect() protoreflect.Message {
	mi := &file_routerrpc_router_proto_msgTypes[14]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetMissionControlConfigRequest.ProtoReflect.Descriptor instead.
func (*GetMissionControlConfigRequest) Descriptor() ([]byte, []int) {
	return file_routerrpc_router_proto_rawDescGZIP(), []int{14}
}

type GetMissionControlConfigResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	//
	//Mission control's currently active config.
	Config *MissionControlConfig `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"`
}

func (x *GetMissionControlConfigResponse) Reset() {
	*x = GetMissionControlConfigResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_routerrpc_router_proto_msgTypes[15]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *GetMissionControlConfigResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetMissionControlConfigResponse) ProtoMessage() {}

func (x *GetMissionControlConfigResponse) ProtoReflect() protoreflect.Message {
	mi := &file_routerrpc_router_proto_msgTypes[15]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetMissionControlConfigResponse.ProtoReflect.Descriptor instead.
func (*GetMissionControlConfigResponse) Descriptor() ([]byte, []int) {
	return file_routerrpc_router_proto_rawDescGZIP(), []int{15}
}

func (x *GetMissionControlConfigResponse) GetConfig() *MissionControlConfig {
	if x != nil {
		return x.Config
	}
	return nil
}

type SetMissionControlConfigRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	//
	//The config to set for mission control. Note that all values *must* be set,
	//because the full config will be applied.
	Config *MissionControlConfig `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"`
}

func (x *SetMissionControlConfigRequest) Reset() {
	*x = SetMissionControlConfigRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_routerrpc_router_proto_msgTypes[16]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *SetMissionControlConfigRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SetMissionControlConfigRequest) ProtoMessage() {}

func (x *SetMissionControlConfigRequest) ProtoReflect() protoreflect.Message {
	mi := &file_routerrpc_router_proto_msgTypes[16]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SetMissionControlConfigRequest.ProtoReflect.Descriptor instead.
func (*SetMissionControlConfigRequest) Descriptor() ([]byte, []int) {
	return file_routerrpc_router_proto_rawDescGZIP(), []int{16}
}

func (x *SetMissionControlConfigRequest) GetConfig() *MissionControlConfig {
	if x != nil {
		return x.Config
	}
	return nil
}

type SetMissionControlConfigResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *SetMissionControlConfigResponse) Reset() {
	*x = SetMissionControlConfigResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_routerrpc_router_proto_msgTypes[17]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *SetMissionControlConfigResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SetMissionControlConfigResponse) ProtoMessage() {}

func (x *SetMissionControlConfigResponse) ProtoReflect() protoreflect.Message {
	mi := &file_routerrpc_router_proto_msgTypes[17]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SetMissionControlConfigResponse.ProtoReflect.Descriptor instead.
func (*SetMissionControlConfigResponse) Descriptor() ([]byte, []int) {
	return file_routerrpc_router_proto_rawDescGZIP(), []int{17}
}

type MissionControlConfig struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	//
	//The amount of time mission control will take to restore a penalized node
	//or channel back to 50% success probability, expressed in seconds. Setting
	//this value to a higher value will penalize failures for longer, making
	//mission control less likely to route through nodes and channels that we
	//have previously recorded failures for.
	HalfLifeSeconds uint64 `protobuf:"varint,1,opt,name=half_life_seconds,json=halfLifeSeconds,proto3" json:"half_life_seconds,omitempty"`
	//
	//The probability of success mission control should assign to hop in a route
	//where it has no other information available. Higher values will make mission
	//control more willing to try hops that we have no information about, lower
	//values will discourage trying these hops.
	HopProbability float32 `protobuf:"fixed32,2,opt,name=hop_probability,json=hopProbability,proto3" json:"hop_probability,omitempty"`
	//
	//The importance that mission control should place on historical results,
	//expressed as a value in [0;1]. Setting this value to 1 will ignore all
	//historical payments and just use the hop probability to assess the
	//probability of success for each hop. A zero value ignores hop probability
	//completely and relies entirely on historical results, unless none are
	//available.
	Weight float32 `protobuf:"fixed32,3,opt,name=weight,proto3" json:"weight,omitempty"`
	//
	//The maximum number of payment results that mission control will store.
	MaximumPaymentResults uint32 `protobuf:"varint,4,opt,name=maximum_payment_results,json=maximumPaymentResults,proto3" json:"maximum_payment_results,omitempty"`
	//
	//The minimum time that must have passed since the previously recorded failure
	//before we raise the failure amount.
	MinimumFailureRelaxInterval uint64 `protobuf:"varint,5,opt,name=minimum_failure_relax_interval,json=minimumFailureRelaxInterval,proto3" json:"minimum_failure_relax_interval,omitempty"`
}

func (x *MissionControlConfig) Reset() {
	*x = MissionControlConfig{}
	if protoimpl.UnsafeEnabled {
		mi := &file_routerrpc_router_proto_msgTypes[18]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *MissionControlConfig) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MissionControlConfig) ProtoMessage() {}

func (x *MissionControlConfig) ProtoReflect() protoreflect.Message {
	mi := &file_routerrpc_router_proto_msgTypes[18]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use MissionControlConfig.ProtoReflect.Descriptor instead.
func (*MissionControlConfig) Descriptor() ([]byte, []int) {
	return file_routerrpc_router_proto_rawDescGZIP(), []int{18}
}

func (x *MissionControlConfig) GetHalfLifeSeconds() uint64 {
	if x != nil {
		return x.HalfLifeSeconds
	}
	return 0
}

func (x *MissionControlConfig) GetHopProbability() float32 {
	if x != nil {
		return x.HopProbability
	}
	return 0
}

func (x *MissionControlConfig) GetWeight() float32 {
	if x != nil {
		return x.Weight
	}
	return 0
}

func (x *MissionControlConfig) GetMaximumPaymentResults() uint32 {
	if x != nil {
		return x.MaximumPaymentResults
	}
	return 0
}

func (x *MissionControlConfig) GetMinimumFailureRelaxInterval() uint64 {
	if x != nil {
		return x.MinimumFailureRelaxInterval
	}
	return 0
}

type QueryProbabilityRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The source node pubkey of the pair.
	FromNode []byte `protobuf:"bytes,1,opt,name=from_node,json=fromNode,proto3" json:"from_node,omitempty"`
	// The destination node pubkey of the pair.
	ToNode []byte `protobuf:"bytes,2,opt,name=to_node,json=toNode,proto3" json:"to_node,omitempty"`
	// The amount for which to calculate a probability.
	AmtMsat int64 `protobuf:"varint,3,opt,name=amt_msat,json=amtMsat,proto3" json:"amt_msat,omitempty"`
}

func (x *QueryProbabilityRequest) Reset() {
	*x = QueryProbabilityRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_routerrpc_router_proto_msgTypes[19]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *QueryProbabilityRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*QueryProbabilityRequest) ProtoMessage() {}

func (x *QueryProbabilityRequest) ProtoReflect() protoreflect.Message {
	mi := &file_routerrpc_router_proto_msgTypes[19]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use QueryProbabilityRequest.ProtoReflect.Descriptor instead.
func (*QueryProbabilityRequest) Descriptor() ([]byte, []int) {
	return file_routerrpc_router_proto_rawDescGZIP(), []int{19}
}

func (x *QueryProbabilityRequest) GetFromNode() []byte {
	if x != nil {
		return x.FromNode
	}
	return nil
}

func (x *QueryProbabilityRequest) GetToNode() []byte {
	if x != nil {
		return x.ToNode
	}
	return nil
}

func (x *QueryProbabilityRequest) GetAmtMsat() int64 {
	if x != nil {
		return x.AmtMsat
	}
	return 0
}

type QueryProbabilityResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The success probability for the requested pair.
	Probability float64 `protobuf:"fixed64,1,opt,name=probability,proto3" json:"probability,omitempty"`
	// The historical data for the requested pair.
	History *PairData `protobuf:"bytes,2,opt,name=history,proto3" json:"history,omitempty"`
}

func (x *QueryProbabilityResponse) Reset() {
	*x = QueryProbabilityResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_routerrpc_router_proto_msgTypes[20]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *QueryProbabilityResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*QueryProbabilityResponse) ProtoMessage() {}

func (x *QueryProbabilityResponse) ProtoReflect() protoreflect.Message {
	mi := &file_routerrpc_router_proto_msgTypes[20]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use QueryProbabilityResponse.ProtoReflect.Descriptor instead.
func (*QueryProbabilityResponse) Descriptor() ([]byte, []int) {
	return file_routerrpc_router_proto_rawDescGZIP(), []int{20}
}

func (x *QueryProbabilityResponse) GetProbability() float64 {
	if x != nil {
		return x.Probability
	}
	return 0
}

func (x *QueryProbabilityResponse) GetHistory() *PairData {
	if x != nil {
		return x.History
	}
	return nil
}

type BuildRouteRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	//
	//The amount to send expressed in msat. If set to zero, the minimum routable
	//amount is used.
	AmtMsat int64 `protobuf:"varint,1,opt,name=amt_msat,json=amtMsat,proto3" json:"amt_msat,omitempty"`
	//
	//CLTV delta from the current height that should be used for the timelock
	//of the final hop
	FinalCltvDelta int32 `protobuf:"varint,2,opt,name=final_cltv_delta,json=finalCltvDelta,proto3" json:"final_cltv_delta,omitempty"`
	//
	//The channel id of the channel that must be taken to the first hop. If zero,
	//any channel may be used.
	OutgoingChanId uint64 `protobuf:"varint,3,opt,name=outgoing_chan_id,json=outgoingChanId,proto3" json:"outgoing_chan_id,omitempty"`
	//
	//A list of hops that defines the route. This does not include the source hop
	//pubkey.
	HopPubkeys [][]byte `protobuf:"bytes,4,rep,name=hop_pubkeys,json=hopPubkeys,proto3" json:"hop_pubkeys,omitempty"`
	// An optional payment addr to be included within the last hop of the route.
	PaymentAddr []byte `protobuf:"bytes,5,opt,name=payment_addr,json=paymentAddr,proto3" json:"payment_addr,omitempty"`
}

func (x *BuildRouteRequest) Reset() {
	*x = BuildRouteRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_routerrpc_router_proto_msgTypes[21]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *BuildRouteRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*BuildRouteRequest) ProtoMessage() {}

func (x *BuildRouteRequest) ProtoReflect() protoreflect.Message {
	mi := &file_routerrpc_router_proto_msgTypes[21]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use BuildRouteRequest.ProtoReflect.Descriptor instead.
func (*BuildRouteRequest) Descriptor() ([]byte, []int) {
	return file_routerrpc_router_proto_rawDescGZIP(), []int{21}
}

func (x *BuildRouteRequest) GetAmtMsat() int64 {
	if x != nil {
		return x.AmtMsat
	}
	return 0
}

func (x *BuildRouteRequest) GetFinalCltvDelta() int32 {
	if x != nil {
		return x.FinalCltvDelta
	}
	return 0
}

func (x *BuildRouteRequest) GetOutgoingChanId() uint64 {
	if x != nil {
		return x.OutgoingChanId
	}
	return 0
}

func (x *BuildRouteRequest) GetHopPubkeys() [][]byte {
	if x != nil {
		return x.HopPubkeys
	}
	return nil
}

func (x *BuildRouteRequest) GetPaymentAddr() []byte {
	if x != nil {
		return x.PaymentAddr
	}
	return nil
}

type BuildRouteResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	//
	//Fully specified route that can be used to execute the payment.
	Route *lnrpc.Route `protobuf:"bytes,1,opt,name=route,proto3" json:"route,omitempty"`
}

func (x *BuildRouteResponse) Reset() {
	*x = BuildRouteResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_routerrpc_router_proto_msgTypes[22]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *BuildRouteResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*BuildRouteResponse) ProtoMessage() {}

func (x *BuildRouteResponse) ProtoReflect() protoreflect.Message {
	mi := &file_routerrpc_router_proto_msgTypes[22]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use BuildRouteResponse.ProtoReflect.Descriptor instead.
func (*BuildRouteResponse) Descriptor() ([]byte, []int) {
	return file_routerrpc_router_proto_rawDescGZIP(), []int{22}
}

func (x *BuildRouteResponse) GetRoute() *lnrpc.Route {
	if x != nil {
		return x.Route
	}
	return nil
}

type SubscribeHtlcEventsRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *SubscribeHtlcEventsRequest) Reset() {
	*x = SubscribeHtlcEventsRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_routerrpc_router_proto_msgTypes[23]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *SubscribeHtlcEventsRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SubscribeHtlcEventsRequest) ProtoMessage() {}

func (x *SubscribeHtlcEventsRequest) ProtoReflect() protoreflect.Message {
	mi := &file_routerrpc_router_proto_msgTypes[23]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SubscribeHtlcEventsRequest.ProtoReflect.Descriptor instead.
func (*SubscribeHtlcEventsRequest) Descriptor() ([]byte, []int) {
	return file_routerrpc_router_proto_rawDescGZIP(), []int{23}
}

//
//HtlcEvent contains the htlc event that was processed. These are served on a
//best-effort basis; events are not persisted, delivery is not guaranteed
//(in the event of a crash in the switch, forward events may be lost) and
//some events may be replayed upon restart. Events consumed from this package
//should be de-duplicated by the htlc's unique combination of incoming and
//outgoing channel id and htlc id. [EXPERIMENTAL]
type HtlcEvent struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	//
	//The short channel id that the incoming htlc arrived at our node on. This
	//value is zero for sends.
	IncomingChannelId uint64 `protobuf:"varint,1,opt,name=incoming_channel_id,json=incomingChannelId,proto3" json:"incoming_channel_id,omitempty"`
	//
	//The short channel id that the outgoing htlc left our node on. This value
	//is zero for receives.
	OutgoingChannelId uint64 `protobuf:"varint,2,opt,name=outgoing_channel_id,json=outgoingChannelId,proto3" json:"outgoing_channel_id,omitempty"`
	//
	//Incoming id is the index of the incoming htlc in the incoming channel.
	//This value is zero for sends.
	IncomingHtlcId uint64 `protobuf:"varint,3,opt,name=incoming_htlc_id,json=incomingHtlcId,proto3" json:"incoming_htlc_id,omitempty"`
	//
	//Outgoing id is the index of the outgoing htlc in the outgoing channel.
	//This value is zero for receives.
	OutgoingHtlcId uint64 `protobuf:"varint,4,opt,name=outgoing_htlc_id,json=outgoingHtlcId,proto3" json:"outgoing_htlc_id,omitempty"`
	//
	//The time in unix nanoseconds that the event occurred.
	TimestampNs uint64 `protobuf:"varint,5,opt,name=timestamp_ns,json=timestampNs,proto3" json:"timestamp_ns,omitempty"`
	//
	//The event type indicates whether the htlc was part of a send, receive or
	//forward.
	EventType HtlcEvent_EventType `protobuf:"varint,6,opt,name=event_type,json=eventType,proto3,enum=routerrpc.HtlcEvent_EventType" json:"event_type,omitempty"`
	// Types that are assignable to Event:
	//	*HtlcEvent_ForwardEvent
	//	*HtlcEvent_ForwardFailEvent
	//	*HtlcEvent_SettleEvent
	//	*HtlcEvent_LinkFailEvent
	Event isHtlcEvent_Event `protobuf_oneof:"event"`
}

func (x *HtlcEvent) Reset() {
	*x = HtlcEvent{}
	if protoimpl.UnsafeEnabled {
		mi := &file_routerrpc_router_proto_msgTypes[24]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *HtlcEvent) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*HtlcEvent) ProtoMessage() {}

func (x *HtlcEvent) ProtoReflect() protoreflect.Message {
	mi := &file_routerrpc_router_proto_msgTypes[24]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use HtlcEvent.ProtoReflect.Descriptor instead.
func (*HtlcEvent) Descriptor() ([]byte, []int) {
	return file_routerrpc_router_proto_rawDescGZIP(), []int{24}
}

func (x *HtlcEvent) GetIncomingChannelId() uint64 {
	if x != nil {
		return x.IncomingChannelId
	}
	return 0
}

func (x *HtlcEvent) GetOutgoingChannelId() uint64 {
	if x != nil {
		return x.OutgoingChannelId
	}
	return 0
}

func (x *HtlcEvent) GetIncomingHtlcId() uint64 {
	if x != nil {
		return x.IncomingHtlcId
	}
	return 0
}

func (x *HtlcEvent) GetOutgoingHtlcId() uint64 {
	if x != nil {
		return x.OutgoingHtlcId
	}
	return 0
}

func (x *HtlcEvent) GetTimestampNs() uint64 {
	if x != nil {
		return x.TimestampNs
	}
	return 0
}

func (x *HtlcEvent) GetEventType() HtlcEvent_EventType {
	if x != nil {
		return x.EventType
	}
	return HtlcEvent_UNKNOWN
}

func (m *HtlcEvent) GetEvent() isHtlcEvent_Event {
	if m != nil {
		return m.Event
	}
	return nil
}

func (x *HtlcEvent) GetForwardEvent() *ForwardEvent {
	if x, ok := x.GetEvent().(*HtlcEvent_ForwardEvent); ok {
		return x.ForwardEvent
	}
	return nil
}

func (x *HtlcEvent) GetForwardFailEvent() *ForwardFailEvent {
	if x, ok := x.GetEvent().(*HtlcEvent_ForwardFailEvent); ok {
		return x.ForwardFailEvent
	}
	return nil
}

func (x *HtlcEvent) GetSettleEvent() *SettleEvent {
	if x, ok := x.GetEvent().(*HtlcEvent_SettleEvent); ok {
		return x.SettleEvent
	}
	return nil
}

func (x *HtlcEvent) GetLinkFailEvent() *LinkFailEvent {
	if x, ok := x.GetEvent().(*HtlcEvent_LinkFailEvent); ok {
		return x.LinkFailEvent
	}
	return nil
}

type isHtlcEvent_Event interface {
	isHtlcEvent_Event()
}

type HtlcEvent_ForwardEvent struct {
	ForwardEvent *ForwardEvent `protobuf:"bytes,7,opt,name=forward_event,json=forwardEvent,proto3,oneof"`
}

type HtlcEvent_ForwardFailEvent struct {
	ForwardFailEvent *ForwardFailEvent `protobuf:"bytes,8,opt,name=forward_fail_event,json=forwardFailEvent,proto3,oneof"`
}

type HtlcEvent_SettleEvent struct {
	SettleEvent *SettleEvent `protobuf:"bytes,9,opt,name=settle_event,json=settleEvent,proto3,oneof"`
}

type HtlcEvent_LinkFailEvent struct {
	LinkFailEvent *LinkFailEvent `protobuf:"bytes,10,opt,name=link_fail_event,json=linkFailEvent,proto3,oneof"`
}

func (*HtlcEvent_ForwardEvent) isHtlcEvent_Event() {}

func (*HtlcEvent_ForwardFailEvent) isHtlcEvent_Event() {}

func (*HtlcEvent_SettleEvent) isHtlcEvent_Event() {}

func (*HtlcEvent_LinkFailEvent) isHtlcEvent_Event() {}

type HtlcInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The timelock on the incoming htlc.
	IncomingTimelock uint32 `protobuf:"varint,1,opt,name=incoming_timelock,json=incomingTimelock,proto3" json:"incoming_timelock,omitempty"`
	// The timelock on the outgoing htlc.
	OutgoingTimelock uint32 `protobuf:"varint,2,opt,name=outgoing_timelock,json=outgoingTimelock,proto3" json:"outgoing_timelock,omitempty"`
	// The amount of the incoming htlc.
	IncomingAmtMsat uint64 `protobuf:"varint,3,opt,name=incoming_amt_msat,json=incomingAmtMsat,proto3" json:"incoming_amt_msat,omitempty"`
	// The amount of the outgoing htlc.
	OutgoingAmtMsat uint64 `protobuf:"varint,4,opt,name=outgoing_amt_msat,json=outgoingAmtMsat,proto3" json:"outgoing_amt_msat,omitempty"`
}

func (x *HtlcInfo) Reset() {
	*x = HtlcInfo{}
	if protoimpl.UnsafeEnabled {
		mi := &file_routerrpc_router_proto_msgTypes[25]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *HtlcInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*HtlcInfo) ProtoMessage() {}

func (x *HtlcInfo) ProtoReflect() protoreflect.Message {
	mi := &file_routerrpc_router_proto_msgTypes[25]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use HtlcInfo.ProtoReflect.Descriptor instead.
func (*HtlcInfo) Descriptor() ([]byte, []int) {
	return file_routerrpc_router_proto_rawDescGZIP(), []int{25}
}

func (x *HtlcInfo) GetIncomingTimelock() uint32 {
	if x != nil {
		return x.IncomingTimelock
	}
	return 0
}

func (x *HtlcInfo) GetOutgoingTimelock() uint32 {
	if x != nil {
		return x.OutgoingTimelock
	}
	return 0
}

func (x *HtlcInfo) GetIncomingAmtMsat() uint64 {
	if x != nil {
		return x.IncomingAmtMsat
	}
	return 0
}

func (x *HtlcInfo) GetOutgoingAmtMsat() uint64 {
	if x != nil {
		return x.OutgoingAmtMsat
	}
	return 0
}

type ForwardEvent struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Info contains details about the htlc that was forwarded.
	Info *HtlcInfo `protobuf:"bytes,1,opt,name=info,proto3" json:"info,omitempty"`
}

func (x *ForwardEvent) Reset() {
	*x = ForwardEvent{}
	if protoimpl.UnsafeEnabled {
		mi := &file_routerrpc_router_proto_msgTypes[26]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ForwardEvent) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ForwardEvent) ProtoMessage() {}

func (x *ForwardEvent) ProtoReflect() protoreflect.Message {
	mi := &file_routerrpc_router_proto_msgTypes[26]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ForwardEvent.ProtoReflect.Descriptor instead.
func (*ForwardEvent) Descriptor() ([]byte, []int) {
	return file_routerrpc_router_proto_rawDescGZIP(), []int{26}
}

func (x *ForwardEvent) GetInfo() *HtlcInfo {
	if x != nil {
		return x.Info
	}
	return nil
}

type ForwardFailEvent struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *ForwardFailEvent) Reset() {
	*x = ForwardFailEvent{}
	if protoimpl.UnsafeEnabled {
		mi := &file_routerrpc_router_proto_msgTypes[27]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ForwardFailEvent) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ForwardFailEvent) ProtoMessage() {}

func (x *ForwardFailEvent) ProtoReflect() protoreflect.Message {
	mi := &file_routerrpc_router_proto_msgTypes[27]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ForwardFailEvent.ProtoReflect.Descriptor instead.
func (*ForwardFailEvent) Descriptor() ([]byte, []int) {
	return file_routerrpc_router_proto_rawDescGZIP(), []int{27}
}

type SettleEvent struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The revealed preimage.
	Preimage []byte `protobuf:"bytes,1,opt,name=preimage,proto3" json:"preimage,omitempty"`
}

func (x *SettleEvent) Reset() {
	*x = SettleEvent{}
	if protoimpl.UnsafeEnabled {
		mi := &file_routerrpc_router_proto_msgTypes[28]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *SettleEvent) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SettleEvent) ProtoMessage() {}

func (x *SettleEvent) ProtoReflect() protoreflect.Message {
	mi := &file_routerrpc_router_proto_msgTypes[28]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SettleEvent.ProtoReflect.Descriptor instead.
func (*SettleEvent) Descriptor() ([]byte, []int) {
	return file_routerrpc_router_proto_rawDescGZIP(), []int{28}
}

func (x *SettleEvent) GetPreimage() []byte {
	if x != nil {
		return x.Preimage
	}
	return nil
}

type LinkFailEvent struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Info contains details about the htlc that we failed.
	Info *HtlcInfo `protobuf:"bytes,1,opt,name=info,proto3" json:"info,omitempty"`
	// FailureCode is the BOLT error code for the failure.
	WireFailure lnrpc.Failure_FailureCode `protobuf:"varint,2,opt,name=wire_failure,json=wireFailure,proto3,enum=lnrpc.Failure_FailureCode" json:"wire_failure,omitempty"`
	//
	//FailureDetail provides additional information about the reason for the
	//failure. This detail enriches the information provided by the wire message
	//and may be 'no detail' if the wire message requires no additional metadata.
	FailureDetail FailureDetail `protobuf:"varint,3,opt,name=failure_detail,json=failureDetail,proto3,enum=routerrpc.FailureDetail" json:"failure_detail,omitempty"`
	// A string representation of the link failure.
	FailureString string `protobuf:"bytes,4,opt,name=failure_string,json=failureString,proto3" json:"failure_string,omitempty"`
}

func (x *LinkFailEvent) Reset() {
	*x = LinkFailEvent{}
	if protoimpl.UnsafeEnabled {
		mi := &file_routerrpc_router_proto_msgTypes[29]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *LinkFailEvent) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*LinkFailEvent) ProtoMessage() {}

func (x *LinkFailEvent) ProtoReflect() protoreflect.Message {
	mi := &file_routerrpc_router_proto_msgTypes[29]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use LinkFailEvent.ProtoReflect.Descriptor instead.
func (*LinkFailEvent) Descriptor() ([]byte, []int) {
	return file_routerrpc_router_proto_rawDescGZIP(), []int{29}
}

func (x *LinkFailEvent) GetInfo() *HtlcInfo {
	if x != nil {
		return x.Info
	}
	return nil
}

func (x *LinkFailEvent) GetWireFailure() lnrpc.Failure_FailureCode {
	if x != nil {
		return x.WireFailure
	}
	return lnrpc.Failure_RESERVED
}

func (x *LinkFailEvent) GetFailureDetail() FailureDetail {
	if x != nil {
		return x.FailureDetail
	}
	return FailureDetail_UNKNOWN
}

func (x *LinkFailEvent) GetFailureString() string {
	if x != nil {
		return x.FailureString
	}
	return ""
}

type PaymentStatus struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Current state the payment is in.
	State PaymentState `protobuf:"varint,1,opt,name=state,proto3,enum=routerrpc.PaymentState" json:"state,omitempty"`
	//
	//The pre-image of the payment when state is SUCCEEDED.
	Preimage []byte `protobuf:"bytes,2,opt,name=preimage,proto3" json:"preimage,omitempty"`
	//
	//The HTLCs made in attempt to settle the payment [EXPERIMENTAL].
	Htlcs []*lnrpc.HTLCAttempt `protobuf:"bytes,4,rep,name=htlcs,proto3" json:"htlcs,omitempty"`
}

func (x *PaymentStatus) Reset() {
	*x = PaymentStatus{}
	if protoimpl.UnsafeEnabled {
		mi := &file_routerrpc_router_proto_msgTypes[30]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *PaymentStatus) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PaymentStatus) ProtoMessage() {}

func (x *PaymentStatus) ProtoReflect() protoreflect.Message {
	mi := &file_routerrpc_router_proto_msgTypes[30]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PaymentStatus.ProtoReflect.Descriptor instead.
func (*PaymentStatus) Descriptor() ([]byte, []int) {
	return file_routerrpc_router_proto_rawDescGZIP(), []int{30}
}

func (x *PaymentStatus) GetState() PaymentState {
	if x != nil {
		return x.State
	}
	return PaymentState_IN_FLIGHT
}

func (x *PaymentStatus) GetPreimage() []byte {
	if x != nil {
		return x.Preimage
	}
	return nil
}

func (x *PaymentStatus) GetHtlcs() []*lnrpc.HTLCAttempt {
	if x != nil {
		return x.Htlcs
	}
	return nil
}

type CircuitKey struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	/// The id of the channel that the is part of this circuit.
	ChanId uint64 `protobuf:"varint,1,opt,name=chan_id,json=chanId,proto3" json:"chan_id,omitempty"`
	/// The index of the incoming htlc in the incoming channel.
	HtlcId uint64 `protobuf:"varint,2,opt,name=htlc_id,json=htlcId,proto3" json:"htlc_id,omitempty"`
}

func (x *CircuitKey) Reset() {
	*x = CircuitKey{}
	if protoimpl.UnsafeEnabled {
		mi := &file_routerrpc_router_proto_msgTypes[31]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *CircuitKey) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CircuitKey) ProtoMessage() {}

func (x *CircuitKey) ProtoReflect() protoreflect.Message {
	mi := &file_routerrpc_router_proto_msgTypes[31]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CircuitKey.ProtoReflect.Descriptor instead.
func (*CircuitKey) Descriptor() ([]byte, []int) {
	return file_routerrpc_router_proto_rawDescGZIP(), []int{31}
}

func (x *CircuitKey) GetChanId() uint64 {
	if x != nil {
		return x.ChanId
	}
	return 0
}

func (x *CircuitKey) GetHtlcId() uint64 {
	if x != nil {
		return x.HtlcId
	}
	return 0
}

type ForwardHtlcInterceptRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	//
	//The key of this forwarded htlc. It defines the incoming channel id and
	//the index in this channel.
	IncomingCircuitKey *CircuitKey `protobuf:"bytes,1,opt,name=incoming_circuit_key,json=incomingCircuitKey,proto3" json:"incoming_circuit_key,omitempty"`
	// The incoming htlc amount.
	IncomingAmountMsat uint64 `protobuf:"varint,5,opt,name=incoming_amount_msat,json=incomingAmountMsat,proto3" json:"incoming_amount_msat,omitempty"`
	// The incoming htlc expiry.
	IncomingExpiry uint32 `protobuf:"varint,6,opt,name=incoming_expiry,json=incomingExpiry,proto3" json:"incoming_expiry,omitempty"`
	//
	//The htlc payment hash. This value is not guaranteed to be unique per
	//request.
	PaymentHash []byte `protobuf:"bytes,2,opt,name=payment_hash,json=paymentHash,proto3" json:"payment_hash,omitempty"`
	// The requested outgoing channel id for this forwarded htlc. Because of
	// non-strict forwarding, this isn't necessarily the channel over which the
	// packet will be forwarded eventually. A different channel to the same peer
	// may be selected as well.
	OutgoingRequestedChanId uint64 `protobuf:"varint,7,opt,name=outgoing_requested_chan_id,json=outgoingRequestedChanId,proto3" json:"outgoing_requested_chan_id,omitempty"`
	// The outgoing htlc amount.
	OutgoingAmountMsat uint64 `protobuf:"varint,3,opt,name=outgoing_amount_msat,json=outgoingAmountMsat,proto3" json:"outgoing_amount_msat,omitempty"`
	// The outgoing htlc expiry.
	OutgoingExpiry uint32 `protobuf:"varint,4,opt,name=outgoing_expiry,json=outgoingExpiry,proto3" json:"outgoing_expiry,omitempty"`
	// Any custom records that were present in the payload.
	CustomRecords map[uint64][]byte `protobuf:"bytes,8,rep,name=custom_records,json=customRecords,proto3" json:"custom_records,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	// The onion blob for the next hop
	OnionBlob []byte `protobuf:"bytes,9,opt,name=onion_blob,json=onionBlob,proto3" json:"onion_blob,omitempty"`
}

func (x *ForwardHtlcInterceptRequest) Reset() {
	*x = ForwardHtlcInterceptRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_routerrpc_router_proto_msgTypes[32]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ForwardHtlcInterceptRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ForwardHtlcInterceptRequest) ProtoMessage() {}

func (x *ForwardHtlcInterceptRequest) ProtoReflect() protoreflect.Message {
	mi := &file_routerrpc_router_proto_msgTypes[32]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ForwardHtlcInterceptRequest.ProtoReflect.Descriptor instead.
func (*ForwardHtlcInterceptRequest) Descriptor() ([]byte, []int) {
	return file_routerrpc_router_proto_rawDescGZIP(), []int{32}
}

func (x *ForwardHtlcInterceptRequest) GetIncomingCircuitKey() *CircuitKey {
	if x != nil {
		return x.IncomingCircuitKey
	}
	return nil
}

func (x *ForwardHtlcInterceptRequest) GetIncomingAmountMsat() uint64 {
	if x != nil {
		return x.IncomingAmountMsat
	}
	return 0
}

func (x *ForwardHtlcInterceptRequest) GetIncomingExpiry() uint32 {
	if x != nil {
		return x.IncomingExpiry
	}
	return 0
}

func (x *ForwardHtlcInterceptRequest) GetPaymentHash() []byte {
	if x != nil {
		return x.PaymentHash
	}
	return nil
}

func (x *ForwardHtlcInterceptRequest) GetOutgoingRequestedChanId() uint64 {
	if x != nil {
		return x.OutgoingRequestedChanId
	}
	return 0
}

func (x *ForwardHtlcInterceptRequest) GetOutgoingAmountMsat() uint64 {
	if x != nil {
		return x.OutgoingAmountMsat
	}
	return 0
}

func (x *ForwardHtlcInterceptRequest) GetOutgoingExpiry() uint32 {
	if x != nil {
		return x.OutgoingExpiry
	}
	return 0
}

func (x *ForwardHtlcInterceptRequest) GetCustomRecords() map[uint64][]byte {
	if x != nil {
		return x.CustomRecords
	}
	return nil
}

func (x *ForwardHtlcInterceptRequest) GetOnionBlob() []byte {
	if x != nil {
		return x.OnionBlob
	}
	return nil
}

//*
//ForwardHtlcInterceptResponse enables the caller to resolve a previously hold
//forward. The caller can choose either to:
//- `Resume`: Execute the default behavior (usually forward).
//- `Reject`: Fail the htlc backwards.
//- `Settle`: Settle this htlc with a given preimage.
type ForwardHtlcInterceptResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	//*
	//The key of this forwarded htlc. It defines the incoming channel id and
	//the index in this channel.
	IncomingCircuitKey *CircuitKey `protobuf:"bytes,1,opt,name=incoming_circuit_key,json=incomingCircuitKey,proto3" json:"incoming_circuit_key,omitempty"`
	// The resolve action for this intercepted htlc.
	Action ResolveHoldForwardAction `protobuf:"varint,2,opt,name=action,proto3,enum=routerrpc.ResolveHoldForwardAction" json:"action,omitempty"`
	// The preimage in case the resolve action is Settle.
	Preimage []byte `protobuf:"bytes,3,opt,name=preimage,proto3" json:"preimage,omitempty"`
}

func (x *ForwardHtlcInterceptResponse) Reset() {
	*x = ForwardHtlcInterceptResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_routerrpc_router_proto_msgTypes[33]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ForwardHtlcInterceptResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ForwardHtlcInterceptResponse) ProtoMessage() {}

func (x *ForwardHtlcInterceptResponse) ProtoReflect() protoreflect.Message {
	mi := &file_routerrpc_router_proto_msgTypes[33]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ForwardHtlcInterceptResponse.ProtoReflect.Descriptor instead.
func (*ForwardHtlcInterceptResponse) Descriptor() ([]byte, []int) {
	return file_routerrpc_router_proto_rawDescGZIP(), []int{33}
}

func (x *ForwardHtlcInterceptResponse) GetIncomingCircuitKey() *CircuitKey {
	if x != nil {
		return x.IncomingCircuitKey
	}
	return nil
}

func (x *ForwardHtlcInterceptResponse) GetAction() ResolveHoldForwardAction {
	if x != nil {
		return x.Action
	}
	return ResolveHoldForwardAction_SETTLE
}

func (x *ForwardHtlcInterceptResponse) GetPreimage() []byte {
	if x != nil {
		return x.Preimage
	}
	return nil
}

type UpdateChanStatusRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ChanPoint *lnrpc.ChannelPoint `protobuf:"bytes,1,opt,name=chan_point,json=chanPoint,proto3" json:"chan_point,omitempty"`
	Action    ChanStatusAction    `protobuf:"varint,2,opt,name=action,proto3,enum=routerrpc.ChanStatusAction" json:"action,omitempty"`
}

func (x *UpdateChanStatusRequest) Reset() {
	*x = UpdateChanStatusRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_routerrpc_router_proto_msgTypes[34]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *UpdateChanStatusRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UpdateChanStatusRequest) ProtoMessage() {}

func (x *UpdateChanStatusRequest) ProtoReflect() protoreflect.Message {
	mi := &file_routerrpc_router_proto_msgTypes[34]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use UpdateChanStatusRequest.ProtoReflect.Descriptor instead.
func (*UpdateChanStatusRequest) Descriptor() ([]byte, []int) {
	return file_routerrpc_router_proto_rawDescGZIP(), []int{34}
}

func (x *UpdateChanStatusRequest) GetChanPoint() *lnrpc.ChannelPoint {
	if x != nil {
		return x.ChanPoint
	}
	return nil
}

func (x *UpdateChanStatusRequest) GetAction() ChanStatusAction {
	if x != nil {
		return x.Action
	}
	return ChanStatusAction_ENABLE
}

type UpdateChanStatusResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *UpdateChanStatusResponse) Reset() {
	*x = UpdateChanStatusResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_routerrpc_router_proto_msgTypes[35]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *UpdateChanStatusResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UpdateChanStatusResponse) ProtoMessage() {}

func (x *UpdateChanStatusResponse) ProtoReflect() protoreflect.Message {
	mi := &file_routerrpc_router_proto_msgTypes[35]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use UpdateChanStatusResponse.ProtoReflect.Descriptor instead.
func (*UpdateChanStatusResponse) Descriptor() ([]byte, []int) {
	return file_routerrpc_router_proto_rawDescGZIP(), []int{35}
}

var File_routerrpc_router_proto protoreflect.FileDescriptor

var file_routerrpc_router_proto_rawDesc = []byte{
	0x0a, 0x16, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2f, 0x72, 0x6f, 0x75, 0x74,
	0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72,
	0x72, 0x70, 0x63, 0x1a, 0x0f, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd7, 0x07, 0x0a, 0x12, 0x53, 0x65, 0x6e, 0x64, 0x50, 0x61, 0x79,
	0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x64,
	0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x65, 0x73, 0x74, 0x12,
	0x10, 0x0a, 0x03, 0x61, 0x6d, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x61, 0x6d,
	0x74, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x6d, 0x74, 0x5f, 0x6d, 0x73, 0x61, 0x74, 0x18, 0x0c, 0x20,
	0x01, 0x28, 0x03, 0x52, 0x07, 0x61, 0x6d, 0x74, 0x4d, 0x73, 0x61, 0x74, 0x12, 0x21, 0x0a, 0x0c,
	0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x0c, 0x52, 0x0b, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12,
	0x28, 0x0a, 0x10, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x5f, 0x63, 0x6c, 0x74, 0x76, 0x5f, 0x64, 0x65,
	0x6c, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x66, 0x69, 0x6e, 0x61, 0x6c,
	0x43, 0x6c, 0x74, 0x76, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x61, 0x79,
	0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0c, 0x52,
	0x0b, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x12, 0x27, 0x0a, 0x0f,
	0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18,
	0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74,
	0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e,
	0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x22,
	0x0a, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x73, 0x61, 0x74, 0x18,
	0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x66, 0x65, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x53,
	0x61, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x66, 0x65, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f,
	0x6d, 0x73, 0x61, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x66, 0x65, 0x65, 0x4c,
	0x69, 0x6d, 0x69, 0x74, 0x4d, 0x73, 0x61, 0x74, 0x12, 0x2e, 0x0a, 0x10, 0x6f, 0x75, 0x74, 0x67,
	0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01,
	0x28, 0x04, 0x42, 0x04, 0x18, 0x01, 0x30, 0x01, 0x52, 0x0e, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69,
	0x6e, 0x67, 0x43, 0x68, 0x61, 0x6e, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x6f, 0x75, 0x74, 0x67,
	0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x13, 0x20,
	0x03, 0x28, 0x04, 0x52, 0x0f, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x61,
	0x6e, 0x49, 0x64, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x68, 0x6f, 0x70,
	0x5f, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x6c,
	0x61, 0x73, 0x74, 0x48, 0x6f, 0x70, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x1d, 0x0a, 0x0a,
	0x63, 0x6c, 0x74, 0x76, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05,
	0x52, 0x09, 0x63, 0x6c, 0x74, 0x76, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x31, 0x0a, 0x0b, 0x72,
	0x6f, 0x75, 0x74, 0x65, 0x5f, 0x68, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x10, 0x2e, 0x6c, 0x6e, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x48, 0x69,
	0x6e, 0x74, 0x52, 0x0a, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x48, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x64,
	0x0a, 0x13, 0x64, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x72, 0x65,
	0x63, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x72, 0x6f,
	0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x50, 0x61, 0x79, 0x6d,
	0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x43,
	0x75, 0x73, 0x74, 0x6f, 0x6d, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72,
	0x79, 0x52, 0x11, 0x64, 0x65, 0x73, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x52, 0x65, 0x63,
	0x6f, 0x72, 0x64, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x73, 0x65,
	0x6c, 0x66, 0x5f, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08,
	0x52, 0x10, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x53, 0x65, 0x6c, 0x66, 0x50, 0x61, 0x79, 0x6d, 0x65,
	0x6e, 0x74, 0x12, 0x36, 0x0a, 0x0d, 0x64, 0x65, 0x73, 0x74, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75,
	0x72, 0x65, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x6c, 0x6e, 0x72, 0x70,
	0x63, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x42, 0x69, 0x74, 0x52, 0x0c, 0x64, 0x65,
	0x73, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61,
	0x78, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x6d,
	0x61, 0x78, 0x50, 0x61, 0x72, 0x74, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x6e, 0x6f, 0x5f, 0x69, 0x6e,
	0x66, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x12,
	0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x6e, 0x6f, 0x49, 0x6e, 0x66, 0x6c, 0x69, 0x67, 0x68, 0x74,
	0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x12, 0x2d, 0x0a, 0x13, 0x6d, 0x61, 0x78, 0x5f, 0x73,
	0x68, 0x61, 0x72, 0x64, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x6d, 0x73, 0x61, 0x74, 0x18, 0x15,
	0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x6d, 0x61, 0x78, 0x53, 0x68, 0x61, 0x72, 0x64, 0x53, 0x69,
	0x7a, 0x65, 0x4d, 0x73, 0x61, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6d, 0x70, 0x18, 0x16, 0x20,
	0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6d, 0x70, 0x1a, 0x44, 0x0a, 0x16, 0x44, 0x65, 0x73, 0x74,
	0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x45, 0x6e, 0x74,
	0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52,
	0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x68,
	0x0a, 0x13, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74,
	0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x70, 0x61, 0x79,
	0x6d, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x2e, 0x0a, 0x13, 0x6e, 0x6f, 0x5f, 0x69,
	0x6e, 0x66, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x6e, 0x6f, 0x49, 0x6e, 0x66, 0x6c, 0x69, 0x67, 0x68,
	0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x22, 0x3e, 0x0a, 0x0f, 0x52, 0x6f, 0x75, 0x74,
	0x65, 0x46, 0x65, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x64,
	0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x65, 0x73, 0x74, 0x12,
	0x17, 0x0a, 0x07, 0x61, 0x6d, 0x74, 0x5f, 0x73, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03,
	0x52, 0x06, 0x61, 0x6d, 0x74, 0x53, 0x61, 0x74, 0x22, 0x64, 0x0a, 0x10, 0x52, 0x6f, 0x75, 0x74,
	0x65, 0x46, 0x65, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x10,
	0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x6d, 0x73, 0x61, 0x74,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x46,
	0x65, 0x65, 0x4d, 0x73, 0x61, 0x74, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6c,
	0x6f, 0x63, 0x6b, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52,
	0x0d, 0x74, 0x69, 0x6d, 0x65, 0x4c, 0x6f, 0x63, 0x6b, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x22, 0x5b,
	0x0a, 0x12, 0x53, 0x65, 0x6e, 0x64, 0x54, 0x6f, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f,
	0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x70, 0x61, 0x79, 0x6d,
	0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x22, 0x0a, 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x6c, 0x6e, 0x72, 0x70, 0x63, 0x2e, 0x52,
	0x6f, 0x75, 0x74, 0x65, 0x52, 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x22, 0x5b, 0x0a, 0x13, 0x53,
	0x65, 0x6e, 0x64, 0x54, 0x6f, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x70, 0x72, 0x65, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x28,
	0x0a, 0x07, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x0e, 0x2e, 0x6c, 0x6e, 0x72, 0x70, 0x63, 0x2e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52,
	0x07, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x22, 0x1c, 0x0a, 0x1a, 0x52, 0x65, 0x73, 0x65,
	0x74, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x1d, 0x0a, 0x1b, 0x52, 0x65, 0x73, 0x65, 0x74, 0x4d,
	0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65, 0x73,
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x0a, 0x1a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x69,
	0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x22, 0x51, 0x0a, 0x1b, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x69, 0x73, 0x73,
	0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x12, 0x2c, 0x0a, 0x05, 0x70, 0x61, 0x69, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,
	0x0b, 0x32, 0x16, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61,
	0x69, 0x72, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x05, 0x70, 0x61, 0x69, 0x72, 0x73,
	0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x22, 0x4c, 0x0a, 0x1c, 0x58, 0x49, 0x6d, 0x70, 0x6f, 0x72,
	0x74, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x05, 0x70, 0x61, 0x69, 0x72, 0x73, 0x18,
	0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70,
	0x63, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x05, 0x70,
	0x61, 0x69, 0x72, 0x73, 0x22, 0x1f, 0x0a, 0x1d, 0x58, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4d,
	0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65, 0x73,
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x8a, 0x01, 0x0a, 0x0b, 0x50, 0x61, 0x69, 0x72, 0x48, 0x69,
	0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x66, 0x72,
	0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x46, 0x72,
	0x6f, 0x6d, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x74, 0x6f, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0c, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x54, 0x6f, 0x12, 0x2d, 0x0a, 0x07, 0x68,
	0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x72,
	0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x44, 0x61, 0x74,
	0x61, 0x52, 0x07, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04,
	0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08, 0x06,
	0x10, 0x07, 0x22, 0xe8, 0x01, 0x0a, 0x08, 0x50, 0x61, 0x69, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12,
	0x1b, 0x0a, 0x09, 0x66, 0x61, 0x69, 0x6c, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x03, 0x52, 0x08, 0x66, 0x61, 0x69, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0c,
	0x66, 0x61, 0x69, 0x6c, 0x5f, 0x61, 0x6d, 0x74, 0x5f, 0x73, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x03, 0x52, 0x0a, 0x66, 0x61, 0x69, 0x6c, 0x41, 0x6d, 0x74, 0x53, 0x61, 0x74, 0x12, 0x22,
	0x0a, 0x0d, 0x66, 0x61, 0x69, 0x6c, 0x5f, 0x61, 0x6d, 0x74, 0x5f, 0x6d, 0x73, 0x61, 0x74, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x66, 0x61, 0x69, 0x6c, 0x41, 0x6d, 0x74, 0x4d, 0x73,
	0x61, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x69,
	0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73,
	0x73, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73,
	0x5f, 0x61, 0x6d, 0x74, 0x5f, 0x73, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d,
	0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x41, 0x6d, 0x74, 0x53, 0x61, 0x74, 0x12, 0x28, 0x0a,
	0x10, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x6d, 0x74, 0x5f, 0x6d, 0x73, 0x61,
	0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73,
	0x41, 0x6d, 0x74, 0x4d, 0x73, 0x61, 0x74, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0x20, 0x0a,
	0x1e, 0x47, 0x65, 0x74, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72,
	0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22,
	0x5a, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e,
	0x74, 0x72, 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x12, 0x37, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x4d,
	0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x43, 0x6f, 0x6e,
	0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x59, 0x0a, 0x1e, 0x53,
	0x65, 0x74, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c,
	0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x37, 0x0a,
	0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e,
	0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6f,
	0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06,
	0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x21, 0x0a, 0x1f, 0x53, 0x65, 0x74, 0x4d, 0x69, 0x73,
	0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69,
	0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x80, 0x02, 0x0a, 0x14, 0x4d, 0x69,
	0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66,
	0x69, 0x67, 0x12, 0x2a, 0x0a, 0x11, 0x68, 0x61, 0x6c, 0x66, 0x5f, 0x6c, 0x69, 0x66, 0x65, 0x5f,
	0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x68,
	0x61, 0x6c, 0x66, 0x4c, 0x69, 0x66, 0x65, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x27,
	0x0a, 0x0f, 0x68, 0x6f, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74,
	0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0e, 0x68, 0x6f, 0x70, 0x50, 0x72, 0x6f, 0x62,
	0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68,
	0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12,
	0x36, 0x0a, 0x17, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x70, 0x61, 0x79, 0x6d, 0x65,
	0x6e, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d,
	0x52, 0x15, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74,
	0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x43, 0x0a, 0x1e, 0x6d, 0x69, 0x6e, 0x69, 0x6d,
	0x75, 0x6d, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x6c, 0x61, 0x78,
	0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52,
	0x1b, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52,
	0x65, 0x6c, 0x61, 0x78, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x22, 0x6a, 0x0a, 0x17,
	0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79,
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x72, 0x6f, 0x6d, 0x5f,
	0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x66, 0x72, 0x6f, 0x6d,
	0x4e, 0x6f, 0x64, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x6f, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x74, 0x6f, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x19, 0x0a,
	0x08, 0x61, 0x6d, 0x74, 0x5f, 0x6d, 0x73, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52,
	0x07, 0x61, 0x6d, 0x74, 0x4d, 0x73, 0x61, 0x74, 0x22, 0x6b, 0x0a, 0x18, 0x51, 0x75, 0x65, 0x72,
	0x79, 0x50, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c,
	0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x62, 0x61,
	0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x2d, 0x0a, 0x07, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72,
	0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72,
	0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x07, 0x68, 0x69,
	0x73, 0x74, 0x6f, 0x72, 0x79, 0x22, 0xca, 0x01, 0x0a, 0x11, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x52,
	0x6f, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x61,
	0x6d, 0x74, 0x5f, 0x6d, 0x73, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x61,
	0x6d, 0x74, 0x4d, 0x73, 0x61, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x5f,
	0x63, 0x6c, 0x74, 0x76, 0x5f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
	0x52, 0x0e, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x43, 0x6c, 0x74, 0x76, 0x44, 0x65, 0x6c, 0x74, 0x61,
	0x12, 0x2c, 0x0a, 0x10, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x68, 0x61,
	0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x02, 0x30, 0x01, 0x52, 0x0e,
	0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x61, 0x6e, 0x49, 0x64, 0x12, 0x1f,
	0x0a, 0x0b, 0x68, 0x6f, 0x70, 0x5f, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x04, 0x20,
	0x03, 0x28, 0x0c, 0x52, 0x0a, 0x68, 0x6f, 0x70, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x73, 0x12,
	0x21, 0x0a, 0x0c, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18,
	0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x64,
	0x64, 0x72, 0x22, 0x38, 0x0a, 0x12, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65,
	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x22, 0x0a, 0x05, 0x72, 0x6f, 0x75, 0x74,
	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x6c, 0x6e, 0x72, 0x70, 0x63, 0x2e,
	0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x22, 0x1c, 0x0a, 0x1a,
	0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x48, 0x74, 0x6c, 0x63, 0x45, 0x76, 0x65,
	0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xf6, 0x04, 0x0a, 0x09, 0x48,
	0x74, 0x6c, 0x63, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x69, 0x6e, 0x63, 0x6f,
	0x6d, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x11, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x43,
	0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x6f, 0x75, 0x74, 0x67,
	0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x11, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x43,
	0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x69, 0x6e, 0x63, 0x6f,
	0x6d, 0x69, 0x6e, 0x67, 0x5f, 0x68, 0x74, 0x6c, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x04, 0x52, 0x0e, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x48, 0x74, 0x6c, 0x63,
	0x49, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x68,
	0x74, 0x6c, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x6f, 0x75,
	0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x48, 0x74, 0x6c, 0x63, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c,
	0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x01,
	0x28, 0x04, 0x52, 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x4e, 0x73, 0x12,
	0x3d, 0x0a, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20,
	0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e,
	0x48, 0x74, 0x6c, 0x63, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54,
	0x79, 0x70, 0x65, 0x52, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3e,
	0x0a, 0x0d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18,
	0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70,
	0x63, 0x2e, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00,
	0x52, 0x0c, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x4b,
	0x0a, 0x12, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x5f, 0x65,
	0x76, 0x65, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x6f, 0x75,
	0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x46, 0x61,
	0x69, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x10, 0x66, 0x6f, 0x72, 0x77, 0x61,
	0x72, 0x64, 0x46, 0x61, 0x69, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x3b, 0x0a, 0x0c, 0x73,
	0x65, 0x74, 0x74, 0x6c, 0x65, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x16, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x65,
	0x74, 0x74, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x65, 0x74,
	0x74, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x42, 0x0a, 0x0f, 0x6c, 0x69, 0x6e, 0x6b,
	0x5f, 0x66, 0x61, 0x69, 0x6c, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x18, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x69,
	0x6e, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0d, 0x6c,
	0x69, 0x6e, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x3c, 0x0a, 0x09,
	0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b,
	0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x45, 0x4e, 0x44, 0x10, 0x01,
	0x12, 0x0b, 0x0a, 0x07, 0x52, 0x45, 0x43, 0x45, 0x49, 0x56, 0x45, 0x10, 0x02, 0x12, 0x0b, 0x0a,
	0x07, 0x46, 0x4f, 0x52, 0x57, 0x41, 0x52, 0x44, 0x10, 0x03, 0x42, 0x07, 0x0a, 0x05, 0x65, 0x76,
	0x65, 0x6e, 0x74, 0x22, 0xbc, 0x01, 0x0a, 0x08, 0x48, 0x74, 0x6c, 0x63, 0x49, 0x6e, 0x66, 0x6f,
	0x12, 0x2b, 0x0a, 0x11, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d,
	0x65, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x69, 0x6e, 0x63,
	0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x2b, 0x0a,
	0x11, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6c, 0x6f,
	0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69,
	0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x2a, 0x0a, 0x11, 0x69, 0x6e,
	0x63, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x5f, 0x61, 0x6d, 0x74, 0x5f, 0x6d, 0x73, 0x61, 0x74, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x41,
	0x6d, 0x74, 0x4d, 0x73, 0x61, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69,
	0x6e, 0x67, 0x5f, 0x61, 0x6d, 0x74, 0x5f, 0x6d, 0x73, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28,
	0x04, 0x52, 0x0f, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x41, 0x6d, 0x74, 0x4d, 0x73,
	0x61, 0x74, 0x22, 0x37, 0x0a, 0x0c, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x45, 0x76, 0x65,
	0x6e, 0x74, 0x12, 0x27, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x13, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x48, 0x74, 0x6c,
	0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x22, 0x12, 0x0a, 0x10, 0x46,
	0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x46, 0x61, 0x69, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x22,
	0x29, 0x0a, 0x0b, 0x53, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1a,
	0x0a, 0x08, 0x70, 0x72, 0x65, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c,
	0x52, 0x08, 0x70, 0x72, 0x65, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x22, 0xdf, 0x01, 0x0a, 0x0d, 0x4c,
	0x69, 0x6e, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x27, 0x0a, 0x04,
	0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x72, 0x6f, 0x75,
	0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x48, 0x74, 0x6c, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52,
	0x04, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x3d, 0x0a, 0x0c, 0x77, 0x69, 0x72, 0x65, 0x5f, 0x66, 0x61,
	0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x6c, 0x6e,
	0x72, 0x70, 0x63, 0x2e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x2e, 0x46, 0x61, 0x69, 0x6c,
	0x75, 0x72, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x77, 0x69, 0x72, 0x65, 0x46, 0x61, 0x69,
	0x6c, 0x75, 0x72, 0x65, 0x12, 0x3f, 0x0a, 0x0e, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f,
	0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x72,
	0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65,
	0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x0d, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x44,
	0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x25, 0x0a, 0x0e, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65,
	0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x66,
	0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x22, 0x8a, 0x01, 0x0a,
	0x0d, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2d,
	0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e,
	0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e,
	0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a,
	0x08, 0x70, 0x72, 0x65, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52,
	0x08, 0x70, 0x72, 0x65, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x05, 0x68, 0x74, 0x6c,
	0x63, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6c, 0x6e, 0x72, 0x70, 0x63,
	0x2e, 0x48, 0x54, 0x4c, 0x43, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x52, 0x05, 0x68, 0x74,
	0x6c, 0x63, 0x73, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0x3e, 0x0a, 0x0a, 0x43, 0x69, 0x72,
	0x63, 0x75, 0x69, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x5f,
	0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x49, 0x64,
	0x12, 0x17, 0x0a, 0x07, 0x68, 0x74, 0x6c, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x04, 0x52, 0x06, 0x68, 0x74, 0x6c, 0x63, 0x49, 0x64, 0x22, 0xbf, 0x04, 0x0a, 0x1b, 0x46, 0x6f,
	0x72, 0x77, 0x61, 0x72, 0x64, 0x48, 0x74, 0x6c, 0x63, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65,
	0x70, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x14, 0x69, 0x6e, 0x63,
	0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x69, 0x72, 0x63, 0x75, 0x69, 0x74, 0x5f, 0x6b, 0x65,
	0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72,
	0x72, 0x70, 0x63, 0x2e, 0x43, 0x69, 0x72, 0x63, 0x75, 0x69, 0x74, 0x4b, 0x65, 0x79, 0x52, 0x12,
	0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x43, 0x69, 0x72, 0x63, 0x75, 0x69, 0x74, 0x4b,
	0x65, 0x79, 0x12, 0x30, 0x0a, 0x14, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x5f, 0x61,
	0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x73, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04,
	0x52, 0x12, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74,
	0x4d, 0x73, 0x61, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x69, 0x6e, 0x67,
	0x5f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x69,
	0x6e, 0x63, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x45, 0x78, 0x70, 0x69, 0x72, 0x79, 0x12, 0x21, 0x0a,
	0x0c, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0c, 0x52, 0x0b, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68,
	0x12, 0x3b, 0x0a, 0x1a, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x07,
	0x20, 0x01, 0x28, 0x04, 0x52, 0x17, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x49, 0x64, 0x12, 0x30, 0x0a,
	0x14, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74,
	0x5f, 0x6d, 0x73, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x12, 0x6f, 0x75, 0x74,
	0x67, 0x6f, 0x69, 0x6e, 0x67, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x73, 0x61, 0x74, 0x12,
	0x27, 0x0a, 0x0f, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x78, 0x70, 0x69,
	0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69,
	0x6e, 0x67, 0x45, 0x78, 0x70, 0x69, 0x72, 0x79, 0x12, 0x60, 0x0a, 0x0e, 0x63, 0x75, 0x73, 0x74,
	0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x39, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x46, 0x6f, 0x72,
	0x77, 0x61, 0x72, 0x64, 0x48, 0x74, 0x6c, 0x63, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70,
	0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x52,
	0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x63, 0x75, 0x73,
	0x74, 0x6f, 0x6d, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x6e,
	0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x62, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09,
	0x6f, 0x6e, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x62, 0x1a, 0x40, 0x0a, 0x12, 0x43, 0x75, 0x73,
	0x74, 0x6f, 0x6d, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
	0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6b, 0x65,
	0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c,
	0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xc0, 0x01, 0x0a, 0x1c,
	0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x48, 0x74, 0x6c, 0x63, 0x49, 0x6e, 0x74, 0x65, 0x72,
	0x63, 0x65, 0x70, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x14,
	0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x69, 0x72, 0x63, 0x75, 0x69, 0x74,
	0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x72, 0x6f, 0x75,
	0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x69, 0x72, 0x63, 0x75, 0x69, 0x74, 0x4b, 0x65,
	0x79, 0x52, 0x12, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x43, 0x69, 0x72, 0x63, 0x75,
	0x69, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x3b, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70,
	0x63, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x48, 0x6f, 0x6c, 0x64, 0x46, 0x6f, 0x72,
	0x77, 0x61, 0x72, 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69,
	0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x70, 0x72, 0x65, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x22, 0x82,
	0x01, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x53, 0x74, 0x61,
	0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x0a, 0x63, 0x68,
	0x61, 0x6e, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13,
	0x2e, 0x6c, 0x6e, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x50, 0x6f,
	0x69, 0x6e, 0x74, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x33,
	0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b,
	0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x53,
	0x74, 0x61, 0x74, 0x75, 0x73, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74,
	0x69, 0x6f, 0x6e, 0x22, 0x1a, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61,
	0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2a,
	0x81, 0x04, 0x0a, 0x0d, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69,
	0x6c, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0d,
	0x0a, 0x09, 0x4e, 0x4f, 0x5f, 0x44, 0x45, 0x54, 0x41, 0x49, 0x4c, 0x10, 0x01, 0x12, 0x10, 0x0a,
	0x0c, 0x4f, 0x4e, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x43, 0x4f, 0x44, 0x45, 0x10, 0x02, 0x12,
	0x15, 0x0a, 0x11, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x45, 0x4c, 0x49, 0x47,
	0x49, 0x42, 0x4c, 0x45, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x4e, 0x5f, 0x43, 0x48, 0x41,
	0x49, 0x4e, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x4f, 0x55, 0x54, 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10,
	0x48, 0x54, 0x4c, 0x43, 0x5f, 0x45, 0x58, 0x43, 0x45, 0x45, 0x44, 0x53, 0x5f, 0x4d, 0x41, 0x58,
	0x10, 0x05, 0x12, 0x18, 0x0a, 0x14, 0x49, 0x4e, 0x53, 0x55, 0x46, 0x46, 0x49, 0x43, 0x49, 0x45,
	0x4e, 0x54, 0x5f, 0x42, 0x41, 0x4c, 0x41, 0x4e, 0x43, 0x45, 0x10, 0x06, 0x12, 0x16, 0x0a, 0x12,
	0x49, 0x4e, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x5f, 0x46, 0x4f, 0x52, 0x57, 0x41,
	0x52, 0x44, 0x10, 0x07, 0x12, 0x13, 0x0a, 0x0f, 0x48, 0x54, 0x4c, 0x43, 0x5f, 0x41, 0x44, 0x44,
	0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x08, 0x12, 0x15, 0x0a, 0x11, 0x46, 0x4f, 0x52,
	0x57, 0x41, 0x52, 0x44, 0x53, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x09,
	0x12, 0x14, 0x0a, 0x10, 0x49, 0x4e, 0x56, 0x4f, 0x49, 0x43, 0x45, 0x5f, 0x43, 0x41, 0x4e, 0x43,
	0x45, 0x4c, 0x45, 0x44, 0x10, 0x0a, 0x12, 0x15, 0x0a, 0x11, 0x49, 0x4e, 0x56, 0x4f, 0x49, 0x43,
	0x45, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x52, 0x50, 0x41, 0x49, 0x44, 0x10, 0x0b, 0x12, 0x1b, 0x0a,
	0x17, 0x49, 0x4e, 0x56, 0x4f, 0x49, 0x43, 0x45, 0x5f, 0x45, 0x58, 0x50, 0x49, 0x52, 0x59, 0x5f,
	0x54, 0x4f, 0x4f, 0x5f, 0x53, 0x4f, 0x4f, 0x4e, 0x10, 0x0c, 0x12, 0x14, 0x0a, 0x10, 0x49, 0x4e,
	0x56, 0x4f, 0x49, 0x43, 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x4f, 0x50, 0x45, 0x4e, 0x10, 0x0d,
	0x12, 0x17, 0x0a, 0x13, 0x4d, 0x50, 0x50, 0x5f, 0x49, 0x4e, 0x56, 0x4f, 0x49, 0x43, 0x45, 0x5f,
	0x54, 0x49, 0x4d, 0x45, 0x4f, 0x55, 0x54, 0x10, 0x0e, 0x12, 0x14, 0x0a, 0x10, 0x41, 0x44, 0x44,
	0x52, 0x45, 0x53, 0x53, 0x5f, 0x4d, 0x49, 0x53, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x10, 0x0f, 0x12,
	0x16, 0x0a, 0x12, 0x53, 0x45, 0x54, 0x5f, 0x54, 0x4f, 0x54, 0x41, 0x4c, 0x5f, 0x4d, 0x49, 0x53,
	0x4d, 0x41, 0x54, 0x43, 0x48, 0x10, 0x10, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x45, 0x54, 0x5f, 0x54,
	0x4f, 0x54, 0x41, 0x4c, 0x5f, 0x54, 0x4f, 0x4f, 0x5f, 0x4c, 0x4f, 0x57, 0x10, 0x11, 0x12, 0x10,
	0x0a, 0x0c, 0x53, 0x45, 0x54, 0x5f, 0x4f, 0x56, 0x45, 0x52, 0x50, 0x41, 0x49, 0x44, 0x10, 0x12,
	0x12, 0x13, 0x0a, 0x0f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x49, 0x4e, 0x56, 0x4f,
	0x49, 0x43, 0x45, 0x10, 0x13, 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44,
	0x5f, 0x4b, 0x45, 0x59, 0x53, 0x45, 0x4e, 0x44, 0x10, 0x14, 0x12, 0x13, 0x0a, 0x0f, 0x4d, 0x50,
	0x50, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x15, 0x12,
	0x12, 0x0a, 0x0e, 0x43, 0x49, 0x52, 0x43, 0x55, 0x4c, 0x41, 0x52, 0x5f, 0x52, 0x4f, 0x55, 0x54,
	0x45, 0x10, 0x16, 0x2a, 0xae, 0x01, 0x0a, 0x0c, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53,
	0x74, 0x61, 0x74, 0x65, 0x12, 0x0d, 0x0a, 0x09, 0x49, 0x4e, 0x5f, 0x46, 0x4c, 0x49, 0x47, 0x48,
	0x54, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x55, 0x43, 0x43, 0x45, 0x45, 0x44, 0x45, 0x44,
	0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x5f, 0x54, 0x49, 0x4d,
	0x45, 0x4f, 0x55, 0x54, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44,
	0x5f, 0x4e, 0x4f, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x46,
	0x41, 0x49, 0x4c, 0x45, 0x44, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x12, 0x24, 0x0a,
	0x20, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x5f, 0x49, 0x4e, 0x43, 0x4f, 0x52, 0x52, 0x45, 0x43,
	0x54, 0x5f, 0x50, 0x41, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x44, 0x45, 0x54, 0x41, 0x49, 0x4c,
	0x53, 0x10, 0x05, 0x12, 0x1f, 0x0a, 0x1b, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x5f, 0x49, 0x4e,
	0x53, 0x55, 0x46, 0x46, 0x49, 0x43, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x42, 0x41, 0x4c, 0x41, 0x4e,
	0x43, 0x45, 0x10, 0x06, 0x2a, 0x3c, 0x0a, 0x18, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x48,
	0x6f, 0x6c, 0x64, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e,
	0x12, 0x0a, 0x0a, 0x06, 0x53, 0x45, 0x54, 0x54, 0x4c, 0x45, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04,
	0x46, 0x41, 0x49, 0x4c, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x45, 0x53, 0x55, 0x4d, 0x45,
	0x10, 0x02, 0x2a, 0x35, 0x0a, 0x10, 0x43, 0x68, 0x61, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
	0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45,
	0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x01, 0x12,
	0x08, 0x0a, 0x04, 0x41, 0x55, 0x54, 0x4f, 0x10, 0x02, 0x32, 0xf1, 0x0b, 0x0a, 0x06, 0x52, 0x6f,
	0x75, 0x74, 0x65, 0x72, 0x12, 0x40, 0x0a, 0x0d, 0x53, 0x65, 0x6e, 0x64, 0x50, 0x61, 0x79, 0x6d,
	0x65, 0x6e, 0x74, 0x56, 0x32, 0x12, 0x1d, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70,
	0x63, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x6c, 0x6e, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x79,
	0x6d, 0x65, 0x6e, 0x74, 0x30, 0x01, 0x12, 0x42, 0x0a, 0x0e, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x50,
	0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x32, 0x12, 0x1e, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65,
	0x72, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e,
	0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x6c, 0x6e, 0x72, 0x70, 0x63,
	0x2e, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x30, 0x01, 0x12, 0x4b, 0x0a, 0x10, 0x45, 0x73,
	0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x46, 0x65, 0x65, 0x12, 0x1a,
	0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65,
	0x46, 0x65, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x72, 0x6f, 0x75,
	0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x46, 0x65, 0x65, 0x52,
	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x0b, 0x53, 0x65, 0x6e, 0x64, 0x54,
	0x6f, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x1d, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72,
	0x70, 0x63, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x54, 0x6f, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70,
	0x63, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x54, 0x6f, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73,
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x42, 0x0a, 0x0d, 0x53, 0x65,
	0x6e, 0x64, 0x54, 0x6f, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x56, 0x32, 0x12, 0x1d, 0x2e, 0x72, 0x6f,
	0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x54, 0x6f, 0x52, 0x6f,
	0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x6c, 0x6e, 0x72,
	0x70, 0x63, 0x2e, 0x48, 0x54, 0x4c, 0x43, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x12, 0x64,
	0x0a, 0x13, 0x52, 0x65, 0x73, 0x65, 0x74, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f,
	0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x25, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70,
	0x63, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f,
	0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x72,
	0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x4d, 0x69,
	0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x64, 0x0a, 0x13, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x69, 0x73,
	0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x25, 0x2e, 0x72, 0x6f,
	0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x69, 0x73,
	0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x1a, 0x26, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x51,
	0x75, 0x65, 0x72, 0x79, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72,
	0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6a, 0x0a, 0x15, 0x58, 0x49,
	0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74,
	0x72, 0x6f, 0x6c, 0x12, 0x27, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e,
	0x58, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f,
	0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x72,
	0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x58, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74,
	0x4d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65,
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x70, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x4d, 0x69, 0x73,
	0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69,
	0x67, 0x12, 0x29, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65,
	0x74, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x43,
	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x72,
	0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x69, 0x73, 0x73,
	0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x70, 0x0a, 0x17, 0x53, 0x65, 0x74, 0x4d,
	0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x43, 0x6f, 0x6e,
	0x66, 0x69, 0x67, 0x12, 0x29, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e,
	0x53, 0x65, 0x74, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f,
	0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a,
	0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x65, 0x74, 0x4d, 0x69,
	0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66,
	0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5b, 0x0a, 0x10, 0x51, 0x75,
	0x65, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x22,
	0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79,
	0x50, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x1a, 0x23, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x51,
	0x75, 0x65, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52,
	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x0a, 0x42, 0x75, 0x69, 0x6c, 0x64,
	0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x1c, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70,
	0x63, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e,
	0x42, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x12, 0x54, 0x0a, 0x13, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x48,
	0x74, 0x6c, 0x63, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x25, 0x2e, 0x72, 0x6f, 0x75, 0x74,
	0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x48,
	0x74, 0x6c, 0x63, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x1a, 0x14, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x48, 0x74, 0x6c,
	0x63, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x30, 0x01, 0x12, 0x4d, 0x0a, 0x0b, 0x53, 0x65, 0x6e, 0x64,
	0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1d, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72,
	0x72, 0x70, 0x63, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72,
	0x70, 0x63, 0x2e, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
	0x22, 0x03, 0x88, 0x02, 0x01, 0x30, 0x01, 0x12, 0x4f, 0x0a, 0x0c, 0x54, 0x72, 0x61, 0x63, 0x6b,
	0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72,
	0x72, 0x70, 0x63, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74,
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72,
	0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75,
	0x73, 0x22, 0x03, 0x88, 0x02, 0x01, 0x30, 0x01, 0x12, 0x66, 0x0a, 0x0f, 0x48, 0x74, 0x6c, 0x63,
	0x49, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x12, 0x27, 0x2e, 0x72, 0x6f,
	0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x48,
	0x74, 0x6c, 0x63, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x26, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63,
	0x2e, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x48, 0x74, 0x6c, 0x63, 0x49, 0x6e, 0x74, 0x65,
	0x72, 0x63, 0x65, 0x70, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x28, 0x01, 0x30, 0x01,
	0x12, 0x5b, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x53, 0x74,
	0x61, 0x74, 0x75, 0x73, 0x12, 0x22, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63,
	0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75,
	0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65,
	0x72, 0x72, 0x70, 0x63, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x53,
	0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x31, 0x5a,
	0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x69, 0x67, 0x68,
	0x74, 0x6e, 0x69, 0x6e, 0x67, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6e, 0x64,
	0x2f, 0x6c, 0x6e, 0x72, 0x70, 0x63, 0x2f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63,
	0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_routerrpc_router_proto_rawDescOnce sync.Once
	file_routerrpc_router_proto_rawDescData = file_routerrpc_router_proto_rawDesc
)

func file_routerrpc_router_proto_rawDescGZIP() []byte {
	file_routerrpc_router_proto_rawDescOnce.Do(func() {
		file_routerrpc_router_proto_rawDescData = protoimpl.X.CompressGZIP(file_routerrpc_router_proto_rawDescData)
	})
	return file_routerrpc_router_proto_rawDescData
}

var file_routerrpc_router_proto_enumTypes = make([]protoimpl.EnumInfo, 5)
var file_routerrpc_router_proto_msgTypes = make([]protoimpl.MessageInfo, 38)
var file_routerrpc_router_proto_goTypes = []interface{}{
	(FailureDetail)(0),                      // 0: routerrpc.FailureDetail
	(PaymentState)(0),                       // 1: routerrpc.PaymentState
	(ResolveHoldForwardAction)(0),           // 2: routerrpc.ResolveHoldForwardAction
	(ChanStatusAction)(0),                   // 3: routerrpc.ChanStatusAction
	(HtlcEvent_EventType)(0),                // 4: routerrpc.HtlcEvent.EventType
	(*SendPaymentRequest)(nil),              // 5: routerrpc.SendPaymentRequest
	(*TrackPaymentRequest)(nil),             // 6: routerrpc.TrackPaymentRequest
	(*RouteFeeRequest)(nil),                 // 7: routerrpc.RouteFeeRequest
	(*RouteFeeResponse)(nil),                // 8: routerrpc.RouteFeeResponse
	(*SendToRouteRequest)(nil),              // 9: routerrpc.SendToRouteRequest
	(*SendToRouteResponse)(nil),             // 10: routerrpc.SendToRouteResponse
	(*ResetMissionControlRequest)(nil),      // 11: routerrpc.ResetMissionControlRequest
	(*ResetMissionControlResponse)(nil),     // 12: routerrpc.ResetMissionControlResponse
	(*QueryMissionControlRequest)(nil),      // 13: routerrpc.QueryMissionControlRequest
	(*QueryMissionControlResponse)(nil),     // 14: routerrpc.QueryMissionControlResponse
	(*XImportMissionControlRequest)(nil),    // 15: routerrpc.XImportMissionControlRequest
	(*XImportMissionControlResponse)(nil),   // 16: routerrpc.XImportMissionControlResponse
	(*PairHistory)(nil),                     // 17: routerrpc.PairHistory
	(*PairData)(nil),                        // 18: routerrpc.PairData
	(*GetMissionControlConfigRequest)(nil),  // 19: routerrpc.GetMissionControlConfigRequest
	(*GetMissionControlConfigResponse)(nil), // 20: routerrpc.GetMissionControlConfigResponse
	(*SetMissionControlConfigRequest)(nil),  // 21: routerrpc.SetMissionControlConfigRequest
	(*SetMissionControlConfigResponse)(nil), // 22: routerrpc.SetMissionControlConfigResponse
	(*MissionControlConfig)(nil),            // 23: routerrpc.MissionControlConfig
	(*QueryProbabilityRequest)(nil),         // 24: routerrpc.QueryProbabilityRequest
	(*QueryProbabilityResponse)(nil),        // 25: routerrpc.QueryProbabilityResponse
	(*BuildRouteRequest)(nil),               // 26: routerrpc.BuildRouteRequest
	(*BuildRouteResponse)(nil),              // 27: routerrpc.BuildRouteResponse
	(*SubscribeHtlcEventsRequest)(nil),      // 28: routerrpc.SubscribeHtlcEventsRequest
	(*HtlcEvent)(nil),                       // 29: routerrpc.HtlcEvent
	(*HtlcInfo)(nil),                        // 30: routerrpc.HtlcInfo
	(*ForwardEvent)(nil),                    // 31: routerrpc.ForwardEvent
	(*ForwardFailEvent)(nil),                // 32: routerrpc.ForwardFailEvent
	(*SettleEvent)(nil),                     // 33: routerrpc.SettleEvent
	(*LinkFailEvent)(nil),                   // 34: routerrpc.LinkFailEvent
	(*PaymentStatus)(nil),                   // 35: routerrpc.PaymentStatus
	(*CircuitKey)(nil),                      // 36: routerrpc.CircuitKey
	(*ForwardHtlcInterceptRequest)(nil),     // 37: routerrpc.ForwardHtlcInterceptRequest
	(*ForwardHtlcInterceptResponse)(nil),    // 38: routerrpc.ForwardHtlcInterceptResponse
	(*UpdateChanStatusRequest)(nil),         // 39: routerrpc.UpdateChanStatusRequest
	(*UpdateChanStatusResponse)(nil),        // 40: routerrpc.UpdateChanStatusResponse
	nil,                                     // 41: routerrpc.SendPaymentRequest.DestCustomRecordsEntry
	nil,                                     // 42: routerrpc.ForwardHtlcInterceptRequest.CustomRecordsEntry
	(*lnrpc.RouteHint)(nil),                 // 43: lnrpc.RouteHint
	(lnrpc.FeatureBit)(0),                   // 44: lnrpc.FeatureBit
	(*lnrpc.Route)(nil),                     // 45: lnrpc.Route
	(*lnrpc.Failure)(nil),                   // 46: lnrpc.Failure
	(lnrpc.Failure_FailureCode)(0),          // 47: lnrpc.Failure.FailureCode
	(*lnrpc.HTLCAttempt)(nil),               // 48: lnrpc.HTLCAttempt
	(*lnrpc.ChannelPoint)(nil),              // 49: lnrpc.ChannelPoint
	(*lnrpc.Payment)(nil),                   // 50: lnrpc.Payment
}
var file_routerrpc_router_proto_depIdxs = []int32{
	43, // 0: routerrpc.SendPaymentRequest.route_hints:type_name -> lnrpc.RouteHint
	41, // 1: routerrpc.SendPaymentRequest.dest_custom_records:type_name -> routerrpc.SendPaymentRequest.DestCustomRecordsEntry
	44, // 2: routerrpc.SendPaymentRequest.dest_features:type_name -> lnrpc.FeatureBit
	45, // 3: routerrpc.SendToRouteRequest.route:type_name -> lnrpc.Route
	46, // 4: routerrpc.SendToRouteResponse.failure:type_name -> lnrpc.Failure
	17, // 5: routerrpc.QueryMissionControlResponse.pairs:type_name -> routerrpc.PairHistory
	17, // 6: routerrpc.XImportMissionControlRequest.pairs:type_name -> routerrpc.PairHistory
	18, // 7: routerrpc.PairHistory.history:type_name -> routerrpc.PairData
	23, // 8: routerrpc.GetMissionControlConfigResponse.config:type_name -> routerrpc.MissionControlConfig
	23, // 9: routerrpc.SetMissionControlConfigRequest.config:type_name -> routerrpc.MissionControlConfig
	18, // 10: routerrpc.QueryProbabilityResponse.history:type_name -> routerrpc.PairData
	45, // 11: routerrpc.BuildRouteResponse.route:type_name -> lnrpc.Route
	4,  // 12: routerrpc.HtlcEvent.event_type:type_name -> routerrpc.HtlcEvent.EventType
	31, // 13: routerrpc.HtlcEvent.forward_event:type_name -> routerrpc.ForwardEvent
	32, // 14: routerrpc.HtlcEvent.forward_fail_event:type_name -> routerrpc.ForwardFailEvent
	33, // 15: routerrpc.HtlcEvent.settle_event:type_name -> routerrpc.SettleEvent
	34, // 16: routerrpc.HtlcEvent.link_fail_event:type_name -> routerrpc.LinkFailEvent
	30, // 17: routerrpc.ForwardEvent.info:type_name -> routerrpc.HtlcInfo
	30, // 18: routerrpc.LinkFailEvent.info:type_name -> routerrpc.HtlcInfo
	47, // 19: routerrpc.LinkFailEvent.wire_failure:type_name -> lnrpc.Failure.FailureCode
	0,  // 20: routerrpc.LinkFailEvent.failure_detail:type_name -> routerrpc.FailureDetail
	1,  // 21: routerrpc.PaymentStatus.state:type_name -> routerrpc.PaymentState
	48, // 22: routerrpc.PaymentStatus.htlcs:type_name -> lnrpc.HTLCAttempt
	36, // 23: routerrpc.ForwardHtlcInterceptRequest.incoming_circuit_key:type_name -> routerrpc.CircuitKey
	42, // 24: routerrpc.ForwardHtlcInterceptRequest.custom_records:type_name -> routerrpc.ForwardHtlcInterceptRequest.CustomRecordsEntry
	36, // 25: routerrpc.ForwardHtlcInterceptResponse.incoming_circuit_key:type_name -> routerrpc.CircuitKey
	2,  // 26: routerrpc.ForwardHtlcInterceptResponse.action:type_name -> routerrpc.ResolveHoldForwardAction
	49, // 27: routerrpc.UpdateChanStatusRequest.chan_point:type_name -> lnrpc.ChannelPoint
	3,  // 28: routerrpc.UpdateChanStatusRequest.action:type_name -> routerrpc.ChanStatusAction
	5,  // 29: routerrpc.Router.SendPaymentV2:input_type -> routerrpc.SendPaymentRequest
	6,  // 30: routerrpc.Router.TrackPaymentV2:input_type -> routerrpc.TrackPaymentRequest
	7,  // 31: routerrpc.Router.EstimateRouteFee:input_type -> routerrpc.RouteFeeRequest
	9,  // 32: routerrpc.Router.SendToRoute:input_type -> routerrpc.SendToRouteRequest
	9,  // 33: routerrpc.Router.SendToRouteV2:input_type -> routerrpc.SendToRouteRequest
	11, // 34: routerrpc.Router.ResetMissionControl:input_type -> routerrpc.ResetMissionControlRequest
	13, // 35: routerrpc.Router.QueryMissionControl:input_type -> routerrpc.QueryMissionControlRequest
	15, // 36: routerrpc.Router.XImportMissionControl:input_type -> routerrpc.XImportMissionControlRequest
	19, // 37: routerrpc.Router.GetMissionControlConfig:input_type -> routerrpc.GetMissionControlConfigRequest
	21, // 38: routerrpc.Router.SetMissionControlConfig:input_type -> routerrpc.SetMissionControlConfigRequest
	24, // 39: routerrpc.Router.QueryProbability:input_type -> routerrpc.QueryProbabilityRequest
	26, // 40: routerrpc.Router.BuildRoute:input_type -> routerrpc.BuildRouteRequest
	28, // 41: routerrpc.Router.SubscribeHtlcEvents:input_type -> routerrpc.SubscribeHtlcEventsRequest
	5,  // 42: routerrpc.Router.SendPayment:input_type -> routerrpc.SendPaymentRequest
	6,  // 43: routerrpc.Router.TrackPayment:input_type -> routerrpc.TrackPaymentRequest
	38, // 44: routerrpc.Router.HtlcInterceptor:input_type -> routerrpc.ForwardHtlcInterceptResponse
	39, // 45: routerrpc.Router.UpdateChanStatus:input_type -> routerrpc.UpdateChanStatusRequest
	50, // 46: routerrpc.Router.SendPaymentV2:output_type -> lnrpc.Payment
	50, // 47: routerrpc.Router.TrackPaymentV2:output_type -> lnrpc.Payment
	8,  // 48: routerrpc.Router.EstimateRouteFee:output_type -> routerrpc.RouteFeeResponse
	10, // 49: routerrpc.Router.SendToRoute:output_type -> routerrpc.SendToRouteResponse
	48, // 50: routerrpc.Router.SendToRouteV2:output_type -> lnrpc.HTLCAttempt
	12, // 51: routerrpc.Router.ResetMissionControl:output_type -> routerrpc.ResetMissionControlResponse
	14, // 52: routerrpc.Router.QueryMissionControl:output_type -> routerrpc.QueryMissionControlResponse
	16, // 53: routerrpc.Router.XImportMissionControl:output_type -> routerrpc.XImportMissionControlResponse
	20, // 54: routerrpc.Router.GetMissionControlConfig:output_type -> routerrpc.GetMissionControlConfigResponse
	22, // 55: routerrpc.Router.SetMissionControlConfig:output_type -> routerrpc.SetMissionControlConfigResponse
	25, // 56: routerrpc.Router.QueryProbability:output_type -> routerrpc.QueryProbabilityResponse
	27, // 57: routerrpc.Router.BuildRoute:output_type -> routerrpc.BuildRouteResponse
	29, // 58: routerrpc.Router.SubscribeHtlcEvents:output_type -> routerrpc.HtlcEvent
	35, // 59: routerrpc.Router.SendPayment:output_type -> routerrpc.PaymentStatus
	35, // 60: routerrpc.Router.TrackPayment:output_type -> routerrpc.PaymentStatus
	37, // 61: routerrpc.Router.HtlcInterceptor:output_type -> routerrpc.ForwardHtlcInterceptRequest
	40, // 62: routerrpc.Router.UpdateChanStatus:output_type -> routerrpc.UpdateChanStatusResponse
	46, // [46:63] is the sub-list for method output_type
	29, // [29:46] is the sub-list for method input_type
	29, // [29:29] is the sub-list for extension type_name
	29, // [29:29] is the sub-list for extension extendee
	0,  // [0:29] is the sub-list for field type_name
}

func init() { file_routerrpc_router_proto_init() }
func file_routerrpc_router_proto_init() {
	if File_routerrpc_router_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_routerrpc_router_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SendPaymentRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_routerrpc_router_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TrackPaymentRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_routerrpc_router_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RouteFeeRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_routerrpc_router_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RouteFeeResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_routerrpc_router_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SendToRouteRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_routerrpc_router_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SendToRouteResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_routerrpc_router_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ResetMissionControlRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_routerrpc_router_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ResetMissionControlResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_routerrpc_router_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*QueryMissionControlRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_routerrpc_router_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*QueryMissionControlResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_routerrpc_router_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*XImportMissionControlRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_routerrpc_router_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*XImportMissionControlResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_routerrpc_router_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PairHistory); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_routerrpc_router_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PairData); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_routerrpc_router_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetMissionControlConfigRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_routerrpc_router_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetMissionControlConfigResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_routerrpc_router_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SetMissionControlConfigRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_routerrpc_router_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SetMissionControlConfigResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_routerrpc_router_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MissionControlConfig); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_routerrpc_router_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*QueryProbabilityRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_routerrpc_router_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*QueryProbabilityResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_routerrpc_router_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*BuildRouteRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_routerrpc_router_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*BuildRouteResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_routerrpc_router_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SubscribeHtlcEventsRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_routerrpc_router_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*HtlcEvent); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_routerrpc_router_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*HtlcInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_routerrpc_router_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ForwardEvent); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_routerrpc_router_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ForwardFailEvent); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_routerrpc_router_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SettleEvent); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_routerrpc_router_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LinkFailEvent); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_routerrpc_router_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PaymentStatus); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_routerrpc_router_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CircuitKey); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_routerrpc_router_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ForwardHtlcInterceptRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_routerrpc_router_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ForwardHtlcInterceptResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_routerrpc_router_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UpdateChanStatusRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_routerrpc_router_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UpdateChanStatusResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	file_routerrpc_router_proto_msgTypes[24].OneofWrappers = []interface{}{
		(*HtlcEvent_ForwardEvent)(nil),
		(*HtlcEvent_ForwardFailEvent)(nil),
		(*HtlcEvent_SettleEvent)(nil),
		(*HtlcEvent_LinkFailEvent)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_routerrpc_router_proto_rawDesc,
			NumEnums:      5,
			NumMessages:   38,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_routerrpc_router_proto_goTypes,
		DependencyIndexes: file_routerrpc_router_proto_depIdxs,
		EnumInfos:         file_routerrpc_router_proto_enumTypes,
		MessageInfos:      file_routerrpc_router_proto_msgTypes,
	}.Build()
	File_routerrpc_router_proto = out.File
	file_routerrpc_router_proto_rawDesc = nil
	file_routerrpc_router_proto_goTypes = nil
	file_routerrpc_router_proto_depIdxs = nil
}
