From 512bc655df91ae52dba6bdd01b3b9bbc114aa03f Mon Sep 17 00:00:00 2001 From: cbdev01 Date: Fri, 28 Jun 2024 10:43:29 +0800 Subject: [PATCH 1/3] Add iost token string with full precision --- chainbase/util.go | 2 +- common/decimal.go | 8 + consensus/synchro/pb/message.pb.go | 14 +- core/block/pb/block.pb.go | 10 +- core/blockcache/block_cache.pb.go | 18 +- core/contract/contract.pb.go | 14 +- core/merkletree/merkle_tree.pb.go | 10 +- core/tx/pb/tx.pb.go | 16 +- crypto/pb/signature.pb.go | 8 +- db/wal/log.pb.go | 10 +- go.mod | 17 +- go.sum | 39 +- itest/client.go | 2 +- p2p/pb/message.pb.go | 12 +- rpc/api_service.go | 4 +- rpc/pb/rpc.pb.go | 1215 ++++++++++++++-------------- rpc/pb/rpc.pb.gw.go | 108 +-- rpc/pb/rpc.proto | 14 +- rpc/pb/rpc.swagger.json | 4 + rpc/pb/rpc_grpc.pb.go | 99 ++- sdk/sdk.go | 2 +- test/performance/call/client.go | 2 +- tools/spv/main.go | 2 +- 23 files changed, 807 insertions(+), 823 deletions(-) diff --git a/chainbase/util.go b/chainbase/util.go index 626a215a1..6e3f1e071 100644 --- a/chainbase/util.go +++ b/chainbase/util.go @@ -15,7 +15,7 @@ import ( // SPVFetchInitialBlockFromSeed get the most recent voting block older than the 'syncFrom' block // if 'syncFrom' is 0, fetch the most recent voting block func SPVFetchInitialBlockFromSeed(server string, syncFrom int64) (*block.Block, error) { - rpcConn, err := grpc.Dial(server, grpc.WithTransportCredentials(insecure.NewCredentials())) + rpcConn, err := grpc.NewClient(server, grpc.WithTransportCredentials(insecure.NewCredentials())) if err != nil { return nil, err } diff --git a/common/decimal.go b/common/decimal.go index 9c96b39e4..cb5033a54 100644 --- a/common/decimal.go +++ b/common/decimal.go @@ -4,6 +4,7 @@ import ( "encoding/binary" "errors" "math" + "math/big" ) var errOverflow = errors.New("overflow error") @@ -19,6 +20,13 @@ type Decimal struct { Err error } +// FloatString ... +func (f *Decimal) FloatString() string { + numerator := big.NewInt(f.Value) + denominator := big.NewInt(int64(math.Pow10(f.Scale))) + return new(big.Rat).SetFrac(numerator, denominator).FloatString(f.Scale) +} + // Float64 ... func (f *Decimal) Float64() float64 { return float64(f.Value) / math.Pow10(f.Scale) diff --git a/consensus/synchro/pb/message.pb.go b/consensus/synchro/pb/message.pb.go index 3a07e0dbb..f2edc385d 100644 --- a/consensus/synchro/pb/message.pb.go +++ b/consensus/synchro/pb/message.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.31.0 -// protoc v4.24.2 +// protoc-gen-go v1.34.2 +// protoc v3.19.0 // source: consensus/synchro/pb/message.proto package msgpb @@ -344,7 +344,7 @@ func file_consensus_synchro_pb_message_proto_rawDescGZIP() []byte { var file_consensus_synchro_pb_message_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_consensus_synchro_pb_message_proto_msgTypes = make([]protoimpl.MessageInfo, 4) -var file_consensus_synchro_pb_message_proto_goTypes = []interface{}{ +var file_consensus_synchro_pb_message_proto_goTypes = []any{ (RequireType)(0), // 0: msgpb.RequireType (*BlockInfo)(nil), // 1: msgpb.BlockInfo (*BlockHashQuery)(nil), // 2: msgpb.BlockHashQuery @@ -367,7 +367,7 @@ func file_consensus_synchro_pb_message_proto_init() { return } if !protoimpl.UnsafeEnabled { - file_consensus_synchro_pb_message_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_consensus_synchro_pb_message_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*BlockInfo); i { case 0: return &v.state @@ -379,7 +379,7 @@ func file_consensus_synchro_pb_message_proto_init() { return nil } } - file_consensus_synchro_pb_message_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_consensus_synchro_pb_message_proto_msgTypes[1].Exporter = func(v any, i int) any { switch v := v.(*BlockHashQuery); i { case 0: return &v.state @@ -391,7 +391,7 @@ func file_consensus_synchro_pb_message_proto_init() { return nil } } - file_consensus_synchro_pb_message_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_consensus_synchro_pb_message_proto_msgTypes[2].Exporter = func(v any, i int) any { switch v := v.(*BlockHashResponse); i { case 0: return &v.state @@ -403,7 +403,7 @@ func file_consensus_synchro_pb_message_proto_init() { return nil } } - file_consensus_synchro_pb_message_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_consensus_synchro_pb_message_proto_msgTypes[3].Exporter = func(v any, i int) any { switch v := v.(*SyncHeight); i { case 0: return &v.state diff --git a/core/block/pb/block.pb.go b/core/block/pb/block.pb.go index 794f375ea..440a3dfa2 100644 --- a/core/block/pb/block.pb.go +++ b/core/block/pb/block.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.31.0 -// protoc v4.24.2 +// protoc-gen-go v1.34.2 +// protoc v3.19.0 // source: core/block/pb/block.proto package pb @@ -330,7 +330,7 @@ func file_core_block_pb_block_proto_rawDescGZIP() []byte { var file_core_block_pb_block_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_core_block_pb_block_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_core_block_pb_block_proto_goTypes = []interface{}{ +var file_core_block_pb_block_proto_goTypes = []any{ (BlockType)(0), // 0: blockpb.BlockType (*BlockHead)(nil), // 1: blockpb.BlockHead (*Block)(nil), // 2: blockpb.Block @@ -357,7 +357,7 @@ func file_core_block_pb_block_proto_init() { return } if !protoimpl.UnsafeEnabled { - file_core_block_pb_block_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_core_block_pb_block_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*BlockHead); i { case 0: return &v.state @@ -369,7 +369,7 @@ func file_core_block_pb_block_proto_init() { return nil } } - file_core_block_pb_block_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_core_block_pb_block_proto_msgTypes[1].Exporter = func(v any, i int) any { switch v := v.(*Block); i { case 0: return &v.state diff --git a/core/blockcache/block_cache.pb.go b/core/blockcache/block_cache.pb.go index c23e87c22..3738d2a82 100644 --- a/core/blockcache/block_cache.pb.go +++ b/core/blockcache/block_cache.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.31.0 -// protoc v4.24.2 +// protoc-gen-go v1.34.2 +// protoc v3.19.0 // source: core/blockcache/block_cache.proto package blockcache @@ -490,7 +490,7 @@ func file_core_blockcache_block_cache_proto_rawDescGZIP() []byte { var file_core_blockcache_block_cache_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_core_blockcache_block_cache_proto_msgTypes = make([]protoimpl.MessageInfo, 6) -var file_core_blockcache_block_cache_proto_goTypes = []interface{}{ +var file_core_blockcache_block_cache_proto_goTypes = []any{ (BcMessageType)(0), // 0: blockcache.bcMessageType (*BcMessage)(nil), // 1: blockcache.bcMessage (*BlockCacheRaw)(nil), // 2: blockcache.BlockCacheRaw @@ -516,7 +516,7 @@ func file_core_blockcache_block_cache_proto_init() { return } if !protoimpl.UnsafeEnabled { - file_core_blockcache_block_cache_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_core_blockcache_block_cache_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*BcMessage); i { case 0: return &v.state @@ -528,7 +528,7 @@ func file_core_blockcache_block_cache_proto_init() { return nil } } - file_core_blockcache_block_cache_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_core_blockcache_block_cache_proto_msgTypes[1].Exporter = func(v any, i int) any { switch v := v.(*BlockCacheRaw); i { case 0: return &v.state @@ -540,7 +540,7 @@ func file_core_blockcache_block_cache_proto_init() { return nil } } - file_core_blockcache_block_cache_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_core_blockcache_block_cache_proto_msgTypes[2].Exporter = func(v any, i int) any { switch v := v.(*UpdateActiveRaw); i { case 0: return &v.state @@ -552,7 +552,7 @@ func file_core_blockcache_block_cache_proto_init() { return nil } } - file_core_blockcache_block_cache_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_core_blockcache_block_cache_proto_msgTypes[3].Exporter = func(v any, i int) any { switch v := v.(*UpdateLinkedRootWitnessRaw); i { case 0: return &v.state @@ -564,7 +564,7 @@ func file_core_blockcache_block_cache_proto_init() { return nil } } - file_core_blockcache_block_cache_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + file_core_blockcache_block_cache_proto_msgTypes[4].Exporter = func(v any, i int) any { switch v := v.(*WitnessList); i { case 0: return &v.state @@ -576,7 +576,7 @@ func file_core_blockcache_block_cache_proto_init() { return nil } } - file_core_blockcache_block_cache_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_core_blockcache_block_cache_proto_msgTypes[5].Exporter = func(v any, i int) any { switch v := v.(*WitnessInfo); i { case 0: return &v.state diff --git a/core/contract/contract.pb.go b/core/contract/contract.pb.go index 4af9ef168..091648fe8 100644 --- a/core/contract/contract.pb.go +++ b/core/contract/contract.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.31.0 -// protoc v4.24.2 +// protoc-gen-go v1.34.2 +// protoc v3.19.0 // source: core/contract/contract.proto package contract @@ -319,7 +319,7 @@ func file_core_contract_contract_proto_rawDescGZIP() []byte { } var file_core_contract_contract_proto_msgTypes = make([]protoimpl.MessageInfo, 4) -var file_core_contract_contract_proto_goTypes = []interface{}{ +var file_core_contract_contract_proto_goTypes = []any{ (*Info)(nil), // 0: contract.Info (*ABI)(nil), // 1: contract.ABI (*Amount)(nil), // 2: contract.Amount @@ -342,7 +342,7 @@ func file_core_contract_contract_proto_init() { return } if !protoimpl.UnsafeEnabled { - file_core_contract_contract_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_core_contract_contract_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*Info); i { case 0: return &v.state @@ -354,7 +354,7 @@ func file_core_contract_contract_proto_init() { return nil } } - file_core_contract_contract_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_core_contract_contract_proto_msgTypes[1].Exporter = func(v any, i int) any { switch v := v.(*ABI); i { case 0: return &v.state @@ -366,7 +366,7 @@ func file_core_contract_contract_proto_init() { return nil } } - file_core_contract_contract_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_core_contract_contract_proto_msgTypes[2].Exporter = func(v any, i int) any { switch v := v.(*Amount); i { case 0: return &v.state @@ -378,7 +378,7 @@ func file_core_contract_contract_proto_init() { return nil } } - file_core_contract_contract_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_core_contract_contract_proto_msgTypes[3].Exporter = func(v any, i int) any { switch v := v.(*Contract); i { case 0: return &v.state diff --git a/core/merkletree/merkle_tree.pb.go b/core/merkletree/merkle_tree.pb.go index a52a1c299..ae30f36d0 100644 --- a/core/merkletree/merkle_tree.pb.go +++ b/core/merkletree/merkle_tree.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.31.0 -// protoc v4.24.2 +// protoc-gen-go v1.34.2 +// protoc v3.19.0 // source: core/merkletree/merkle_tree.proto package merkletree @@ -187,7 +187,7 @@ func file_core_merkletree_merkle_tree_proto_rawDescGZIP() []byte { } var file_core_merkletree_merkle_tree_proto_msgTypes = make([]protoimpl.MessageInfo, 4) -var file_core_merkletree_merkle_tree_proto_goTypes = []interface{}{ +var file_core_merkletree_merkle_tree_proto_goTypes = []any{ (*MerkleTree)(nil), // 0: merkletree.MerkleTree (*TXRMerkleTree)(nil), // 1: merkletree.TXRMerkleTree nil, // 2: merkletree.MerkleTree.Hash2IdxEntry @@ -210,7 +210,7 @@ func file_core_merkletree_merkle_tree_proto_init() { return } if !protoimpl.UnsafeEnabled { - file_core_merkletree_merkle_tree_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_core_merkletree_merkle_tree_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*MerkleTree); i { case 0: return &v.state @@ -222,7 +222,7 @@ func file_core_merkletree_merkle_tree_proto_init() { return nil } } - file_core_merkletree_merkle_tree_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_core_merkletree_merkle_tree_proto_msgTypes[1].Exporter = func(v any, i int) any { switch v := v.(*TXRMerkleTree); i { case 0: return &v.state diff --git a/core/tx/pb/tx.pb.go b/core/tx/pb/tx.pb.go index 08a62baf6..b86dc3270 100644 --- a/core/tx/pb/tx.pb.go +++ b/core/tx/pb/tx.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.31.0 -// protoc v4.24.2 +// protoc-gen-go v1.34.2 +// protoc v3.19.0 // source: core/tx/pb/tx.proto package txpb @@ -521,7 +521,7 @@ func file_core_tx_pb_tx_proto_rawDescGZIP() []byte { } var file_core_tx_pb_tx_proto_msgTypes = make([]protoimpl.MessageInfo, 6) -var file_core_tx_pb_tx_proto_goTypes = []interface{}{ +var file_core_tx_pb_tx_proto_goTypes = []any{ (*Action)(nil), // 0: txpb.Action (*Tx)(nil), // 1: txpb.Tx (*Receipt)(nil), // 2: txpb.Receipt @@ -552,7 +552,7 @@ func file_core_tx_pb_tx_proto_init() { return } if !protoimpl.UnsafeEnabled { - file_core_tx_pb_tx_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_core_tx_pb_tx_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*Action); i { case 0: return &v.state @@ -564,7 +564,7 @@ func file_core_tx_pb_tx_proto_init() { return nil } } - file_core_tx_pb_tx_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_core_tx_pb_tx_proto_msgTypes[1].Exporter = func(v any, i int) any { switch v := v.(*Tx); i { case 0: return &v.state @@ -576,7 +576,7 @@ func file_core_tx_pb_tx_proto_init() { return nil } } - file_core_tx_pb_tx_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_core_tx_pb_tx_proto_msgTypes[2].Exporter = func(v any, i int) any { switch v := v.(*Receipt); i { case 0: return &v.state @@ -588,7 +588,7 @@ func file_core_tx_pb_tx_proto_init() { return nil } } - file_core_tx_pb_tx_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_core_tx_pb_tx_proto_msgTypes[3].Exporter = func(v any, i int) any { switch v := v.(*Status); i { case 0: return &v.state @@ -600,7 +600,7 @@ func file_core_tx_pb_tx_proto_init() { return nil } } - file_core_tx_pb_tx_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + file_core_tx_pb_tx_proto_msgTypes[4].Exporter = func(v any, i int) any { switch v := v.(*TxReceipt); i { case 0: return &v.state diff --git a/crypto/pb/signature.pb.go b/crypto/pb/signature.pb.go index f6abe4b3d..e0e281c34 100644 --- a/crypto/pb/signature.pb.go +++ b/crypto/pb/signature.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.31.0 -// protoc v4.24.2 +// protoc-gen-go v1.34.2 +// protoc v3.19.0 // source: crypto/pb/signature.proto package pb @@ -112,7 +112,7 @@ func file_crypto_pb_signature_proto_rawDescGZIP() []byte { } var file_crypto_pb_signature_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_crypto_pb_signature_proto_goTypes = []interface{}{ +var file_crypto_pb_signature_proto_goTypes = []any{ (*Signature)(nil), // 0: sigpb.Signature } var file_crypto_pb_signature_proto_depIdxs = []int32{ @@ -129,7 +129,7 @@ func file_crypto_pb_signature_proto_init() { return } if !protoimpl.UnsafeEnabled { - file_crypto_pb_signature_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_crypto_pb_signature_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*Signature); i { case 0: return &v.state diff --git a/db/wal/log.pb.go b/db/wal/log.pb.go index 6ec447953..8f935f8d3 100644 --- a/db/wal/log.pb.go +++ b/db/wal/log.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.31.0 -// protoc v4.24.2 +// protoc-gen-go v1.34.2 +// protoc v3.19.0 // source: db/wal/log.proto package wal @@ -233,7 +233,7 @@ func file_db_wal_log_proto_rawDescGZIP() []byte { var file_db_wal_log_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_db_wal_log_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_db_wal_log_proto_goTypes = []interface{}{ +var file_db_wal_log_proto_goTypes = []any{ (LogType)(0), // 0: wal.LogType (*Log)(nil), // 1: wal.Log (*Entry)(nil), // 2: wal.Entry @@ -253,7 +253,7 @@ func file_db_wal_log_proto_init() { return } if !protoimpl.UnsafeEnabled { - file_db_wal_log_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_db_wal_log_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*Log); i { case 0: return &v.state @@ -265,7 +265,7 @@ func file_db_wal_log_proto_init() { return nil } } - file_db_wal_log_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_db_wal_log_proto_msgTypes[1].Exporter = func(v any, i int) any { switch v := v.(*Entry); i { case 0: return &v.state diff --git a/go.mod b/go.mod index 4dce6cb82..14ff42359 100644 --- a/go.mod +++ b/go.mod @@ -33,13 +33,13 @@ require ( github.com/wcharczuk/go-chart/v2 v2.1.1 github.com/xlab/treeprint v1.2.0 go.uber.org/atomic v1.11.0 - golang.org/x/crypto v0.20.0 - golang.org/x/net v0.21.0 - golang.org/x/term v0.17.0 + golang.org/x/crypto v0.21.0 + golang.org/x/net v0.22.0 + golang.org/x/term v0.18.0 golang.org/x/time v0.5.0 - google.golang.org/genproto/googleapis/api v0.0.0-20240228224816-df926f6c8641 - google.golang.org/grpc v1.62.0 - google.golang.org/protobuf v1.32.0 + google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237 + google.golang.org/grpc v1.64.0 + google.golang.org/protobuf v1.33.0 gopkg.in/yaml.v3 v3.0.1 ) @@ -64,7 +64,6 @@ require ( github.com/godbus/dbus/v5 v5.1.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect - github.com/golang/protobuf v1.5.3 // indirect github.com/google/gopacket v1.1.19 // indirect github.com/google/pprof v0.0.0-20240227163752-401108e1b7e7 // indirect github.com/gopherjs/gopherjs v0.0.0-20190430165422-3e4dfb77656c // indirect @@ -147,10 +146,10 @@ require ( golang.org/x/image v0.15.0 // indirect golang.org/x/mod v0.15.0 // indirect golang.org/x/sync v0.6.0 // indirect - golang.org/x/sys v0.17.0 // indirect + golang.org/x/sys v0.18.0 // indirect golang.org/x/text v0.14.0 // indirect golang.org/x/tools v0.18.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240228224816-df926f6c8641 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 // indirect gopkg.in/ini.v1 v1.67.0 // indirect lukechampine.com/blake3 v1.2.1 // indirect ) diff --git a/go.sum b/go.sum index 37980697d..ec48f205d 100644 --- a/go.sum +++ b/go.sum @@ -134,9 +134,8 @@ github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrU github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= -github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk= github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= @@ -146,7 +145,6 @@ github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= @@ -509,8 +507,8 @@ golang.org/x/crypto v0.0.0-20200602180216-279210d13fed/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.20.0 h1:jmAMJJZXr5KiCw05dfYK9QnqaqKLYXijU23lsEdcQqg= -golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ= +golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= +golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 h1:LfspQV/FYTatPTr/3HzIcmiUFH7PGP+OQ6mgDYo3yuQ= golang.org/x/exp v0.0.0-20240222234643-814bf88cf225/go.mod h1:CxmFvTBINI24O/j8iY7H1xHzx2i4OsyguNBmN/uPtqc= @@ -552,8 +550,8 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= -golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc= +golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -603,13 +601,14 @@ golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= +golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= -golang.org/x/term v0.17.0 h1:mkTF7LCd6WGJNL3K1Ad7kwxNfYAW6a8a8QqtMblp/4U= -golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8= +golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= @@ -660,26 +659,24 @@ google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoA google.golang.org/genproto v0.0.0-20181029155118-b69ba1387ce2/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20181202183823-bd91e49a0898/go.mod h1:7Ep/1NZk928CDR8SjdVbjWNpdIf6nzjE3BTgJDr2Atg= google.golang.org/genproto v0.0.0-20190306203927-b5d61aea6440/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto/googleapis/api v0.0.0-20240228224816-df926f6c8641 h1:SO1wX9btGFrwj9EzH3ocqfwiPVOxfv4ggAJajzlHA5s= -google.golang.org/genproto/googleapis/api v0.0.0-20240228224816-df926f6c8641/go.mod h1:wLupoVsUfYPgOMwjzhYFbaVklw/INms+dqTp0tc1fv8= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240228224816-df926f6c8641 h1:DKU1r6Tj5s1vlU/moGhuGz7E3xRfwjdAfDzbsaQJtEY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240228224816-df926f6c8641/go.mod h1:UCOku4NytXMJuLQE5VuqA5lX3PcHCBo8pxNyvkf4xBs= +google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237 h1:RFiFrvy37/mpSpdySBDrUdipW/dHwsRwh3J3+A9VgT4= +google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237/go.mod h1:Z5Iiy3jtmioajWHDGFk7CeugTyHtPvMHA4UTmUkyalE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 h1:NnYq6UN9ReLM9/Y01KWNOWyI5xQ9kbIms5GGJVwS/Yc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.62.0 h1:HQKZ/fa1bXkX1oFOvSjmZEUL8wLSaZTjCcLAlmZRtdk= -google.golang.org/grpc v1.62.0/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE= +google.golang.org/grpc v1.64.0 h1:KH3VH9y/MgNQg1dE7b3XfVK0GsPSIzJwdF617gUSbvY= +google.golang.org/grpc v1.64.0/go.mod h1:oxjF8E3FBnjp+/gVFYdWacaLDx9na1aqy9oovLpxQYg= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I= -google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= +google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= diff --git a/itest/client.go b/itest/client.go index ae31b9f0b..a5f867623 100644 --- a/itest/client.go +++ b/itest/client.go @@ -38,7 +38,7 @@ type Client struct { // GetGRPC return the underlying grpc client func (c *Client) GetGRPC() (rpcpb.ApiServiceClient, error) { c.o.Do(func() { - conn, err := grpc.Dial(c.Addr, grpc.WithTransportCredentials(insecure.NewCredentials())) + conn, err := grpc.NewClient(c.Addr, grpc.WithTransportCredentials(insecure.NewCredentials())) if err != nil { panic(err) } diff --git a/p2p/pb/message.pb.go b/p2p/pb/message.pb.go index ec7a932a3..574dec7cc 100644 --- a/p2p/pb/message.pb.go +++ b/p2p/pb/message.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.31.0 -// protoc v4.24.2 +// protoc-gen-go v1.34.2 +// protoc v3.19.0 // source: p2p/pb/message.proto package p2pb @@ -202,7 +202,7 @@ func file_p2p_pb_message_proto_rawDescGZIP() []byte { } var file_p2p_pb_message_proto_msgTypes = make([]protoimpl.MessageInfo, 3) -var file_p2p_pb_message_proto_goTypes = []interface{}{ +var file_p2p_pb_message_proto_goTypes = []any{ (*RoutingQuery)(nil), // 0: p2pb.RoutingQuery (*PeerInfo)(nil), // 1: p2pb.PeerInfo (*RoutingResponse)(nil), // 2: p2pb.RoutingResponse @@ -222,7 +222,7 @@ func file_p2p_pb_message_proto_init() { return } if !protoimpl.UnsafeEnabled { - file_p2p_pb_message_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_p2p_pb_message_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*RoutingQuery); i { case 0: return &v.state @@ -234,7 +234,7 @@ func file_p2p_pb_message_proto_init() { return nil } } - file_p2p_pb_message_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_p2p_pb_message_proto_msgTypes[1].Exporter = func(v any, i int) any { switch v := v.(*PeerInfo); i { case 0: return &v.state @@ -246,7 +246,7 @@ func file_p2p_pb_message_proto_init() { return nil } } - file_p2p_pb_message_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_p2p_pb_message_proto_msgTypes[2].Exporter = func(v any, i int) any { switch v := v.(*RoutingResponse); i { case 0: return &v.state diff --git a/rpc/api_service.go b/rpc/api_service.go index 43d50586f..fe190b71a 100644 --- a/rpc/api_service.go +++ b/rpc/api_service.go @@ -348,7 +348,9 @@ func (as *APIService) GetAccount(ctx context.Context, req *rpcpb.GetAccountReque frozen := dbVisitor.AllFreezedTokenBalanceDecimal("iost", req.GetName()) unfrozen, stillFrozen := as.getUnfrozenToken(frozen, req.ByLongestChain) ret.FrozenBalances = stillFrozen - ret.Balance = unfrozen.Add(balance).Float64() + tmpBalance := unfrozen.Add(balance) + ret.Balance = tmpBalance.Float64() + ret.BalanceString = strings.TrimRight(strings.TrimRight(tmpBalance.FloatString(), "0"), ".") voteInfo := dbVisitor.GetAccountVoteInfo(req.GetName()) for _, v := range voteInfo { diff --git a/rpc/pb/rpc.pb.go b/rpc/pb/rpc.pb.go index 1b485d283..606f398b2 100644 --- a/rpc/pb/rpc.pb.go +++ b/rpc/pb/rpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.31.0 -// protoc v4.24.2 +// protoc-gen-go v1.34.2 +// protoc v3.19.0 // source: rpc/pb/rpc.proto package rpcpb @@ -2416,18 +2416,20 @@ type Account struct { Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // account balance Balance float64 `protobuf:"fixed64,2,opt,name=balance,proto3" json:"balance,omitempty"` + // string with full precision + BalanceString string `protobuf:"bytes,3,opt,name=balance_string,json=balanceString,proto3" json:"balance_string,omitempty"` // gas information - GasInfo *Account_GasInfo `protobuf:"bytes,3,opt,name=gas_info,json=gasInfo,proto3" json:"gas_info,omitempty"` + GasInfo *Account_GasInfo `protobuf:"bytes,4,opt,name=gas_info,json=gasInfo,proto3" json:"gas_info,omitempty"` // ram information - RamInfo *Account_RAMInfo `protobuf:"bytes,4,opt,name=ram_info,json=ramInfo,proto3" json:"ram_info,omitempty"` + RamInfo *Account_RAMInfo `protobuf:"bytes,5,opt,name=ram_info,json=ramInfo,proto3" json:"ram_info,omitempty"` // account permission - Permissions map[string]*Account_Permission `protobuf:"bytes,5,rep,name=permissions,proto3" json:"permissions,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Permissions map[string]*Account_Permission `protobuf:"bytes,6,rep,name=permissions,proto3" json:"permissions,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // account groups - Groups map[string]*Account_Group `protobuf:"bytes,6,rep,name=groups,proto3" json:"groups,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Groups map[string]*Account_Group `protobuf:"bytes,7,rep,name=groups,proto3" json:"groups,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // frozen balance information - FrozenBalances []*FrozenBalance `protobuf:"bytes,7,rep,name=frozen_balances,json=frozenBalances,proto3" json:"frozen_balances,omitempty"` + FrozenBalances []*FrozenBalance `protobuf:"bytes,8,rep,name=frozen_balances,json=frozenBalances,proto3" json:"frozen_balances,omitempty"` // vote information - VoteInfos []*VoteInfo `protobuf:"bytes,8,rep,name=vote_infos,json=voteInfos,proto3" json:"vote_infos,omitempty"` + VoteInfos []*VoteInfo `protobuf:"bytes,9,rep,name=vote_infos,json=voteInfos,proto3" json:"vote_infos,omitempty"` } func (x *Account) Reset() { @@ -2476,6 +2478,13 @@ func (x *Account) GetBalance() float64 { return 0 } +func (x *Account) GetBalanceString() string { + if x != nil { + return x.BalanceString + } + return "" +} + func (x *Account) GetGasInfo() *Account_GasInfo { if x != nil { return x.GasInfo @@ -5500,546 +5509,548 @@ var file_rpc_pb_rpc_proto_rawDesc = []byte{ 0x73, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x28, 0x0a, 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x6e, 0x5f, 0x67, 0x61, 0x73, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0e, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x6e, 0x47, 0x61, 0x73, 0x52, 0x61, 0x74, 0x69, 0x6f, - 0x22, 0xfd, 0x09, 0x0a, 0x07, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, + 0x22, 0xa4, 0x0a, 0x0a, 0x07, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x01, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x31, 0x0a, 0x08, 0x67, 0x61, - 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x72, - 0x70, 0x63, 0x70, 0x62, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x47, 0x61, 0x73, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x67, 0x61, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x31, 0x0a, - 0x08, 0x72, 0x61, 0x6d, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x16, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e, - 0x52, 0x41, 0x4d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x72, 0x61, 0x6d, 0x49, 0x6e, 0x66, 0x6f, - 0x12, 0x41, 0x0a, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x41, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x32, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x06, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x41, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x3d, 0x0a, 0x0f, 0x66, 0x72, 0x6f, 0x7a, 0x65, - 0x6e, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x14, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x46, 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x42, - 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x0e, 0x66, 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x42, 0x61, - 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x0a, 0x76, 0x6f, 0x74, 0x65, 0x5f, 0x69, - 0x6e, 0x66, 0x6f, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x72, 0x70, 0x63, - 0x70, 0x62, 0x2e, 0x56, 0x6f, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x76, 0x6f, 0x74, - 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x1a, 0x3e, 0x0a, 0x0a, 0x50, 0x6c, 0x65, 0x64, 0x67, 0x65, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x12, 0x16, - 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, - 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0xf3, 0x01, 0x0a, 0x07, 0x47, 0x61, 0x73, 0x49, 0x6e, - 0x66, 0x6f, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x6f, - 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0c, 0x63, 0x75, 0x72, 0x72, 0x65, - 0x6e, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x29, 0x0a, 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x66, 0x65, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x67, 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x01, 0x52, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x47, - 0x61, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x5f, 0x67, 0x61, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x70, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x47, 0x61, - 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x73, 0x70, - 0x65, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0d, 0x69, 0x6e, 0x63, 0x72, 0x65, - 0x61, 0x73, 0x65, 0x53, 0x70, 0x65, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, - 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x3c, - 0x0a, 0x0c, 0x70, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x06, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x41, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x50, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x0b, 0x70, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x51, 0x0a, 0x07, - 0x52, 0x41, 0x4d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x76, 0x61, 0x69, 0x6c, - 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x61, 0x76, 0x61, 0x69, - 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x04, 0x75, 0x73, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, - 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x1a, - 0x6e, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x6b, 0x65, - 0x79, 0x5f, 0x70, 0x61, 0x69, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, - 0x4b, 0x65, 0x79, 0x50, 0x61, 0x69, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, - 0x1e, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x1a, - 0x46, 0x0a, 0x05, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x05, - 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x72, 0x70, - 0x63, 0x70, 0x62, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x49, 0x74, 0x65, 0x6d, - 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x1a, 0x8a, 0x01, 0x0a, 0x0a, 0x50, 0x65, 0x72, 0x6d, - 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x29, 0x0a, 0x05, 0x69, - 0x74, 0x65, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x72, 0x70, 0x63, - 0x70, 0x62, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, - 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, - 0x6f, 0x6c, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, - 0x68, 0x6f, 0x6c, 0x64, 0x1a, 0x59, 0x0a, 0x10, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 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, 0x2f, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x72, 0x70, 0x63, 0x70, - 0x62, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, - 0x4f, 0x0a, 0x0b, 0x47, 0x72, 0x6f, 0x75, 0x70, 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, 0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x14, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x22, 0x51, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x62, 0x79, 0x5f, - 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0e, 0x62, 0x79, 0x4c, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x43, 0x68, - 0x61, 0x69, 0x6e, 0x22, 0x90, 0x02, 0x0a, 0x08, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, - 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x63, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, - 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x72, - 0x69, 0x67, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, - 0x72, 0x69, 0x67, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x27, 0x0a, 0x04, 0x61, 0x62, 0x69, 0x73, 0x18, - 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x43, 0x6f, - 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, 0x41, 0x42, 0x49, 0x52, 0x04, 0x61, 0x62, 0x69, 0x73, - 0x1a, 0x64, 0x0a, 0x03, 0x41, 0x42, 0x49, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x61, - 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, - 0x35, 0x0a, 0x0c, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x41, 0x6d, - 0x6f, 0x75, 0x6e, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x0b, 0x61, 0x6d, 0x6f, 0x75, 0x6e, - 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x3e, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, - 0x63, 0x74, 0x56, 0x6f, 0x74, 0x65, 0x12, 0x2e, 0x0a, 0x0a, 0x76, 0x6f, 0x74, 0x65, 0x5f, 0x69, - 0x6e, 0x66, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x72, 0x70, 0x63, - 0x70, 0x62, 0x2e, 0x56, 0x6f, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x76, 0x6f, 0x74, - 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x22, 0x4e, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, - 0x74, 0x72, 0x61, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x28, 0x0a, 0x10, - 0x62, 0x79, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x62, 0x79, 0x4c, 0x6f, 0x6e, 0x67, 0x65, 0x73, - 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x22, 0x7d, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, + 0x01, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x62, 0x61, + 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0d, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x12, 0x31, 0x0a, 0x08, 0x67, 0x61, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x2e, 0x47, 0x61, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x67, 0x61, 0x73, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x31, 0x0a, 0x08, 0x72, 0x61, 0x6d, 0x5f, 0x69, 0x6e, 0x66, 0x6f, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x52, 0x41, 0x4d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, + 0x72, 0x61, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x41, 0x0a, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, + 0x70, 0x63, 0x70, 0x62, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x50, 0x65, 0x72, + 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x70, + 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x32, 0x0a, 0x06, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x72, 0x70, 0x63, + 0x70, 0x62, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x3d, + 0x0a, 0x0f, 0x66, 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, + 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, + 0x46, 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x0e, 0x66, + 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x2e, 0x0a, + 0x0a, 0x76, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x0f, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x56, 0x6f, 0x74, 0x65, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x09, 0x76, 0x6f, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x1a, 0x3e, 0x0a, + 0x0a, 0x50, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x70, + 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6c, + 0x65, 0x64, 0x67, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0xf3, 0x01, + 0x0a, 0x07, 0x47, 0x61, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, + 0x52, 0x0c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x29, + 0x0a, 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x67, + 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x65, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x61, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x6c, 0x65, + 0x64, 0x67, 0x65, 0x5f, 0x67, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x70, + 0x6c, 0x65, 0x64, 0x67, 0x65, 0x47, 0x61, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x6e, 0x63, 0x72, + 0x65, 0x61, 0x73, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, + 0x52, 0x0d, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x61, 0x73, 0x65, 0x53, 0x70, 0x65, 0x65, 0x64, 0x12, + 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x3c, 0x0a, 0x0c, 0x70, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x64, + 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x72, 0x70, + 0x63, 0x70, 0x62, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x50, 0x6c, 0x65, 0x64, + 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x70, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x64, 0x49, + 0x6e, 0x66, 0x6f, 0x1a, 0x51, 0x0a, 0x07, 0x52, 0x41, 0x4d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, + 0x0a, 0x09, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x09, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x75, 0x73, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x75, 0x73, 0x65, 0x64, + 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x1a, 0x6e, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1e, + 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x70, 0x61, 0x69, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x4b, 0x65, 0x79, 0x50, 0x61, 0x69, 0x72, 0x12, 0x16, + 0x0a, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, + 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x6d, + 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x46, 0x0a, 0x05, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x1a, 0x8a, + 0x01, 0x0a, 0x0a, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, + 0x65, 0x73, 0x12, 0x29, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x13, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x1c, 0x0a, + 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x1a, 0x59, 0x0a, 0x10, 0x50, + 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 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, 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x4f, 0x0a, 0x0b, 0x47, 0x72, 0x6f, 0x75, 0x70, 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, 0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x51, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x41, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x28, 0x0a, 0x10, 0x62, 0x79, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x63, + 0x68, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x62, 0x79, 0x4c, 0x6f, + 0x6e, 0x67, 0x65, 0x73, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x22, 0x90, 0x02, 0x0a, 0x08, 0x43, + 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6c, + 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, + 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x72, 0x69, 0x67, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x72, 0x69, 0x67, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x27, + 0x0a, 0x04, 0x61, 0x62, 0x69, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x72, + 0x70, 0x63, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, 0x41, 0x42, + 0x49, 0x52, 0x04, 0x61, 0x62, 0x69, 0x73, 0x1a, 0x64, 0x0a, 0x03, 0x41, 0x42, 0x49, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x35, 0x0a, 0x0c, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, + 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x72, + 0x70, 0x63, 0x70, 0x62, 0x2e, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, + 0x52, 0x0b, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x3e, 0x0a, + 0x0c, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x56, 0x6f, 0x74, 0x65, 0x12, 0x2e, 0x0a, + 0x0a, 0x76, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x0f, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x56, 0x6f, 0x74, 0x65, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x09, 0x76, 0x6f, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x22, 0x4e, 0x0a, + 0x12, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x62, 0x79, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x73, + 0x74, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x62, + 0x79, 0x4c, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x22, 0x7d, 0x0a, + 0x19, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x62, 0x79, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, + 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x62, 0x79, + 0x4c, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x22, 0x72, 0x0a, 0x1a, + 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1d, + 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x21, 0x0a, + 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x22, 0xdd, 0x01, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x62, - 0x79, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x62, 0x79, 0x4c, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, - 0x43, 0x68, 0x61, 0x69, 0x6e, 0x22, 0x72, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, + 0x02, 0x69, 0x64, 0x12, 0x4d, 0x0a, 0x0a, 0x6b, 0x65, 0x79, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, + 0x47, 0x65, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, + 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4b, + 0x65, 0x79, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x09, 0x6b, 0x65, 0x79, 0x46, 0x69, 0x65, 0x6c, + 0x64, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x62, 0x79, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, + 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x62, 0x79, + 0x4c, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x1a, 0x32, 0x0a, 0x08, + 0x4b, 0x65, 0x79, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x22, 0x79, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, - 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0xdd, 0x01, 0x0a, 0x1e, 0x47, 0x65, - 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x53, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x4d, 0x0a, 0x0a, - 0x6b, 0x65, 0x79, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x2e, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x74, 0x63, - 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4b, 0x65, 0x79, 0x46, 0x69, 0x65, 0x6c, 0x64, - 0x52, 0x09, 0x6b, 0x65, 0x79, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x62, - 0x79, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x62, 0x79, 0x4c, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, - 0x43, 0x68, 0x61, 0x69, 0x6e, 0x1a, 0x32, 0x0a, 0x08, 0x4b, 0x65, 0x79, 0x46, 0x69, 0x65, 0x6c, - 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x22, 0x79, 0x0a, 0x1f, 0x47, 0x65, 0x74, - 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x53, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, - 0x64, 0x61, 0x74, 0x61, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x64, 0x61, 0x74, - 0x61, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, - 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x22, 0x6d, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, - 0x61, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, + 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x61, 0x74, 0x61, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x05, 0x64, 0x61, 0x74, 0x61, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, + 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, + 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x6d, 0x0a, 0x1f, 0x47, + 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, + 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x28, 0x0a, 0x10, 0x62, 0x79, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x63, + 0x68, 0x61, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x62, 0x79, 0x4c, 0x6f, + 0x6e, 0x67, 0x65, 0x73, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x22, 0x7c, 0x0a, 0x20, 0x47, 0x65, + 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, + 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, + 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x62, 0x6c, 0x6f, + 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x99, 0x02, 0x0a, 0x1a, 0x4c, 0x69, 0x73, + 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x28, 0x0a, 0x10, 0x62, 0x79, 0x5f, - 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0e, 0x62, 0x79, 0x4c, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x43, 0x68, - 0x61, 0x69, 0x6e, 0x22, 0x7c, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, - 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, - 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x21, - 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x22, 0x99, 0x02, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, - 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, - 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x02, 0x74, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x4f, 0x0a, 0x0b, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x2d, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, - 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, - 0x52, 0x0b, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, - 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6c, 0x69, - 0x6d, 0x69, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x62, 0x79, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x73, - 0x74, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x62, - 0x79, 0x4c, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x22, 0x1e, 0x0a, - 0x0b, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x06, 0x0a, 0x02, - 0x4b, 0x56, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x4d, 0x41, 0x50, 0x10, 0x01, 0x22, 0xce, 0x01, - 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x53, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, - 0x05, 0x64, 0x61, 0x74, 0x61, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x72, - 0x70, 0x63, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, - 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x64, 0x61, 0x74, 0x61, 0x73, 0x12, 0x1d, 0x0a, 0x0a, - 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x1a, 0x2e, - 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x65, - 0x0a, 0x17, 0x53, 0x65, 0x6e, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, - 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x36, 0x0a, - 0x0e, 0x70, 0x72, 0x65, 0x5f, 0x74, 0x78, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x54, 0x78, - 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x52, 0x0c, 0x70, 0x72, 0x65, 0x54, 0x78, 0x52, 0x65, - 0x63, 0x65, 0x69, 0x70, 0x74, 0x22, 0x72, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x18, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x01, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x3d, 0x0a, 0x0f, 0x66, 0x72, - 0x6f, 0x7a, 0x65, 0x6e, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x46, 0x72, 0x6f, 0x7a, - 0x65, 0x6e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x0e, 0x66, 0x72, 0x6f, 0x7a, 0x65, - 0x6e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x22, 0x72, 0x0a, 0x16, 0x47, 0x65, 0x74, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, - 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x12, 0x28, 0x0a, 0x10, 0x62, 0x79, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x73, + 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x74, + 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x74, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x70, + 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x72, 0x65, + 0x66, 0x69, 0x78, 0x12, 0x4f, 0x0a, 0x0b, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x53, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x62, 0x79, + 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x62, 0x79, 0x4c, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x43, + 0x68, 0x61, 0x69, 0x6e, 0x22, 0x1e, 0x0a, 0x0b, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x06, 0x0a, 0x02, 0x4b, 0x56, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x4d, + 0x41, 0x50, 0x10, 0x01, 0x22, 0xce, 0x01, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, + 0x74, 0x72, 0x61, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x05, 0x64, 0x61, 0x74, 0x61, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x64, 0x61, + 0x74, 0x61, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, + 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, + 0x73, 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x1a, 0x2e, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x65, 0x0a, 0x17, 0x53, 0x65, 0x6e, 0x64, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x68, 0x61, 0x73, 0x68, 0x12, 0x36, 0x0a, 0x0e, 0x70, 0x72, 0x65, 0x5f, 0x74, 0x78, 0x5f, 0x72, + 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x72, + 0x70, 0x63, 0x70, 0x62, 0x2e, 0x54, 0x78, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x52, 0x0c, + 0x70, 0x72, 0x65, 0x54, 0x78, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x22, 0x72, 0x0a, 0x17, + 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, + 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, + 0x65, 0x12, 0x3d, 0x0a, 0x0f, 0x66, 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x5f, 0x62, 0x61, 0x6c, 0x61, + 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x72, 0x70, 0x63, + 0x70, 0x62, 0x2e, 0x46, 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, + 0x52, 0x0e, 0x66, 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, + 0x22, 0x72, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x61, 0x6c, 0x61, + 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x28, 0x0a, 0x10, 0x62, 0x79, + 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x62, 0x79, 0x4c, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x43, + 0x68, 0x61, 0x69, 0x6e, 0x22, 0x52, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x37, 0x32, 0x31, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x44, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x44, 0x73, 0x22, 0x73, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x37, 0x32, 0x31, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x62, 0x79, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x62, - 0x79, 0x4c, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x22, 0x52, 0x0a, - 0x1a, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x37, 0x32, 0x31, 0x42, 0x61, 0x6c, 0x61, - 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x62, - 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x62, 0x61, - 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x44, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x44, - 0x73, 0x22, 0x73, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x37, 0x32, 0x31, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x10, - 0x62, 0x79, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x62, 0x79, 0x4c, 0x6f, 0x6e, 0x67, 0x65, 0x73, - 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x22, 0x39, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x37, 0x32, 0x31, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x22, 0x30, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x37, 0x32, 0x31, - 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, - 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x77, - 0x6e, 0x65, 0x72, 0x22, 0x8c, 0x01, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x28, 0x0a, - 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x72, - 0x70, 0x63, 0x70, 0x62, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x6f, 0x70, 0x69, 0x63, - 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x74, - 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, - 0x31, 0x0a, 0x05, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x4f, 0x4e, 0x54, - 0x52, 0x41, 0x43, 0x54, 0x5f, 0x52, 0x45, 0x43, 0x45, 0x49, 0x50, 0x54, 0x10, 0x00, 0x12, 0x12, - 0x0a, 0x0e, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x41, 0x43, 0x54, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, - 0x10, 0x01, 0x22, 0xa1, 0x01, 0x0a, 0x10, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x06, 0x74, 0x6f, 0x70, 0x69, 0x63, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x52, 0x06, 0x74, 0x6f, 0x70, - 0x69, 0x63, 0x73, 0x12, 0x36, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x53, 0x75, 0x62, 0x73, - 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x29, 0x0a, 0x06, 0x46, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, - 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x61, 0x63, 0x74, 0x49, 0x64, 0x22, 0x37, 0x0a, 0x11, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, - 0x69, 0x62, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x22, 0x0a, 0x05, 0x65, - 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x72, 0x70, 0x63, - 0x70, 0x62, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, - 0x94, 0x01, 0x0a, 0x0a, 0x56, 0x6f, 0x74, 0x65, 0x72, 0x42, 0x6f, 0x6e, 0x75, 0x73, 0x12, 0x14, - 0x0a, 0x05, 0x62, 0x6f, 0x6e, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x62, - 0x6f, 0x6e, 0x75, 0x73, 0x12, 0x35, 0x0a, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x56, 0x6f, 0x74, - 0x65, 0x72, 0x42, 0x6f, 0x6e, 0x75, 0x73, 0x2e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x1a, 0x39, 0x0a, 0x0b, 0x44, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x26, 0x0a, 0x0e, 0x43, 0x61, 0x6e, 0x64, 0x69, 0x64, - 0x61, 0x74, 0x65, 0x42, 0x6f, 0x6e, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x6f, 0x6e, 0x75, - 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x62, 0x6f, 0x6e, 0x75, 0x73, 0x22, 0x57, - 0x0a, 0x13, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x28, 0x0a, - 0x10, 0x62, 0x79, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x69, - 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x62, 0x79, 0x4c, 0x6f, 0x6e, 0x67, 0x65, - 0x73, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x22, 0xf8, 0x02, 0x0a, 0x09, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x1b, 0x0a, - 0x09, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x66, 0x75, 0x6c, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, - 0x73, 0x75, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x73, 0x73, 0x75, - 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x75, 0x70, 0x70, - 0x6c, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, - 0x75, 0x70, 0x70, 0x6c, 0x79, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, - 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x63, - 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x12, 0x18, 0x0a, 0x07, - 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x64, - 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x61, 0x6e, 0x5f, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x63, 0x61, - 0x6e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x37, 0x0a, 0x18, 0x6f, 0x6e, 0x6c, - 0x79, 0x5f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x5f, 0x63, 0x61, 0x6e, 0x5f, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x66, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x6f, 0x6e, 0x6c, - 0x79, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x43, 0x61, 0x6e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, - 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x12, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x75, 0x70, 0x70, - 0x6c, 0x79, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, - 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x46, 0x6c, 0x6f, 0x61, 0x74, - 0x12, 0x30, 0x0a, 0x14, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x75, 0x70, 0x70, - 0x6c, 0x79, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x01, 0x52, 0x12, - 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x46, 0x6c, 0x6f, - 0x61, 0x74, 0x22, 0x95, 0x01, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, - 0x78, 0x73, 0x42, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x72, 0x6f, 0x6d, 0x42, 0x6c, 0x6f, - 0x63, 0x6b, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x74, 0x6f, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x1a, 0x0a, - 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x8f, 0x01, 0x0a, 0x08, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x78, 0x73, 0x12, 0x33, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, - 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x21, 0x0a, 0x0c, - 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, - 0x2b, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x12, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x74, 0x78, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x50, 0x0a, 0x1a, - 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x78, 0x73, 0x42, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, - 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x0c, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x74, 0x78, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x0f, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x78, - 0x73, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x74, 0x78, 0x4c, 0x69, 0x73, 0x74, 0x32, 0xde, - 0x1a, 0x0a, 0x0a, 0x41, 0x70, 0x69, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x51, 0x0a, - 0x0b, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x13, 0x2e, 0x72, - 0x70, 0x63, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x17, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, - 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x14, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x0e, 0x12, 0x0c, 0x2f, 0x67, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, - 0x12, 0x54, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, - 0x12, 0x13, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x43, 0x68, - 0x61, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x15, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0f, 0x12, 0x0d, 0x2f, 0x67, 0x65, 0x74, 0x43, 0x68, 0x61, - 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x4e, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x52, 0x41, 0x4d, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x13, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, - 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x72, 0x70, 0x63, 0x70, - 0x62, 0x2e, 0x52, 0x41, 0x4d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x13, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0d, 0x12, 0x0b, 0x2f, 0x67, 0x65, 0x74, 0x52, - 0x41, 0x4d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x5c, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x54, 0x78, 0x42, - 0x79, 0x48, 0x61, 0x73, 0x68, 0x12, 0x14, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x54, 0x78, - 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x72, 0x70, - 0x63, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, - 0x13, 0x2f, 0x67, 0x65, 0x74, 0x54, 0x78, 0x42, 0x79, 0x48, 0x61, 0x73, 0x68, 0x2f, 0x7b, 0x68, - 0x61, 0x73, 0x68, 0x7d, 0x12, 0x64, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x54, 0x78, 0x52, 0x65, 0x63, - 0x65, 0x69, 0x70, 0x74, 0x42, 0x79, 0x54, 0x78, 0x48, 0x61, 0x73, 0x68, 0x12, 0x14, 0x2e, 0x72, + 0x79, 0x4c, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x22, 0x39, 0x0a, + 0x1b, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x37, 0x32, 0x31, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x30, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x37, 0x32, 0x31, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x22, 0x8c, 0x01, 0x0a, 0x05, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x2e, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x12, + 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x31, 0x0a, 0x05, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x12, + 0x14, 0x0a, 0x10, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x41, 0x43, 0x54, 0x5f, 0x52, 0x45, 0x43, 0x45, + 0x49, 0x50, 0x54, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x41, 0x43, + 0x54, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x10, 0x01, 0x22, 0xa1, 0x01, 0x0a, 0x10, 0x53, 0x75, + 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, + 0x0a, 0x06, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x12, + 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x6f, 0x70, + 0x69, 0x63, 0x52, 0x06, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x12, 0x36, 0x0a, 0x06, 0x66, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x72, 0x70, 0x63, + 0x70, 0x62, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x1a, 0x29, 0x0a, 0x06, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x49, 0x64, 0x22, 0x37, 0x0a, + 0x11, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x22, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0c, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, + 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x94, 0x01, 0x0a, 0x0a, 0x56, 0x6f, 0x74, 0x65, 0x72, + 0x42, 0x6f, 0x6e, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x6f, 0x6e, 0x75, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x62, 0x6f, 0x6e, 0x75, 0x73, 0x12, 0x35, 0x0a, 0x06, 0x64, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x72, 0x70, + 0x63, 0x70, 0x62, 0x2e, 0x56, 0x6f, 0x74, 0x65, 0x72, 0x42, 0x6f, 0x6e, 0x75, 0x73, 0x2e, 0x44, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x64, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x1a, 0x39, 0x0a, 0x0b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x26, 0x0a, + 0x0e, 0x43, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x6e, 0x75, 0x73, 0x12, + 0x14, 0x0a, 0x05, 0x62, 0x6f, 0x6e, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, + 0x62, 0x6f, 0x6e, 0x75, 0x73, 0x22, 0x57, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, + 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, + 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x28, 0x0a, 0x10, 0x62, 0x79, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x65, + 0x73, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, + 0x62, 0x79, 0x4c, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x22, 0xf8, + 0x02, 0x0a, 0x09, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, + 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, + 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x75, 0x6c, 0x6c, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x6f, 0x74, + 0x61, 0x6c, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x12, 0x25, 0x0a, 0x0e, + 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x53, 0x75, 0x70, + 0x70, 0x6c, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x12, 0x21, 0x0a, + 0x0c, 0x63, 0x61, 0x6e, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0b, 0x63, 0x61, 0x6e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, + 0x12, 0x37, 0x0a, 0x18, 0x6f, 0x6e, 0x6c, 0x79, 0x5f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x5f, + 0x63, 0x61, 0x6e, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x15, 0x6f, 0x6e, 0x6c, 0x79, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x43, 0x61, + 0x6e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x12, 0x74, 0x6f, 0x74, + 0x61, 0x6c, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x75, 0x70, 0x70, + 0x6c, 0x79, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x30, 0x0a, 0x14, 0x63, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x74, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x01, 0x52, 0x12, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x53, 0x75, + 0x70, 0x70, 0x6c, 0x79, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x22, 0x95, 0x01, 0x0a, 0x1c, 0x47, 0x65, + 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x78, 0x73, 0x42, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x61, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x72, + 0x6f, 0x6d, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, + 0x66, 0x72, 0x6f, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x5f, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x74, 0x6f, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, + 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, + 0x65, 0x22, 0x8f, 0x01, 0x0a, 0x08, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x78, 0x73, 0x12, 0x33, + 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, + 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2b, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x6c, 0x69, 0x73, + 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x74, 0x78, 0x4c, + 0x69, 0x73, 0x74, 0x22, 0x50, 0x0a, 0x1a, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x78, 0x73, 0x42, + 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x32, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x74, 0x78, 0x5f, 0x6c, 0x69, 0x73, + 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x78, 0x73, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x74, + 0x78, 0x4c, 0x69, 0x73, 0x74, 0x32, 0xde, 0x1a, 0x0a, 0x0a, 0x41, 0x70, 0x69, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x12, 0x51, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x49, + 0x6e, 0x66, 0x6f, 0x12, 0x13, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, + 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x14, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0e, 0x12, 0x0c, 0x2f, 0x67, 0x65, 0x74, 0x4e, + 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x54, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x43, 0x68, + 0x61, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x13, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x72, + 0x70, 0x63, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x15, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0f, 0x12, 0x0d, + 0x2f, 0x67, 0x65, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x4e, 0x0a, + 0x0a, 0x47, 0x65, 0x74, 0x52, 0x41, 0x4d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x13, 0x2e, 0x72, 0x70, + 0x63, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x16, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x52, 0x41, 0x4d, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x13, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0d, + 0x12, 0x0b, 0x2f, 0x67, 0x65, 0x74, 0x52, 0x41, 0x4d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x5c, 0x0a, + 0x0b, 0x47, 0x65, 0x74, 0x54, 0x78, 0x42, 0x79, 0x48, 0x61, 0x73, 0x68, 0x12, 0x14, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x54, 0x78, 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x54, 0x78, 0x52, 0x65, 0x63, - 0x65, 0x69, 0x70, 0x74, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x12, 0x1c, 0x2f, 0x67, + 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x67, 0x65, 0x74, 0x54, 0x78, 0x42, 0x79, + 0x48, 0x61, 0x73, 0x68, 0x2f, 0x7b, 0x68, 0x61, 0x73, 0x68, 0x7d, 0x12, 0x64, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x54, 0x78, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x42, 0x79, 0x54, 0x78, 0x48, - 0x61, 0x73, 0x68, 0x2f, 0x7b, 0x68, 0x61, 0x73, 0x68, 0x7d, 0x12, 0x6f, 0x0a, 0x0e, 0x47, 0x65, - 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x79, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1c, 0x2e, 0x72, - 0x70, 0x63, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x79, 0x48, - 0x61, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x72, 0x70, 0x63, - 0x70, 0x62, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x12, 0x21, 0x2f, 0x67, 0x65, 0x74, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x42, 0x79, 0x48, 0x61, 0x73, 0x68, 0x2f, 0x7b, 0x68, 0x61, 0x73, 0x68, 0x7d, - 0x2f, 0x7b, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x7d, 0x12, 0x77, 0x0a, 0x10, 0x47, - 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x79, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, - 0x1e, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x42, 0x79, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x14, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x12, 0x25, 0x2f, - 0x67, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x79, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, - 0x2f, 0x7b, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d, 0x2f, 0x7b, 0x63, 0x6f, 0x6d, 0x70, 0x6c, - 0x65, 0x74, 0x65, 0x7d, 0x12, 0x80, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x52, 0x61, 0x77, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x79, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1e, 0x2e, 0x72, - 0x70, 0x63, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x79, 0x4e, - 0x75, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x72, - 0x70, 0x63, 0x70, 0x62, 0x2e, 0x52, 0x61, 0x77, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, - 0x67, 0x65, 0x74, 0x52, 0x61, 0x77, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x79, 0x4e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x2f, 0x7b, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d, 0x2f, 0x7b, 0x63, 0x6f, - 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x7d, 0x12, 0x82, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x42, 0x79, 0x52, 0x61, 0x6e, 0x67, - 0x65, 0x12, 0x23, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, - 0x63, 0x6b, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x42, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x42, 0x79, 0x52, 0x61, 0x6e, 0x67, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x1b, 0x3a, 0x01, 0x2a, 0x22, 0x16, 0x2f, 0x67, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x42, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x65, 0x0a, 0x0a, - 0x47, 0x65, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x18, 0x2e, 0x72, 0x70, 0x63, - 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x41, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x12, 0x25, 0x2f, 0x67, - 0x65, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, - 0x2f, 0x7b, 0x62, 0x79, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x61, - 0x69, 0x6e, 0x7d, 0x12, 0x8f, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1d, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, - 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x47, - 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x37, 0x12, 0x35, - 0x2f, 0x67, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, - 0x2f, 0x7b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x7d, 0x2f, 0x7b, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x7d, 0x2f, 0x7b, 0x62, 0x79, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x63, - 0x68, 0x61, 0x69, 0x6e, 0x7d, 0x12, 0x98, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x37, 0x32, 0x31, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1d, 0x2e, 0x72, - 0x70, 0x63, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x61, 0x6c, - 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x72, 0x70, - 0x63, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x37, 0x32, 0x31, 0x42, - 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x40, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3a, 0x12, 0x38, 0x2f, 0x67, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x37, 0x32, 0x31, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x2f, 0x7b, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x7d, 0x2f, 0x7b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x7d, 0x2f, 0x7b, 0x62, - 0x79, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x7d, - 0x12, 0x9c, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x37, 0x32, 0x31, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1d, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, - 0x2e, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x37, 0x32, 0x31, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, - 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x37, 0x32, 0x31, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x42, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x3c, 0x12, 0x3a, 0x2f, 0x67, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x37, 0x32, - 0x31, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x7b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x7d, 0x2f, 0x7b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x62, 0x79, - 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x7d, 0x12, - 0x93, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x37, 0x32, 0x31, 0x4f, - 0x77, 0x6e, 0x65, 0x72, 0x12, 0x1d, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x37, 0x32, 0x31, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x37, 0x32, 0x31, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x39, 0x12, 0x37, 0x2f, 0x67, - 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x37, 0x32, 0x31, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x2f, - 0x7b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x7d, 0x2f, 0x7b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x69, - 0x64, 0x7d, 0x2f, 0x7b, 0x62, 0x79, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x63, - 0x68, 0x61, 0x69, 0x6e, 0x7d, 0x12, 0x51, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x47, 0x61, 0x73, 0x52, - 0x61, 0x74, 0x69, 0x6f, 0x12, 0x13, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, - 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x72, 0x70, 0x63, 0x70, - 0x62, 0x2e, 0x47, 0x61, 0x73, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x14, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0e, 0x12, 0x0c, 0x2f, 0x67, 0x65, 0x74, - 0x47, 0x61, 0x73, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x97, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, - 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x72, 0x56, 0x6f, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, - 0x12, 0x21, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, - 0x75, 0x63, 0x65, 0x72, 0x56, 0x6f, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x50, - 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x72, 0x56, 0x6f, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x39, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x12, - 0x31, 0x2f, 0x67, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x72, 0x56, 0x6f, 0x74, - 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2f, 0x7b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x7d, 0x2f, + 0x61, 0x73, 0x68, 0x12, 0x14, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x54, 0x78, 0x48, 0x61, + 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x72, 0x70, 0x63, 0x70, + 0x62, 0x2e, 0x54, 0x78, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x22, 0x24, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x1e, 0x12, 0x1c, 0x2f, 0x67, 0x65, 0x74, 0x54, 0x78, 0x52, 0x65, 0x63, 0x65, 0x69, + 0x70, 0x74, 0x42, 0x79, 0x54, 0x78, 0x48, 0x61, 0x73, 0x68, 0x2f, 0x7b, 0x68, 0x61, 0x73, 0x68, + 0x7d, 0x12, 0x6f, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x79, 0x48, + 0x61, 0x73, 0x68, 0x12, 0x1c, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x79, 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x14, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x12, + 0x21, 0x2f, 0x67, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x79, 0x48, 0x61, 0x73, 0x68, + 0x2f, 0x7b, 0x68, 0x61, 0x73, 0x68, 0x7d, 0x2f, 0x7b, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, + 0x65, 0x7d, 0x12, 0x77, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x79, + 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1e, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x47, + 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x79, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2d, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x27, 0x12, 0x25, 0x2f, 0x67, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, + 0x79, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x2f, 0x7b, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d, + 0x2f, 0x7b, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x7d, 0x12, 0x80, 0x01, 0x0a, 0x13, + 0x47, 0x65, 0x74, 0x52, 0x61, 0x77, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x79, 0x4e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x12, 0x1e, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x79, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x52, 0x61, 0x77, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x67, 0x65, 0x74, 0x52, 0x61, 0x77, 0x42, 0x6c, 0x6f, + 0x63, 0x6b, 0x42, 0x79, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x2f, 0x7b, 0x6e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x7d, 0x2f, 0x7b, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x7d, 0x12, 0x82, + 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x42, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x23, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, + 0x2e, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x42, + 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, + 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x42, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x3a, 0x01, 0x2a, 0x22, 0x16, 0x2f, 0x67, 0x65, + 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x42, 0x79, 0x52, 0x61, + 0x6e, 0x67, 0x65, 0x12, 0x65, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x18, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x72, 0x70, + 0x63, 0x70, 0x62, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x2d, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x27, 0x12, 0x25, 0x2f, 0x67, 0x65, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x62, 0x79, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, + 0x65, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x7d, 0x12, 0x8f, 0x01, 0x0a, 0x0f, 0x47, + 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1d, + 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x42, + 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, + 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x61, + 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3d, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x37, 0x12, 0x35, 0x2f, 0x67, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x2f, 0x7b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x7d, 0x2f, 0x7b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x7d, 0x2f, 0x7b, 0x62, 0x79, 0x5f, 0x6c, 0x6f, + 0x6e, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x7d, 0x12, 0x98, 0x01, 0x0a, + 0x12, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x37, 0x32, 0x31, 0x42, 0x61, 0x6c, 0x61, + 0x6e, 0x63, 0x65, 0x12, 0x1d, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x37, 0x32, 0x31, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x40, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3a, 0x12, 0x38, 0x2f, + 0x67, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x37, 0x32, 0x31, 0x42, 0x61, 0x6c, 0x61, 0x6e, + 0x63, 0x65, 0x2f, 0x7b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x7d, 0x2f, 0x7b, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x7d, 0x2f, 0x7b, 0x62, 0x79, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, + 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x7d, 0x12, 0x9c, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x37, 0x32, 0x31, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, + 0x1d, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x37, 0x32, 0x31, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, + 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x37, + 0x32, 0x31, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x42, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x12, 0x3a, 0x2f, 0x67, 0x65, 0x74, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x37, 0x32, 0x31, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x2f, 0x7b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x7d, 0x2f, 0x7b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x62, 0x79, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x5f, + 0x63, 0x68, 0x61, 0x69, 0x6e, 0x7d, 0x12, 0x93, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x37, 0x32, 0x31, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x1d, 0x2e, 0x72, 0x70, + 0x63, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x37, 0x32, 0x31, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x72, 0x70, 0x63, + 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x37, 0x32, 0x31, 0x4f, 0x77, + 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3f, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x39, 0x12, 0x37, 0x2f, 0x67, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x37, 0x32, + 0x31, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x2f, 0x7b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x7d, 0x2f, 0x7b, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x62, 0x79, 0x5f, 0x6c, 0x6f, + 0x6e, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x7d, 0x12, 0x51, 0x0a, 0x0b, + 0x47, 0x65, 0x74, 0x47, 0x61, 0x73, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x13, 0x2e, 0x72, 0x70, + 0x63, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x17, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x47, 0x61, 0x73, 0x52, 0x61, 0x74, 0x69, + 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x14, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x0e, 0x12, 0x0c, 0x2f, 0x67, 0x65, 0x74, 0x47, 0x61, 0x73, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, + 0x97, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x72, 0x56, + 0x6f, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x21, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, + 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x72, 0x56, 0x6f, 0x74, 0x65, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x72, 0x70, 0x63, + 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x72, 0x56, 0x6f, + 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x39, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x12, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, + 0x75, 0x63, 0x65, 0x72, 0x56, 0x6f, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2f, 0x7b, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x7d, 0x2f, 0x7b, 0x62, 0x79, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x65, + 0x73, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x7d, 0x12, 0x67, 0x0a, 0x0b, 0x47, 0x65, 0x74, + 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x19, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, + 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x74, + 0x72, 0x61, 0x63, 0x74, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x12, 0x24, 0x2f, 0x67, + 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x62, 0x79, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x69, - 0x6e, 0x7d, 0x12, 0x67, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, - 0x74, 0x12, 0x19, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, - 0x74, 0x72, 0x61, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x72, - 0x70, 0x63, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x22, 0x2c, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x12, 0x24, 0x2f, 0x67, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, - 0x61, 0x63, 0x74, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x62, 0x79, 0x5f, 0x6c, 0x6f, 0x6e, - 0x67, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x7d, 0x12, 0x73, 0x0a, 0x0f, 0x47, - 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x56, 0x6f, 0x74, 0x65, 0x12, 0x19, - 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, - 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x72, 0x70, 0x63, 0x70, - 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x56, 0x6f, 0x74, 0x65, 0x22, 0x30, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x67, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, - 0x72, 0x61, 0x63, 0x74, 0x56, 0x6f, 0x74, 0x65, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x62, - 0x79, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x7d, - 0x12, 0x79, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x53, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0x20, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x47, - 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, - 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x18, 0x3a, 0x01, 0x2a, 0x22, 0x13, 0x2f, 0x67, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, - 0x72, 0x61, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0x8d, 0x01, 0x0a, 0x17, - 0x47, 0x65, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, - 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0x25, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, - 0x47, 0x65, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, - 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, + 0x6e, 0x7d, 0x12, 0x73, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, + 0x74, 0x56, 0x6f, 0x74, 0x65, 0x12, 0x19, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x47, 0x65, + 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x13, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, + 0x74, 0x56, 0x6f, 0x74, 0x65, 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, + 0x67, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x56, 0x6f, 0x74, 0x65, 0x2f, + 0x7b, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x62, 0x79, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, + 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x7d, 0x12, 0x79, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0x20, 0x2e, + 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, + 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x21, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x61, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x3a, 0x01, 0x2a, 0x22, 0x13, 0x2f, + 0x67, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x12, 0x8d, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, + 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0x25, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x3a, 0x01, - 0x2a, 0x22, 0x18, 0x2f, 0x67, 0x65, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x74, - 0x72, 0x61, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0x7d, 0x0a, 0x13, 0x4c, - 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x12, 0x21, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, - 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x4c, 0x69, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x47, 0x65, + 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x53, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x3a, 0x01, 0x2a, 0x22, 0x18, 0x2f, 0x67, 0x65, 0x74, 0x42, 0x61, + 0x74, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x12, 0x7d, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, + 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0x21, 0x2e, 0x72, 0x70, 0x63, 0x70, + 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x53, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x72, + 0x70, 0x63, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, + 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x3a, 0x01, 0x2a, 0x22, 0x14, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x19, 0x3a, 0x01, 0x2a, 0x22, 0x14, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, - 0x61, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0x91, 0x01, 0x0a, 0x18, 0x47, + 0x65, 0x12, 0x91, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, + 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x26, + 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, + 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x26, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, - 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x27, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, - 0x61, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, - 0x3a, 0x01, 0x2a, 0x22, 0x19, 0x2f, 0x67, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, - 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x60, - 0x0a, 0x0f, 0x53, 0x65, 0x6e, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x19, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x72, - 0x70, 0x63, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x12, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x0c, 0x3a, 0x01, 0x2a, 0x22, 0x07, 0x2f, 0x73, 0x65, 0x6e, 0x64, 0x54, 0x78, - 0x12, 0x52, 0x0a, 0x0f, 0x45, 0x78, 0x65, 0x63, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, - 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x54, 0x78, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, - 0x22, 0x12, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0c, 0x3a, 0x01, 0x2a, 0x22, 0x07, 0x2f, 0x65, 0x78, - 0x65, 0x63, 0x54, 0x78, 0x12, 0x57, 0x0a, 0x09, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, - 0x65, 0x12, 0x17, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, - 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x72, 0x70, 0x63, - 0x70, 0x62, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x15, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0f, 0x3a, 0x01, 0x2a, 0x22, - 0x0a, 0x2f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x30, 0x01, 0x12, 0x6e, 0x0a, - 0x0d, 0x47, 0x65, 0x74, 0x56, 0x6f, 0x74, 0x65, 0x72, 0x42, 0x6f, 0x6e, 0x75, 0x73, 0x12, 0x18, - 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x11, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, - 0x2e, 0x56, 0x6f, 0x74, 0x65, 0x72, 0x42, 0x6f, 0x6e, 0x75, 0x73, 0x22, 0x30, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x67, 0x65, 0x74, 0x56, 0x6f, 0x74, 0x65, 0x72, 0x42, 0x6f, - 0x6e, 0x75, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x62, 0x79, 0x5f, 0x6c, - 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x7d, 0x12, 0x7a, 0x0a, - 0x11, 0x47, 0x65, 0x74, 0x43, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x6e, - 0x75, 0x73, 0x12, 0x18, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x72, - 0x70, 0x63, 0x70, 0x62, 0x2e, 0x43, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x42, 0x6f, - 0x6e, 0x75, 0x73, 0x22, 0x34, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x12, 0x2c, 0x2f, 0x67, 0x65, - 0x74, 0x43, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x6e, 0x75, 0x73, 0x2f, - 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x62, 0x79, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x65, - 0x73, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x7d, 0x12, 0x6f, 0x0a, 0x0c, 0x47, 0x65, 0x74, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x2e, 0x72, 0x70, 0x63, 0x70, - 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x31, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2b, 0x12, - 0x29, 0x2f, 0x67, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x2f, 0x7b, - 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x7d, 0x2f, 0x7b, 0x62, 0x79, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, - 0x65, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x7d, 0x12, 0x82, 0x01, 0x0a, 0x15, 0x47, - 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x78, 0x73, 0x42, 0x79, 0x43, 0x6f, 0x6e, 0x74, - 0x72, 0x61, 0x63, 0x74, 0x12, 0x23, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, - 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x78, 0x73, 0x42, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, - 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x72, 0x70, 0x63, 0x70, - 0x62, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x78, 0x73, 0x42, 0x79, 0x43, 0x6f, 0x6e, 0x74, - 0x72, 0x61, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x21, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x1b, 0x3a, 0x01, 0x2a, 0x22, 0x16, 0x2f, 0x67, 0x65, 0x74, 0x42, 0x6c, 0x6f, - 0x63, 0x6b, 0x54, 0x78, 0x73, 0x42, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x42, - 0x2f, 0x5a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x69, 0x6f, - 0x73, 0x74, 0x2d, 0x6f, 0x66, 0x66, 0x69, 0x63, 0x69, 0x61, 0x6c, 0x2f, 0x67, 0x6f, 0x2d, 0x69, - 0x6f, 0x73, 0x74, 0x2f, 0x76, 0x33, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x72, 0x70, 0x63, 0x70, 0x62, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x3a, 0x01, 0x2a, 0x22, 0x19, 0x2f, 0x67, 0x65, 0x74, + 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x46, + 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x60, 0x0a, 0x0f, 0x53, 0x65, 0x6e, 0x64, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, + 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x6e, 0x64, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x12, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0c, 0x3a, 0x01, 0x2a, 0x22, 0x07, + 0x2f, 0x73, 0x65, 0x6e, 0x64, 0x54, 0x78, 0x12, 0x52, 0x0a, 0x0f, 0x45, 0x78, 0x65, 0x63, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x2e, 0x72, 0x70, 0x63, + 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x54, 0x78, + 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x22, 0x12, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0c, 0x3a, + 0x01, 0x2a, 0x22, 0x07, 0x2f, 0x65, 0x78, 0x65, 0x63, 0x54, 0x78, 0x12, 0x57, 0x0a, 0x09, 0x53, + 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0x17, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, + 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x18, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, + 0x69, 0x62, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x15, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x0f, 0x3a, 0x01, 0x2a, 0x22, 0x0a, 0x2f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, + 0x62, 0x65, 0x30, 0x01, 0x12, 0x6e, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x56, 0x6f, 0x74, 0x65, 0x72, + 0x42, 0x6f, 0x6e, 0x75, 0x73, 0x12, 0x18, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x47, 0x65, + 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x11, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x56, 0x6f, 0x74, 0x65, 0x72, 0x42, 0x6f, 0x6e, + 0x75, 0x73, 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x67, 0x65, 0x74, + 0x56, 0x6f, 0x74, 0x65, 0x72, 0x42, 0x6f, 0x6e, 0x75, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, + 0x7d, 0x2f, 0x7b, 0x62, 0x79, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x68, + 0x61, 0x69, 0x6e, 0x7d, 0x12, 0x7a, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x43, 0x61, 0x6e, 0x64, 0x69, + 0x64, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x6e, 0x75, 0x73, 0x12, 0x18, 0x2e, 0x72, 0x70, 0x63, 0x70, + 0x62, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x43, 0x61, 0x6e, 0x64, + 0x69, 0x64, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x6e, 0x75, 0x73, 0x22, 0x34, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x2e, 0x12, 0x2c, 0x2f, 0x67, 0x65, 0x74, 0x43, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, + 0x65, 0x42, 0x6f, 0x6e, 0x75, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x62, + 0x79, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x7d, + 0x12, 0x6f, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x6e, 0x66, 0x6f, + 0x12, 0x1a, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x72, + 0x70, 0x63, 0x70, 0x62, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x31, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2b, 0x12, 0x29, 0x2f, 0x67, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x2f, 0x7b, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x7d, 0x2f, 0x7b, + 0x62, 0x79, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, + 0x7d, 0x12, 0x82, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x78, + 0x73, 0x42, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x23, 0x2e, 0x72, 0x70, + 0x63, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x78, 0x73, 0x42, + 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x21, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x78, + 0x73, 0x42, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x3a, 0x01, 0x2a, 0x22, 0x16, + 0x2f, 0x67, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x78, 0x73, 0x42, 0x79, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x42, 0x2f, 0x5a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x69, 0x6f, 0x73, 0x74, 0x2d, 0x6f, 0x66, 0x66, 0x69, 0x63, 0x69, + 0x61, 0x6c, 0x2f, 0x67, 0x6f, 0x2d, 0x69, 0x6f, 0x73, 0x74, 0x2f, 0x76, 0x33, 0x2f, 0x72, 0x70, + 0x63, 0x2f, 0x72, 0x70, 0x63, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -6056,7 +6067,7 @@ func file_rpc_pb_rpc_proto_rawDescGZIP() []byte { var file_rpc_pb_rpc_proto_enumTypes = make([]protoimpl.EnumInfo, 7) var file_rpc_pb_rpc_proto_msgTypes = make([]protoimpl.MessageInfo, 71) -var file_rpc_pb_rpc_proto_goTypes = []interface{}{ +var file_rpc_pb_rpc_proto_goTypes = []any{ (TxReceipt_StatusCode)(0), // 0: rpcpb.TxReceipt.StatusCode (TransactionResponse_Status)(0), // 1: rpcpb.TransactionResponse.Status (Signature_Algorithm)(0), // 2: rpcpb.Signature.Algorithm @@ -6257,7 +6268,7 @@ func file_rpc_pb_rpc_proto_init() { return } if !protoimpl.UnsafeEnabled { - file_rpc_pb_rpc_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*EmptyRequest); i { case 0: return &v.state @@ -6269,7 +6280,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[1].Exporter = func(v any, i int) any { switch v := v.(*NetworkInfo); i { case 0: return &v.state @@ -6281,7 +6292,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[2].Exporter = func(v any, i int) any { switch v := v.(*RAMInfoResponse); i { case 0: return &v.state @@ -6293,7 +6304,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[3].Exporter = func(v any, i int) any { switch v := v.(*NodeInfoResponse); i { case 0: return &v.state @@ -6305,7 +6316,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[4].Exporter = func(v any, i int) any { switch v := v.(*AmountLimit); i { case 0: return &v.state @@ -6317,7 +6328,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[5].Exporter = func(v any, i int) any { switch v := v.(*Action); i { case 0: return &v.state @@ -6329,7 +6340,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[6].Exporter = func(v any, i int) any { switch v := v.(*TxReceipt); i { case 0: return &v.state @@ -6341,7 +6352,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[7].Exporter = func(v any, i int) any { switch v := v.(*Transaction); i { case 0: return &v.state @@ -6353,7 +6364,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[8].Exporter = func(v any, i int) any { switch v := v.(*TransactionResponse); i { case 0: return &v.state @@ -6365,7 +6376,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[9].Exporter = func(v any, i int) any { switch v := v.(*Signature); i { case 0: return &v.state @@ -6377,7 +6388,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[10].Exporter = func(v any, i int) any { switch v := v.(*TransactionRequest); i { case 0: return &v.state @@ -6389,7 +6400,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[11].Exporter = func(v any, i int) any { switch v := v.(*Block); i { case 0: return &v.state @@ -6401,7 +6412,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[12].Exporter = func(v any, i int) any { switch v := v.(*BlockResponse); i { case 0: return &v.state @@ -6413,7 +6424,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[13].Exporter = func(v any, i int) any { switch v := v.(*RawBlockResponse); i { case 0: return &v.state @@ -6425,7 +6436,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[14].Exporter = func(v any, i int) any { switch v := v.(*BlockHeaderByRangeResponse); i { case 0: return &v.state @@ -6437,7 +6448,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[15].Exporter = func(v any, i int) any { switch v := v.(*ChainInfoResponse); i { case 0: return &v.state @@ -6449,7 +6460,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[16].Exporter = func(v any, i int) any { switch v := v.(*TxHashRequest); i { case 0: return &v.state @@ -6461,7 +6472,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[17].Exporter = func(v any, i int) any { switch v := v.(*GetBlockByHashRequest); i { case 0: return &v.state @@ -6473,7 +6484,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[18].Exporter = func(v any, i int) any { switch v := v.(*GetBlockByNumberRequest); i { case 0: return &v.state @@ -6485,7 +6496,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[19].Exporter = func(v any, i int) any { switch v := v.(*GetBlockHeaderByRangeRequest); i { case 0: return &v.state @@ -6497,7 +6508,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[20].Exporter = func(v any, i int) any { switch v := v.(*FrozenBalance); i { case 0: return &v.state @@ -6509,7 +6520,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[21].Exporter = func(v any, i int) any { switch v := v.(*VoteInfo); i { case 0: return &v.state @@ -6521,7 +6532,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[22].Exporter = func(v any, i int) any { switch v := v.(*GetProducerVoteInfoRequest); i { case 0: return &v.state @@ -6533,7 +6544,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[23].Exporter = func(v any, i int) any { switch v := v.(*GetProducerVoteInfoResponse); i { case 0: return &v.state @@ -6545,7 +6556,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[24].Exporter = func(v any, i int) any { switch v := v.(*GasRatioResponse); i { case 0: return &v.state @@ -6557,7 +6568,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[25].Exporter = func(v any, i int) any { switch v := v.(*Account); i { case 0: return &v.state @@ -6569,7 +6580,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[26].Exporter = func(v any, i int) any { switch v := v.(*GetAccountRequest); i { case 0: return &v.state @@ -6581,7 +6592,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[27].Exporter = func(v any, i int) any { switch v := v.(*Contract); i { case 0: return &v.state @@ -6593,7 +6604,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[28].Exporter = func(v any, i int) any { switch v := v.(*ContractVote); i { case 0: return &v.state @@ -6605,7 +6616,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[29].Exporter = func(v any, i int) any { switch v := v.(*GetContractRequest); i { case 0: return &v.state @@ -6617,7 +6628,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[30].Exporter = func(v any, i int) any { switch v := v.(*GetContractStorageRequest); i { case 0: return &v.state @@ -6629,7 +6640,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[31].Exporter = func(v any, i int) any { switch v := v.(*GetContractStorageResponse); i { case 0: return &v.state @@ -6641,7 +6652,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[32].Exporter = func(v any, i int) any { switch v := v.(*GetBatchContractStorageRequest); i { case 0: return &v.state @@ -6653,7 +6664,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[33].Exporter = func(v any, i int) any { switch v := v.(*GetBatchContractStorageResponse); i { case 0: return &v.state @@ -6665,7 +6676,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[34].Exporter = func(v any, i int) any { switch v := v.(*GetContractStorageFieldsRequest); i { case 0: return &v.state @@ -6677,7 +6688,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[35].Exporter = func(v any, i int) any { switch v := v.(*GetContractStorageFieldsResponse); i { case 0: return &v.state @@ -6689,7 +6700,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[36].Exporter = func(v any, i int) any { switch v := v.(*ListContractStorageRequest); i { case 0: return &v.state @@ -6701,7 +6712,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[37].Exporter = func(v any, i int) any { switch v := v.(*ListContractStorageResponse); i { case 0: return &v.state @@ -6713,7 +6724,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[38].Exporter = func(v any, i int) any { switch v := v.(*SendTransactionResponse); i { case 0: return &v.state @@ -6725,7 +6736,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[39].Exporter = func(v any, i int) any { switch v := v.(*GetTokenBalanceResponse); i { case 0: return &v.state @@ -6737,7 +6748,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[40].Exporter = func(v any, i int) any { switch v := v.(*GetTokenBalanceRequest); i { case 0: return &v.state @@ -6749,7 +6760,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[41].Exporter = func(v any, i int) any { switch v := v.(*GetToken721BalanceResponse); i { case 0: return &v.state @@ -6761,7 +6772,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[42].Exporter = func(v any, i int) any { switch v := v.(*GetToken721InfoRequest); i { case 0: return &v.state @@ -6773,7 +6784,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[43].Exporter = func(v any, i int) any { switch v := v.(*GetToken721MetadataResponse); i { case 0: return &v.state @@ -6785,7 +6796,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[44].Exporter = func(v any, i int) any { switch v := v.(*GetToken721OwnerResponse); i { case 0: return &v.state @@ -6797,7 +6808,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[45].Exporter = func(v any, i int) any { switch v := v.(*Event); i { case 0: return &v.state @@ -6809,7 +6820,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[46].Exporter = func(v any, i int) any { switch v := v.(*SubscribeRequest); i { case 0: return &v.state @@ -6821,7 +6832,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[47].Exporter = func(v any, i int) any { switch v := v.(*SubscribeResponse); i { case 0: return &v.state @@ -6833,7 +6844,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[48].Exporter = func(v any, i int) any { switch v := v.(*VoterBonus); i { case 0: return &v.state @@ -6845,7 +6856,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[49].Exporter = func(v any, i int) any { switch v := v.(*CandidateBonus); i { case 0: return &v.state @@ -6857,7 +6868,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[50].Exporter = func(v any, i int) any { switch v := v.(*GetTokenInfoRequest); i { case 0: return &v.state @@ -6869,7 +6880,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[51].Exporter = func(v any, i int) any { switch v := v.(*TokenInfo); i { case 0: return &v.state @@ -6881,7 +6892,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[52].Exporter = func(v any, i int) any { switch v := v.(*GetBlockTxsByContractRequest); i { case 0: return &v.state @@ -6893,7 +6904,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[53].Exporter = func(v any, i int) any { switch v := v.(*BlockTxs); i { case 0: return &v.state @@ -6905,7 +6916,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[54].Exporter = func(v any, i int) any { switch v := v.(*BlockTxsByContractResponse); i { case 0: return &v.state @@ -6917,7 +6928,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[56].Exporter = func(v any, i int) any { switch v := v.(*TxReceipt_Receipt); i { case 0: return &v.state @@ -6929,7 +6940,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[57].Exporter = func(v any, i int) any { switch v := v.(*Block_Info); i { case 0: return &v.state @@ -6941,7 +6952,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[58].Exporter = func(v any, i int) any { switch v := v.(*Account_PledgeInfo); i { case 0: return &v.state @@ -6953,7 +6964,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[59].Exporter = func(v any, i int) any { switch v := v.(*Account_GasInfo); i { case 0: return &v.state @@ -6965,7 +6976,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[60].Exporter = func(v any, i int) any { switch v := v.(*Account_RAMInfo); i { case 0: return &v.state @@ -6977,7 +6988,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[61].Exporter = func(v any, i int) any { switch v := v.(*Account_Item); i { case 0: return &v.state @@ -6989,7 +7000,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[62].Exporter = func(v any, i int) any { switch v := v.(*Account_Group); i { case 0: return &v.state @@ -7001,7 +7012,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[63].Exporter = func(v any, i int) any { switch v := v.(*Account_Permission); i { case 0: return &v.state @@ -7013,7 +7024,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[66].Exporter = func(v any, i int) any { switch v := v.(*Contract_ABI); i { case 0: return &v.state @@ -7025,7 +7036,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[67].Exporter = func(v any, i int) any { switch v := v.(*GetBatchContractStorageRequest_KeyField); i { case 0: return &v.state @@ -7037,7 +7048,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[68].Exporter = func(v any, i int) any { switch v := v.(*ListContractStorageResponse_Data); i { case 0: return &v.state @@ -7049,7 +7060,7 @@ func file_rpc_pb_rpc_proto_init() { return nil } } - file_rpc_pb_rpc_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { + file_rpc_pb_rpc_proto_msgTypes[69].Exporter = func(v any, i int) any { switch v := v.(*SubscribeRequest_Filter); i { case 0: return &v.state diff --git a/rpc/pb/rpc.pb.gw.go b/rpc/pb/rpc.pb.gw.go index 1ab2d5d79..1c39abd9d 100644 --- a/rpc/pb/rpc.pb.gw.go +++ b/rpc/pb/rpc.pb.gw.go @@ -409,11 +409,7 @@ func request_ApiService_GetBlockHeaderByRange_0(ctx context.Context, marshaler r var protoReq GetBlockHeaderByRangeRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -426,11 +422,7 @@ func local_request_ApiService_GetBlockHeaderByRange_0(ctx context.Context, marsh var protoReq GetBlockHeaderByRangeRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -1117,11 +1109,7 @@ func request_ApiService_GetContractStorage_0(ctx context.Context, marshaler runt var protoReq GetContractStorageRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -1134,11 +1122,7 @@ func local_request_ApiService_GetContractStorage_0(ctx context.Context, marshale var protoReq GetContractStorageRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -1151,11 +1135,7 @@ func request_ApiService_GetBatchContractStorage_0(ctx context.Context, marshaler var protoReq GetBatchContractStorageRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -1168,11 +1148,7 @@ func local_request_ApiService_GetBatchContractStorage_0(ctx context.Context, mar var protoReq GetBatchContractStorageRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -1185,11 +1161,7 @@ func request_ApiService_ListContractStorage_0(ctx context.Context, marshaler run var protoReq ListContractStorageRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -1202,11 +1174,7 @@ func local_request_ApiService_ListContractStorage_0(ctx context.Context, marshal var protoReq ListContractStorageRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -1219,11 +1187,7 @@ func request_ApiService_GetContractStorageFields_0(ctx context.Context, marshale var protoReq GetContractStorageFieldsRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -1236,11 +1200,7 @@ func local_request_ApiService_GetContractStorageFields_0(ctx context.Context, ma var protoReq GetContractStorageFieldsRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -1253,11 +1213,7 @@ func request_ApiService_SendTransaction_0(ctx context.Context, marshaler runtime var protoReq TransactionRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -1270,11 +1226,7 @@ func local_request_ApiService_SendTransaction_0(ctx context.Context, marshaler r var protoReq TransactionRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -1287,11 +1239,7 @@ func request_ApiService_ExecTransaction_0(ctx context.Context, marshaler runtime var protoReq TransactionRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -1304,11 +1252,7 @@ func local_request_ApiService_ExecTransaction_0(ctx context.Context, marshaler r var protoReq TransactionRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -1321,11 +1265,7 @@ func request_ApiService_Subscribe_0(ctx context.Context, marshaler runtime.Marsh var protoReq SubscribeRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -1562,11 +1502,7 @@ func request_ApiService_GetBlockTxsByContract_0(ctx context.Context, marshaler r var protoReq GetBlockTxsByContractRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -1579,11 +1515,7 @@ func local_request_ApiService_GetBlockTxsByContract_0(ctx context.Context, marsh var protoReq GetBlockTxsByContractRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -2311,21 +2243,21 @@ func RegisterApiServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, // RegisterApiServiceHandlerFromEndpoint is same as RegisterApiServiceHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterApiServiceHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) + conn, err := grpc.NewClient(endpoint, opts...) if err != nil { return err } defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() diff --git a/rpc/pb/rpc.proto b/rpc/pb/rpc.proto index 7bff96af7..e279b789c 100644 --- a/rpc/pb/rpc.proto +++ b/rpc/pb/rpc.proto @@ -613,6 +613,8 @@ message Account { string name = 1; // account balance double balance = 2; + // string with full precision + string balance_string = 3; // The message defines account pledged coin information. message PledgeInfo { @@ -637,7 +639,7 @@ message Account { } // gas information - GasInfo gas_info = 3; + GasInfo gas_info = 4; // The message defines account ram information. message RAMInfo { @@ -650,7 +652,7 @@ message Account { } // ram information - RAMInfo ram_info = 4; + RAMInfo ram_info = 5; // The message defines permission item. message Item { @@ -685,15 +687,15 @@ message Account { } // account permission - map permissions = 5; + map permissions = 6; // account groups - map groups = 6; + map groups = 7; // frozen balance information - repeated FrozenBalance frozen_balances = 7; + repeated FrozenBalance frozen_balances = 8; // vote information - repeated VoteInfo vote_infos = 8; + repeated VoteInfo vote_infos = 9; } // The message defines the get account request. diff --git a/rpc/pb/rpc.swagger.json b/rpc/pb/rpc.swagger.json index 41f45ff50..be01246e3 100644 --- a/rpc/pb/rpc.swagger.json +++ b/rpc/pb/rpc.swagger.json @@ -1418,6 +1418,10 @@ "format": "double", "title": "account balance" }, + "balanceString": { + "type": "string", + "title": "string with full precision" + }, "gasInfo": { "$ref": "#/definitions/AccountGasInfo", "title": "gas information" diff --git a/rpc/pb/rpc_grpc.pb.go b/rpc/pb/rpc_grpc.pb.go index 97812c060..3f3cd3a6a 100644 --- a/rpc/pb/rpc_grpc.pb.go +++ b/rpc/pb/rpc_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 -// - protoc v4.24.2 +// - protoc-gen-go-grpc v1.4.0 +// - protoc v3.19.0 // source: rpc/pb/rpc.proto package rpcpb @@ -15,8 +15,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.62.0 or later. +const _ = grpc.SupportPackageIsVersion8 const ( ApiService_GetNodeInfo_FullMethodName = "/rpcpb.ApiService/GetNodeInfo" @@ -118,8 +118,9 @@ func NewApiServiceClient(cc grpc.ClientConnInterface) ApiServiceClient { } func (c *apiServiceClient) GetNodeInfo(ctx context.Context, in *EmptyRequest, opts ...grpc.CallOption) (*NodeInfoResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(NodeInfoResponse) - err := c.cc.Invoke(ctx, ApiService_GetNodeInfo_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, ApiService_GetNodeInfo_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -127,8 +128,9 @@ func (c *apiServiceClient) GetNodeInfo(ctx context.Context, in *EmptyRequest, op } func (c *apiServiceClient) GetChainInfo(ctx context.Context, in *EmptyRequest, opts ...grpc.CallOption) (*ChainInfoResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ChainInfoResponse) - err := c.cc.Invoke(ctx, ApiService_GetChainInfo_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, ApiService_GetChainInfo_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -136,8 +138,9 @@ func (c *apiServiceClient) GetChainInfo(ctx context.Context, in *EmptyRequest, o } func (c *apiServiceClient) GetRAMInfo(ctx context.Context, in *EmptyRequest, opts ...grpc.CallOption) (*RAMInfoResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(RAMInfoResponse) - err := c.cc.Invoke(ctx, ApiService_GetRAMInfo_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, ApiService_GetRAMInfo_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -145,8 +148,9 @@ func (c *apiServiceClient) GetRAMInfo(ctx context.Context, in *EmptyRequest, opt } func (c *apiServiceClient) GetTxByHash(ctx context.Context, in *TxHashRequest, opts ...grpc.CallOption) (*TransactionResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(TransactionResponse) - err := c.cc.Invoke(ctx, ApiService_GetTxByHash_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, ApiService_GetTxByHash_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -154,8 +158,9 @@ func (c *apiServiceClient) GetTxByHash(ctx context.Context, in *TxHashRequest, o } func (c *apiServiceClient) GetTxReceiptByTxHash(ctx context.Context, in *TxHashRequest, opts ...grpc.CallOption) (*TxReceipt, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(TxReceipt) - err := c.cc.Invoke(ctx, ApiService_GetTxReceiptByTxHash_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, ApiService_GetTxReceiptByTxHash_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -163,8 +168,9 @@ func (c *apiServiceClient) GetTxReceiptByTxHash(ctx context.Context, in *TxHashR } func (c *apiServiceClient) GetBlockByHash(ctx context.Context, in *GetBlockByHashRequest, opts ...grpc.CallOption) (*BlockResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(BlockResponse) - err := c.cc.Invoke(ctx, ApiService_GetBlockByHash_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, ApiService_GetBlockByHash_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -172,8 +178,9 @@ func (c *apiServiceClient) GetBlockByHash(ctx context.Context, in *GetBlockByHas } func (c *apiServiceClient) GetBlockByNumber(ctx context.Context, in *GetBlockByNumberRequest, opts ...grpc.CallOption) (*BlockResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(BlockResponse) - err := c.cc.Invoke(ctx, ApiService_GetBlockByNumber_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, ApiService_GetBlockByNumber_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -181,8 +188,9 @@ func (c *apiServiceClient) GetBlockByNumber(ctx context.Context, in *GetBlockByN } func (c *apiServiceClient) GetRawBlockByNumber(ctx context.Context, in *GetBlockByNumberRequest, opts ...grpc.CallOption) (*RawBlockResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(RawBlockResponse) - err := c.cc.Invoke(ctx, ApiService_GetRawBlockByNumber_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, ApiService_GetRawBlockByNumber_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -190,8 +198,9 @@ func (c *apiServiceClient) GetRawBlockByNumber(ctx context.Context, in *GetBlock } func (c *apiServiceClient) GetBlockHeaderByRange(ctx context.Context, in *GetBlockHeaderByRangeRequest, opts ...grpc.CallOption) (*BlockHeaderByRangeResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(BlockHeaderByRangeResponse) - err := c.cc.Invoke(ctx, ApiService_GetBlockHeaderByRange_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, ApiService_GetBlockHeaderByRange_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -199,8 +208,9 @@ func (c *apiServiceClient) GetBlockHeaderByRange(ctx context.Context, in *GetBlo } func (c *apiServiceClient) GetAccount(ctx context.Context, in *GetAccountRequest, opts ...grpc.CallOption) (*Account, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(Account) - err := c.cc.Invoke(ctx, ApiService_GetAccount_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, ApiService_GetAccount_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -208,8 +218,9 @@ func (c *apiServiceClient) GetAccount(ctx context.Context, in *GetAccountRequest } func (c *apiServiceClient) GetTokenBalance(ctx context.Context, in *GetTokenBalanceRequest, opts ...grpc.CallOption) (*GetTokenBalanceResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetTokenBalanceResponse) - err := c.cc.Invoke(ctx, ApiService_GetTokenBalance_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, ApiService_GetTokenBalance_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -217,8 +228,9 @@ func (c *apiServiceClient) GetTokenBalance(ctx context.Context, in *GetTokenBala } func (c *apiServiceClient) GetToken721Balance(ctx context.Context, in *GetTokenBalanceRequest, opts ...grpc.CallOption) (*GetToken721BalanceResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetToken721BalanceResponse) - err := c.cc.Invoke(ctx, ApiService_GetToken721Balance_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, ApiService_GetToken721Balance_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -226,8 +238,9 @@ func (c *apiServiceClient) GetToken721Balance(ctx context.Context, in *GetTokenB } func (c *apiServiceClient) GetToken721Metadata(ctx context.Context, in *GetToken721InfoRequest, opts ...grpc.CallOption) (*GetToken721MetadataResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetToken721MetadataResponse) - err := c.cc.Invoke(ctx, ApiService_GetToken721Metadata_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, ApiService_GetToken721Metadata_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -235,8 +248,9 @@ func (c *apiServiceClient) GetToken721Metadata(ctx context.Context, in *GetToken } func (c *apiServiceClient) GetToken721Owner(ctx context.Context, in *GetToken721InfoRequest, opts ...grpc.CallOption) (*GetToken721OwnerResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetToken721OwnerResponse) - err := c.cc.Invoke(ctx, ApiService_GetToken721Owner_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, ApiService_GetToken721Owner_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -244,8 +258,9 @@ func (c *apiServiceClient) GetToken721Owner(ctx context.Context, in *GetToken721 } func (c *apiServiceClient) GetGasRatio(ctx context.Context, in *EmptyRequest, opts ...grpc.CallOption) (*GasRatioResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GasRatioResponse) - err := c.cc.Invoke(ctx, ApiService_GetGasRatio_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, ApiService_GetGasRatio_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -253,8 +268,9 @@ func (c *apiServiceClient) GetGasRatio(ctx context.Context, in *EmptyRequest, op } func (c *apiServiceClient) GetProducerVoteInfo(ctx context.Context, in *GetProducerVoteInfoRequest, opts ...grpc.CallOption) (*GetProducerVoteInfoResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetProducerVoteInfoResponse) - err := c.cc.Invoke(ctx, ApiService_GetProducerVoteInfo_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, ApiService_GetProducerVoteInfo_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -262,8 +278,9 @@ func (c *apiServiceClient) GetProducerVoteInfo(ctx context.Context, in *GetProdu } func (c *apiServiceClient) GetContract(ctx context.Context, in *GetContractRequest, opts ...grpc.CallOption) (*Contract, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(Contract) - err := c.cc.Invoke(ctx, ApiService_GetContract_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, ApiService_GetContract_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -271,8 +288,9 @@ func (c *apiServiceClient) GetContract(ctx context.Context, in *GetContractReque } func (c *apiServiceClient) GetContractVote(ctx context.Context, in *GetContractRequest, opts ...grpc.CallOption) (*ContractVote, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ContractVote) - err := c.cc.Invoke(ctx, ApiService_GetContractVote_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, ApiService_GetContractVote_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -280,8 +298,9 @@ func (c *apiServiceClient) GetContractVote(ctx context.Context, in *GetContractR } func (c *apiServiceClient) GetContractStorage(ctx context.Context, in *GetContractStorageRequest, opts ...grpc.CallOption) (*GetContractStorageResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetContractStorageResponse) - err := c.cc.Invoke(ctx, ApiService_GetContractStorage_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, ApiService_GetContractStorage_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -289,8 +308,9 @@ func (c *apiServiceClient) GetContractStorage(ctx context.Context, in *GetContra } func (c *apiServiceClient) GetBatchContractStorage(ctx context.Context, in *GetBatchContractStorageRequest, opts ...grpc.CallOption) (*GetBatchContractStorageResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetBatchContractStorageResponse) - err := c.cc.Invoke(ctx, ApiService_GetBatchContractStorage_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, ApiService_GetBatchContractStorage_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -298,8 +318,9 @@ func (c *apiServiceClient) GetBatchContractStorage(ctx context.Context, in *GetB } func (c *apiServiceClient) ListContractStorage(ctx context.Context, in *ListContractStorageRequest, opts ...grpc.CallOption) (*ListContractStorageResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListContractStorageResponse) - err := c.cc.Invoke(ctx, ApiService_ListContractStorage_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, ApiService_ListContractStorage_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -307,8 +328,9 @@ func (c *apiServiceClient) ListContractStorage(ctx context.Context, in *ListCont } func (c *apiServiceClient) GetContractStorageFields(ctx context.Context, in *GetContractStorageFieldsRequest, opts ...grpc.CallOption) (*GetContractStorageFieldsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetContractStorageFieldsResponse) - err := c.cc.Invoke(ctx, ApiService_GetContractStorageFields_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, ApiService_GetContractStorageFields_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -316,8 +338,9 @@ func (c *apiServiceClient) GetContractStorageFields(ctx context.Context, in *Get } func (c *apiServiceClient) SendTransaction(ctx context.Context, in *TransactionRequest, opts ...grpc.CallOption) (*SendTransactionResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(SendTransactionResponse) - err := c.cc.Invoke(ctx, ApiService_SendTransaction_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, ApiService_SendTransaction_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -325,8 +348,9 @@ func (c *apiServiceClient) SendTransaction(ctx context.Context, in *TransactionR } func (c *apiServiceClient) ExecTransaction(ctx context.Context, in *TransactionRequest, opts ...grpc.CallOption) (*TxReceipt, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(TxReceipt) - err := c.cc.Invoke(ctx, ApiService_ExecTransaction_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, ApiService_ExecTransaction_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -334,11 +358,12 @@ func (c *apiServiceClient) ExecTransaction(ctx context.Context, in *TransactionR } func (c *apiServiceClient) Subscribe(ctx context.Context, in *SubscribeRequest, opts ...grpc.CallOption) (ApiService_SubscribeClient, error) { - stream, err := c.cc.NewStream(ctx, &ApiService_ServiceDesc.Streams[0], ApiService_Subscribe_FullMethodName, opts...) + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + stream, err := c.cc.NewStream(ctx, &ApiService_ServiceDesc.Streams[0], ApiService_Subscribe_FullMethodName, cOpts...) if err != nil { return nil, err } - x := &apiServiceSubscribeClient{stream} + x := &apiServiceSubscribeClient{ClientStream: stream} if err := x.ClientStream.SendMsg(in); err != nil { return nil, err } @@ -366,8 +391,9 @@ func (x *apiServiceSubscribeClient) Recv() (*SubscribeResponse, error) { } func (c *apiServiceClient) GetVoterBonus(ctx context.Context, in *GetAccountRequest, opts ...grpc.CallOption) (*VoterBonus, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(VoterBonus) - err := c.cc.Invoke(ctx, ApiService_GetVoterBonus_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, ApiService_GetVoterBonus_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -375,8 +401,9 @@ func (c *apiServiceClient) GetVoterBonus(ctx context.Context, in *GetAccountRequ } func (c *apiServiceClient) GetCandidateBonus(ctx context.Context, in *GetAccountRequest, opts ...grpc.CallOption) (*CandidateBonus, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CandidateBonus) - err := c.cc.Invoke(ctx, ApiService_GetCandidateBonus_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, ApiService_GetCandidateBonus_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -384,8 +411,9 @@ func (c *apiServiceClient) GetCandidateBonus(ctx context.Context, in *GetAccount } func (c *apiServiceClient) GetTokenInfo(ctx context.Context, in *GetTokenInfoRequest, opts ...grpc.CallOption) (*TokenInfo, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(TokenInfo) - err := c.cc.Invoke(ctx, ApiService_GetTokenInfo_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, ApiService_GetTokenInfo_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -393,8 +421,9 @@ func (c *apiServiceClient) GetTokenInfo(ctx context.Context, in *GetTokenInfoReq } func (c *apiServiceClient) GetBlockTxsByContract(ctx context.Context, in *GetBlockTxsByContractRequest, opts ...grpc.CallOption) (*BlockTxsByContractResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(BlockTxsByContractResponse) - err := c.cc.Invoke(ctx, ApiService_GetBlockTxsByContract_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, ApiService_GetBlockTxsByContract_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -1000,7 +1029,7 @@ func _ApiService_Subscribe_Handler(srv interface{}, stream grpc.ServerStream) er if err := stream.RecvMsg(m); err != nil { return err } - return srv.(ApiServiceServer).Subscribe(m, &apiServiceSubscribeServer{stream}) + return srv.(ApiServiceServer).Subscribe(m, &apiServiceSubscribeServer{ServerStream: stream}) } type ApiService_SubscribeServer interface { diff --git a/sdk/sdk.go b/sdk/sdk.go index 5d335fc9b..8260cd044 100644 --- a/sdk/sdk.go +++ b/sdk/sdk.go @@ -140,7 +140,7 @@ func (s *IOSTDevSDK) Connected() bool { func (s *IOSTDevSDK) Connect() (err error) { if s.rpcConn == nil { s.log("Connecting to server", s.server, "...") - s.rpcConn, err = grpc.Dial(s.server, grpc.WithTransportCredentials(insecure.NewCredentials())) + s.rpcConn, err = grpc.NewClient(s.server, grpc.WithTransportCredentials(insecure.NewCredentials())) } return } diff --git a/test/performance/call/client.go b/test/performance/call/client.go index 12fcc05cf..dd36dd63a 100644 --- a/test/performance/call/client.go +++ b/test/performance/call/client.go @@ -23,7 +23,7 @@ func (c *GrpcClient) Addr() string { func InitClients(addrs []string) { clients = make([]*GrpcClient, len(addrs)) for i, addr := range addrs { - conn, err := grpc.Dial(addr, grpc.WithTransportCredentials(insecure.NewCredentials())) + conn, err := grpc.NewClient(addr, grpc.WithTransportCredentials(insecure.NewCredentials())) if err != nil { panic(err) } diff --git a/tools/spv/main.go b/tools/spv/main.go index 5a7362280..b7f97ed28 100644 --- a/tools/spv/main.go +++ b/tools/spv/main.go @@ -14,7 +14,7 @@ import ( func testVerifier() error { verifier := Verifier{} server := "54.180.196.80:30002" - rpcConn, err := grpc.Dial(server, grpc.WithTransportCredentials(insecure.NewCredentials())) + rpcConn, err := grpc.NewClient(server, grpc.WithTransportCredentials(insecure.NewCredentials())) if err != nil { return err } From e4de9f10b4ae49081d2f52c8bb9ad0c93ce0115e Mon Sep 17 00:00:00 2001 From: cbdev01 Date: Fri, 28 Jun 2024 14:24:37 +0800 Subject: [PATCH 2/3] use decimal string --- Makefile | 2 +- common/decimal.go | 8 ----- rpc/api_service.go | 6 ++-- rpc/pb/rpc.pb.go | 78 ++++++++++++++++++++--------------------- rpc/pb/rpc.proto | 17 ++++----- rpc/pb/rpc.swagger.json | 8 ++--- 6 files changed, 56 insertions(+), 63 deletions(-) diff --git a/Makefile b/Makefile index a51aae3b3..5568dadf1 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,7 @@ GO_INSTALL := $(GO) install PROJECT_NAME := $(shell basename "$(PWD)") BUILDER_VERSION = 3.11.0 -VERSION = 3.11.4 +VERSION = 3.11.5 COMMIT = $(shell git rev-parse --short HEAD) PROJECT = github.com/iost-official/go-iost DOCKER_IMAGE = iostio/iost-node:$(VERSION)-$(COMMIT) diff --git a/common/decimal.go b/common/decimal.go index cb5033a54..9c96b39e4 100644 --- a/common/decimal.go +++ b/common/decimal.go @@ -4,7 +4,6 @@ import ( "encoding/binary" "errors" "math" - "math/big" ) var errOverflow = errors.New("overflow error") @@ -20,13 +19,6 @@ type Decimal struct { Err error } -// FloatString ... -func (f *Decimal) FloatString() string { - numerator := big.NewInt(f.Value) - denominator := big.NewInt(int64(math.Pow10(f.Scale))) - return new(big.Rat).SetFrac(numerator, denominator).FloatString(f.Scale) -} - // Float64 ... func (f *Decimal) Float64() float64 { return float64(f.Value) / math.Pow10(f.Scale) diff --git a/rpc/api_service.go b/rpc/api_service.go index fe190b71a..febc5d7b6 100644 --- a/rpc/api_service.go +++ b/rpc/api_service.go @@ -348,9 +348,9 @@ func (as *APIService) GetAccount(ctx context.Context, req *rpcpb.GetAccountReque frozen := dbVisitor.AllFreezedTokenBalanceDecimal("iost", req.GetName()) unfrozen, stillFrozen := as.getUnfrozenToken(frozen, req.ByLongestChain) ret.FrozenBalances = stillFrozen - tmpBalance := unfrozen.Add(balance) - ret.Balance = tmpBalance.Float64() - ret.BalanceString = strings.TrimRight(strings.TrimRight(tmpBalance.FloatString(), "0"), ".") + totalBalance := unfrozen.Add(balance) + ret.Balance = totalBalance.Float64() + ret.BalanceString = totalBalance.String() voteInfo := dbVisitor.GetAccountVoteInfo(req.GetName()) for _, v := range voteInfo { diff --git a/rpc/pb/rpc.pb.go b/rpc/pb/rpc.pb.go index 606f398b2..7f82b4f97 100644 --- a/rpc/pb/rpc.pb.go +++ b/rpc/pb/rpc.pb.go @@ -2416,20 +2416,20 @@ type Account struct { Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // account balance Balance float64 `protobuf:"fixed64,2,opt,name=balance,proto3" json:"balance,omitempty"` - // string with full precision - BalanceString string `protobuf:"bytes,3,opt,name=balance_string,json=balanceString,proto3" json:"balance_string,omitempty"` // gas information - GasInfo *Account_GasInfo `protobuf:"bytes,4,opt,name=gas_info,json=gasInfo,proto3" json:"gas_info,omitempty"` + GasInfo *Account_GasInfo `protobuf:"bytes,3,opt,name=gas_info,json=gasInfo,proto3" json:"gas_info,omitempty"` // ram information - RamInfo *Account_RAMInfo `protobuf:"bytes,5,opt,name=ram_info,json=ramInfo,proto3" json:"ram_info,omitempty"` + RamInfo *Account_RAMInfo `protobuf:"bytes,4,opt,name=ram_info,json=ramInfo,proto3" json:"ram_info,omitempty"` // account permission - Permissions map[string]*Account_Permission `protobuf:"bytes,6,rep,name=permissions,proto3" json:"permissions,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Permissions map[string]*Account_Permission `protobuf:"bytes,5,rep,name=permissions,proto3" json:"permissions,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // account groups - Groups map[string]*Account_Group `protobuf:"bytes,7,rep,name=groups,proto3" json:"groups,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Groups map[string]*Account_Group `protobuf:"bytes,6,rep,name=groups,proto3" json:"groups,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // frozen balance information - FrozenBalances []*FrozenBalance `protobuf:"bytes,8,rep,name=frozen_balances,json=frozenBalances,proto3" json:"frozen_balances,omitempty"` + FrozenBalances []*FrozenBalance `protobuf:"bytes,7,rep,name=frozen_balances,json=frozenBalances,proto3" json:"frozen_balances,omitempty"` // vote information - VoteInfos []*VoteInfo `protobuf:"bytes,9,rep,name=vote_infos,json=voteInfos,proto3" json:"vote_infos,omitempty"` + VoteInfos []*VoteInfo `protobuf:"bytes,8,rep,name=vote_infos,json=voteInfos,proto3" json:"vote_infos,omitempty"` + // string with full precision + BalanceString string `protobuf:"bytes,9,opt,name=balance_string,json=balanceString,proto3" json:"balance_string,omitempty"` } func (x *Account) Reset() { @@ -2478,13 +2478,6 @@ func (x *Account) GetBalance() float64 { return 0 } -func (x *Account) GetBalanceString() string { - if x != nil { - return x.BalanceString - } - return "" -} - func (x *Account) GetGasInfo() *Account_GasInfo { if x != nil { return x.GasInfo @@ -2527,6 +2520,13 @@ func (x *Account) GetVoteInfos() []*VoteInfo { return nil } +func (x *Account) GetBalanceString() string { + if x != nil { + return x.BalanceString + } + return "" +} + // The message defines the get account request. type GetAccountRequest struct { state protoimpl.MessageState @@ -5512,30 +5512,30 @@ var file_rpc_pb_rpc_proto_rawDesc = []byte{ 0x22, 0xa4, 0x0a, 0x0a, 0x07, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x01, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x62, 0x61, - 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0d, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x72, 0x69, 0x6e, - 0x67, 0x12, 0x31, 0x0a, 0x08, 0x67, 0x61, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x41, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x2e, 0x47, 0x61, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x67, 0x61, 0x73, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x31, 0x0a, 0x08, 0x72, 0x61, 0x6d, 0x5f, 0x69, 0x6e, 0x66, 0x6f, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x41, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x52, 0x41, 0x4d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, - 0x72, 0x61, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x41, 0x0a, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, - 0x70, 0x63, 0x70, 0x62, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x50, 0x65, 0x72, - 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x70, - 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x32, 0x0a, 0x06, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x72, 0x70, 0x63, - 0x70, 0x62, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x3d, - 0x0a, 0x0f, 0x66, 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, - 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, - 0x46, 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x0e, 0x66, - 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x2e, 0x0a, - 0x0a, 0x76, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x0f, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x56, 0x6f, 0x74, 0x65, 0x49, 0x6e, - 0x66, 0x6f, 0x52, 0x09, 0x76, 0x6f, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x1a, 0x3e, 0x0a, + 0x01, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x31, 0x0a, 0x08, 0x67, 0x61, + 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x72, + 0x70, 0x63, 0x70, 0x62, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x47, 0x61, 0x73, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x67, 0x61, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x31, 0x0a, + 0x08, 0x72, 0x61, 0x6d, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x16, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e, + 0x52, 0x41, 0x4d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x72, 0x61, 0x6d, 0x49, 0x6e, 0x66, 0x6f, + 0x12, 0x41, 0x0a, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x41, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x32, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x06, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x3d, 0x0a, 0x0f, 0x66, 0x72, 0x6f, 0x7a, 0x65, + 0x6e, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x14, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x46, 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x42, + 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x0e, 0x66, 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x42, 0x61, + 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x0a, 0x76, 0x6f, 0x74, 0x65, 0x5f, 0x69, + 0x6e, 0x66, 0x6f, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x72, 0x70, 0x63, + 0x70, 0x62, 0x2e, 0x56, 0x6f, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x76, 0x6f, 0x74, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, + 0x65, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, + 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x1a, 0x3e, 0x0a, 0x0a, 0x50, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, diff --git a/rpc/pb/rpc.proto b/rpc/pb/rpc.proto index e279b789c..1d667ef76 100644 --- a/rpc/pb/rpc.proto +++ b/rpc/pb/rpc.proto @@ -613,8 +613,6 @@ message Account { string name = 1; // account balance double balance = 2; - // string with full precision - string balance_string = 3; // The message defines account pledged coin information. message PledgeInfo { @@ -639,7 +637,7 @@ message Account { } // gas information - GasInfo gas_info = 4; + GasInfo gas_info = 3; // The message defines account ram information. message RAMInfo { @@ -652,7 +650,7 @@ message Account { } // ram information - RAMInfo ram_info = 5; + RAMInfo ram_info = 4; // The message defines permission item. message Item { @@ -687,15 +685,18 @@ message Account { } // account permission - map permissions = 6; + map permissions = 5; // account groups - map groups = 7; + map groups = 6; // frozen balance information - repeated FrozenBalance frozen_balances = 8; + repeated FrozenBalance frozen_balances = 7; // vote information - repeated VoteInfo vote_infos = 9; + repeated VoteInfo vote_infos = 8; + + // string with full precision + string balance_string = 9; } // The message defines the get account request. diff --git a/rpc/pb/rpc.swagger.json b/rpc/pb/rpc.swagger.json index be01246e3..a1cccafd2 100644 --- a/rpc/pb/rpc.swagger.json +++ b/rpc/pb/rpc.swagger.json @@ -1418,10 +1418,6 @@ "format": "double", "title": "account balance" }, - "balanceString": { - "type": "string", - "title": "string with full precision" - }, "gasInfo": { "$ref": "#/definitions/AccountGasInfo", "title": "gas information" @@ -1459,6 +1455,10 @@ "$ref": "#/definitions/rpcpbVoteInfo" }, "title": "vote information" + }, + "balanceString": { + "type": "string", + "title": "string with full precision" } }, "description": "The message defines account struct." From e31e93cbf4cafdd860e98f67593efae41aae67ae Mon Sep 17 00:00:00 2001 From: cbdev01 Date: Fri, 28 Jun 2024 14:37:03 +0800 Subject: [PATCH 3/3] changelog --- CHANGELOG.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c825043a4..9cedb2a32 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,14 @@ +## v3.11.5 +Fri Jun 28 06:30:05 UTC 2024 + +Compatible upgrade. + +Add iost token balance string with full precision + +- Rpc GetAccount add field “BalanceString” +- Protobuf upgrade +- Grpc upgrade + ## v3.11.4 Sun Dec 17 22:03:09 CST 2023