From cd632058b0a14a15e72f29f2241e1db1abea2b02 Mon Sep 17 00:00:00 2001 From: Robyn Date: Mon, 17 Oct 2022 11:38:46 +0100 Subject: [PATCH] account: expose historical account modification fees via RPC This commit adds a new RPC endpoint which returns a per-account list of account modification fees. --- account/manager.go | 46 +- account/manager_test.go | 66 +- cmd/pool/account.go | 30 + perms/perms.go | 4 + poolrpc/trader.pb.go | 1758 +++++++++++++++++++++-------------- poolrpc/trader.pb.json.go | 25 + poolrpc/trader.proto | 46 + poolrpc/trader.swagger.json | 60 ++ poolrpc/trader_grpc.pb.go | 42 + rpcserver.go | 74 ++ 10 files changed, 1439 insertions(+), 712 deletions(-) diff --git a/account/manager.go b/account/manager.go index 6bb92657d..80ae4ce4a 100644 --- a/account/manager.go +++ b/account/manager.go @@ -30,6 +30,7 @@ import ( "github.com/lightningnetwork/lnd/chainntnfs" "github.com/lightningnetwork/lnd/input" "github.com/lightningnetwork/lnd/keychain" + "github.com/lightningnetwork/lnd/lnrpc" "github.com/lightningnetwork/lnd/lnrpc/verrpc" "github.com/lightningnetwork/lnd/lnrpc/walletrpc" "github.com/lightningnetwork/lnd/lnwallet" @@ -52,6 +53,8 @@ const ( // both extremes for valid account expirations. minAccountExpiry = 144 // One day worth of blocks. maxAccountExpiry = 144 * 365 // A year worth of blocks. + + txLabelPrefixTag = "poold -- " ) var ( @@ -148,27 +151,46 @@ type AccountTxLabel struct { func actionTxLabel(account *Account, action Action, isExpirySpend bool, txFee *btcutil.Amount, balanceDiff btcutil.Amount) string { - prefixTag := "poold -- %s" - acctKey := account.TraderKey.PubKey.SerializeCompressed() key := fmt.Sprintf("%x", acctKey) - label := AccountTxLabel{ - Key: key, - Action: action, - ExpiryHeight: account.Expiry, - OutputIndex: account.OutPoint.Index, - IsExpirySpend: isExpirySpend, - TxFee: txFee, - BalanceDiff: balanceDiff, + label := TxLabel{ + Account: AccountTxLabel{ + Key: key, + Action: action, + ExpiryHeight: account.Expiry, + OutputIndex: account.OutPoint.Index, + IsExpirySpend: isExpirySpend, + TxFee: txFee, + BalanceDiff: balanceDiff, + }, } labelJson, err := json.Marshal(label) if err != nil { log.Errorf("Internal error: failed to serialize json "+ "from %v: %v", label, err) - return fmt.Sprintf(prefixTag, action) + return fmt.Sprintf("%s%s", txLabelPrefixTag, action) + } + + return fmt.Sprintf("%s%s", txLabelPrefixTag, labelJson) +} + +// IsPoolTx returns true if the given transaction is related to pool. +func IsPoolTx(tx *lnrpc.Transaction) bool { + return strings.HasPrefix(tx.Label, txLabelPrefixTag) +} + +// ParseTxLabel parses and returns data fields stored in a given transaction +// label. +func ParseTxLabel(label string) (*TxLabel, error) { + label = strings.TrimPrefix(label, txLabelPrefixTag) + + var data TxLabel + err := json.Unmarshal([]byte(label), &data) + if err != nil { + return nil, err } - return fmt.Sprintf(prefixTag, labelJson) + return &data, nil } // ManagerConfig contains all of the required dependencies for the Manager to diff --git a/account/manager_test.go b/account/manager_test.go index 47fb9f12a..690514694 100644 --- a/account/manager_test.go +++ b/account/manager_test.go @@ -49,12 +49,14 @@ var ( ) type testCase struct { - name string - feeExpr FeeExpr - fee btcutil.Amount - version Version - newVersion Version - expectedErr string + name string + feeExpr FeeExpr + fee btcutil.Amount + version Version + newVersion Version + expectedErr string + action Action + isExpirySpend bool // The following fields are only used by deposit tests. fundedOutputAmount btcutil.Amount @@ -1430,3 +1432,55 @@ func TestMakeTxnLabel(t *testing.T) { require.Equal(t, genLabel, testCase.label) } } + +// TestParseTxLabel tests whether an account transaction labels can be +// parsed correctly. +func TestParseTxLabel(t *testing.T) { + t.Parallel() + + cases := []*testCase{ + { + fee: btcutil.Amount(1027), + action: WITHDRAW, + isExpirySpend: false, + }, + { + fee: btcutil.Amount(42), + action: DEPOSIT, + isExpirySpend: false, + }, + { + fee: btcutil.Amount(42), + action: RENEW, + isExpirySpend: true, + }, + } + + runSubTests(t, cases, func(t *testing.T, h *testHarness, tc *testCase) { + expiryHeight := uint32(bestHeight + maxAccountExpiry) + account := h.openAccount( + maxAccountValue, expiryHeight, bestHeight, tc.version, + ) + acctKey := account.TraderKey.PubKey.SerializeCompressed() + key := fmt.Sprintf("%x", acctKey) + label := actionTxLabel( + account, tc.action, tc.isExpirySpend, &tc.fee, + btcutil.Amount(10000), + ) + actual, err := ParseTxLabel(label) + + expected := &TxLabel{ + AccountTxLabel{ + Key: key, + Action: tc.action, + ExpiryHeight: expiryHeight, + OutputIndex: 0, + IsExpirySpend: tc.isExpirySpend, + TxFee: &tc.fee, + BalanceDiff: btcutil.Amount(10000), + }, + } + require.Nil(t, err) + require.Equal(t, expected, actual) + }) +} diff --git a/cmd/pool/account.go b/cmd/pool/account.go index 1bba619e8..ea3f47482 100644 --- a/cmd/pool/account.go +++ b/cmd/pool/account.go @@ -26,6 +26,7 @@ var accountsCommands = []cli.Command{ withdrawAccountCommand, renewAccountCommand, closeAccountCommand, + listAccountFeesCommand, bumpAccountFeeCommand, recoverAccountsCommand, }, @@ -819,6 +820,35 @@ func bumpAccountFee(ctx *cli.Context) error { return nil } +var listAccountFeesCommand = cli.Command{ + Name: "listfees", + ShortName: "f", + Usage: "list the account modification transaction fees", + Description: ` + This command prints a map from account key to an ordered list of account + modification transaction fees. + `, + Action: listAccountFees, +} + +func listAccountFees(ctx *cli.Context) error { + client, cleanup, err := getClient(ctx) + if err != nil { + return err + } + defer cleanup() + + resp, err := client.AccountModificationFees( + context.Background(), &poolrpc.AccountModificationFeesRequest{}, + ) + if err != nil { + return err + } + + printRespJSON(resp) + return nil +} + var recoverAccountsCommand = cli.Command{ Name: "recover", Usage: "recover accounts after data loss with the help of the " + diff --git a/perms/perms.go b/perms/perms.go index 6886efbb4..9d2fb578c 100644 --- a/perms/perms.go +++ b/perms/perms.go @@ -58,6 +58,10 @@ var RequiredPermissions = map[string][]bakery.Op{ Entity: "account", Action: "write", }}, + "/poolrpc.Trader/AccountModificationFees": {{ + Entity: "account", + Action: "read", + }}, "/poolrpc.Trader/SubmitOrder": {{ Entity: "order", Action: "write", diff --git a/poolrpc/trader.pb.go b/poolrpc/trader.pb.go index c5450eb8b..9393e0368 100644 --- a/poolrpc/trader.pb.go +++ b/poolrpc/trader.pb.go @@ -3236,6 +3236,269 @@ func (x *RecoverAccountsResponse) GetNumRecoveredAccounts() uint32 { return 0 } +type AccountModificationFeesRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *AccountModificationFeesRequest) Reset() { + *x = AccountModificationFeesRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_trader_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AccountModificationFeesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AccountModificationFeesRequest) ProtoMessage() {} + +func (x *AccountModificationFeesRequest) ProtoReflect() protoreflect.Message { + mi := &file_trader_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 AccountModificationFeesRequest.ProtoReflect.Descriptor instead. +func (*AccountModificationFeesRequest) Descriptor() ([]byte, []int) { + return file_trader_proto_rawDescGZIP(), []int{35} +} + +type AccountModificationFee struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Modification action type. + Action string `protobuf:"bytes,1,opt,name=action,proto3" json:"action,omitempty"` + // Transaction ID. + Txid string `protobuf:"bytes,2,opt,name=txid,proto3" json:"txid,omitempty"` + // Action transaction block height. + BlockHeight int32 `protobuf:"varint,3,opt,name=block_height,json=blockHeight,proto3" json:"block_height,omitempty"` + // Action transaction timestamp. + Timestamp int64 `protobuf:"varint,4,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + // Action transaction output amount. + OutputAmount int64 `protobuf:"varint,5,opt,name=output_amount,json=outputAmount,proto3" json:"output_amount,omitempty"` + // Action transaction fee. + // + // Types that are assignable to Fee: + // *AccountModificationFee_FeeNull + // *AccountModificationFee_FeeValue + Fee isAccountModificationFee_Fee `protobuf_oneof:"fee"` +} + +func (x *AccountModificationFee) Reset() { + *x = AccountModificationFee{} + if protoimpl.UnsafeEnabled { + mi := &file_trader_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AccountModificationFee) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AccountModificationFee) ProtoMessage() {} + +func (x *AccountModificationFee) ProtoReflect() protoreflect.Message { + mi := &file_trader_proto_msgTypes[36] + 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 AccountModificationFee.ProtoReflect.Descriptor instead. +func (*AccountModificationFee) Descriptor() ([]byte, []int) { + return file_trader_proto_rawDescGZIP(), []int{36} +} + +func (x *AccountModificationFee) GetAction() string { + if x != nil { + return x.Action + } + return "" +} + +func (x *AccountModificationFee) GetTxid() string { + if x != nil { + return x.Txid + } + return "" +} + +func (x *AccountModificationFee) GetBlockHeight() int32 { + if x != nil { + return x.BlockHeight + } + return 0 +} + +func (x *AccountModificationFee) GetTimestamp() int64 { + if x != nil { + return x.Timestamp + } + return 0 +} + +func (x *AccountModificationFee) GetOutputAmount() int64 { + if x != nil { + return x.OutputAmount + } + return 0 +} + +func (m *AccountModificationFee) GetFee() isAccountModificationFee_Fee { + if m != nil { + return m.Fee + } + return nil +} + +func (x *AccountModificationFee) GetFeeNull() bool { + if x, ok := x.GetFee().(*AccountModificationFee_FeeNull); ok { + return x.FeeNull + } + return false +} + +func (x *AccountModificationFee) GetFeeValue() int64 { + if x, ok := x.GetFee().(*AccountModificationFee_FeeValue); ok { + return x.FeeValue + } + return 0 +} + +type isAccountModificationFee_Fee interface { + isAccountModificationFee_Fee() +} + +type AccountModificationFee_FeeNull struct { + // A flag which is true if fee value has not been set, and is otherwise + // false. + FeeNull bool `protobuf:"varint,6,opt,name=fee_null,json=feeNull,proto3,oneof"` +} + +type AccountModificationFee_FeeValue struct { + // Action transaction fee value. + FeeValue int64 `protobuf:"varint,7,opt,name=fee_value,json=feeValue,proto3,oneof"` +} + +func (*AccountModificationFee_FeeNull) isAccountModificationFee_Fee() {} + +func (*AccountModificationFee_FeeValue) isAccountModificationFee_Fee() {} + +type ListOfAccountModificationFees struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ModificationFees []*AccountModificationFee `protobuf:"bytes,1,rep,name=modification_fees,json=modificationFees,proto3" json:"modification_fees,omitempty"` +} + +func (x *ListOfAccountModificationFees) Reset() { + *x = ListOfAccountModificationFees{} + if protoimpl.UnsafeEnabled { + mi := &file_trader_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListOfAccountModificationFees) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListOfAccountModificationFees) ProtoMessage() {} + +func (x *ListOfAccountModificationFees) ProtoReflect() protoreflect.Message { + mi := &file_trader_proto_msgTypes[37] + 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 ListOfAccountModificationFees.ProtoReflect.Descriptor instead. +func (*ListOfAccountModificationFees) Descriptor() ([]byte, []int) { + return file_trader_proto_rawDescGZIP(), []int{37} +} + +func (x *ListOfAccountModificationFees) GetModificationFees() []*AccountModificationFee { + if x != nil { + return x.ModificationFees + } + return nil +} + +type AccountModificationFeesResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // A map from account key to an ordered list of account modification fees. + Accounts map[string]*ListOfAccountModificationFees `protobuf:"bytes,1,rep,name=accounts,proto3" json:"accounts,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +} + +func (x *AccountModificationFeesResponse) Reset() { + *x = AccountModificationFeesResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_trader_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AccountModificationFeesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AccountModificationFeesResponse) ProtoMessage() {} + +func (x *AccountModificationFeesResponse) ProtoReflect() protoreflect.Message { + mi := &file_trader_proto_msgTypes[38] + 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 AccountModificationFeesResponse.ProtoReflect.Descriptor instead. +func (*AccountModificationFeesResponse) Descriptor() ([]byte, []int) { + return file_trader_proto_rawDescGZIP(), []int{38} +} + +func (x *AccountModificationFeesResponse) GetAccounts() map[string]*ListOfAccountModificationFees { + if x != nil { + return x.Accounts + } + return nil +} + type AuctionFeeRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -3245,7 +3508,7 @@ type AuctionFeeRequest struct { func (x *AuctionFeeRequest) Reset() { *x = AuctionFeeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_trader_proto_msgTypes[35] + mi := &file_trader_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3258,7 +3521,7 @@ func (x *AuctionFeeRequest) String() string { func (*AuctionFeeRequest) ProtoMessage() {} func (x *AuctionFeeRequest) ProtoReflect() protoreflect.Message { - mi := &file_trader_proto_msgTypes[35] + mi := &file_trader_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3271,7 +3534,7 @@ func (x *AuctionFeeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AuctionFeeRequest.ProtoReflect.Descriptor instead. func (*AuctionFeeRequest) Descriptor() ([]byte, []int) { - return file_trader_proto_rawDescGZIP(), []int{35} + return file_trader_proto_rawDescGZIP(), []int{39} } type AuctionFeeResponse struct { @@ -3287,7 +3550,7 @@ type AuctionFeeResponse struct { func (x *AuctionFeeResponse) Reset() { *x = AuctionFeeResponse{} if protoimpl.UnsafeEnabled { - mi := &file_trader_proto_msgTypes[36] + mi := &file_trader_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3300,7 +3563,7 @@ func (x *AuctionFeeResponse) String() string { func (*AuctionFeeResponse) ProtoMessage() {} func (x *AuctionFeeResponse) ProtoReflect() protoreflect.Message { - mi := &file_trader_proto_msgTypes[36] + mi := &file_trader_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3313,7 +3576,7 @@ func (x *AuctionFeeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use AuctionFeeResponse.ProtoReflect.Descriptor instead. func (*AuctionFeeResponse) Descriptor() ([]byte, []int) { - return file_trader_proto_rawDescGZIP(), []int{36} + return file_trader_proto_rawDescGZIP(), []int{40} } func (x *AuctionFeeResponse) GetExecutionFee() *auctioneerrpc.ExecutionFee { @@ -3376,7 +3639,7 @@ type Lease struct { func (x *Lease) Reset() { *x = Lease{} if protoimpl.UnsafeEnabled { - mi := &file_trader_proto_msgTypes[37] + mi := &file_trader_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3389,7 +3652,7 @@ func (x *Lease) String() string { func (*Lease) ProtoMessage() {} func (x *Lease) ProtoReflect() protoreflect.Message { - mi := &file_trader_proto_msgTypes[37] + mi := &file_trader_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3402,7 +3665,7 @@ func (x *Lease) ProtoReflect() protoreflect.Message { // Deprecated: Use Lease.ProtoReflect.Descriptor instead. func (*Lease) Descriptor() ([]byte, []int) { - return file_trader_proto_rawDescGZIP(), []int{37} + return file_trader_proto_rawDescGZIP(), []int{41} } func (x *Lease) GetChannelPoint() *auctioneerrpc.OutPoint { @@ -3535,7 +3798,7 @@ type LeasesRequest struct { func (x *LeasesRequest) Reset() { *x = LeasesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_trader_proto_msgTypes[38] + mi := &file_trader_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3548,7 +3811,7 @@ func (x *LeasesRequest) String() string { func (*LeasesRequest) ProtoMessage() {} func (x *LeasesRequest) ProtoReflect() protoreflect.Message { - mi := &file_trader_proto_msgTypes[38] + mi := &file_trader_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3561,7 +3824,7 @@ func (x *LeasesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use LeasesRequest.ProtoReflect.Descriptor instead. func (*LeasesRequest) Descriptor() ([]byte, []int) { - return file_trader_proto_rawDescGZIP(), []int{38} + return file_trader_proto_rawDescGZIP(), []int{42} } func (x *LeasesRequest) GetBatchIds() [][]byte { @@ -3594,7 +3857,7 @@ type LeasesResponse struct { func (x *LeasesResponse) Reset() { *x = LeasesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_trader_proto_msgTypes[39] + mi := &file_trader_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3607,7 +3870,7 @@ func (x *LeasesResponse) String() string { func (*LeasesResponse) ProtoMessage() {} func (x *LeasesResponse) ProtoReflect() protoreflect.Message { - mi := &file_trader_proto_msgTypes[39] + mi := &file_trader_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3620,7 +3883,7 @@ func (x *LeasesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use LeasesResponse.ProtoReflect.Descriptor instead. func (*LeasesResponse) Descriptor() ([]byte, []int) { - return file_trader_proto_rawDescGZIP(), []int{39} + return file_trader_proto_rawDescGZIP(), []int{43} } func (x *LeasesResponse) GetLeases() []*Lease { @@ -3653,7 +3916,7 @@ type TokensRequest struct { func (x *TokensRequest) Reset() { *x = TokensRequest{} if protoimpl.UnsafeEnabled { - mi := &file_trader_proto_msgTypes[40] + mi := &file_trader_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3666,7 +3929,7 @@ func (x *TokensRequest) String() string { func (*TokensRequest) ProtoMessage() {} func (x *TokensRequest) ProtoReflect() protoreflect.Message { - mi := &file_trader_proto_msgTypes[40] + mi := &file_trader_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3679,7 +3942,7 @@ func (x *TokensRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use TokensRequest.ProtoReflect.Descriptor instead. func (*TokensRequest) Descriptor() ([]byte, []int) { - return file_trader_proto_rawDescGZIP(), []int{40} + return file_trader_proto_rawDescGZIP(), []int{44} } type TokensResponse struct { @@ -3695,7 +3958,7 @@ type TokensResponse struct { func (x *TokensResponse) Reset() { *x = TokensResponse{} if protoimpl.UnsafeEnabled { - mi := &file_trader_proto_msgTypes[41] + mi := &file_trader_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3708,7 +3971,7 @@ func (x *TokensResponse) String() string { func (*TokensResponse) ProtoMessage() {} func (x *TokensResponse) ProtoReflect() protoreflect.Message { - mi := &file_trader_proto_msgTypes[41] + mi := &file_trader_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3721,7 +3984,7 @@ func (x *TokensResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use TokensResponse.ProtoReflect.Descriptor instead. func (*TokensResponse) Descriptor() ([]byte, []int) { - return file_trader_proto_rawDescGZIP(), []int{41} + return file_trader_proto_rawDescGZIP(), []int{45} } func (x *TokensResponse) GetTokens() []*LsatToken { @@ -3768,7 +4031,7 @@ type LsatToken struct { func (x *LsatToken) Reset() { *x = LsatToken{} if protoimpl.UnsafeEnabled { - mi := &file_trader_proto_msgTypes[42] + mi := &file_trader_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3781,7 +4044,7 @@ func (x *LsatToken) String() string { func (*LsatToken) ProtoMessage() {} func (x *LsatToken) ProtoReflect() protoreflect.Message { - mi := &file_trader_proto_msgTypes[42] + mi := &file_trader_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3794,7 +4057,7 @@ func (x *LsatToken) ProtoReflect() protoreflect.Message { // Deprecated: Use LsatToken.ProtoReflect.Descriptor instead. func (*LsatToken) Descriptor() ([]byte, []int) { - return file_trader_proto_rawDescGZIP(), []int{42} + return file_trader_proto_rawDescGZIP(), []int{46} } func (x *LsatToken) GetBaseMacaroon() []byte { @@ -3862,7 +4125,7 @@ type LeaseDurationRequest struct { func (x *LeaseDurationRequest) Reset() { *x = LeaseDurationRequest{} if protoimpl.UnsafeEnabled { - mi := &file_trader_proto_msgTypes[43] + mi := &file_trader_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3875,7 +4138,7 @@ func (x *LeaseDurationRequest) String() string { func (*LeaseDurationRequest) ProtoMessage() {} func (x *LeaseDurationRequest) ProtoReflect() protoreflect.Message { - mi := &file_trader_proto_msgTypes[43] + mi := &file_trader_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3888,7 +4151,7 @@ func (x *LeaseDurationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use LeaseDurationRequest.ProtoReflect.Descriptor instead. func (*LeaseDurationRequest) Descriptor() ([]byte, []int) { - return file_trader_proto_rawDescGZIP(), []int{43} + return file_trader_proto_rawDescGZIP(), []int{47} } type LeaseDurationResponse struct { @@ -3910,7 +4173,7 @@ type LeaseDurationResponse struct { func (x *LeaseDurationResponse) Reset() { *x = LeaseDurationResponse{} if protoimpl.UnsafeEnabled { - mi := &file_trader_proto_msgTypes[44] + mi := &file_trader_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3923,7 +4186,7 @@ func (x *LeaseDurationResponse) String() string { func (*LeaseDurationResponse) ProtoMessage() {} func (x *LeaseDurationResponse) ProtoReflect() protoreflect.Message { - mi := &file_trader_proto_msgTypes[44] + mi := &file_trader_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3936,7 +4199,7 @@ func (x *LeaseDurationResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use LeaseDurationResponse.ProtoReflect.Descriptor instead. func (*LeaseDurationResponse) Descriptor() ([]byte, []int) { - return file_trader_proto_rawDescGZIP(), []int{44} + return file_trader_proto_rawDescGZIP(), []int{48} } // Deprecated: Do not use. @@ -3963,7 +4226,7 @@ type NextBatchInfoRequest struct { func (x *NextBatchInfoRequest) Reset() { *x = NextBatchInfoRequest{} if protoimpl.UnsafeEnabled { - mi := &file_trader_proto_msgTypes[45] + mi := &file_trader_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3976,7 +4239,7 @@ func (x *NextBatchInfoRequest) String() string { func (*NextBatchInfoRequest) ProtoMessage() {} func (x *NextBatchInfoRequest) ProtoReflect() protoreflect.Message { - mi := &file_trader_proto_msgTypes[45] + mi := &file_trader_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3989,7 +4252,7 @@ func (x *NextBatchInfoRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use NextBatchInfoRequest.ProtoReflect.Descriptor instead. func (*NextBatchInfoRequest) Descriptor() ([]byte, []int) { - return file_trader_proto_rawDescGZIP(), []int{45} + return file_trader_proto_rawDescGZIP(), []int{49} } type NextBatchInfoResponse struct { @@ -4018,7 +4281,7 @@ type NextBatchInfoResponse struct { func (x *NextBatchInfoResponse) Reset() { *x = NextBatchInfoResponse{} if protoimpl.UnsafeEnabled { - mi := &file_trader_proto_msgTypes[46] + mi := &file_trader_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4031,7 +4294,7 @@ func (x *NextBatchInfoResponse) String() string { func (*NextBatchInfoResponse) ProtoMessage() {} func (x *NextBatchInfoResponse) ProtoReflect() protoreflect.Message { - mi := &file_trader_proto_msgTypes[46] + mi := &file_trader_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4044,7 +4307,7 @@ func (x *NextBatchInfoResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use NextBatchInfoResponse.ProtoReflect.Descriptor instead. func (*NextBatchInfoResponse) Descriptor() ([]byte, []int) { - return file_trader_proto_rawDescGZIP(), []int{46} + return file_trader_proto_rawDescGZIP(), []int{50} } func (x *NextBatchInfoResponse) GetConfTarget() uint32 { @@ -4087,7 +4350,7 @@ type NodeRatingRequest struct { func (x *NodeRatingRequest) Reset() { *x = NodeRatingRequest{} if protoimpl.UnsafeEnabled { - mi := &file_trader_proto_msgTypes[47] + mi := &file_trader_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4100,7 +4363,7 @@ func (x *NodeRatingRequest) String() string { func (*NodeRatingRequest) ProtoMessage() {} func (x *NodeRatingRequest) ProtoReflect() protoreflect.Message { - mi := &file_trader_proto_msgTypes[47] + mi := &file_trader_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4113,7 +4376,7 @@ func (x *NodeRatingRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use NodeRatingRequest.ProtoReflect.Descriptor instead. func (*NodeRatingRequest) Descriptor() ([]byte, []int) { - return file_trader_proto_rawDescGZIP(), []int{47} + return file_trader_proto_rawDescGZIP(), []int{51} } func (x *NodeRatingRequest) GetNodePubkeys() [][]byte { @@ -4135,7 +4398,7 @@ type NodeRatingResponse struct { func (x *NodeRatingResponse) Reset() { *x = NodeRatingResponse{} if protoimpl.UnsafeEnabled { - mi := &file_trader_proto_msgTypes[48] + mi := &file_trader_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4148,7 +4411,7 @@ func (x *NodeRatingResponse) String() string { func (*NodeRatingResponse) ProtoMessage() {} func (x *NodeRatingResponse) ProtoReflect() protoreflect.Message { - mi := &file_trader_proto_msgTypes[48] + mi := &file_trader_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4161,7 +4424,7 @@ func (x *NodeRatingResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use NodeRatingResponse.ProtoReflect.Descriptor instead. func (*NodeRatingResponse) Descriptor() ([]byte, []int) { - return file_trader_proto_rawDescGZIP(), []int{48} + return file_trader_proto_rawDescGZIP(), []int{52} } func (x *NodeRatingResponse) GetNodeRatings() []*auctioneerrpc.NodeRating { @@ -4180,7 +4443,7 @@ type GetInfoRequest struct { func (x *GetInfoRequest) Reset() { *x = GetInfoRequest{} if protoimpl.UnsafeEnabled { - mi := &file_trader_proto_msgTypes[49] + mi := &file_trader_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4193,7 +4456,7 @@ func (x *GetInfoRequest) String() string { func (*GetInfoRequest) ProtoMessage() {} func (x *GetInfoRequest) ProtoReflect() protoreflect.Message { - mi := &file_trader_proto_msgTypes[49] + mi := &file_trader_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4206,7 +4469,7 @@ func (x *GetInfoRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetInfoRequest.ProtoReflect.Descriptor instead. func (*GetInfoRequest) Descriptor() ([]byte, []int) { - return file_trader_proto_rawDescGZIP(), []int{49} + return file_trader_proto_rawDescGZIP(), []int{53} } type GetInfoResponse struct { @@ -4263,7 +4526,7 @@ type GetInfoResponse struct { func (x *GetInfoResponse) Reset() { *x = GetInfoResponse{} if protoimpl.UnsafeEnabled { - mi := &file_trader_proto_msgTypes[50] + mi := &file_trader_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4276,7 +4539,7 @@ func (x *GetInfoResponse) String() string { func (*GetInfoResponse) ProtoMessage() {} func (x *GetInfoResponse) ProtoReflect() protoreflect.Message { - mi := &file_trader_proto_msgTypes[50] + mi := &file_trader_proto_msgTypes[54] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4289,7 +4552,7 @@ func (x *GetInfoResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetInfoResponse.ProtoReflect.Descriptor instead. func (*GetInfoResponse) Descriptor() ([]byte, []int) { - return file_trader_proto_rawDescGZIP(), []int{50} + return file_trader_proto_rawDescGZIP(), []int{54} } func (x *GetInfoResponse) GetVersion() string { @@ -4406,7 +4669,7 @@ type StopDaemonRequest struct { func (x *StopDaemonRequest) Reset() { *x = StopDaemonRequest{} if protoimpl.UnsafeEnabled { - mi := &file_trader_proto_msgTypes[51] + mi := &file_trader_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4419,7 +4682,7 @@ func (x *StopDaemonRequest) String() string { func (*StopDaemonRequest) ProtoMessage() {} func (x *StopDaemonRequest) ProtoReflect() protoreflect.Message { - mi := &file_trader_proto_msgTypes[51] + mi := &file_trader_proto_msgTypes[55] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4432,7 +4695,7 @@ func (x *StopDaemonRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use StopDaemonRequest.ProtoReflect.Descriptor instead. func (*StopDaemonRequest) Descriptor() ([]byte, []int) { - return file_trader_proto_rawDescGZIP(), []int{51} + return file_trader_proto_rawDescGZIP(), []int{55} } type StopDaemonResponse struct { @@ -4444,7 +4707,7 @@ type StopDaemonResponse struct { func (x *StopDaemonResponse) Reset() { *x = StopDaemonResponse{} if protoimpl.UnsafeEnabled { - mi := &file_trader_proto_msgTypes[52] + mi := &file_trader_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4457,7 +4720,7 @@ func (x *StopDaemonResponse) String() string { func (*StopDaemonResponse) ProtoMessage() {} func (x *StopDaemonResponse) ProtoReflect() protoreflect.Message { - mi := &file_trader_proto_msgTypes[52] + mi := &file_trader_proto_msgTypes[56] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4470,7 +4733,7 @@ func (x *StopDaemonResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use StopDaemonResponse.ProtoReflect.Descriptor instead. func (*StopDaemonResponse) Descriptor() ([]byte, []int) { - return file_trader_proto_rawDescGZIP(), []int{52} + return file_trader_proto_rawDescGZIP(), []int{56} } type OfferSidecarRequest struct { @@ -4493,7 +4756,7 @@ type OfferSidecarRequest struct { func (x *OfferSidecarRequest) Reset() { *x = OfferSidecarRequest{} if protoimpl.UnsafeEnabled { - mi := &file_trader_proto_msgTypes[53] + mi := &file_trader_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4506,7 +4769,7 @@ func (x *OfferSidecarRequest) String() string { func (*OfferSidecarRequest) ProtoMessage() {} func (x *OfferSidecarRequest) ProtoReflect() protoreflect.Message { - mi := &file_trader_proto_msgTypes[53] + mi := &file_trader_proto_msgTypes[57] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4519,7 +4782,7 @@ func (x *OfferSidecarRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use OfferSidecarRequest.ProtoReflect.Descriptor instead. func (*OfferSidecarRequest) Descriptor() ([]byte, []int) { - return file_trader_proto_rawDescGZIP(), []int{53} + return file_trader_proto_rawDescGZIP(), []int{57} } func (x *OfferSidecarRequest) GetAutoNegotiate() bool { @@ -4553,7 +4816,7 @@ type SidecarTicket struct { func (x *SidecarTicket) Reset() { *x = SidecarTicket{} if protoimpl.UnsafeEnabled { - mi := &file_trader_proto_msgTypes[54] + mi := &file_trader_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4566,7 +4829,7 @@ func (x *SidecarTicket) String() string { func (*SidecarTicket) ProtoMessage() {} func (x *SidecarTicket) ProtoReflect() protoreflect.Message { - mi := &file_trader_proto_msgTypes[54] + mi := &file_trader_proto_msgTypes[58] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4579,7 +4842,7 @@ func (x *SidecarTicket) ProtoReflect() protoreflect.Message { // Deprecated: Use SidecarTicket.ProtoReflect.Descriptor instead. func (*SidecarTicket) Descriptor() ([]byte, []int) { - return file_trader_proto_rawDescGZIP(), []int{54} + return file_trader_proto_rawDescGZIP(), []int{58} } func (x *SidecarTicket) GetTicket() string { @@ -4641,7 +4904,7 @@ type DecodedSidecarTicket struct { func (x *DecodedSidecarTicket) Reset() { *x = DecodedSidecarTicket{} if protoimpl.UnsafeEnabled { - mi := &file_trader_proto_msgTypes[55] + mi := &file_trader_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4654,7 +4917,7 @@ func (x *DecodedSidecarTicket) String() string { func (*DecodedSidecarTicket) ProtoMessage() {} func (x *DecodedSidecarTicket) ProtoReflect() protoreflect.Message { - mi := &file_trader_proto_msgTypes[55] + mi := &file_trader_proto_msgTypes[59] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4667,7 +4930,7 @@ func (x *DecodedSidecarTicket) ProtoReflect() protoreflect.Message { // Deprecated: Use DecodedSidecarTicket.ProtoReflect.Descriptor instead. func (*DecodedSidecarTicket) Descriptor() ([]byte, []int) { - return file_trader_proto_rawDescGZIP(), []int{55} + return file_trader_proto_rawDescGZIP(), []int{59} } func (x *DecodedSidecarTicket) GetId() []byte { @@ -4817,7 +5080,7 @@ type RegisterSidecarRequest struct { func (x *RegisterSidecarRequest) Reset() { *x = RegisterSidecarRequest{} if protoimpl.UnsafeEnabled { - mi := &file_trader_proto_msgTypes[56] + mi := &file_trader_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4830,7 +5093,7 @@ func (x *RegisterSidecarRequest) String() string { func (*RegisterSidecarRequest) ProtoMessage() {} func (x *RegisterSidecarRequest) ProtoReflect() protoreflect.Message { - mi := &file_trader_proto_msgTypes[56] + mi := &file_trader_proto_msgTypes[60] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4843,7 +5106,7 @@ func (x *RegisterSidecarRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RegisterSidecarRequest.ProtoReflect.Descriptor instead. func (*RegisterSidecarRequest) Descriptor() ([]byte, []int) { - return file_trader_proto_rawDescGZIP(), []int{56} + return file_trader_proto_rawDescGZIP(), []int{60} } func (x *RegisterSidecarRequest) GetTicket() string { @@ -4874,7 +5137,7 @@ type ExpectSidecarChannelRequest struct { func (x *ExpectSidecarChannelRequest) Reset() { *x = ExpectSidecarChannelRequest{} if protoimpl.UnsafeEnabled { - mi := &file_trader_proto_msgTypes[57] + mi := &file_trader_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4887,7 +5150,7 @@ func (x *ExpectSidecarChannelRequest) String() string { func (*ExpectSidecarChannelRequest) ProtoMessage() {} func (x *ExpectSidecarChannelRequest) ProtoReflect() protoreflect.Message { - mi := &file_trader_proto_msgTypes[57] + mi := &file_trader_proto_msgTypes[61] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4900,7 +5163,7 @@ func (x *ExpectSidecarChannelRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ExpectSidecarChannelRequest.ProtoReflect.Descriptor instead. func (*ExpectSidecarChannelRequest) Descriptor() ([]byte, []int) { - return file_trader_proto_rawDescGZIP(), []int{57} + return file_trader_proto_rawDescGZIP(), []int{61} } func (x *ExpectSidecarChannelRequest) GetTicket() string { @@ -4919,7 +5182,7 @@ type ExpectSidecarChannelResponse struct { func (x *ExpectSidecarChannelResponse) Reset() { *x = ExpectSidecarChannelResponse{} if protoimpl.UnsafeEnabled { - mi := &file_trader_proto_msgTypes[58] + mi := &file_trader_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4932,7 +5195,7 @@ func (x *ExpectSidecarChannelResponse) String() string { func (*ExpectSidecarChannelResponse) ProtoMessage() {} func (x *ExpectSidecarChannelResponse) ProtoReflect() protoreflect.Message { - mi := &file_trader_proto_msgTypes[58] + mi := &file_trader_proto_msgTypes[62] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4945,7 +5208,7 @@ func (x *ExpectSidecarChannelResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ExpectSidecarChannelResponse.ProtoReflect.Descriptor instead. func (*ExpectSidecarChannelResponse) Descriptor() ([]byte, []int) { - return file_trader_proto_rawDescGZIP(), []int{58} + return file_trader_proto_rawDescGZIP(), []int{62} } type ListSidecarsRequest struct { @@ -4971,7 +5234,7 @@ type ListSidecarsRequest struct { func (x *ListSidecarsRequest) Reset() { *x = ListSidecarsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_trader_proto_msgTypes[59] + mi := &file_trader_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4984,7 +5247,7 @@ func (x *ListSidecarsRequest) String() string { func (*ListSidecarsRequest) ProtoMessage() {} func (x *ListSidecarsRequest) ProtoReflect() protoreflect.Message { - mi := &file_trader_proto_msgTypes[59] + mi := &file_trader_proto_msgTypes[63] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4997,7 +5260,7 @@ func (x *ListSidecarsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListSidecarsRequest.ProtoReflect.Descriptor instead. func (*ListSidecarsRequest) Descriptor() ([]byte, []int) { - return file_trader_proto_rawDescGZIP(), []int{59} + return file_trader_proto_rawDescGZIP(), []int{63} } func (x *ListSidecarsRequest) GetSidecarId() []byte { @@ -5018,7 +5281,7 @@ type ListSidecarsResponse struct { func (x *ListSidecarsResponse) Reset() { *x = ListSidecarsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_trader_proto_msgTypes[60] + mi := &file_trader_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5031,7 +5294,7 @@ func (x *ListSidecarsResponse) String() string { func (*ListSidecarsResponse) ProtoMessage() {} func (x *ListSidecarsResponse) ProtoReflect() protoreflect.Message { - mi := &file_trader_proto_msgTypes[60] + mi := &file_trader_proto_msgTypes[64] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5044,7 +5307,7 @@ func (x *ListSidecarsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListSidecarsResponse.ProtoReflect.Descriptor instead. func (*ListSidecarsResponse) Descriptor() ([]byte, []int) { - return file_trader_proto_rawDescGZIP(), []int{60} + return file_trader_proto_rawDescGZIP(), []int{64} } func (x *ListSidecarsResponse) GetTickets() []*DecodedSidecarTicket { @@ -5065,7 +5328,7 @@ type CancelSidecarRequest struct { func (x *CancelSidecarRequest) Reset() { *x = CancelSidecarRequest{} if protoimpl.UnsafeEnabled { - mi := &file_trader_proto_msgTypes[61] + mi := &file_trader_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5078,7 +5341,7 @@ func (x *CancelSidecarRequest) String() string { func (*CancelSidecarRequest) ProtoMessage() {} func (x *CancelSidecarRequest) ProtoReflect() protoreflect.Message { - mi := &file_trader_proto_msgTypes[61] + mi := &file_trader_proto_msgTypes[65] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5091,7 +5354,7 @@ func (x *CancelSidecarRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CancelSidecarRequest.ProtoReflect.Descriptor instead. func (*CancelSidecarRequest) Descriptor() ([]byte, []int) { - return file_trader_proto_rawDescGZIP(), []int{61} + return file_trader_proto_rawDescGZIP(), []int{65} } func (x *CancelSidecarRequest) GetSidecarId() []byte { @@ -5110,7 +5373,7 @@ type CancelSidecarResponse struct { func (x *CancelSidecarResponse) Reset() { *x = CancelSidecarResponse{} if protoimpl.UnsafeEnabled { - mi := &file_trader_proto_msgTypes[62] + mi := &file_trader_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5123,7 +5386,7 @@ func (x *CancelSidecarResponse) String() string { func (*CancelSidecarResponse) ProtoMessage() {} func (x *CancelSidecarResponse) ProtoReflect() protoreflect.Message { - mi := &file_trader_proto_msgTypes[62] + mi := &file_trader_proto_msgTypes[66] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5136,7 +5399,7 @@ func (x *CancelSidecarResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CancelSidecarResponse.ProtoReflect.Descriptor instead. func (*CancelSidecarResponse) Descriptor() ([]byte, []int) { - return file_trader_proto_rawDescGZIP(), []int{62} + return file_trader_proto_rawDescGZIP(), []int{66} } var File_trader_proto protoreflect.FileDescriptor @@ -5544,460 +5807,505 @@ var file_trader_proto_rawDesc = []byte{ 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x16, 0x6e, 0x75, 0x6d, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x14, 0x6e, 0x75, 0x6d, 0x52, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x65, - 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x22, 0x13, 0x0a, 0x11, 0x41, 0x75, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x50, - 0x0a, 0x12, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x66, 0x65, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x6f, - 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x46, - 0x65, 0x65, 0x52, 0x0c, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x65, - 0x22, 0xd6, 0x05, 0x0a, 0x05, 0x4c, 0x65, 0x61, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x0d, 0x63, 0x68, - 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x75, 0x74, 0x50, - 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x50, 0x6f, 0x69, - 0x6e, 0x74, 0x12, 0x26, 0x0a, 0x0f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x61, 0x6d, - 0x74, 0x5f, 0x73, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x63, 0x68, 0x61, - 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x6d, 0x74, 0x53, 0x61, 0x74, 0x12, 0x36, 0x0a, 0x17, 0x63, 0x68, - 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x15, 0x63, 0x68, 0x61, - 0x6e, 0x6e, 0x65, 0x6c, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6c, 0x65, - 0x61, 0x73, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x12, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4c, 0x65, 0x61, 0x73, 0x65, 0x45, 0x78, - 0x70, 0x69, 0x72, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x65, 0x6d, 0x69, 0x75, 0x6d, 0x5f, - 0x73, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x6d, 0x69, - 0x75, 0x6d, 0x53, 0x61, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x73, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x65, 0x53, 0x61, - 0x74, 0x12, 0x22, 0x0a, 0x0d, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x73, - 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x46, - 0x65, 0x65, 0x53, 0x61, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x69, 0x6e, - 0x67, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x11, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x61, 0x74, 0x65, - 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x66, - 0x69, 0x78, 0x65, 0x64, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x0e, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x46, 0x69, 0x78, 0x65, 0x64, 0x52, 0x61, 0x74, 0x65, 0x12, - 0x1f, 0x0a, 0x0b, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x6e, 0x63, 0x65, - 0x12, 0x2e, 0x0a, 0x13, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x6f, 0x72, 0x64, 0x65, - 0x72, 0x5f, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x11, 0x6d, - 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x6e, 0x63, 0x65, - 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x75, 0x72, 0x63, 0x68, 0x61, 0x73, 0x65, 0x64, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x09, 0x70, 0x75, 0x72, 0x63, 0x68, 0x61, 0x73, 0x65, 0x64, 0x12, 0x35, - 0x0a, 0x17, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, - 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0c, 0x52, - 0x14, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x4e, 0x6f, - 0x64, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x3d, 0x0a, 0x11, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, - 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x74, 0x69, 0x65, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x11, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x54, - 0x69, 0x65, 0x72, 0x52, 0x0f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x6f, 0x64, 0x65, - 0x54, 0x69, 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x65, 0x6c, 0x66, 0x5f, 0x63, 0x68, 0x61, - 0x6e, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x0f, 0x73, 0x65, 0x6c, 0x66, 0x43, 0x68, 0x61, 0x6e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, - 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x5f, 0x63, 0x68, 0x61, 0x6e, - 0x6e, 0x65, 0x6c, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x73, 0x69, 0x64, 0x65, 0x63, - 0x61, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x22, 0x48, 0x0a, 0x0d, 0x4c, 0x65, 0x61, - 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x61, - 0x74, 0x63, 0x68, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x08, 0x62, - 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x73, 0x22, 0x96, 0x01, 0x0a, 0x0e, 0x4c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x06, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, - 0x2e, 0x4c, 0x65, 0x61, 0x73, 0x65, 0x52, 0x06, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x12, 0x2f, - 0x0a, 0x14, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x61, 0x6d, 0x74, 0x5f, 0x65, 0x61, 0x72, 0x6e, - 0x65, 0x64, 0x5f, 0x73, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x11, 0x74, 0x6f, - 0x74, 0x61, 0x6c, 0x41, 0x6d, 0x74, 0x45, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x53, 0x61, 0x74, 0x12, - 0x2b, 0x0a, 0x12, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x61, 0x6d, 0x74, 0x5f, 0x70, 0x61, 0x69, - 0x64, 0x5f, 0x73, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x74, 0x6f, 0x74, - 0x61, 0x6c, 0x41, 0x6d, 0x74, 0x50, 0x61, 0x69, 0x64, 0x53, 0x61, 0x74, 0x22, 0x0f, 0x0a, 0x0d, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x3c, 0x0a, - 0x0e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x2a, 0x0a, 0x06, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x12, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x73, 0x61, 0x74, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x52, 0x06, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x22, 0xbb, 0x02, 0x0a, 0x09, - 0x4c, 0x73, 0x61, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x62, 0x61, 0x73, - 0x65, 0x5f, 0x6d, 0x61, 0x63, 0x61, 0x72, 0x6f, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x0c, 0x62, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x63, 0x61, 0x72, 0x6f, 0x6f, 0x6e, 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, 0x29, 0x0a, 0x10, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x65, - 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x70, 0x61, 0x79, - 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x65, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x10, - 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x70, 0x61, 0x69, 0x64, 0x5f, 0x6d, 0x73, 0x61, 0x74, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x61, - 0x69, 0x64, 0x4d, 0x73, 0x61, 0x74, 0x12, 0x31, 0x0a, 0x15, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, - 0x67, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x70, 0x61, 0x69, 0x64, 0x5f, 0x6d, 0x73, 0x61, 0x74, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x46, 0x65, - 0x65, 0x50, 0x61, 0x69, 0x64, 0x4d, 0x73, 0x61, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x69, 0x6d, - 0x65, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, - 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, - 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x16, 0x0a, 0x14, 0x4c, 0x65, 0x61, - 0x73, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x22, 0x92, 0x03, 0x0a, 0x15, 0x4c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5f, 0x0a, 0x0f, 0x6c, - 0x65, 0x61, 0x73, 0x65, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x4c, - 0x65, 0x61, 0x73, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0e, 0x6c, 0x65, - 0x61, 0x73, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x6e, 0x0a, 0x16, - 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, - 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x70, - 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x75, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4c, 0x65, 0x61, - 0x73, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x14, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x1a, 0x41, 0x0a, 0x13, - 0x4c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, - 0x65, 0x0a, 0x19, 0x4c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x32, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, - 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x16, 0x0a, 0x14, 0x4e, 0x65, 0x78, 0x74, 0x42, 0x61, - 0x74, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xce, - 0x01, 0x0a, 0x15, 0x4e, 0x65, 0x78, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x66, - 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x63, - 0x6f, 0x6e, 0x66, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x2c, 0x0a, 0x13, 0x66, 0x65, 0x65, - 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x61, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x6b, 0x77, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x66, 0x65, 0x65, 0x52, 0x61, 0x74, 0x65, 0x53, - 0x61, 0x74, 0x50, 0x65, 0x72, 0x4b, 0x77, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6c, 0x65, 0x61, 0x72, - 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x0e, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x12, 0x3d, 0x0a, 0x1b, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x6e, 0x65, 0x77, 0x5f, 0x65, - 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x18, 0x61, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6e, 0x65, 0x77, - 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x22, - 0x36, 0x0a, 0x11, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x70, 0x75, 0x62, - 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, - 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x73, 0x22, 0x4c, 0x0a, 0x12, 0x4e, 0x6f, 0x64, 0x65, 0x52, - 0x61, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, - 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x4e, 0x6f, - 0x64, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x52, 0x61, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x10, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x84, 0x06, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x73, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x27, 0x0a, 0x0f, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x41, - 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x36, 0x0a, 0x17, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x73, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x15, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, - 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x12, 0x2b, 0x0a, - 0x11, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, - 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x73, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x72, - 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x0b, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x23, 0x0a, - 0x0d, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x41, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x61, 0x72, 0x63, - 0x68, 0x69, 0x76, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x6f, 0x72, 0x64, - 0x65, 0x72, 0x73, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x63, - 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x63, 0x75, 0x72, 0x72, 0x65, - 0x6e, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x29, 0x0a, - 0x10, 0x62, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x5f, 0x69, 0x6e, 0x76, 0x6f, 0x6c, 0x76, 0x65, - 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x62, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, - 0x49, 0x6e, 0x76, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x12, 0x34, 0x0a, 0x0b, 0x6e, 0x6f, 0x64, 0x65, - 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, - 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x61, 0x74, 0x69, - 0x6e, 0x67, 0x52, 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x1f, - 0x0a, 0x0b, 0x6c, 0x73, 0x61, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x0c, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6c, 0x73, 0x61, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, - 0x38, 0x0a, 0x18, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x64, 0x5f, 0x74, 0x6f, - 0x5f, 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x65, 0x65, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x16, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x64, 0x54, 0x6f, 0x41, - 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x65, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0e, 0x6e, 0x65, 0x77, - 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0c, 0x6e, 0x65, 0x77, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x4f, 0x6e, 0x6c, 0x79, 0x12, - 0x49, 0x0a, 0x0b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0f, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x47, - 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4d, - 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, - 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x52, 0x0a, 0x0f, 0x4d, 0x61, - 0x72, 0x6b, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x29, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, - 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x13, - 0x0a, 0x11, 0x53, 0x74, 0x6f, 0x70, 0x44, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x22, 0x14, 0x0a, 0x12, 0x53, 0x74, 0x6f, 0x70, 0x44, 0x61, 0x65, 0x6d, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5c, 0x0a, 0x13, 0x4f, 0x66, 0x66, - 0x65, 0x72, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6e, 0x65, 0x67, 0x6f, 0x74, 0x69, 0x61, - 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x61, 0x75, 0x74, 0x6f, 0x4e, 0x65, - 0x67, 0x6f, 0x74, 0x69, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x03, 0x62, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x42, - 0x69, 0x64, 0x52, 0x03, 0x62, 0x69, 0x64, 0x22, 0x27, 0x0a, 0x0d, 0x53, 0x69, 0x64, 0x65, 0x63, - 0x61, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x69, 0x63, 0x6b, - 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, - 0x22, 0xbf, 0x06, 0x0a, 0x14, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x53, 0x69, 0x64, 0x65, - 0x63, 0x61, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x66, 0x66, - 0x65, 0x72, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x0d, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, - 0x12, 0x2a, 0x0a, 0x11, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, 0x75, 0x73, 0x68, 0x5f, 0x61, - 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x6f, 0x66, 0x66, - 0x65, 0x72, 0x50, 0x75, 0x73, 0x68, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3d, 0x0a, 0x1b, - 0x6f, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x64, 0x75, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x18, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x6f, - 0x66, 0x66, 0x65, 0x72, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x53, 0x69, 0x67, - 0x6e, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x66, 0x66, 0x65, 0x72, - 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x0e, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x41, 0x75, 0x74, 0x6f, 0x12, - 0x32, 0x0a, 0x15, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x6f, 0x64, - 0x65, 0x5f, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x13, - 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x75, 0x62, - 0x6b, 0x65, 0x79, 0x12, 0x3a, 0x0a, 0x19, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, - 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x73, 0x69, 0x67, 0x5f, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x17, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, - 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x73, 0x69, 0x67, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, - 0x45, 0x0a, 0x1f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x75, 0x6c, - 0x74, 0x69, 0x73, 0x69, 0x67, 0x5f, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x1c, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, - 0x65, 0x6e, 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x73, 0x69, 0x67, 0x50, 0x75, 0x62, 0x6b, 0x65, - 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x26, 0x0a, 0x0f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, - 0x62, 0x69, 0x64, 0x5f, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0c, 0x52, - 0x0d, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x69, 0x64, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x27, - 0x0a, 0x0f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x69, - 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x3f, 0x0a, 0x1c, 0x65, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x68, 0x61, - 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x19, 0x65, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x43, - 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x63, 0x6f, - 0x64, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0d, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x12, - 0x3a, 0x0a, 0x19, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x75, 0x6e, 0x61, 0x6e, 0x6e, 0x6f, 0x75, - 0x6e, 0x63, 0x65, 0x64, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x11, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x17, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x55, 0x6e, 0x61, 0x6e, 0x6e, 0x6f, 0x75, - 0x6e, 0x63, 0x65, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x35, 0x0a, 0x17, 0x6f, - 0x66, 0x66, 0x65, 0x72, 0x5f, 0x7a, 0x65, 0x72, 0x6f, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x5f, 0x63, - 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x6f, 0x66, - 0x66, 0x65, 0x72, 0x5a, 0x65, 0x72, 0x6f, 0x43, 0x6f, 0x6e, 0x66, 0x43, 0x68, 0x61, 0x6e, 0x6e, - 0x65, 0x6c, 0x22, 0x57, 0x0a, 0x16, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x53, 0x69, - 0x64, 0x65, 0x63, 0x61, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, - 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x69, - 0x63, 0x6b, 0x65, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6e, 0x65, 0x67, - 0x6f, 0x74, 0x69, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x61, 0x75, - 0x74, 0x6f, 0x4e, 0x65, 0x67, 0x6f, 0x74, 0x69, 0x61, 0x74, 0x65, 0x22, 0x35, 0x0a, 0x1b, 0x45, - 0x78, 0x70, 0x65, 0x63, 0x74, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x43, 0x68, 0x61, 0x6e, - 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x69, + 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x22, 0x20, 0x0a, 0x1e, 0x41, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x46, 0x65, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xed, 0x01, 0x0a, 0x16, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, + 0x0a, 0x04, 0x74, 0x78, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x78, + 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x12, 0x23, 0x0a, 0x0d, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x61, 0x6d, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x08, 0x66, 0x65, 0x65, 0x5f, + 0x6e, 0x75, 0x6c, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x07, 0x66, 0x65, + 0x65, 0x4e, 0x75, 0x6c, 0x6c, 0x12, 0x1d, 0x0a, 0x09, 0x66, 0x65, 0x65, 0x5f, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x08, 0x66, 0x65, 0x65, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x42, 0x05, 0x0a, 0x03, 0x66, 0x65, 0x65, 0x22, 0x6d, 0x0a, 0x1d, 0x4c, + 0x69, 0x73, 0x74, 0x4f, 0x66, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x65, 0x73, 0x12, 0x4c, 0x0a, 0x11, + 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x65, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, + 0x63, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x65, 0x52, 0x10, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x65, 0x73, 0x22, 0xda, 0x01, 0x0a, 0x1f, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x46, 0x65, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x52, + 0x0a, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x36, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x65, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x73, 0x1a, 0x63, 0x0a, 0x0d, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x4f, 0x66, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x65, 0x73, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x13, 0x0a, 0x11, 0x41, 0x75, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x46, 0x65, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x50, 0x0a, 0x12, + 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x66, 0x65, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, + 0x72, 0x70, 0x63, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x65, + 0x52, 0x0c, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x65, 0x22, 0xd6, + 0x05, 0x0a, 0x05, 0x4c, 0x65, 0x61, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x0d, 0x63, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x11, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x75, 0x74, 0x50, 0x6f, 0x69, + 0x6e, 0x74, 0x52, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x50, 0x6f, 0x69, 0x6e, 0x74, + 0x12, 0x26, 0x0a, 0x0f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x61, 0x6d, 0x74, 0x5f, + 0x73, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x63, 0x68, 0x61, 0x6e, 0x6e, + 0x65, 0x6c, 0x41, 0x6d, 0x74, 0x53, 0x61, 0x74, 0x12, 0x36, 0x0a, 0x17, 0x63, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, + 0x63, 0x6b, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x15, 0x63, 0x68, 0x61, 0x6e, 0x6e, + 0x65, 0x6c, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, + 0x12, 0x30, 0x0a, 0x14, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6c, 0x65, 0x61, 0x73, + 0x65, 0x5f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, + 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4c, 0x65, 0x61, 0x73, 0x65, 0x45, 0x78, 0x70, 0x69, + 0x72, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x65, 0x6d, 0x69, 0x75, 0x6d, 0x5f, 0x73, 0x61, + 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x6d, 0x69, 0x75, 0x6d, + 0x53, 0x61, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x73, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, + 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x65, 0x53, 0x61, 0x74, 0x12, + 0x22, 0x0a, 0x0d, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x73, 0x61, 0x74, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x46, 0x65, 0x65, + 0x53, 0x61, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x5f, + 0x72, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x11, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x61, 0x74, 0x65, 0x50, 0x72, + 0x69, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x66, 0x69, 0x78, + 0x65, 0x64, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x46, 0x69, 0x78, 0x65, 0x64, 0x52, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x0a, + 0x0b, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x2e, + 0x0a, 0x13, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, + 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x11, 0x6d, 0x61, 0x74, + 0x63, 0x68, 0x65, 0x64, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x1c, + 0x0a, 0x09, 0x70, 0x75, 0x72, 0x63, 0x68, 0x61, 0x73, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x09, 0x70, 0x75, 0x72, 0x63, 0x68, 0x61, 0x73, 0x65, 0x64, 0x12, 0x35, 0x0a, 0x17, + 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x6e, + 0x6f, 0x64, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x14, 0x63, + 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, + 0x4b, 0x65, 0x79, 0x12, 0x3d, 0x0a, 0x11, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6e, + 0x6f, 0x64, 0x65, 0x5f, 0x74, 0x69, 0x65, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, + 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x54, 0x69, 0x65, + 0x72, 0x52, 0x0f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x54, 0x69, + 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x65, 0x6c, 0x66, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x5f, + 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x73, + 0x65, 0x6c, 0x66, 0x43, 0x68, 0x61, 0x6e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x27, + 0x0a, 0x0f, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, + 0x6c, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, + 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x22, 0x48, 0x0a, 0x0d, 0x4c, 0x65, 0x61, 0x73, 0x65, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x61, 0x74, 0x63, + 0x68, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x08, 0x62, 0x61, 0x74, + 0x63, 0x68, 0x49, 0x64, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x73, 0x22, 0x96, 0x01, 0x0a, 0x0e, 0x4c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x06, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x4c, + 0x65, 0x61, 0x73, 0x65, 0x52, 0x06, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x12, 0x2f, 0x0a, 0x14, + 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x61, 0x6d, 0x74, 0x5f, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, + 0x5f, 0x73, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x11, 0x74, 0x6f, 0x74, 0x61, + 0x6c, 0x41, 0x6d, 0x74, 0x45, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x53, 0x61, 0x74, 0x12, 0x2b, 0x0a, + 0x12, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x61, 0x6d, 0x74, 0x5f, 0x70, 0x61, 0x69, 0x64, 0x5f, + 0x73, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x74, 0x6f, 0x74, 0x61, 0x6c, + 0x41, 0x6d, 0x74, 0x50, 0x61, 0x69, 0x64, 0x53, 0x61, 0x74, 0x22, 0x0f, 0x0a, 0x0d, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x3c, 0x0a, 0x0e, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, + 0x06, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, + 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x73, 0x61, 0x74, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x52, 0x06, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x22, 0xbb, 0x02, 0x0a, 0x09, 0x4c, 0x73, + 0x61, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x62, 0x61, 0x73, 0x65, 0x5f, + 0x6d, 0x61, 0x63, 0x61, 0x72, 0x6f, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, + 0x62, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x63, 0x61, 0x72, 0x6f, 0x6f, 0x6e, 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, + 0x29, 0x0a, 0x10, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x69, 0x6d, + 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x70, 0x61, 0x79, 0x6d, 0x65, + 0x6e, 0x74, 0x50, 0x72, 0x65, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x61, 0x6d, + 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x70, 0x61, 0x69, 0x64, 0x5f, 0x6d, 0x73, 0x61, 0x74, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x61, 0x69, 0x64, + 0x4d, 0x73, 0x61, 0x74, 0x12, 0x31, 0x0a, 0x15, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x5f, + 0x66, 0x65, 0x65, 0x5f, 0x70, 0x61, 0x69, 0x64, 0x5f, 0x6d, 0x73, 0x61, 0x74, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x12, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x46, 0x65, 0x65, 0x50, + 0x61, 0x69, 0x64, 0x4d, 0x73, 0x61, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x69, 0x6d, 0x65, 0x5f, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x74, + 0x69, 0x6d, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x78, + 0x70, 0x69, 0x72, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x78, 0x70, + 0x69, 0x72, 0x65, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x16, 0x0a, 0x14, 0x4c, 0x65, 0x61, 0x73, 0x65, + 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, + 0x92, 0x03, 0x0a, 0x15, 0x4c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5f, 0x0a, 0x0f, 0x6c, 0x65, 0x61, + 0x73, 0x65, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x65, 0x61, + 0x73, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x2e, 0x4c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0e, 0x6c, 0x65, 0x61, 0x73, + 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x6e, 0x0a, 0x16, 0x6c, 0x65, + 0x61, 0x73, 0x65, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x70, 0x6f, 0x6f, + 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4c, 0x65, 0x61, 0x73, 0x65, + 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x14, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x1a, 0x41, 0x0a, 0x13, 0x4c, 0x65, + 0x61, 0x73, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x65, 0x0a, + 0x19, 0x4c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x75, + 0x63, 0x6b, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x32, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x70, 0x6f, + 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x75, + 0x63, 0x6b, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x22, 0x16, 0x0a, 0x14, 0x4e, 0x65, 0x78, 0x74, 0x42, 0x61, 0x74, 0x63, + 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xce, 0x01, 0x0a, + 0x15, 0x4e, 0x65, 0x78, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x5f, 0x74, + 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x63, 0x6f, 0x6e, + 0x66, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x2c, 0x0a, 0x13, 0x66, 0x65, 0x65, 0x5f, 0x72, + 0x61, 0x74, 0x65, 0x5f, 0x73, 0x61, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x6b, 0x77, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x66, 0x65, 0x65, 0x52, 0x61, 0x74, 0x65, 0x53, 0x61, 0x74, + 0x50, 0x65, 0x72, 0x4b, 0x77, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, + 0x63, 0x6c, 0x65, 0x61, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x3d, + 0x0a, 0x1b, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x6e, 0x65, 0x77, 0x5f, 0x65, 0x78, 0x74, + 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x18, 0x61, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x45, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x22, 0x36, 0x0a, + 0x11, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x70, 0x75, 0x62, 0x6b, 0x65, + 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x50, 0x75, + 0x62, 0x6b, 0x65, 0x79, 0x73, 0x22, 0x4c, 0x0a, 0x12, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x61, 0x74, + 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x0c, 0x6e, + 0x6f, 0x64, 0x65, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x4e, 0x6f, 0x64, 0x65, + 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x52, 0x61, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x22, 0x10, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x84, 0x06, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, + 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x41, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x12, 0x36, 0x0a, 0x17, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, + 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x15, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x41, 0x63, + 0x74, 0x69, 0x76, 0x65, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, + 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, + 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x23, 0x0a, 0x0d, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x0c, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x61, 0x72, 0x63, 0x68, 0x69, + 0x76, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x6f, 0x72, 0x64, 0x65, 0x72, + 0x73, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x63, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x62, + 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x5f, 0x69, 0x6e, 0x76, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x62, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x49, 0x6e, + 0x76, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x12, 0x34, 0x0a, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x72, + 0x61, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x6f, + 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, + 0x52, 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x1f, 0x0a, 0x0b, + 0x6c, 0x73, 0x61, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x0a, 0x6c, 0x73, 0x61, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x38, 0x0a, + 0x18, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x5f, 0x61, + 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x65, 0x65, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x16, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x64, 0x54, 0x6f, 0x41, 0x75, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x65, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0e, 0x6e, 0x65, 0x77, 0x5f, 0x6e, + 0x6f, 0x64, 0x65, 0x73, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0c, 0x6e, 0x65, 0x77, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x49, 0x0a, + 0x0b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0f, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4d, 0x61, 0x72, + 0x6b, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x6d, 0x61, + 0x72, 0x6b, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x52, 0x0a, 0x0f, 0x4d, 0x61, 0x72, 0x6b, + 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x29, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, + 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x13, 0x0a, 0x11, + 0x53, 0x74, 0x6f, 0x70, 0x44, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x22, 0x14, 0x0a, 0x12, 0x53, 0x74, 0x6f, 0x70, 0x44, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5c, 0x0a, 0x13, 0x4f, 0x66, 0x66, 0x65, 0x72, + 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, + 0x0a, 0x0e, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6e, 0x65, 0x67, 0x6f, 0x74, 0x69, 0x61, 0x74, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x61, 0x75, 0x74, 0x6f, 0x4e, 0x65, 0x67, 0x6f, + 0x74, 0x69, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x03, 0x62, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x69, 0x64, + 0x52, 0x03, 0x62, 0x69, 0x64, 0x22, 0x27, 0x0a, 0x0d, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, + 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x22, 0xbf, + 0x06, 0x0a, 0x14, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, + 0x72, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x66, 0x66, 0x65, 0x72, + 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x0d, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x2a, + 0x0a, 0x11, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, 0x75, 0x73, 0x68, 0x5f, 0x61, 0x6d, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x6f, 0x66, 0x66, 0x65, 0x72, + 0x50, 0x75, 0x73, 0x68, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3d, 0x0a, 0x1b, 0x6f, 0x66, + 0x66, 0x65, 0x72, 0x5f, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x18, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x6f, 0x66, 0x66, + 0x65, 0x72, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x50, + 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x73, + 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, + 0x6f, 0x66, 0x66, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1d, + 0x0a, 0x0a, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x09, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x41, 0x75, 0x74, 0x6f, 0x12, 0x32, 0x0a, + 0x15, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, + 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x13, 0x72, 0x65, + 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x75, 0x62, 0x6b, 0x65, + 0x79, 0x12, 0x3a, 0x0a, 0x19, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6d, + 0x75, 0x6c, 0x74, 0x69, 0x73, 0x69, 0x67, 0x5f, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x0c, 0x52, 0x17, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x4d, + 0x75, 0x6c, 0x74, 0x69, 0x73, 0x69, 0x67, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x45, 0x0a, + 0x1f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, + 0x73, 0x69, 0x67, 0x5f, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x1c, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, + 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x73, 0x69, 0x67, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x49, + 0x6e, 0x64, 0x65, 0x78, 0x12, 0x26, 0x0a, 0x0f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x69, + 0x64, 0x5f, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x42, 0x69, 0x64, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x27, 0x0a, 0x0f, + 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, + 0x0e, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x3f, 0x0a, 0x1c, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, + 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x19, 0x65, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x61, + 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, + 0x64, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, + 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x3a, 0x0a, + 0x19, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x75, 0x6e, 0x61, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, + 0x65, 0x64, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x17, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x55, 0x6e, 0x61, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, + 0x65, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x35, 0x0a, 0x17, 0x6f, 0x66, 0x66, + 0x65, 0x72, 0x5f, 0x7a, 0x65, 0x72, 0x6f, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x5f, 0x63, 0x68, 0x61, + 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x6f, 0x66, 0x66, 0x65, + 0x72, 0x5a, 0x65, 0x72, 0x6f, 0x43, 0x6f, 0x6e, 0x66, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, + 0x22, 0x57, 0x0a, 0x16, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x53, 0x69, 0x64, 0x65, + 0x63, 0x61, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x69, 0x63, 0x6b, - 0x65, 0x74, 0x22, 0x1e, 0x0a, 0x1c, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x53, 0x69, 0x64, 0x65, - 0x63, 0x61, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x34, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, - 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x69, 0x64, - 0x65, 0x63, 0x61, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x73, - 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x49, 0x64, 0x22, 0x4f, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, - 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x37, 0x0a, 0x07, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x63, 0x6f, - 0x64, 0x65, 0x64, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, - 0x52, 0x07, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x22, 0x35, 0x0a, 0x14, 0x43, 0x61, 0x6e, - 0x63, 0x65, 0x6c, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x49, 0x64, - 0x22, 0x17, 0x0a, 0x15, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, - 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2a, 0x6c, 0x0a, 0x0e, 0x41, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x1d, 0x41, - 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, - 0x4e, 0x44, 0x5f, 0x44, 0x45, 0x50, 0x45, 0x4e, 0x44, 0x45, 0x4e, 0x54, 0x10, 0x00, 0x12, 0x1a, - 0x0a, 0x16, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, - 0x4e, 0x5f, 0x4c, 0x45, 0x47, 0x41, 0x43, 0x59, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x41, 0x43, - 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x41, - 0x50, 0x52, 0x4f, 0x4f, 0x54, 0x10, 0x02, 0x2a, 0x93, 0x01, 0x0a, 0x0c, 0x41, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x50, 0x45, 0x4e, 0x44, - 0x49, 0x4e, 0x47, 0x5f, 0x4f, 0x50, 0x45, 0x4e, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x45, - 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x01, 0x12, 0x08, - 0x0a, 0x04, 0x4f, 0x50, 0x45, 0x4e, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x45, 0x58, 0x50, 0x49, - 0x52, 0x45, 0x44, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, - 0x5f, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x4c, 0x4f, - 0x53, 0x45, 0x44, 0x10, 0x05, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x45, 0x43, 0x4f, 0x56, 0x45, 0x52, - 0x59, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x06, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x45, - 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x42, 0x41, 0x54, 0x43, 0x48, 0x10, 0x07, 0x2a, 0x50, 0x0a, - 0x0a, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x50, - 0x52, 0x45, 0x50, 0x41, 0x52, 0x45, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x43, 0x43, 0x45, - 0x50, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x45, 0x4a, 0x45, 0x43, 0x54, - 0x45, 0x44, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x49, 0x47, 0x4e, 0x45, 0x44, 0x10, 0x03, - 0x12, 0x0d, 0x0a, 0x09, 0x46, 0x49, 0x4e, 0x41, 0x4c, 0x49, 0x5a, 0x45, 0x44, 0x10, 0x04, 0x2a, - 0xbe, 0x01, 0x0a, 0x11, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x52, - 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, - 0x16, 0x0a, 0x12, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x5f, 0x4d, 0x49, 0x53, 0x42, 0x45, 0x48, - 0x41, 0x56, 0x49, 0x4f, 0x52, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x42, 0x41, 0x54, 0x43, 0x48, - 0x5f, 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x49, 0x53, 0x4d, 0x41, 0x54, 0x43, - 0x48, 0x10, 0x02, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x41, 0x52, 0x54, 0x49, 0x41, 0x4c, 0x5f, 0x52, - 0x45, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x43, 0x4f, 0x4c, 0x4c, 0x41, 0x54, 0x45, 0x52, 0x41, 0x4c, - 0x10, 0x03, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x41, 0x52, 0x54, 0x49, 0x41, 0x4c, 0x5f, 0x52, 0x45, - 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x44, 0x55, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x50, - 0x45, 0x45, 0x52, 0x10, 0x04, 0x12, 0x29, 0x0a, 0x25, 0x50, 0x41, 0x52, 0x54, 0x49, 0x41, 0x4c, - 0x5f, 0x52, 0x45, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, - 0x46, 0x55, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x05, - 0x32, 0xa5, 0x11, 0x0a, 0x06, 0x54, 0x72, 0x61, 0x64, 0x65, 0x72, 0x12, 0x3c, 0x0a, 0x07, 0x47, - 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x17, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, - 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x18, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x0a, 0x53, 0x74, 0x6f, - 0x70, 0x44, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x12, 0x1a, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, - 0x63, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x44, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, - 0x6f, 0x70, 0x44, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x4b, 0x0a, 0x0c, 0x51, 0x75, 0x6f, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x12, 0x1c, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x51, 0x75, 0x6f, 0x74, 0x65, - 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, + 0x65, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6e, 0x65, 0x67, 0x6f, 0x74, + 0x69, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x61, 0x75, 0x74, 0x6f, + 0x4e, 0x65, 0x67, 0x6f, 0x74, 0x69, 0x61, 0x74, 0x65, 0x22, 0x35, 0x0a, 0x1b, 0x45, 0x78, 0x70, + 0x65, 0x63, 0x74, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, + 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x69, 0x63, 0x6b, + 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, + 0x22, 0x1e, 0x0a, 0x1c, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, + 0x72, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x34, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x69, 0x64, 0x65, 0x63, + 0x61, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x73, 0x69, 0x64, + 0x65, 0x63, 0x61, 0x72, 0x49, 0x64, 0x22, 0x4f, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x69, + 0x64, 0x65, 0x63, 0x61, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, + 0x0a, 0x07, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1d, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, + 0x64, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x07, + 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x22, 0x35, 0x0a, 0x14, 0x43, 0x61, 0x6e, 0x63, 0x65, + 0x6c, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x1d, 0x0a, 0x0a, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x09, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x49, 0x64, 0x22, 0x17, + 0x0a, 0x15, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2a, 0x6c, 0x0a, 0x0e, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x1d, 0x41, 0x43, 0x43, + 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x4e, 0x44, + 0x5f, 0x44, 0x45, 0x50, 0x45, 0x4e, 0x44, 0x45, 0x4e, 0x54, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, + 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x5f, + 0x4c, 0x45, 0x47, 0x41, 0x43, 0x59, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x41, 0x43, 0x43, 0x4f, + 0x55, 0x4e, 0x54, 0x5f, 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x41, 0x50, 0x52, + 0x4f, 0x4f, 0x54, 0x10, 0x02, 0x2a, 0x93, 0x01, 0x0a, 0x0c, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, + 0x47, 0x5f, 0x4f, 0x50, 0x45, 0x4e, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x45, 0x4e, 0x44, + 0x49, 0x4e, 0x47, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, + 0x4f, 0x50, 0x45, 0x4e, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x45, 0x58, 0x50, 0x49, 0x52, 0x45, + 0x44, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x43, + 0x4c, 0x4f, 0x53, 0x45, 0x44, 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x4c, 0x4f, 0x53, 0x45, + 0x44, 0x10, 0x05, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x45, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x59, 0x5f, + 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x06, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x45, 0x4e, 0x44, + 0x49, 0x4e, 0x47, 0x5f, 0x42, 0x41, 0x54, 0x43, 0x48, 0x10, 0x07, 0x2a, 0x50, 0x0a, 0x0a, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x52, 0x45, + 0x50, 0x41, 0x52, 0x45, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x43, 0x43, 0x45, 0x50, 0x54, + 0x45, 0x44, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x45, 0x4a, 0x45, 0x43, 0x54, 0x45, 0x44, + 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x49, 0x47, 0x4e, 0x45, 0x44, 0x10, 0x03, 0x12, 0x0d, + 0x0a, 0x09, 0x46, 0x49, 0x4e, 0x41, 0x4c, 0x49, 0x5a, 0x45, 0x44, 0x10, 0x04, 0x2a, 0xbe, 0x01, + 0x0a, 0x11, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x61, + 0x73, 0x6f, 0x6e, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x16, 0x0a, + 0x12, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x5f, 0x4d, 0x49, 0x53, 0x42, 0x45, 0x48, 0x41, 0x56, + 0x49, 0x4f, 0x52, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x42, 0x41, 0x54, 0x43, 0x48, 0x5f, 0x56, + 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x49, 0x53, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x10, + 0x02, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x41, 0x52, 0x54, 0x49, 0x41, 0x4c, 0x5f, 0x52, 0x45, 0x4a, + 0x45, 0x43, 0x54, 0x5f, 0x43, 0x4f, 0x4c, 0x4c, 0x41, 0x54, 0x45, 0x52, 0x41, 0x4c, 0x10, 0x03, + 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x41, 0x52, 0x54, 0x49, 0x41, 0x4c, 0x5f, 0x52, 0x45, 0x4a, 0x45, + 0x43, 0x54, 0x5f, 0x44, 0x55, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x50, 0x45, 0x45, + 0x52, 0x10, 0x04, 0x12, 0x29, 0x0a, 0x25, 0x50, 0x41, 0x52, 0x54, 0x49, 0x41, 0x4c, 0x5f, 0x52, + 0x45, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x46, 0x55, + 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x05, 0x32, 0x93, + 0x12, 0x0a, 0x06, 0x54, 0x72, 0x61, 0x64, 0x65, 0x72, 0x12, 0x3c, 0x0a, 0x07, 0x47, 0x65, 0x74, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x17, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x47, + 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, + 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x0a, 0x53, 0x74, 0x6f, 0x70, 0x44, + 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x12, 0x1a, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, + 0x53, 0x74, 0x6f, 0x70, 0x44, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1b, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x6f, 0x70, + 0x44, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, + 0x0a, 0x0c, 0x51, 0x75, 0x6f, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x51, 0x75, 0x6f, 0x74, 0x65, 0x41, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, - 0x0b, 0x49, 0x6e, 0x69, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1b, 0x2e, 0x70, - 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, - 0x72, 0x70, 0x63, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x4b, 0x0a, 0x0c, 0x4c, - 0x69, 0x73, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x1c, 0x2e, 0x70, 0x6f, - 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, - 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x0c, 0x43, 0x6c, 0x6f, 0x73, - 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, - 0x70, 0x63, 0x2e, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, - 0x2e, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, 0x0f, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, - 0x77, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1f, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, - 0x70, 0x63, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, - 0x72, 0x70, 0x63, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x0e, 0x44, - 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x2e, - 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x41, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, - 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x41, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, - 0x0a, 0x0c, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, - 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x70, + 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x51, 0x75, 0x6f, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x49, + 0x6e, 0x69, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1b, 0x2e, 0x70, 0x6f, 0x6f, + 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, + 0x63, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x4b, 0x0a, 0x0c, 0x4c, 0x69, 0x73, + 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x1c, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, + 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, + 0x63, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x0c, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, + 0x2e, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x43, + 0x6c, 0x6f, 0x73, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, 0x0f, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1f, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, + 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, + 0x63, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x0e, 0x44, 0x65, 0x70, + 0x6f, 0x73, 0x69, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x2e, 0x70, 0x6f, + 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x41, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x70, 0x6f, + 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x41, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x0c, + 0x52, 0x65, 0x6e, 0x65, 0x77, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x41, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x0e, 0x42, - 0x75, 0x6d, 0x70, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x65, 0x65, 0x12, 0x1e, 0x2e, - 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x75, 0x6d, 0x70, 0x41, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x46, 0x65, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, - 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x75, 0x6d, 0x70, 0x41, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x46, 0x65, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, - 0x0a, 0x0f, 0x52, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x73, 0x12, 0x1f, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x63, 0x6f, - 0x76, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x63, - 0x6f, 0x76, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x0b, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4f, 0x72, - 0x64, 0x65, 0x72, 0x12, 0x1b, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, - 0x62, 0x6d, 0x69, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x1c, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, - 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, - 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x1a, 0x2e, 0x70, - 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, - 0x70, 0x63, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x0b, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x4f, - 0x72, 0x64, 0x65, 0x72, 0x12, 0x1b, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x43, - 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x1c, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x61, 0x6e, 0x63, - 0x65, 0x6c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x45, 0x0a, 0x0a, 0x51, 0x75, 0x6f, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1a, 0x2e, - 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x51, 0x75, 0x6f, 0x74, 0x65, 0x4f, 0x72, 0x64, - 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, + 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x70, 0x6f, 0x6f, + 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x0e, 0x42, 0x75, 0x6d, + 0x70, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x65, 0x65, 0x12, 0x1e, 0x2e, 0x70, 0x6f, + 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x75, 0x6d, 0x70, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x46, 0x65, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x70, 0x6f, + 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x75, 0x6d, 0x70, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x46, 0x65, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, 0x0f, + 0x52, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, + 0x1f, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x76, 0x65, + 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x20, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x76, + 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x6c, 0x0a, 0x17, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x65, 0x73, 0x12, 0x27, 0x2e, + 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4d, + 0x6f, 0x64, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x65, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, + 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x48, 0x0a, 0x0b, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, + 0x1b, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, + 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x70, + 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4f, 0x72, 0x64, + 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x0a, 0x4c, 0x69, + 0x73, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x1a, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, + 0x70, 0x63, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x48, 0x0a, 0x0b, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x4f, 0x72, 0x64, 0x65, 0x72, + 0x12, 0x1b, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, + 0x6c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, + 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x4f, 0x72, + 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x0a, 0x51, + 0x75, 0x6f, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1a, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x51, 0x75, 0x6f, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x0a, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x46, 0x65, 0x65, 0x12, 0x1a, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x41, - 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x1b, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x41, 0x75, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x46, 0x65, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, - 0x0e, 0x4c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x1d, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x65, 0x61, 0x73, 0x65, 0x44, - 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, - 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x75, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4e, - 0x0a, 0x0d, 0x4e, 0x65, 0x78, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12, - 0x1d, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x4e, 0x65, 0x78, 0x74, 0x42, 0x61, - 0x74, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, - 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x4e, 0x65, 0x78, 0x74, 0x42, 0x61, 0x74, - 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4e, - 0x0a, 0x0d, 0x42, 0x61, 0x74, 0x63, 0x68, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, - 0x1d, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x53, - 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, - 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x53, 0x6e, - 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x40, - 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x4c, 0x73, 0x61, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, - 0x16, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, - 0x63, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x39, 0x0a, 0x06, 0x4c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x12, 0x16, 0x2e, 0x70, 0x6f, 0x6f, - 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x65, 0x61, - 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x0b, 0x4e, - 0x6f, 0x64, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x1a, 0x2e, 0x70, 0x6f, 0x6f, - 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, - 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x0e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x53, 0x6e, 0x61, 0x70, - 0x73, 0x68, 0x6f, 0x74, 0x73, 0x12, 0x1e, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, - 0x42, 0x61, 0x74, 0x63, 0x68, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, - 0x42, 0x61, 0x74, 0x63, 0x68, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x0c, 0x4f, 0x66, 0x66, 0x65, 0x72, 0x53, - 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x12, 0x1c, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, - 0x2e, 0x4f, 0x66, 0x66, 0x65, 0x72, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x53, - 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x4a, 0x0a, 0x0f, - 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x12, - 0x1f, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, + 0x51, 0x75, 0x6f, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x45, 0x0a, 0x0a, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x65, + 0x12, 0x1a, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x41, 0x75, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x46, 0x65, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x70, + 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x65, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x0e, 0x4c, 0x65, 0x61, + 0x73, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1d, 0x2e, 0x70, 0x6f, + 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x70, 0x6f, 0x6f, + 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x0d, 0x4e, 0x65, + 0x78, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1d, 0x2e, 0x70, 0x6f, + 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x4e, 0x65, 0x78, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x70, 0x6f, 0x6f, + 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x4e, 0x65, 0x78, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x0d, 0x42, 0x61, + 0x74, 0x63, 0x68, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x1d, 0x2e, 0x70, 0x6f, + 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x53, 0x6e, 0x61, 0x70, 0x73, + 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x70, 0x6f, 0x6f, + 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, + 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x0d, 0x47, 0x65, + 0x74, 0x4c, 0x73, 0x61, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x16, 0x2e, 0x70, 0x6f, + 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x06, + 0x4c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x12, 0x16, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, + 0x2e, 0x4c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, + 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x0b, 0x4e, 0x6f, 0x64, 0x65, 0x52, + 0x61, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x1a, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, + 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x4e, 0x6f, 0x64, + 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x51, 0x0a, 0x0e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, + 0x73, 0x12, 0x1e, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x61, 0x74, 0x63, + 0x68, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1f, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x61, 0x74, 0x63, + 0x68, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x44, 0x0a, 0x0c, 0x4f, 0x66, 0x66, 0x65, 0x72, 0x53, 0x69, 0x64, 0x65, 0x63, + 0x61, 0x72, 0x12, 0x1c, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x66, 0x66, 0x65, 0x72, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x69, 0x64, 0x65, 0x63, - 0x61, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x63, 0x0a, 0x14, 0x45, 0x78, 0x70, 0x65, - 0x63, 0x74, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, - 0x12, 0x24, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x78, 0x70, 0x65, 0x63, - 0x74, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, - 0x2e, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x43, 0x68, - 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4c, 0x0a, - 0x13, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x54, 0x69, - 0x63, 0x6b, 0x65, 0x74, 0x12, 0x16, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x53, - 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x1a, 0x1d, 0x2e, 0x70, - 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x53, 0x69, - 0x64, 0x65, 0x63, 0x61, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x4b, 0x0a, 0x0c, 0x4c, - 0x69, 0x73, 0x74, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x73, 0x12, 0x1c, 0x2e, 0x70, 0x6f, - 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, - 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, - 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x0d, 0x43, 0x61, 0x6e, 0x63, - 0x65, 0x6c, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x12, 0x1d, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, - 0x72, 0x70, 0x63, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, - 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, - 0x70, 0x63, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x27, 0x5a, 0x25, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x6e, 0x69, 0x6e, 0x67, - 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x70, 0x6f, 0x6f, 0x6c, 0x2f, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, - 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x61, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x4a, 0x0a, 0x0f, 0x52, 0x65, 0x67, 0x69, + 0x73, 0x74, 0x65, 0x72, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x12, 0x1f, 0x2e, 0x70, 0x6f, + 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x53, 0x69, + 0x64, 0x65, 0x63, 0x61, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x70, + 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x54, 0x69, + 0x63, 0x6b, 0x65, 0x74, 0x12, 0x63, 0x0a, 0x14, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x53, 0x69, + 0x64, 0x65, 0x63, 0x61, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x24, 0x2e, 0x70, + 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x53, 0x69, 0x64, + 0x65, 0x63, 0x61, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x78, 0x70, + 0x65, 0x63, 0x74, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, + 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4c, 0x0a, 0x13, 0x44, 0x65, 0x63, + 0x6f, 0x64, 0x65, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, + 0x12, 0x16, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x69, 0x64, 0x65, 0x63, + 0x61, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x1a, 0x1d, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, + 0x70, 0x63, 0x2e, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, + 0x72, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x4b, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x53, + 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x73, 0x12, 0x1c, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, + 0x63, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x0d, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x53, 0x69, + 0x64, 0x65, 0x63, 0x61, 0x72, 0x12, 0x1d, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, + 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x2e, 0x43, + 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x27, 0x5a, 0x25, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x6e, 0x69, 0x6e, 0x67, 0x6c, 0x61, 0x62, 0x73, + 0x2f, 0x70, 0x6f, 0x6f, 0x6c, 0x2f, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x63, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -6013,7 +6321,7 @@ func file_trader_proto_rawDescGZIP() []byte { } var file_trader_proto_enumTypes = make([]protoimpl.EnumInfo, 4) -var file_trader_proto_msgTypes = make([]protoimpl.MessageInfo, 66) +var file_trader_proto_msgTypes = make([]protoimpl.MessageInfo, 71) var file_trader_proto_goTypes = []interface{}{ (AccountVersion)(0), // 0: poolrpc.AccountVersion (AccountState)(0), // 1: poolrpc.AccountState @@ -6054,53 +6362,58 @@ var file_trader_proto_goTypes = []interface{}{ (*MatchEvent)(nil), // 36: poolrpc.MatchEvent (*RecoverAccountsRequest)(nil), // 37: poolrpc.RecoverAccountsRequest (*RecoverAccountsResponse)(nil), // 38: poolrpc.RecoverAccountsResponse - (*AuctionFeeRequest)(nil), // 39: poolrpc.AuctionFeeRequest - (*AuctionFeeResponse)(nil), // 40: poolrpc.AuctionFeeResponse - (*Lease)(nil), // 41: poolrpc.Lease - (*LeasesRequest)(nil), // 42: poolrpc.LeasesRequest - (*LeasesResponse)(nil), // 43: poolrpc.LeasesResponse - (*TokensRequest)(nil), // 44: poolrpc.TokensRequest - (*TokensResponse)(nil), // 45: poolrpc.TokensResponse - (*LsatToken)(nil), // 46: poolrpc.LsatToken - (*LeaseDurationRequest)(nil), // 47: poolrpc.LeaseDurationRequest - (*LeaseDurationResponse)(nil), // 48: poolrpc.LeaseDurationResponse - (*NextBatchInfoRequest)(nil), // 49: poolrpc.NextBatchInfoRequest - (*NextBatchInfoResponse)(nil), // 50: poolrpc.NextBatchInfoResponse - (*NodeRatingRequest)(nil), // 51: poolrpc.NodeRatingRequest - (*NodeRatingResponse)(nil), // 52: poolrpc.NodeRatingResponse - (*GetInfoRequest)(nil), // 53: poolrpc.GetInfoRequest - (*GetInfoResponse)(nil), // 54: poolrpc.GetInfoResponse - (*StopDaemonRequest)(nil), // 55: poolrpc.StopDaemonRequest - (*StopDaemonResponse)(nil), // 56: poolrpc.StopDaemonResponse - (*OfferSidecarRequest)(nil), // 57: poolrpc.OfferSidecarRequest - (*SidecarTicket)(nil), // 58: poolrpc.SidecarTicket - (*DecodedSidecarTicket)(nil), // 59: poolrpc.DecodedSidecarTicket - (*RegisterSidecarRequest)(nil), // 60: poolrpc.RegisterSidecarRequest - (*ExpectSidecarChannelRequest)(nil), // 61: poolrpc.ExpectSidecarChannelRequest - (*ExpectSidecarChannelResponse)(nil), // 62: poolrpc.ExpectSidecarChannelResponse - (*ListSidecarsRequest)(nil), // 63: poolrpc.ListSidecarsRequest - (*ListSidecarsResponse)(nil), // 64: poolrpc.ListSidecarsResponse - (*CancelSidecarRequest)(nil), // 65: poolrpc.CancelSidecarRequest - (*CancelSidecarResponse)(nil), // 66: poolrpc.CancelSidecarResponse - nil, // 67: poolrpc.LeaseDurationResponse.LeaseDurationsEntry - nil, // 68: poolrpc.LeaseDurationResponse.LeaseDurationBucketsEntry - nil, // 69: poolrpc.GetInfoResponse.MarketInfoEntry - (*auctioneerrpc.OutPoint)(nil), // 70: poolrpc.OutPoint - (*auctioneerrpc.InvalidOrder)(nil), // 71: poolrpc.InvalidOrder - (auctioneerrpc.OrderState)(0), // 72: poolrpc.OrderState - (auctioneerrpc.OrderChannelType)(0), // 73: poolrpc.OrderChannelType - (auctioneerrpc.AuctionType)(0), // 74: poolrpc.AuctionType - (auctioneerrpc.NodeTier)(0), // 75: poolrpc.NodeTier - (auctioneerrpc.ChannelAnnouncementConstraints)(0), // 76: poolrpc.ChannelAnnouncementConstraints - (auctioneerrpc.ChannelConfirmationConstraints)(0), // 77: poolrpc.ChannelConfirmationConstraints - (*auctioneerrpc.ExecutionFee)(nil), // 78: poolrpc.ExecutionFee - (*auctioneerrpc.NodeRating)(nil), // 79: poolrpc.NodeRating - (auctioneerrpc.DurationBucketState)(0), // 80: poolrpc.DurationBucketState - (*auctioneerrpc.MarketInfo)(nil), // 81: poolrpc.MarketInfo - (*auctioneerrpc.BatchSnapshotRequest)(nil), // 82: poolrpc.BatchSnapshotRequest - (*auctioneerrpc.BatchSnapshotsRequest)(nil), // 83: poolrpc.BatchSnapshotsRequest - (*auctioneerrpc.BatchSnapshotResponse)(nil), // 84: poolrpc.BatchSnapshotResponse - (*auctioneerrpc.BatchSnapshotsResponse)(nil), // 85: poolrpc.BatchSnapshotsResponse + (*AccountModificationFeesRequest)(nil), // 39: poolrpc.AccountModificationFeesRequest + (*AccountModificationFee)(nil), // 40: poolrpc.AccountModificationFee + (*ListOfAccountModificationFees)(nil), // 41: poolrpc.ListOfAccountModificationFees + (*AccountModificationFeesResponse)(nil), // 42: poolrpc.AccountModificationFeesResponse + (*AuctionFeeRequest)(nil), // 43: poolrpc.AuctionFeeRequest + (*AuctionFeeResponse)(nil), // 44: poolrpc.AuctionFeeResponse + (*Lease)(nil), // 45: poolrpc.Lease + (*LeasesRequest)(nil), // 46: poolrpc.LeasesRequest + (*LeasesResponse)(nil), // 47: poolrpc.LeasesResponse + (*TokensRequest)(nil), // 48: poolrpc.TokensRequest + (*TokensResponse)(nil), // 49: poolrpc.TokensResponse + (*LsatToken)(nil), // 50: poolrpc.LsatToken + (*LeaseDurationRequest)(nil), // 51: poolrpc.LeaseDurationRequest + (*LeaseDurationResponse)(nil), // 52: poolrpc.LeaseDurationResponse + (*NextBatchInfoRequest)(nil), // 53: poolrpc.NextBatchInfoRequest + (*NextBatchInfoResponse)(nil), // 54: poolrpc.NextBatchInfoResponse + (*NodeRatingRequest)(nil), // 55: poolrpc.NodeRatingRequest + (*NodeRatingResponse)(nil), // 56: poolrpc.NodeRatingResponse + (*GetInfoRequest)(nil), // 57: poolrpc.GetInfoRequest + (*GetInfoResponse)(nil), // 58: poolrpc.GetInfoResponse + (*StopDaemonRequest)(nil), // 59: poolrpc.StopDaemonRequest + (*StopDaemonResponse)(nil), // 60: poolrpc.StopDaemonResponse + (*OfferSidecarRequest)(nil), // 61: poolrpc.OfferSidecarRequest + (*SidecarTicket)(nil), // 62: poolrpc.SidecarTicket + (*DecodedSidecarTicket)(nil), // 63: poolrpc.DecodedSidecarTicket + (*RegisterSidecarRequest)(nil), // 64: poolrpc.RegisterSidecarRequest + (*ExpectSidecarChannelRequest)(nil), // 65: poolrpc.ExpectSidecarChannelRequest + (*ExpectSidecarChannelResponse)(nil), // 66: poolrpc.ExpectSidecarChannelResponse + (*ListSidecarsRequest)(nil), // 67: poolrpc.ListSidecarsRequest + (*ListSidecarsResponse)(nil), // 68: poolrpc.ListSidecarsResponse + (*CancelSidecarRequest)(nil), // 69: poolrpc.CancelSidecarRequest + (*CancelSidecarResponse)(nil), // 70: poolrpc.CancelSidecarResponse + nil, // 71: poolrpc.AccountModificationFeesResponse.AccountsEntry + nil, // 72: poolrpc.LeaseDurationResponse.LeaseDurationsEntry + nil, // 73: poolrpc.LeaseDurationResponse.LeaseDurationBucketsEntry + nil, // 74: poolrpc.GetInfoResponse.MarketInfoEntry + (*auctioneerrpc.OutPoint)(nil), // 75: poolrpc.OutPoint + (*auctioneerrpc.InvalidOrder)(nil), // 76: poolrpc.InvalidOrder + (auctioneerrpc.OrderState)(0), // 77: poolrpc.OrderState + (auctioneerrpc.OrderChannelType)(0), // 78: poolrpc.OrderChannelType + (auctioneerrpc.AuctionType)(0), // 79: poolrpc.AuctionType + (auctioneerrpc.NodeTier)(0), // 80: poolrpc.NodeTier + (auctioneerrpc.ChannelAnnouncementConstraints)(0), // 81: poolrpc.ChannelAnnouncementConstraints + (auctioneerrpc.ChannelConfirmationConstraints)(0), // 82: poolrpc.ChannelConfirmationConstraints + (*auctioneerrpc.ExecutionFee)(nil), // 83: poolrpc.ExecutionFee + (*auctioneerrpc.NodeRating)(nil), // 84: poolrpc.NodeRating + (auctioneerrpc.DurationBucketState)(0), // 85: poolrpc.DurationBucketState + (*auctioneerrpc.MarketInfo)(nil), // 86: poolrpc.MarketInfo + (*auctioneerrpc.BatchSnapshotRequest)(nil), // 87: poolrpc.BatchSnapshotRequest + (*auctioneerrpc.BatchSnapshotsRequest)(nil), // 88: poolrpc.BatchSnapshotsRequest + (*auctioneerrpc.BatchSnapshotResponse)(nil), // 89: poolrpc.BatchSnapshotResponse + (*auctioneerrpc.BatchSnapshotsResponse)(nil), // 90: poolrpc.BatchSnapshotsResponse } var file_trader_proto_depIdxs = []int32{ 0, // 0: poolrpc.InitAccountRequest.version:type_name -> poolrpc.AccountVersion @@ -6115,106 +6428,111 @@ var file_trader_proto_depIdxs = []int32{ 22, // 9: poolrpc.DepositAccountResponse.account:type_name -> poolrpc.Account 0, // 10: poolrpc.RenewAccountRequest.new_version:type_name -> poolrpc.AccountVersion 22, // 11: poolrpc.RenewAccountResponse.account:type_name -> poolrpc.Account - 70, // 12: poolrpc.Account.outpoint:type_name -> poolrpc.OutPoint + 75, // 12: poolrpc.Account.outpoint:type_name -> poolrpc.OutPoint 1, // 13: poolrpc.Account.state:type_name -> poolrpc.AccountState 0, // 14: poolrpc.Account.version:type_name -> poolrpc.AccountVersion 31, // 15: poolrpc.SubmitOrderRequest.ask:type_name -> poolrpc.Ask 30, // 16: poolrpc.SubmitOrderRequest.bid:type_name -> poolrpc.Bid - 71, // 17: poolrpc.SubmitOrderResponse.invalid_order:type_name -> poolrpc.InvalidOrder + 76, // 17: poolrpc.SubmitOrderResponse.invalid_order:type_name -> poolrpc.InvalidOrder 31, // 18: poolrpc.ListOrdersResponse.asks:type_name -> poolrpc.Ask 30, // 19: poolrpc.ListOrdersResponse.bids:type_name -> poolrpc.Bid - 72, // 20: poolrpc.Order.state:type_name -> poolrpc.OrderState + 77, // 20: poolrpc.Order.state:type_name -> poolrpc.OrderState 34, // 21: poolrpc.Order.events:type_name -> poolrpc.OrderEvent - 73, // 22: poolrpc.Order.channel_type:type_name -> poolrpc.OrderChannelType - 74, // 23: poolrpc.Order.auction_type:type_name -> poolrpc.AuctionType + 78, // 22: poolrpc.Order.channel_type:type_name -> poolrpc.OrderChannelType + 79, // 23: poolrpc.Order.auction_type:type_name -> poolrpc.AuctionType 29, // 24: poolrpc.Bid.details:type_name -> poolrpc.Order - 75, // 25: poolrpc.Bid.min_node_tier:type_name -> poolrpc.NodeTier + 80, // 25: poolrpc.Bid.min_node_tier:type_name -> poolrpc.NodeTier 29, // 26: poolrpc.Ask.details:type_name -> poolrpc.Order - 76, // 27: poolrpc.Ask.announcement_constraints:type_name -> poolrpc.ChannelAnnouncementConstraints - 77, // 28: poolrpc.Ask.confirmation_constraints:type_name -> poolrpc.ChannelConfirmationConstraints + 81, // 27: poolrpc.Ask.announcement_constraints:type_name -> poolrpc.ChannelAnnouncementConstraints + 82, // 28: poolrpc.Ask.confirmation_constraints:type_name -> poolrpc.ChannelConfirmationConstraints 35, // 29: poolrpc.OrderEvent.state_change:type_name -> poolrpc.UpdatedEvent 36, // 30: poolrpc.OrderEvent.matched:type_name -> poolrpc.MatchEvent - 72, // 31: poolrpc.UpdatedEvent.previous_state:type_name -> poolrpc.OrderState - 72, // 32: poolrpc.UpdatedEvent.new_state:type_name -> poolrpc.OrderState + 77, // 31: poolrpc.UpdatedEvent.previous_state:type_name -> poolrpc.OrderState + 77, // 32: poolrpc.UpdatedEvent.new_state:type_name -> poolrpc.OrderState 2, // 33: poolrpc.MatchEvent.match_state:type_name -> poolrpc.MatchState 3, // 34: poolrpc.MatchEvent.reject_reason:type_name -> poolrpc.MatchRejectReason - 78, // 35: poolrpc.AuctionFeeResponse.execution_fee:type_name -> poolrpc.ExecutionFee - 70, // 36: poolrpc.Lease.channel_point:type_name -> poolrpc.OutPoint - 75, // 37: poolrpc.Lease.channel_node_tier:type_name -> poolrpc.NodeTier - 41, // 38: poolrpc.LeasesResponse.leases:type_name -> poolrpc.Lease - 46, // 39: poolrpc.TokensResponse.tokens:type_name -> poolrpc.LsatToken - 67, // 40: poolrpc.LeaseDurationResponse.lease_durations:type_name -> poolrpc.LeaseDurationResponse.LeaseDurationsEntry - 68, // 41: poolrpc.LeaseDurationResponse.lease_duration_buckets:type_name -> poolrpc.LeaseDurationResponse.LeaseDurationBucketsEntry - 79, // 42: poolrpc.NodeRatingResponse.node_ratings:type_name -> poolrpc.NodeRating - 79, // 43: poolrpc.GetInfoResponse.node_rating:type_name -> poolrpc.NodeRating - 69, // 44: poolrpc.GetInfoResponse.market_info:type_name -> poolrpc.GetInfoResponse.MarketInfoEntry - 30, // 45: poolrpc.OfferSidecarRequest.bid:type_name -> poolrpc.Bid - 59, // 46: poolrpc.ListSidecarsResponse.tickets:type_name -> poolrpc.DecodedSidecarTicket - 80, // 47: poolrpc.LeaseDurationResponse.LeaseDurationBucketsEntry.value:type_name -> poolrpc.DurationBucketState - 81, // 48: poolrpc.GetInfoResponse.MarketInfoEntry.value:type_name -> poolrpc.MarketInfo - 53, // 49: poolrpc.Trader.GetInfo:input_type -> poolrpc.GetInfoRequest - 55, // 50: poolrpc.Trader.StopDaemon:input_type -> poolrpc.StopDaemonRequest - 5, // 51: poolrpc.Trader.QuoteAccount:input_type -> poolrpc.QuoteAccountRequest - 4, // 52: poolrpc.Trader.InitAccount:input_type -> poolrpc.InitAccountRequest - 7, // 53: poolrpc.Trader.ListAccounts:input_type -> poolrpc.ListAccountsRequest - 12, // 54: poolrpc.Trader.CloseAccount:input_type -> poolrpc.CloseAccountRequest - 14, // 55: poolrpc.Trader.WithdrawAccount:input_type -> poolrpc.WithdrawAccountRequest - 16, // 56: poolrpc.Trader.DepositAccount:input_type -> poolrpc.DepositAccountRequest - 18, // 57: poolrpc.Trader.RenewAccount:input_type -> poolrpc.RenewAccountRequest - 20, // 58: poolrpc.Trader.BumpAccountFee:input_type -> poolrpc.BumpAccountFeeRequest - 37, // 59: poolrpc.Trader.RecoverAccounts:input_type -> poolrpc.RecoverAccountsRequest - 23, // 60: poolrpc.Trader.SubmitOrder:input_type -> poolrpc.SubmitOrderRequest - 25, // 61: poolrpc.Trader.ListOrders:input_type -> poolrpc.ListOrdersRequest - 27, // 62: poolrpc.Trader.CancelOrder:input_type -> poolrpc.CancelOrderRequest - 32, // 63: poolrpc.Trader.QuoteOrder:input_type -> poolrpc.QuoteOrderRequest - 39, // 64: poolrpc.Trader.AuctionFee:input_type -> poolrpc.AuctionFeeRequest - 47, // 65: poolrpc.Trader.LeaseDurations:input_type -> poolrpc.LeaseDurationRequest - 49, // 66: poolrpc.Trader.NextBatchInfo:input_type -> poolrpc.NextBatchInfoRequest - 82, // 67: poolrpc.Trader.BatchSnapshot:input_type -> poolrpc.BatchSnapshotRequest - 44, // 68: poolrpc.Trader.GetLsatTokens:input_type -> poolrpc.TokensRequest - 42, // 69: poolrpc.Trader.Leases:input_type -> poolrpc.LeasesRequest - 51, // 70: poolrpc.Trader.NodeRatings:input_type -> poolrpc.NodeRatingRequest - 83, // 71: poolrpc.Trader.BatchSnapshots:input_type -> poolrpc.BatchSnapshotsRequest - 57, // 72: poolrpc.Trader.OfferSidecar:input_type -> poolrpc.OfferSidecarRequest - 60, // 73: poolrpc.Trader.RegisterSidecar:input_type -> poolrpc.RegisterSidecarRequest - 61, // 74: poolrpc.Trader.ExpectSidecarChannel:input_type -> poolrpc.ExpectSidecarChannelRequest - 58, // 75: poolrpc.Trader.DecodeSidecarTicket:input_type -> poolrpc.SidecarTicket - 63, // 76: poolrpc.Trader.ListSidecars:input_type -> poolrpc.ListSidecarsRequest - 65, // 77: poolrpc.Trader.CancelSidecar:input_type -> poolrpc.CancelSidecarRequest - 54, // 78: poolrpc.Trader.GetInfo:output_type -> poolrpc.GetInfoResponse - 56, // 79: poolrpc.Trader.StopDaemon:output_type -> poolrpc.StopDaemonResponse - 6, // 80: poolrpc.Trader.QuoteAccount:output_type -> poolrpc.QuoteAccountResponse - 22, // 81: poolrpc.Trader.InitAccount:output_type -> poolrpc.Account - 8, // 82: poolrpc.Trader.ListAccounts:output_type -> poolrpc.ListAccountsResponse - 13, // 83: poolrpc.Trader.CloseAccount:output_type -> poolrpc.CloseAccountResponse - 15, // 84: poolrpc.Trader.WithdrawAccount:output_type -> poolrpc.WithdrawAccountResponse - 17, // 85: poolrpc.Trader.DepositAccount:output_type -> poolrpc.DepositAccountResponse - 19, // 86: poolrpc.Trader.RenewAccount:output_type -> poolrpc.RenewAccountResponse - 21, // 87: poolrpc.Trader.BumpAccountFee:output_type -> poolrpc.BumpAccountFeeResponse - 38, // 88: poolrpc.Trader.RecoverAccounts:output_type -> poolrpc.RecoverAccountsResponse - 24, // 89: poolrpc.Trader.SubmitOrder:output_type -> poolrpc.SubmitOrderResponse - 26, // 90: poolrpc.Trader.ListOrders:output_type -> poolrpc.ListOrdersResponse - 28, // 91: poolrpc.Trader.CancelOrder:output_type -> poolrpc.CancelOrderResponse - 33, // 92: poolrpc.Trader.QuoteOrder:output_type -> poolrpc.QuoteOrderResponse - 40, // 93: poolrpc.Trader.AuctionFee:output_type -> poolrpc.AuctionFeeResponse - 48, // 94: poolrpc.Trader.LeaseDurations:output_type -> poolrpc.LeaseDurationResponse - 50, // 95: poolrpc.Trader.NextBatchInfo:output_type -> poolrpc.NextBatchInfoResponse - 84, // 96: poolrpc.Trader.BatchSnapshot:output_type -> poolrpc.BatchSnapshotResponse - 45, // 97: poolrpc.Trader.GetLsatTokens:output_type -> poolrpc.TokensResponse - 43, // 98: poolrpc.Trader.Leases:output_type -> poolrpc.LeasesResponse - 52, // 99: poolrpc.Trader.NodeRatings:output_type -> poolrpc.NodeRatingResponse - 85, // 100: poolrpc.Trader.BatchSnapshots:output_type -> poolrpc.BatchSnapshotsResponse - 58, // 101: poolrpc.Trader.OfferSidecar:output_type -> poolrpc.SidecarTicket - 58, // 102: poolrpc.Trader.RegisterSidecar:output_type -> poolrpc.SidecarTicket - 62, // 103: poolrpc.Trader.ExpectSidecarChannel:output_type -> poolrpc.ExpectSidecarChannelResponse - 59, // 104: poolrpc.Trader.DecodeSidecarTicket:output_type -> poolrpc.DecodedSidecarTicket - 64, // 105: poolrpc.Trader.ListSidecars:output_type -> poolrpc.ListSidecarsResponse - 66, // 106: poolrpc.Trader.CancelSidecar:output_type -> poolrpc.CancelSidecarResponse - 78, // [78:107] is the sub-list for method output_type - 49, // [49:78] is the sub-list for method input_type - 49, // [49:49] is the sub-list for extension type_name - 49, // [49:49] is the sub-list for extension extendee - 0, // [0:49] is the sub-list for field type_name + 40, // 35: poolrpc.ListOfAccountModificationFees.modification_fees:type_name -> poolrpc.AccountModificationFee + 71, // 36: poolrpc.AccountModificationFeesResponse.accounts:type_name -> poolrpc.AccountModificationFeesResponse.AccountsEntry + 83, // 37: poolrpc.AuctionFeeResponse.execution_fee:type_name -> poolrpc.ExecutionFee + 75, // 38: poolrpc.Lease.channel_point:type_name -> poolrpc.OutPoint + 80, // 39: poolrpc.Lease.channel_node_tier:type_name -> poolrpc.NodeTier + 45, // 40: poolrpc.LeasesResponse.leases:type_name -> poolrpc.Lease + 50, // 41: poolrpc.TokensResponse.tokens:type_name -> poolrpc.LsatToken + 72, // 42: poolrpc.LeaseDurationResponse.lease_durations:type_name -> poolrpc.LeaseDurationResponse.LeaseDurationsEntry + 73, // 43: poolrpc.LeaseDurationResponse.lease_duration_buckets:type_name -> poolrpc.LeaseDurationResponse.LeaseDurationBucketsEntry + 84, // 44: poolrpc.NodeRatingResponse.node_ratings:type_name -> poolrpc.NodeRating + 84, // 45: poolrpc.GetInfoResponse.node_rating:type_name -> poolrpc.NodeRating + 74, // 46: poolrpc.GetInfoResponse.market_info:type_name -> poolrpc.GetInfoResponse.MarketInfoEntry + 30, // 47: poolrpc.OfferSidecarRequest.bid:type_name -> poolrpc.Bid + 63, // 48: poolrpc.ListSidecarsResponse.tickets:type_name -> poolrpc.DecodedSidecarTicket + 41, // 49: poolrpc.AccountModificationFeesResponse.AccountsEntry.value:type_name -> poolrpc.ListOfAccountModificationFees + 85, // 50: poolrpc.LeaseDurationResponse.LeaseDurationBucketsEntry.value:type_name -> poolrpc.DurationBucketState + 86, // 51: poolrpc.GetInfoResponse.MarketInfoEntry.value:type_name -> poolrpc.MarketInfo + 57, // 52: poolrpc.Trader.GetInfo:input_type -> poolrpc.GetInfoRequest + 59, // 53: poolrpc.Trader.StopDaemon:input_type -> poolrpc.StopDaemonRequest + 5, // 54: poolrpc.Trader.QuoteAccount:input_type -> poolrpc.QuoteAccountRequest + 4, // 55: poolrpc.Trader.InitAccount:input_type -> poolrpc.InitAccountRequest + 7, // 56: poolrpc.Trader.ListAccounts:input_type -> poolrpc.ListAccountsRequest + 12, // 57: poolrpc.Trader.CloseAccount:input_type -> poolrpc.CloseAccountRequest + 14, // 58: poolrpc.Trader.WithdrawAccount:input_type -> poolrpc.WithdrawAccountRequest + 16, // 59: poolrpc.Trader.DepositAccount:input_type -> poolrpc.DepositAccountRequest + 18, // 60: poolrpc.Trader.RenewAccount:input_type -> poolrpc.RenewAccountRequest + 20, // 61: poolrpc.Trader.BumpAccountFee:input_type -> poolrpc.BumpAccountFeeRequest + 37, // 62: poolrpc.Trader.RecoverAccounts:input_type -> poolrpc.RecoverAccountsRequest + 39, // 63: poolrpc.Trader.AccountModificationFees:input_type -> poolrpc.AccountModificationFeesRequest + 23, // 64: poolrpc.Trader.SubmitOrder:input_type -> poolrpc.SubmitOrderRequest + 25, // 65: poolrpc.Trader.ListOrders:input_type -> poolrpc.ListOrdersRequest + 27, // 66: poolrpc.Trader.CancelOrder:input_type -> poolrpc.CancelOrderRequest + 32, // 67: poolrpc.Trader.QuoteOrder:input_type -> poolrpc.QuoteOrderRequest + 43, // 68: poolrpc.Trader.AuctionFee:input_type -> poolrpc.AuctionFeeRequest + 51, // 69: poolrpc.Trader.LeaseDurations:input_type -> poolrpc.LeaseDurationRequest + 53, // 70: poolrpc.Trader.NextBatchInfo:input_type -> poolrpc.NextBatchInfoRequest + 87, // 71: poolrpc.Trader.BatchSnapshot:input_type -> poolrpc.BatchSnapshotRequest + 48, // 72: poolrpc.Trader.GetLsatTokens:input_type -> poolrpc.TokensRequest + 46, // 73: poolrpc.Trader.Leases:input_type -> poolrpc.LeasesRequest + 55, // 74: poolrpc.Trader.NodeRatings:input_type -> poolrpc.NodeRatingRequest + 88, // 75: poolrpc.Trader.BatchSnapshots:input_type -> poolrpc.BatchSnapshotsRequest + 61, // 76: poolrpc.Trader.OfferSidecar:input_type -> poolrpc.OfferSidecarRequest + 64, // 77: poolrpc.Trader.RegisterSidecar:input_type -> poolrpc.RegisterSidecarRequest + 65, // 78: poolrpc.Trader.ExpectSidecarChannel:input_type -> poolrpc.ExpectSidecarChannelRequest + 62, // 79: poolrpc.Trader.DecodeSidecarTicket:input_type -> poolrpc.SidecarTicket + 67, // 80: poolrpc.Trader.ListSidecars:input_type -> poolrpc.ListSidecarsRequest + 69, // 81: poolrpc.Trader.CancelSidecar:input_type -> poolrpc.CancelSidecarRequest + 58, // 82: poolrpc.Trader.GetInfo:output_type -> poolrpc.GetInfoResponse + 60, // 83: poolrpc.Trader.StopDaemon:output_type -> poolrpc.StopDaemonResponse + 6, // 84: poolrpc.Trader.QuoteAccount:output_type -> poolrpc.QuoteAccountResponse + 22, // 85: poolrpc.Trader.InitAccount:output_type -> poolrpc.Account + 8, // 86: poolrpc.Trader.ListAccounts:output_type -> poolrpc.ListAccountsResponse + 13, // 87: poolrpc.Trader.CloseAccount:output_type -> poolrpc.CloseAccountResponse + 15, // 88: poolrpc.Trader.WithdrawAccount:output_type -> poolrpc.WithdrawAccountResponse + 17, // 89: poolrpc.Trader.DepositAccount:output_type -> poolrpc.DepositAccountResponse + 19, // 90: poolrpc.Trader.RenewAccount:output_type -> poolrpc.RenewAccountResponse + 21, // 91: poolrpc.Trader.BumpAccountFee:output_type -> poolrpc.BumpAccountFeeResponse + 38, // 92: poolrpc.Trader.RecoverAccounts:output_type -> poolrpc.RecoverAccountsResponse + 42, // 93: poolrpc.Trader.AccountModificationFees:output_type -> poolrpc.AccountModificationFeesResponse + 24, // 94: poolrpc.Trader.SubmitOrder:output_type -> poolrpc.SubmitOrderResponse + 26, // 95: poolrpc.Trader.ListOrders:output_type -> poolrpc.ListOrdersResponse + 28, // 96: poolrpc.Trader.CancelOrder:output_type -> poolrpc.CancelOrderResponse + 33, // 97: poolrpc.Trader.QuoteOrder:output_type -> poolrpc.QuoteOrderResponse + 44, // 98: poolrpc.Trader.AuctionFee:output_type -> poolrpc.AuctionFeeResponse + 52, // 99: poolrpc.Trader.LeaseDurations:output_type -> poolrpc.LeaseDurationResponse + 54, // 100: poolrpc.Trader.NextBatchInfo:output_type -> poolrpc.NextBatchInfoResponse + 89, // 101: poolrpc.Trader.BatchSnapshot:output_type -> poolrpc.BatchSnapshotResponse + 49, // 102: poolrpc.Trader.GetLsatTokens:output_type -> poolrpc.TokensResponse + 47, // 103: poolrpc.Trader.Leases:output_type -> poolrpc.LeasesResponse + 56, // 104: poolrpc.Trader.NodeRatings:output_type -> poolrpc.NodeRatingResponse + 90, // 105: poolrpc.Trader.BatchSnapshots:output_type -> poolrpc.BatchSnapshotsResponse + 62, // 106: poolrpc.Trader.OfferSidecar:output_type -> poolrpc.SidecarTicket + 62, // 107: poolrpc.Trader.RegisterSidecar:output_type -> poolrpc.SidecarTicket + 66, // 108: poolrpc.Trader.ExpectSidecarChannel:output_type -> poolrpc.ExpectSidecarChannelResponse + 63, // 109: poolrpc.Trader.DecodeSidecarTicket:output_type -> poolrpc.DecodedSidecarTicket + 68, // 110: poolrpc.Trader.ListSidecars:output_type -> poolrpc.ListSidecarsResponse + 70, // 111: poolrpc.Trader.CancelSidecar:output_type -> poolrpc.CancelSidecarResponse + 82, // [82:112] is the sub-list for method output_type + 52, // [52:82] is the sub-list for method input_type + 52, // [52:52] is the sub-list for extension type_name + 52, // [52:52] is the sub-list for extension extendee + 0, // [0:52] is the sub-list for field type_name } func init() { file_trader_proto_init() } @@ -6644,7 +6962,7 @@ func file_trader_proto_init() { } } file_trader_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AuctionFeeRequest); i { + switch v := v.(*AccountModificationFeesRequest); i { case 0: return &v.state case 1: @@ -6656,7 +6974,7 @@ func file_trader_proto_init() { } } file_trader_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AuctionFeeResponse); i { + switch v := v.(*AccountModificationFee); i { case 0: return &v.state case 1: @@ -6668,7 +6986,7 @@ func file_trader_proto_init() { } } file_trader_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Lease); i { + switch v := v.(*ListOfAccountModificationFees); i { case 0: return &v.state case 1: @@ -6680,7 +6998,7 @@ func file_trader_proto_init() { } } file_trader_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LeasesRequest); i { + switch v := v.(*AccountModificationFeesResponse); i { case 0: return &v.state case 1: @@ -6692,7 +7010,7 @@ func file_trader_proto_init() { } } file_trader_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LeasesResponse); i { + switch v := v.(*AuctionFeeRequest); i { case 0: return &v.state case 1: @@ -6704,7 +7022,7 @@ func file_trader_proto_init() { } } file_trader_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TokensRequest); i { + switch v := v.(*AuctionFeeResponse); i { case 0: return &v.state case 1: @@ -6716,7 +7034,7 @@ func file_trader_proto_init() { } } file_trader_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TokensResponse); i { + switch v := v.(*Lease); i { case 0: return &v.state case 1: @@ -6728,7 +7046,7 @@ func file_trader_proto_init() { } } file_trader_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LsatToken); i { + switch v := v.(*LeasesRequest); i { case 0: return &v.state case 1: @@ -6740,7 +7058,7 @@ func file_trader_proto_init() { } } file_trader_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LeaseDurationRequest); i { + switch v := v.(*LeasesResponse); i { case 0: return &v.state case 1: @@ -6752,7 +7070,7 @@ func file_trader_proto_init() { } } file_trader_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LeaseDurationResponse); i { + switch v := v.(*TokensRequest); i { case 0: return &v.state case 1: @@ -6764,7 +7082,7 @@ func file_trader_proto_init() { } } file_trader_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NextBatchInfoRequest); i { + switch v := v.(*TokensResponse); i { case 0: return &v.state case 1: @@ -6776,7 +7094,7 @@ func file_trader_proto_init() { } } file_trader_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NextBatchInfoResponse); i { + switch v := v.(*LsatToken); i { case 0: return &v.state case 1: @@ -6788,7 +7106,7 @@ func file_trader_proto_init() { } } file_trader_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NodeRatingRequest); i { + switch v := v.(*LeaseDurationRequest); i { case 0: return &v.state case 1: @@ -6800,7 +7118,7 @@ func file_trader_proto_init() { } } file_trader_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NodeRatingResponse); i { + switch v := v.(*LeaseDurationResponse); i { case 0: return &v.state case 1: @@ -6812,7 +7130,7 @@ func file_trader_proto_init() { } } file_trader_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetInfoRequest); i { + switch v := v.(*NextBatchInfoRequest); i { case 0: return &v.state case 1: @@ -6824,7 +7142,7 @@ func file_trader_proto_init() { } } file_trader_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetInfoResponse); i { + switch v := v.(*NextBatchInfoResponse); i { case 0: return &v.state case 1: @@ -6836,7 +7154,7 @@ func file_trader_proto_init() { } } file_trader_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StopDaemonRequest); i { + switch v := v.(*NodeRatingRequest); i { case 0: return &v.state case 1: @@ -6848,7 +7166,7 @@ func file_trader_proto_init() { } } file_trader_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StopDaemonResponse); i { + switch v := v.(*NodeRatingResponse); i { case 0: return &v.state case 1: @@ -6860,7 +7178,7 @@ func file_trader_proto_init() { } } file_trader_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OfferSidecarRequest); i { + switch v := v.(*GetInfoRequest); i { case 0: return &v.state case 1: @@ -6872,7 +7190,7 @@ func file_trader_proto_init() { } } file_trader_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SidecarTicket); i { + switch v := v.(*GetInfoResponse); i { case 0: return &v.state case 1: @@ -6884,7 +7202,7 @@ func file_trader_proto_init() { } } file_trader_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DecodedSidecarTicket); i { + switch v := v.(*StopDaemonRequest); i { case 0: return &v.state case 1: @@ -6896,7 +7214,7 @@ func file_trader_proto_init() { } } file_trader_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RegisterSidecarRequest); i { + switch v := v.(*StopDaemonResponse); i { case 0: return &v.state case 1: @@ -6908,7 +7226,7 @@ func file_trader_proto_init() { } } file_trader_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExpectSidecarChannelRequest); i { + switch v := v.(*OfferSidecarRequest); i { case 0: return &v.state case 1: @@ -6920,7 +7238,7 @@ func file_trader_proto_init() { } } file_trader_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExpectSidecarChannelResponse); i { + switch v := v.(*SidecarTicket); i { case 0: return &v.state case 1: @@ -6932,7 +7250,7 @@ func file_trader_proto_init() { } } file_trader_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListSidecarsRequest); i { + switch v := v.(*DecodedSidecarTicket); i { case 0: return &v.state case 1: @@ -6944,7 +7262,7 @@ func file_trader_proto_init() { } } file_trader_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListSidecarsResponse); i { + switch v := v.(*RegisterSidecarRequest); i { case 0: return &v.state case 1: @@ -6956,7 +7274,7 @@ func file_trader_proto_init() { } } file_trader_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CancelSidecarRequest); i { + switch v := v.(*ExpectSidecarChannelRequest); i { case 0: return &v.state case 1: @@ -6968,6 +7286,54 @@ func file_trader_proto_init() { } } file_trader_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ExpectSidecarChannelResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_trader_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListSidecarsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_trader_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListSidecarsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_trader_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CancelSidecarRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_trader_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CancelSidecarResponse); i { case 0: return &v.state @@ -7021,13 +7387,17 @@ func file_trader_proto_init() { (*OrderEvent_StateChange)(nil), (*OrderEvent_Matched)(nil), } + file_trader_proto_msgTypes[36].OneofWrappers = []interface{}{ + (*AccountModificationFee_FeeNull)(nil), + (*AccountModificationFee_FeeValue)(nil), + } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_trader_proto_rawDesc, NumEnums: 4, - NumMessages: 66, + NumMessages: 71, NumExtensions: 0, NumServices: 1, }, diff --git a/poolrpc/trader.pb.json.go b/poolrpc/trader.pb.json.go index 56bb03888..ad7930d52 100644 --- a/poolrpc/trader.pb.json.go +++ b/poolrpc/trader.pb.json.go @@ -297,6 +297,31 @@ func RegisterTraderJSONCallbacks(registry map[string]func(ctx context.Context, callback(string(respBytes), nil) } + registry["poolrpc.Trader.AccountModificationFees"] = func(ctx context.Context, + conn *grpc.ClientConn, reqJSON string, callback func(string, error)) { + + req := &AccountModificationFeesRequest{} + err := marshaler.Unmarshal([]byte(reqJSON), req) + if err != nil { + callback("", err) + return + } + + client := NewTraderClient(conn) + resp, err := client.AccountModificationFees(ctx, req) + if err != nil { + callback("", err) + return + } + + respBytes, err := marshaler.Marshal(resp) + if err != nil { + callback("", err) + return + } + callback(string(respBytes), nil) + } + registry["poolrpc.Trader.SubmitOrder"] = func(ctx context.Context, conn *grpc.ClientConn, reqJSON string, callback func(string, error)) { diff --git a/poolrpc/trader.proto b/poolrpc/trader.proto index cbd4af406..e448ce445 100644 --- a/poolrpc/trader.proto +++ b/poolrpc/trader.proto @@ -78,6 +78,13 @@ service Trader { rpc RecoverAccounts (RecoverAccountsRequest) returns (RecoverAccountsResponse); + /* pool: `accounts listfees` + AccountModificationFees returns a map from account key to an ordered list of + account action modification fees. + */ + rpc AccountModificationFees (AccountModificationFeesRequest) + returns (AccountModificationFeesResponse); + /* pool: `orders submit` SubmitOrder creates a new ask or bid order and submits for the given account and submits it to the auction server for matching. @@ -1011,6 +1018,45 @@ message RecoverAccountsResponse { uint32 num_recovered_accounts = 1; } +message AccountModificationFeesRequest { +} + +message AccountModificationFee { + // Modification action type. + string action = 1; + + // Transaction ID. + string txid = 2; + + // Action transaction block height. + int32 block_height = 3; + + // Action transaction timestamp. + int64 timestamp = 4; + + // Action transaction output amount. + int64 output_amount = 5; + + // Action transaction fee. + oneof fee { + // A flag which is true if fee value has not been set, and is otherwise + // false. + bool fee_null = 6; + + // Action transaction fee value. + int64 fee_value = 7; + } +} + +message ListOfAccountModificationFees { + repeated AccountModificationFee modification_fees = 1; +} + +message AccountModificationFeesResponse { + // A map from account key to an ordered list of account modification fees. + map accounts = 1; +} + message AuctionFeeRequest { } diff --git a/poolrpc/trader.swagger.json b/poolrpc/trader.swagger.json index e425d3c18..cef189d22 100644 --- a/poolrpc/trader.swagger.json +++ b/poolrpc/trader.swagger.json @@ -1018,6 +1018,55 @@ } } }, + "poolrpcAccountModificationFee": { + "type": "object", + "properties": { + "action": { + "type": "string", + "description": "Modification action type." + }, + "txid": { + "type": "string", + "description": "Transaction ID." + }, + "block_height": { + "type": "integer", + "format": "int32", + "description": "Action transaction block height." + }, + "timestamp": { + "type": "string", + "format": "int64", + "description": "Action transaction timestamp." + }, + "output_amount": { + "type": "string", + "format": "int64", + "description": "Action transaction output amount." + }, + "fee_null": { + "type": "boolean", + "description": "A flag which is true if fee value has not been set, and is otherwise\nfalse." + }, + "fee_value": { + "type": "string", + "format": "int64", + "description": "Action transaction fee value." + } + } + }, + "poolrpcAccountModificationFeesResponse": { + "type": "object", + "properties": { + "accounts": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/poolrpcListOfAccountModificationFees" + }, + "description": "A map from account key to an ordered list of account modification fees." + } + } + }, "poolrpcAccountState": { "type": "string", "enum": [ @@ -1737,6 +1786,17 @@ } } }, + "poolrpcListOfAccountModificationFees": { + "type": "object", + "properties": { + "modification_fees": { + "type": "array", + "items": { + "$ref": "#/definitions/poolrpcAccountModificationFee" + } + } + } + }, "poolrpcListOrdersResponse": { "type": "object", "properties": { diff --git a/poolrpc/trader_grpc.pb.go b/poolrpc/trader_grpc.pb.go index 347f485f8..3107ca2e0 100644 --- a/poolrpc/trader_grpc.pb.go +++ b/poolrpc/trader_grpc.pb.go @@ -66,6 +66,10 @@ type TraderClient interface { //RecoverAccounts queries the auction server for this trader daemon's accounts //in case we lost our local account database. RecoverAccounts(ctx context.Context, in *RecoverAccountsRequest, opts ...grpc.CallOption) (*RecoverAccountsResponse, error) + // pool: `accounts listfees` + //AccountModificationFees returns a map from account key to an ordered list of + //account action modification fees. + AccountModificationFees(ctx context.Context, in *AccountModificationFeesRequest, opts ...grpc.CallOption) (*AccountModificationFeesResponse, error) // pool: `orders submit` //SubmitOrder creates a new ask or bid order and submits for the given account //and submits it to the auction server for matching. @@ -266,6 +270,15 @@ func (c *traderClient) RecoverAccounts(ctx context.Context, in *RecoverAccountsR return out, nil } +func (c *traderClient) AccountModificationFees(ctx context.Context, in *AccountModificationFeesRequest, opts ...grpc.CallOption) (*AccountModificationFeesResponse, error) { + out := new(AccountModificationFeesResponse) + err := c.cc.Invoke(ctx, "/poolrpc.Trader/AccountModificationFees", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *traderClient) SubmitOrder(ctx context.Context, in *SubmitOrderRequest, opts ...grpc.CallOption) (*SubmitOrderResponse, error) { out := new(SubmitOrderResponse) err := c.cc.Invoke(ctx, "/poolrpc.Trader/SubmitOrder", in, out, opts...) @@ -479,6 +492,10 @@ type TraderServer interface { //RecoverAccounts queries the auction server for this trader daemon's accounts //in case we lost our local account database. RecoverAccounts(context.Context, *RecoverAccountsRequest) (*RecoverAccountsResponse, error) + // pool: `accounts listfees` + //AccountModificationFees returns a map from account key to an ordered list of + //account action modification fees. + AccountModificationFees(context.Context, *AccountModificationFeesRequest) (*AccountModificationFeesResponse, error) // pool: `orders submit` //SubmitOrder creates a new ask or bid order and submits for the given account //and submits it to the auction server for matching. @@ -610,6 +627,9 @@ func (UnimplementedTraderServer) BumpAccountFee(context.Context, *BumpAccountFee func (UnimplementedTraderServer) RecoverAccounts(context.Context, *RecoverAccountsRequest) (*RecoverAccountsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method RecoverAccounts not implemented") } +func (UnimplementedTraderServer) AccountModificationFees(context.Context, *AccountModificationFeesRequest) (*AccountModificationFeesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method AccountModificationFees not implemented") +} func (UnimplementedTraderServer) SubmitOrder(context.Context, *SubmitOrderRequest) (*SubmitOrderResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method SubmitOrder not implemented") } @@ -875,6 +895,24 @@ func _Trader_RecoverAccounts_Handler(srv interface{}, ctx context.Context, dec f return interceptor(ctx, in, info, handler) } +func _Trader_AccountModificationFees_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(AccountModificationFeesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(TraderServer).AccountModificationFees(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/poolrpc.Trader/AccountModificationFees", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(TraderServer).AccountModificationFees(ctx, req.(*AccountModificationFeesRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _Trader_SubmitOrder_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(SubmitOrderRequest) if err := dec(in); err != nil { @@ -1250,6 +1288,10 @@ var Trader_ServiceDesc = grpc.ServiceDesc{ MethodName: "RecoverAccounts", Handler: _Trader_RecoverAccounts_Handler, }, + { + MethodName: "AccountModificationFees", + Handler: _Trader_AccountModificationFees_Handler, + }, { MethodName: "SubmitOrder", Handler: _Trader_SubmitOrder_Handler, diff --git a/rpcserver.go b/rpcserver.go index 605e89ef8..c43cf1e5e 100644 --- a/rpcserver.go +++ b/rpcserver.go @@ -3030,6 +3030,80 @@ func (s *rpcServer) determineAccountVersion( return account.VersionTaprootEnabled, nil } +// AccountModificationFees returns a map from account key to an ordered list of +// account modifying action fees. +func (s *rpcServer) AccountModificationFees(ctx context.Context, + req *poolrpc.AccountModificationFeesRequest) ( + *poolrpc.AccountModificationFeesResponse, error) { + + // Retrieve all lightning wallet transactions. + transactionDetails, err := s.lndClient.GetTransactions( + ctx, &lnrpc.GetTransactionsRequest{}, + ) + if err != nil { + return nil, fmt.Errorf("error retrieving transactions: %v", err) + } + + // A map from account key to an ordered list of account action fees. + accountActions := make(map[string][]*poolrpc.AccountModificationFee) + + for _, tx := range transactionDetails.Transactions { + // Skip transactions which are not related to pool. + if !account.IsPoolTx(tx) { + continue + } + + // Parse account data from transaction label. + labelData, err := account.ParseTxLabel(tx.Label) + if err != nil { + return nil, fmt.Errorf("failed to parse transaction "+ + "label: %v (error: %v)", tx.Label, err) + } + + // Ignore transaction if account modification not found. + if labelData == nil { + continue + } + + // Select the account specific transaction output. Each account + // action transaction should include an account specific output. + output := tx.OutputDetails[labelData.Account.OutputIndex] + + // Construct account modification fee structure. + acctModFee := &poolrpc.AccountModificationFee{ + Action: string(labelData.Account.Action), + Txid: tx.TxHash, + BlockHeight: tx.BlockHeight, + Timestamp: tx.TimeStamp, + OutputAmount: output.Amount, + } + acctModFee.Fee = &poolrpc.AccountModificationFee_FeeNull{ + FeeNull: true, + } + if labelData.Account.TxFee != nil { + acctModFee.Fee = &poolrpc.AccountModificationFee_FeeValue{ + FeeValue: int64(*labelData.Account.TxFee), + } + } + + // Handle all non-create account actions. + accountActions[labelData.Account.Key] = append( + accountActions[labelData.Account.Key], acctModFee, + ) + } + + result := make(map[string]*poolrpc.ListOfAccountModificationFees) + for traderKey, modificationFees := range accountActions { + result[traderKey] = &poolrpc.ListOfAccountModificationFees{ + ModificationFees: modificationFees, + } + } + + return &poolrpc.AccountModificationFeesResponse{ + Accounts: result, + }, nil +} + // rpcOrderStateToDBState maps the order state as received over the RPC // protocol to the local state that we use in the database. func rpcOrderStateToDBState(state auctioneerrpc.OrderState) (order.State,