From e038aad85376e1d3cc703b0e89f629468cf40b08 Mon Sep 17 00:00:00 2001 From: Victor Nosov Date: Mon, 24 Apr 2023 19:11:26 +0300 Subject: [PATCH] Decimal sep pkg (#33) token.Decimal to separate package --- examples/erc20_utxo/erc20.go | 3 +- examples/erc20_utxo/erc20_test.go | 7 +- .../erc20_utxo/service/allowance/allowance.go | 3 +- .../service/allowance/allowance.pb.cc.go | 8 +- .../service/allowance/allowance.pb.go | 352 ++++---- .../service/allowance/allowance.proto | 15 +- .../service/allowance/allowance.swagger.json | 28 +- .../allowance/allowance.validator.pb.go | 1 + .../erc20_utxo/service/config/config.pb.cc.go | 8 +- .../erc20_utxo/service/config/config.pb.go | 39 +- .../erc20_utxo/service/config/config.proto | 4 +- .../service/config/config.swagger.json | 26 +- .../service/config/config.validator.pb.go | 2 +- extensions/token/balance.pb.cc.go | 8 +- extensions/token/balance.pb.go | 766 ++++++++---------- extensions/token/balance.proto | 23 +- extensions/token/balance.swagger.json | 30 +- extensions/token/balance.validator.pb.go | 4 +- extensions/token/balance_account.go | 7 +- extensions/token/balance_utxo.go | 13 +- extensions/token/balance_utxo_test.go | 17 +- extensions/token/{ => decimal}/decimal.go | 8 +- extensions/token/decimal/decimal.pb.go | 156 ++++ extensions/token/decimal/decimal.proto | 10 + extensions/token/decimal/decimal.swagger.json | 49 ++ .../token/decimal/decimal.validator.pb.go | 19 + extensions/token/decimal_test.go | 3 +- extensions/token/token.pb.cc.go | 8 +- extensions/token/token.pb.go | 674 +++++++-------- extensions/token/token.proto | 11 +- extensions/token/token.swagger.json | 32 +- extensions/token/token.validator.pb.go | 1 + 32 files changed, 1267 insertions(+), 1068 deletions(-) rename extensions/token/{ => decimal}/decimal.go (80%) create mode 100644 extensions/token/decimal/decimal.pb.go create mode 100644 extensions/token/decimal/decimal.proto create mode 100644 extensions/token/decimal/decimal.swagger.json create mode 100644 extensions/token/decimal/decimal.validator.pb.go diff --git a/examples/erc20_utxo/erc20.go b/examples/erc20_utxo/erc20.go index 102a98d..2723f28 100644 --- a/examples/erc20_utxo/erc20.go +++ b/examples/erc20_utxo/erc20.go @@ -8,6 +8,7 @@ import ( "github.com/hyperledger-labs/cckit/examples/erc20_utxo/service/config" "github.com/hyperledger-labs/cckit/extensions/account" "github.com/hyperledger-labs/cckit/extensions/token" + "github.com/hyperledger-labs/cckit/extensions/token/decimal" "github.com/hyperledger-labs/cckit/router" ) @@ -16,7 +17,7 @@ var ( Name: `SomeToken`, Symbol: `@`, Decimals: 2, - TotalSupply: token.NewDecimal(big.NewInt(10000000)), + TotalSupply: decimal.New(big.NewInt(10000000)), } ) diff --git a/examples/erc20_utxo/erc20_test.go b/examples/erc20_utxo/erc20_test.go index 560e40e..4b23885 100644 --- a/examples/erc20_utxo/erc20_test.go +++ b/examples/erc20_utxo/erc20_test.go @@ -13,6 +13,7 @@ import ( "github.com/hyperledger-labs/cckit/examples/erc20_utxo/service/config" "github.com/hyperledger-labs/cckit/extensions/account" "github.com/hyperledger-labs/cckit/extensions/token" + "github.com/hyperledger-labs/cckit/extensions/token/decimal" "github.com/hyperledger-labs/cckit/identity" "github.com/hyperledger-labs/cckit/identity/testdata" testcc "github.com/hyperledger-labs/cckit/testing" @@ -98,13 +99,13 @@ var _ = Describe(`ERC`, func() { &token.BalanceId{Address: user1Address, Symbol: erc20_utxo.Token.Symbol}), &token.Balance{}).(*token.Balance) - Expect(b.Amount).To(Equal(token.NewDecimal(big.NewInt(0)))) + Expect(b.Amount).To(Equal(decimal.New(big.NewInt(0)))) }) }) Context(`transfer`, func() { - var transferAmount = token.NewDecimal(big.NewInt(100)) + var transferAmount = decimal.New(big.NewInt(100)) It(`Disallow to transfer balance by user with zero balance`, func() { expectcc.ResponseError( @@ -150,7 +151,7 @@ var _ = Describe(`ERC`, func() { Context(`Allowance`, func() { - var allowAmount = token.NewDecimal(big.NewInt(50)) + var allowAmount = decimal.New(big.NewInt(50)) It(`Allow to approve amount by owner for spender even if balance is zero`, func() { a := expectcc.PayloadIs( diff --git a/examples/erc20_utxo/service/allowance/allowance.go b/examples/erc20_utxo/service/allowance/allowance.go index c3e1ced..d3af1e9 100644 --- a/examples/erc20_utxo/service/allowance/allowance.go +++ b/examples/erc20_utxo/service/allowance/allowance.go @@ -6,6 +6,7 @@ import ( "github.com/hyperledger-labs/cckit/extensions/account" "github.com/hyperledger-labs/cckit/extensions/token" + "github.com/hyperledger-labs/cckit/extensions/token/decimal" "github.com/hyperledger-labs/cckit/router" "github.com/hyperledger-labs/cckit/state" ) @@ -120,7 +121,7 @@ func (s *Service) TransferFrom(ctx router.Context, req *TransferFromRequest) (*T req.Amount, allowance.Amount, ErrAllowanceInsufficient) } - allowance.Amount = token.BigIntSubAsDecimal(curAmount, reqAmount) + allowance.Amount = decimal.BigIntSubAsDecimal(curAmount, reqAmount) // sub from allowance if err := State(ctx).Put(allowance); err != nil { diff --git a/examples/erc20_utxo/service/allowance/allowance.pb.cc.go b/examples/erc20_utxo/service/allowance/allowance.pb.cc.go index 0302479..7dbf1d4 100644 --- a/examples/erc20_utxo/service/allowance/allowance.pb.cc.go +++ b/examples/erc20_utxo/service/allowance/allowance.pb.cc.go @@ -3,10 +3,10 @@ /* Package allowance contains - * chaincode methods names {service_name}Chaincode_{method_name} - * chaincode interface definition {service_name}Chaincode - * chaincode gateway definition {service_name}}Gateway - * chaincode service to cckit router registration func + - chaincode methods names {service_name}Chaincode_{method_name} + - chaincode interface definition {service_name}Chaincode + - chaincode gateway definition {service_name}}Gateway + - chaincode service to cckit router registration func */ package allowance diff --git a/examples/erc20_utxo/service/allowance/allowance.pb.go b/examples/erc20_utxo/service/allowance/allowance.pb.go index 1511648..8d27db7 100644 --- a/examples/erc20_utxo/service/allowance/allowance.pb.go +++ b/examples/erc20_utxo/service/allowance/allowance.pb.go @@ -8,7 +8,8 @@ package allowance import ( context "context" - token "github.com/hyperledger-labs/cckit/extensions/token" + _ "github.com/hyperledger-labs/cckit/extensions/token" + decimal "github.com/hyperledger-labs/cckit/extensions/token/decimal" _ "github.com/mwitkow/go-proto-validators" _ "google.golang.org/genproto/googleapis/api/annotations" grpc "google.golang.org/grpc" @@ -33,11 +34,11 @@ type ApproveRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Owner string `protobuf:"bytes,1,opt,name=owner,proto3" json:"owner,omitempty"` - Spender string `protobuf:"bytes,2,opt,name=spender,proto3" json:"spender,omitempty"` - Symbol string `protobuf:"bytes,3,opt,name=symbol,proto3" json:"symbol,omitempty"` - Group []string `protobuf:"bytes,4,rep,name=group,proto3" json:"group,omitempty"` - Amount *token.Decimal `protobuf:"bytes,5,opt,name=amount,proto3" json:"amount,omitempty"` + Owner string `protobuf:"bytes,1,opt,name=owner,proto3" json:"owner,omitempty"` + Spender string `protobuf:"bytes,2,opt,name=spender,proto3" json:"spender,omitempty"` + Symbol string `protobuf:"bytes,3,opt,name=symbol,proto3" json:"symbol,omitempty"` + Group []string `protobuf:"bytes,4,rep,name=group,proto3" json:"group,omitempty"` + Amount *decimal.Decimal `protobuf:"bytes,5,opt,name=amount,proto3" json:"amount,omitempty"` } func (x *ApproveRequest) Reset() { @@ -100,7 +101,7 @@ func (x *ApproveRequest) GetGroup() []string { return nil } -func (x *ApproveRequest) GetAmount() *token.Decimal { +func (x *ApproveRequest) GetAmount() *decimal.Decimal { if x != nil { return x.Amount } @@ -112,11 +113,11 @@ type TransferFromRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Owner string `protobuf:"bytes,1,opt,name=owner,proto3" json:"owner,omitempty"` - Recipient string `protobuf:"bytes,2,opt,name=recipient,proto3" json:"recipient,omitempty"` - Symbol string `protobuf:"bytes,3,opt,name=symbol,proto3" json:"symbol,omitempty"` - Group []string `protobuf:"bytes,4,rep,name=group,proto3" json:"group,omitempty"` - Amount *token.Decimal `protobuf:"bytes,5,opt,name=amount,proto3" json:"amount,omitempty"` + Owner string `protobuf:"bytes,1,opt,name=owner,proto3" json:"owner,omitempty"` + Recipient string `protobuf:"bytes,2,opt,name=recipient,proto3" json:"recipient,omitempty"` + Symbol string `protobuf:"bytes,3,opt,name=symbol,proto3" json:"symbol,omitempty"` + Group []string `protobuf:"bytes,4,rep,name=group,proto3" json:"group,omitempty"` + Amount *decimal.Decimal `protobuf:"bytes,5,opt,name=amount,proto3" json:"amount,omitempty"` } func (x *TransferFromRequest) Reset() { @@ -179,7 +180,7 @@ func (x *TransferFromRequest) GetGroup() []string { return nil } -func (x *TransferFromRequest) GetAmount() *token.Decimal { +func (x *TransferFromRequest) GetAmount() *decimal.Decimal { if x != nil { return x.Amount } @@ -191,11 +192,11 @@ type TransferFromResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Owner string `protobuf:"bytes,1,opt,name=owner,proto3" json:"owner,omitempty"` - Recipient string `protobuf:"bytes,2,opt,name=recipient,proto3" json:"recipient,omitempty"` - Symbol string `protobuf:"bytes,3,opt,name=symbol,proto3" json:"symbol,omitempty"` - Group []string `protobuf:"bytes,4,rep,name=group,proto3" json:"group,omitempty"` - Amount *token.Decimal `protobuf:"bytes,5,opt,name=amount,proto3" json:"amount,omitempty"` + Owner string `protobuf:"bytes,1,opt,name=owner,proto3" json:"owner,omitempty"` + Recipient string `protobuf:"bytes,2,opt,name=recipient,proto3" json:"recipient,omitempty"` + Symbol string `protobuf:"bytes,3,opt,name=symbol,proto3" json:"symbol,omitempty"` + Group []string `protobuf:"bytes,4,rep,name=group,proto3" json:"group,omitempty"` + Amount *decimal.Decimal `protobuf:"bytes,5,opt,name=amount,proto3" json:"amount,omitempty"` } func (x *TransferFromResponse) Reset() { @@ -258,7 +259,7 @@ func (x *TransferFromResponse) GetGroup() []string { return nil } -func (x *TransferFromResponse) GetAmount() *token.Decimal { +func (x *TransferFromResponse) GetAmount() *decimal.Decimal { if x != nil { return x.Amount } @@ -343,11 +344,11 @@ type Allowance struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Owner string `protobuf:"bytes,1,opt,name=owner,proto3" json:"owner,omitempty"` - Spender string `protobuf:"bytes,2,opt,name=spender,proto3" json:"spender,omitempty"` - Symbol string `protobuf:"bytes,3,opt,name=symbol,proto3" json:"symbol,omitempty"` - Group []string `protobuf:"bytes,4,rep,name=group,proto3" json:"group,omitempty"` - Amount *token.Decimal `protobuf:"bytes,5,opt,name=amount,proto3" json:"amount,omitempty"` + Owner string `protobuf:"bytes,1,opt,name=owner,proto3" json:"owner,omitempty"` + Spender string `protobuf:"bytes,2,opt,name=spender,proto3" json:"spender,omitempty"` + Symbol string `protobuf:"bytes,3,opt,name=symbol,proto3" json:"symbol,omitempty"` + Group []string `protobuf:"bytes,4,rep,name=group,proto3" json:"group,omitempty"` + Amount *decimal.Decimal `protobuf:"bytes,5,opt,name=amount,proto3" json:"amount,omitempty"` } func (x *Allowance) Reset() { @@ -410,7 +411,7 @@ func (x *Allowance) GetGroup() []string { return nil } -func (x *Allowance) GetAmount() *token.Decimal { +func (x *Allowance) GetAmount() *decimal.Decimal { if x != nil { return x.Amount } @@ -422,11 +423,11 @@ type Operation struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Owner string `protobuf:"bytes,1,opt,name=owner,proto3" json:"owner,omitempty"` - Spender string `protobuf:"bytes,2,opt,name=spender,proto3" json:"spender,omitempty"` - Symbol string `protobuf:"bytes,3,opt,name=symbol,proto3" json:"symbol,omitempty"` - Group []string `protobuf:"bytes,4,rep,name=group,proto3" json:"group,omitempty"` - Amount *token.Decimal `protobuf:"bytes,5,opt,name=amount,proto3" json:"amount,omitempty"` + Owner string `protobuf:"bytes,1,opt,name=owner,proto3" json:"owner,omitempty"` + Spender string `protobuf:"bytes,2,opt,name=spender,proto3" json:"spender,omitempty"` + Symbol string `protobuf:"bytes,3,opt,name=symbol,proto3" json:"symbol,omitempty"` + Group []string `protobuf:"bytes,4,rep,name=group,proto3" json:"group,omitempty"` + Amount *decimal.Decimal `protobuf:"bytes,5,opt,name=amount,proto3" json:"amount,omitempty"` } func (x *Operation) Reset() { @@ -489,7 +490,7 @@ func (x *Operation) GetGroup() []string { return nil } -func (x *Operation) GetAmount() *token.Decimal { +func (x *Operation) GetAmount() *decimal.Decimal { if x != nil { return x.Amount } @@ -550,11 +551,11 @@ type Approved struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Owner string `protobuf:"bytes,1,opt,name=owner,proto3" json:"owner,omitempty"` - Spender string `protobuf:"bytes,2,opt,name=spender,proto3" json:"spender,omitempty"` - Symbol string `protobuf:"bytes,3,opt,name=symbol,proto3" json:"symbol,omitempty"` - Group []string `protobuf:"bytes,4,rep,name=group,proto3" json:"group,omitempty"` - Amount *token.Decimal `protobuf:"bytes,5,opt,name=amount,proto3" json:"amount,omitempty"` + Owner string `protobuf:"bytes,1,opt,name=owner,proto3" json:"owner,omitempty"` + Spender string `protobuf:"bytes,2,opt,name=spender,proto3" json:"spender,omitempty"` + Symbol string `protobuf:"bytes,3,opt,name=symbol,proto3" json:"symbol,omitempty"` + Group []string `protobuf:"bytes,4,rep,name=group,proto3" json:"group,omitempty"` + Amount *decimal.Decimal `protobuf:"bytes,5,opt,name=amount,proto3" json:"amount,omitempty"` } func (x *Approved) Reset() { @@ -617,7 +618,7 @@ func (x *Approved) GetGroup() []string { return nil } -func (x *Approved) GetAmount() *token.Decimal { +func (x *Approved) GetAmount() *decimal.Decimal { if x != nil { return x.Amount } @@ -630,12 +631,12 @@ type TransferredFrom struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Owner string `protobuf:"bytes,1,opt,name=owner,proto3" json:"owner,omitempty"` - Spender string `protobuf:"bytes,2,opt,name=spender,proto3" json:"spender,omitempty"` - Recipient string `protobuf:"bytes,3,opt,name=recipient,proto3" json:"recipient,omitempty"` - Symbol string `protobuf:"bytes,4,opt,name=symbol,proto3" json:"symbol,omitempty"` - Group []string `protobuf:"bytes,5,rep,name=group,proto3" json:"group,omitempty"` - Amount *token.Decimal `protobuf:"bytes,6,opt,name=amount,proto3" json:"amount,omitempty"` + Owner string `protobuf:"bytes,1,opt,name=owner,proto3" json:"owner,omitempty"` + Spender string `protobuf:"bytes,2,opt,name=spender,proto3" json:"spender,omitempty"` + Recipient string `protobuf:"bytes,3,opt,name=recipient,proto3" json:"recipient,omitempty"` + Symbol string `protobuf:"bytes,4,opt,name=symbol,proto3" json:"symbol,omitempty"` + Group []string `protobuf:"bytes,5,rep,name=group,proto3" json:"group,omitempty"` + Amount *decimal.Decimal `protobuf:"bytes,6,opt,name=amount,proto3" json:"amount,omitempty"` } func (x *TransferredFrom) Reset() { @@ -705,7 +706,7 @@ func (x *TransferredFrom) GetGroup() []string { return nil } -func (x *TransferredFrom) GetAmount() *token.Decimal { +func (x *TransferredFrom) GetAmount() *decimal.Decimal { if x != nil { return x.Amount } @@ -728,138 +729,143 @@ var file_erc20_utxo_service_allowance_allowance_proto_rawDesc = []byte{ 0x74, 0x6f, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x13, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x22, 0xc7, 0x01, 0x0a, 0x0e, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x05, 0x6f, 0x77, - 0x6e, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x07, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x07, 0x73, 0x70, - 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x06, 0x73, - 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x3f, 0x0a, 0x06, 0x61, - 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x63, - 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x42, 0x06, 0xe2, 0xdf, - 0x1f, 0x02, 0x58, 0x01, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xd0, 0x01, 0x0a, - 0x13, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x46, 0x72, 0x6f, 0x6d, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x05, 0x6f, 0x77, 0x6e, - 0x65, 0x72, 0x12, 0x24, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x09, 0x72, - 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, + 0x74, 0x6f, 0x1a, 0x1b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2f, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, + 0x6c, 0x2f, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, + 0xcf, 0x01, 0x0a, 0x0e, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, + 0x12, 0x20, 0x0a, 0x07, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x07, 0x73, 0x70, 0x65, 0x6e, 0x64, + 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, + 0x6f, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x04, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x47, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, + 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x2e, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x2e, 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, + 0x6c, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, + 0x74, 0x22, 0xd8, 0x01, 0x0a, 0x13, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x46, 0x72, + 0x6f, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x05, 0x6f, 0x77, 0x6e, + 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, + 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, + 0x69, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, + 0x58, 0x01, 0x52, 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x0a, + 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, + 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x14, 0x0a, + 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x12, 0x47, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x64, 0x65, 0x63, + 0x69, 0x6d, 0x61, 0x6c, 0x2e, 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x42, 0x06, 0xe2, 0xdf, + 0x1f, 0x02, 0x58, 0x01, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xb9, 0x01, 0x0a, + 0x14, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x46, 0x72, 0x6f, 0x6d, 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, 0x12, 0x1c, 0x0a, 0x09, 0x72, + 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, + 0x62, 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, + 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x3f, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, + 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x2e, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x2e, 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, + 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x83, 0x01, 0x0a, 0x0b, 0x41, 0x6c, 0x6c, + 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, + 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x07, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x65, + 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, + 0x07, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x3f, - 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, - 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, - 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x42, - 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, - 0xb1, 0x01, 0x0a, 0x14, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x46, 0x72, 0x6f, 0x6d, - 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, 0x12, 0x1c, - 0x0a, 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, - 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, - 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x04, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x37, 0x0a, 0x06, 0x61, 0x6d, - 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x63, 0x6b, - 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x2e, 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x52, 0x06, 0x61, 0x6d, 0x6f, - 0x75, 0x6e, 0x74, 0x22, 0x83, 0x01, 0x0a, 0x0b, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, - 0x65, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, - 0x72, 0x12, 0x20, 0x0a, 0x07, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x07, 0x73, 0x70, 0x65, 0x6e, - 0x64, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x06, 0x73, 0x79, 0x6d, - 0x62, 0x6f, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x04, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22, 0xa2, 0x01, 0x0a, 0x09, 0x41, 0x6c, - 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x18, 0x0a, - 0x07, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x73, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, - 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, - 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x37, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, - 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x44, - 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xa2, - 0x01, 0x0a, 0x09, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, + 0x70, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22, 0xaa, + 0x01, 0x0a, 0x09, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x04, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x37, 0x0a, 0x06, 0x61, 0x6d, - 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x63, 0x6b, + 0x03, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x3f, 0x0a, 0x06, 0x61, 0x6d, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x2e, 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x52, 0x06, 0x61, 0x6d, 0x6f, - 0x75, 0x6e, 0x74, 0x22, 0x54, 0x0a, 0x0a, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, - 0x73, 0x12, 0x46, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x30, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x2e, 0x65, 0x72, 0x63, 0x32, - 0x30, 0x5f, 0x75, 0x74, 0x78, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x61, - 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, - 0x63, 0x65, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0xa1, 0x01, 0x0a, 0x08, 0x41, 0x70, - 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, - 0x73, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, - 0x70, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x14, - 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x12, 0x37, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, - 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x44, 0x65, - 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xc6, 0x01, - 0x0a, 0x0f, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x46, 0x72, 0x6f, - 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x70, 0x65, 0x6e, 0x64, - 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x65, - 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x12, - 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x37, 0x0a, - 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, - 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x52, 0x06, - 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x32, 0xfd, 0x03, 0x0a, 0x10, 0x41, 0x6c, 0x6c, 0x6f, 0x77, - 0x61, 0x6e, 0x63, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xab, 0x01, 0x0a, 0x0c, - 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x32, 0x2e, 0x65, - 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x5f, 0x75, 0x74, - 0x78, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, - 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, - 0x1a, 0x30, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x2e, 0x65, 0x72, 0x63, 0x32, - 0x30, 0x5f, 0x75, 0x74, 0x78, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x61, - 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, - 0x63, 0x65, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x2f, 0x61, 0x6c, 0x6c, - 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x2f, 0x7b, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x7d, 0x2f, 0x7b, - 0x73, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x7d, 0x2f, 0x7b, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, - 0x7d, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x12, 0x8e, 0x01, 0x0a, 0x07, 0x41, 0x70, - 0x70, 0x72, 0x6f, 0x76, 0x65, 0x12, 0x35, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, + 0x6b, 0x65, 0x6e, 0x2e, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x2e, 0x44, 0x65, 0x63, 0x69, + 0x6d, 0x61, 0x6c, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xaa, 0x01, 0x0a, 0x09, + 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x77, 0x6e, + 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, + 0x18, 0x0a, 0x07, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, + 0x62, 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, + 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x3f, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, + 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x2e, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x2e, 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, + 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x54, 0x0a, 0x0a, 0x41, 0x6c, 0x6c, 0x6f, + 0x77, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x46, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x5f, 0x75, 0x74, 0x78, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x41, 0x70, - 0x70, 0x72, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x65, + 0x69, 0x63, 0x65, 0x2e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x41, 0x6c, + 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0xa9, + 0x01, 0x0a, 0x08, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6f, + 0x77, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, + 0x72, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, + 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, + 0x62, 0x6f, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x3f, 0x0a, 0x06, 0x61, 0x6d, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x63, 0x6b, 0x69, + 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x2e, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x2e, 0x44, 0x65, 0x63, 0x69, 0x6d, + 0x61, 0x6c, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xce, 0x01, 0x0a, 0x0f, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x12, 0x14, + 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, + 0x77, 0x6e, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x1c, + 0x0a, 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, + 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, + 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x05, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x3f, 0x0a, 0x06, 0x61, 0x6d, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x63, 0x6b, + 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x2e, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x2e, 0x44, 0x65, 0x63, 0x69, + 0x6d, 0x61, 0x6c, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x32, 0xfd, 0x03, 0x0a, 0x10, + 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x12, 0xab, 0x01, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, + 0x65, 0x12, 0x32, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x2e, 0x65, 0x72, 0x63, + 0x32, 0x30, 0x5f, 0x75, 0x74, 0x78, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, + 0x6e, 0x63, 0x65, 0x49, 0x64, 0x1a, 0x30, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, + 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x5f, 0x75, 0x74, 0x78, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x41, 0x6c, + 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12, + 0x2d, 0x2f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x2f, 0x7b, 0x6f, 0x77, 0x6e, + 0x65, 0x72, 0x7d, 0x2f, 0x7b, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x7d, 0x2f, 0x7b, 0x73, + 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x7d, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x12, 0x8e, + 0x01, 0x0a, 0x07, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x12, 0x35, 0x2e, 0x65, 0x78, 0x61, + 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x5f, 0x75, 0x74, 0x78, 0x6f, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, + 0x63, 0x65, 0x2e, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x30, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x2e, 0x65, 0x72, 0x63, + 0x32, 0x30, 0x5f, 0x75, 0x74, 0x78, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, + 0x6e, 0x63, 0x65, 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x22, 0x12, 0x2f, 0x61, 0x6c, + 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x2f, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x12, + 0xa9, 0x01, 0x0a, 0x0c, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x46, 0x72, 0x6f, 0x6d, + 0x12, 0x3a, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x2e, 0x65, 0x72, 0x63, 0x32, + 0x30, 0x5f, 0x75, 0x74, 0x78, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x61, + 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, + 0x72, 0x46, 0x72, 0x6f, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x5f, 0x75, 0x74, 0x78, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, - 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x1a, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x22, 0x12, 0x2f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, - 0x63, 0x65, 0x2f, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x12, 0xa9, 0x01, 0x0a, 0x0c, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x46, 0x72, 0x6f, 0x6d, 0x12, 0x3a, 0x2e, 0x65, 0x78, - 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x5f, 0x75, 0x74, 0x78, - 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x61, - 0x6e, 0x63, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x46, 0x72, 0x6f, 0x6d, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, - 0x65, 0x73, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x5f, 0x75, 0x74, 0x78, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x2e, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x46, 0x72, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x22, 0x18, 0x2f, 0x61, - 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, - 0x72, 0x2d, 0x66, 0x72, 0x6f, 0x6d, 0x42, 0x49, 0x5a, 0x47, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x68, 0x79, 0x70, 0x65, 0x72, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, - 0x2d, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2f, 0x65, 0x78, 0x61, 0x6d, - 0x70, 0x6c, 0x65, 0x73, 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x5f, 0x75, 0x74, 0x78, 0x6f, 0x2f, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, - 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x46, 0x72, 0x6f, + 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x1a, 0x22, 0x18, 0x2f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x2f, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2d, 0x66, 0x72, 0x6f, 0x6d, 0x42, 0x49, 0x5a, 0x47, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x68, 0x79, 0x70, 0x65, 0x72, 0x6c, + 0x65, 0x64, 0x67, 0x65, 0x72, 0x2d, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x63, 0x63, 0x6b, 0x69, 0x74, + 0x2f, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x5f, + 0x75, 0x74, 0x78, 0x6f, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x61, 0x6c, 0x6c, + 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -885,17 +891,17 @@ var file_erc20_utxo_service_allowance_allowance_proto_goTypes = []interface{}{ (*Allowances)(nil), // 6: examples.erc20_utxo.service.allowance.Allowances (*Approved)(nil), // 7: examples.erc20_utxo.service.allowance.Approved (*TransferredFrom)(nil), // 8: examples.erc20_utxo.service.allowance.TransferredFrom - (*token.Decimal)(nil), // 9: cckit.extensions.token.Decimal + (*decimal.Decimal)(nil), // 9: cckit.extensions.token.decimal.Decimal } var file_erc20_utxo_service_allowance_allowance_proto_depIdxs = []int32{ - 9, // 0: examples.erc20_utxo.service.allowance.ApproveRequest.amount:type_name -> cckit.extensions.token.Decimal - 9, // 1: examples.erc20_utxo.service.allowance.TransferFromRequest.amount:type_name -> cckit.extensions.token.Decimal - 9, // 2: examples.erc20_utxo.service.allowance.TransferFromResponse.amount:type_name -> cckit.extensions.token.Decimal - 9, // 3: examples.erc20_utxo.service.allowance.Allowance.amount:type_name -> cckit.extensions.token.Decimal - 9, // 4: examples.erc20_utxo.service.allowance.Operation.amount:type_name -> cckit.extensions.token.Decimal + 9, // 0: examples.erc20_utxo.service.allowance.ApproveRequest.amount:type_name -> cckit.extensions.token.decimal.Decimal + 9, // 1: examples.erc20_utxo.service.allowance.TransferFromRequest.amount:type_name -> cckit.extensions.token.decimal.Decimal + 9, // 2: examples.erc20_utxo.service.allowance.TransferFromResponse.amount:type_name -> cckit.extensions.token.decimal.Decimal + 9, // 3: examples.erc20_utxo.service.allowance.Allowance.amount:type_name -> cckit.extensions.token.decimal.Decimal + 9, // 4: examples.erc20_utxo.service.allowance.Operation.amount:type_name -> cckit.extensions.token.decimal.Decimal 4, // 5: examples.erc20_utxo.service.allowance.Allowances.items:type_name -> examples.erc20_utxo.service.allowance.Allowance - 9, // 6: examples.erc20_utxo.service.allowance.Approved.amount:type_name -> cckit.extensions.token.Decimal - 9, // 7: examples.erc20_utxo.service.allowance.TransferredFrom.amount:type_name -> cckit.extensions.token.Decimal + 9, // 6: examples.erc20_utxo.service.allowance.Approved.amount:type_name -> cckit.extensions.token.decimal.Decimal + 9, // 7: examples.erc20_utxo.service.allowance.TransferredFrom.amount:type_name -> cckit.extensions.token.decimal.Decimal 3, // 8: examples.erc20_utxo.service.allowance.AllowanceService.GetAllowance:input_type -> examples.erc20_utxo.service.allowance.AllowanceId 0, // 9: examples.erc20_utxo.service.allowance.AllowanceService.Approve:input_type -> examples.erc20_utxo.service.allowance.ApproveRequest 1, // 10: examples.erc20_utxo.service.allowance.AllowanceService.TransferFrom:input_type -> examples.erc20_utxo.service.allowance.TransferFromRequest diff --git a/examples/erc20_utxo/service/allowance/allowance.proto b/examples/erc20_utxo/service/allowance/allowance.proto index a6747f3..5cbdd50 100644 --- a/examples/erc20_utxo/service/allowance/allowance.proto +++ b/examples/erc20_utxo/service/allowance/allowance.proto @@ -8,6 +8,7 @@ import "google/protobuf/empty.proto"; import "mwitkow/go-proto-validators/validator.proto"; import "token/balance.proto"; +import "token/decimal/decimal.proto"; service AllowanceService { // Returns the remaining number of tokens that spender will be allowed to spend on behalf of owner through transfersender. @@ -40,7 +41,7 @@ message ApproveRequest { string spender = 2 [(validator.field) = {string_not_empty : true}]; string symbol = 3 [(validator.field) = {string_not_empty : true}]; repeated string group = 4; - cckit.extensions.token.Decimal amount = 5 [(validator.field) = {string_not_empty : true}]; + cckit.extensions.token.decimal.Decimal amount = 5 [(validator.field) = {string_not_empty : true}]; } message TransferFromRequest { @@ -48,7 +49,7 @@ message TransferFromRequest { string recipient = 2 [(validator.field) = {string_not_empty : true}]; string symbol = 3 [(validator.field) = {string_not_empty : true}]; repeated string group = 4; - cckit.extensions.token.Decimal amount = 5 [(validator.field) = {string_not_empty : true}]; + cckit.extensions.token.decimal.Decimal amount = 5 [(validator.field) = {string_not_empty : true}]; } message TransferFromResponse { @@ -56,7 +57,7 @@ message TransferFromResponse { string recipient = 2; string symbol = 3 ; repeated string group = 4; - cckit.extensions.token.Decimal amount = 5; + cckit.extensions.token.decimal.Decimal amount = 5; } // Id: Allowance identifier @@ -73,7 +74,7 @@ message Allowance { string spender = 2; string symbol = 3 ; repeated string group = 4; - cckit.extensions.token.Decimal amount = 5; + cckit.extensions.token.decimal.Decimal amount = 5; } message Operation { @@ -81,7 +82,7 @@ message Operation { string spender = 2; string symbol = 3 ; repeated string group = 4; - cckit.extensions.token.Decimal amount = 5; + cckit.extensions.token.decimal.Decimal amount = 5; } // List: @@ -95,7 +96,7 @@ message Approved { string spender = 2; string symbol = 3 ; repeated string group = 4; - cckit.extensions.token.Decimal amount = 5; + cckit.extensions.token.decimal.Decimal amount = 5; } // Event: TransferredFrom event is emitted when TransferFrom method has been invoked @@ -105,5 +106,5 @@ message TransferredFrom { string recipient = 3; string symbol = 4 ; repeated string group = 5; - cckit.extensions.token.Decimal amount = 6; + cckit.extensions.token.decimal.Decimal amount = 6; } \ No newline at end of file diff --git a/examples/erc20_utxo/service/allowance/allowance.swagger.json b/examples/erc20_utxo/service/allowance/allowance.swagger.json index 7f1f6d1..19b8732 100644 --- a/examples/erc20_utxo/service/allowance/allowance.swagger.json +++ b/examples/erc20_utxo/service/allowance/allowance.swagger.json @@ -132,7 +132,7 @@ } }, "amount": { - "$ref": "#/definitions/tokenDecimal" + "$ref": "#/definitions/decimalDecimal" } }, "title": "State: Allowance" @@ -156,7 +156,19 @@ } }, "amount": { - "$ref": "#/definitions/tokenDecimal" + "$ref": "#/definitions/decimalDecimal" + } + } + }, + "decimalDecimal": { + "type": "object", + "properties": { + "scale": { + "type": "integer", + "format": "int32" + }, + "value": { + "type": "string" } } }, @@ -192,18 +204,6 @@ } } } - }, - "tokenDecimal": { - "type": "object", - "properties": { - "scale": { - "type": "integer", - "format": "int32" - }, - "value": { - "type": "string" - } - } } } } diff --git a/examples/erc20_utxo/service/allowance/allowance.validator.pb.go b/examples/erc20_utxo/service/allowance/allowance.validator.pb.go index ebb5e16..8f30ce7 100644 --- a/examples/erc20_utxo/service/allowance/allowance.validator.pb.go +++ b/examples/erc20_utxo/service/allowance/allowance.validator.pb.go @@ -7,6 +7,7 @@ import ( fmt "fmt" proto "github.com/golang/protobuf/proto" _ "github.com/hyperledger-labs/cckit/extensions/token" + _ "github.com/hyperledger-labs/cckit/extensions/token/decimal" _ "github.com/mwitkow/go-proto-validators" github_com_mwitkow_go_proto_validators "github.com/mwitkow/go-proto-validators" _ "google.golang.org/genproto/googleapis/api/annotations" diff --git a/examples/erc20_utxo/service/config/config.pb.cc.go b/examples/erc20_utxo/service/config/config.pb.cc.go index 1aa9644..f7a1479 100644 --- a/examples/erc20_utxo/service/config/config.pb.cc.go +++ b/examples/erc20_utxo/service/config/config.pb.cc.go @@ -3,10 +3,10 @@ /* Package config contains - * chaincode methods names {service_name}Chaincode_{method_name} - * chaincode interface definition {service_name}Chaincode - * chaincode gateway definition {service_name}}Gateway - * chaincode service to cckit router registration func + - chaincode methods names {service_name}Chaincode_{method_name} + - chaincode interface definition {service_name}Chaincode + - chaincode gateway definition {service_name}}Gateway + - chaincode service to cckit router registration func */ package config diff --git a/examples/erc20_utxo/service/config/config.pb.go b/examples/erc20_utxo/service/config/config.pb.go index fa2a705..ffc4ed3 100644 --- a/examples/erc20_utxo/service/config/config.pb.go +++ b/examples/erc20_utxo/service/config/config.pb.go @@ -8,7 +8,7 @@ package config import ( context "context" - token "github.com/hyperledger-labs/cckit/extensions/token" + decimal "github.com/hyperledger-labs/cckit/extensions/token/decimal" _ "google.golang.org/genproto/googleapis/api/annotations" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" @@ -173,7 +173,7 @@ type TotalSupplyResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TotalSupply *token.Decimal `protobuf:"bytes,1,opt,name=total_supply,json=totalSupply,proto3" json:"total_supply,omitempty"` + TotalSupply *decimal.Decimal `protobuf:"bytes,1,opt,name=total_supply,json=totalSupply,proto3" json:"total_supply,omitempty"` } func (x *TotalSupplyResponse) Reset() { @@ -208,7 +208,7 @@ func (*TotalSupplyResponse) Descriptor() ([]byte, []int) { return file_erc20_utxo_service_config_config_proto_rawDescGZIP(), []int{3} } -func (x *TotalSupplyResponse) GetTotalSupply() *token.Decimal { +func (x *TotalSupplyResponse) GetTotalSupply() *decimal.Decimal { if x != nil { return x.TotalSupply } @@ -226,20 +226,21 @@ var file_erc20_utxo_service_config_config_proto_rawDesc = []byte{ 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, - 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x13, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2f, 0x62, - 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x22, 0x0a, 0x0c, - 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x22, 0x28, 0x0a, 0x0e, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x22, 0x2e, 0x0a, 0x10, 0x44, 0x65, - 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, - 0x0a, 0x08, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x08, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x73, 0x22, 0x59, 0x0a, 0x13, 0x54, 0x6f, - 0x74, 0x61, 0x6c, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x42, 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6c, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, - 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2f, 0x64, + 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x2f, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x22, 0x0a, 0x0c, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x28, 0x0a, 0x0e, 0x53, 0x79, 0x6d, 0x62, + 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, + 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, + 0x6f, 0x6c, 0x22, 0x2e, 0x0a, 0x10, 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, + 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, + 0x6c, 0x73, 0x22, 0x61, 0x0a, 0x13, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x75, 0x70, 0x70, 0x6c, + 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x0c, 0x74, 0x6f, 0x74, + 0x61, 0x6c, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x27, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x2e, 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x52, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x32, 0xdf, 0x03, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x68, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x4e, 0x61, @@ -297,11 +298,11 @@ var file_erc20_utxo_service_config_config_proto_goTypes = []interface{}{ (*SymbolResponse)(nil), // 1: examples.erc20_utxo.service.config.SymbolResponse (*DecimalsResponse)(nil), // 2: examples.erc20_utxo.service.config.DecimalsResponse (*TotalSupplyResponse)(nil), // 3: examples.erc20_utxo.service.config.TotalSupplyResponse - (*token.Decimal)(nil), // 4: cckit.extensions.token.Decimal + (*decimal.Decimal)(nil), // 4: cckit.extensions.token.decimal.Decimal (*emptypb.Empty)(nil), // 5: google.protobuf.Empty } var file_erc20_utxo_service_config_config_proto_depIdxs = []int32{ - 4, // 0: examples.erc20_utxo.service.config.TotalSupplyResponse.total_supply:type_name -> cckit.extensions.token.Decimal + 4, // 0: examples.erc20_utxo.service.config.TotalSupplyResponse.total_supply:type_name -> cckit.extensions.token.decimal.Decimal 5, // 1: examples.erc20_utxo.service.config.ConfigService.GetName:input_type -> google.protobuf.Empty 5, // 2: examples.erc20_utxo.service.config.ConfigService.GetSymbol:input_type -> google.protobuf.Empty 5, // 3: examples.erc20_utxo.service.config.ConfigService.GetDecimals:input_type -> google.protobuf.Empty diff --git a/examples/erc20_utxo/service/config/config.proto b/examples/erc20_utxo/service/config/config.proto index 2736634..e49a767 100644 --- a/examples/erc20_utxo/service/config/config.proto +++ b/examples/erc20_utxo/service/config/config.proto @@ -6,7 +6,7 @@ package examples.erc20_utxo.service.config; import "google/api/annotations.proto"; import "google/protobuf/empty.proto"; -import "token/balance.proto"; +import "token/decimal/decimal.proto"; // ERC-20 Config getters service ConfigService { @@ -54,5 +54,5 @@ message DecimalsResponse { } message TotalSupplyResponse { - cckit.extensions.token.Decimal total_supply = 1; + cckit.extensions.token.decimal.Decimal total_supply = 1; } \ No newline at end of file diff --git a/examples/erc20_utxo/service/config/config.swagger.json b/examples/erc20_utxo/service/config/config.swagger.json index 5bc8519..4e69436 100644 --- a/examples/erc20_utxo/service/config/config.swagger.json +++ b/examples/erc20_utxo/service/config/config.swagger.json @@ -134,7 +134,19 @@ "type": "object", "properties": { "total_supply": { - "$ref": "#/definitions/tokenDecimal" + "$ref": "#/definitions/decimalDecimal" + } + } + }, + "decimalDecimal": { + "type": "object", + "properties": { + "scale": { + "type": "integer", + "format": "int32" + }, + "value": { + "type": "string" } } }, @@ -170,18 +182,6 @@ } } } - }, - "tokenDecimal": { - "type": "object", - "properties": { - "scale": { - "type": "integer", - "format": "int32" - }, - "value": { - "type": "string" - } - } } } } diff --git a/examples/erc20_utxo/service/config/config.validator.pb.go b/examples/erc20_utxo/service/config/config.validator.pb.go index eca8c39..ec8b667 100644 --- a/examples/erc20_utxo/service/config/config.validator.pb.go +++ b/examples/erc20_utxo/service/config/config.validator.pb.go @@ -6,7 +6,7 @@ package config import ( fmt "fmt" proto "github.com/golang/protobuf/proto" - _ "github.com/hyperledger-labs/cckit/extensions/token" + _ "github.com/hyperledger-labs/cckit/extensions/token/decimal" github_com_mwitkow_go_proto_validators "github.com/mwitkow/go-proto-validators" _ "google.golang.org/genproto/googleapis/api/annotations" _ "google.golang.org/protobuf/types/known/emptypb" diff --git a/extensions/token/balance.pb.cc.go b/extensions/token/balance.pb.cc.go index da56b35..5e09085 100644 --- a/extensions/token/balance.pb.cc.go +++ b/extensions/token/balance.pb.cc.go @@ -3,10 +3,10 @@ /* Package token contains - * chaincode methods names {service_name}Chaincode_{method_name} - * chaincode interface definition {service_name}Chaincode - * chaincode gateway definition {service_name}}Gateway - * chaincode service to cckit router registration func + - chaincode methods names {service_name}Chaincode_{method_name} + - chaincode interface definition {service_name}Chaincode + - chaincode gateway definition {service_name}}Gateway + - chaincode service to cckit router registration func */ package token diff --git a/extensions/token/balance.pb.go b/extensions/token/balance.pb.go index 81d6003..7b9d713 100644 --- a/extensions/token/balance.pb.go +++ b/extensions/token/balance.pb.go @@ -8,6 +8,7 @@ package token import ( context "context" + decimal "github.com/hyperledger-labs/cckit/extensions/token/decimal" _ "github.com/mwitkow/go-proto-validators" _ "google.golang.org/genproto/googleapis/api/annotations" grpc "google.golang.org/grpc" @@ -82,61 +83,6 @@ func (OperationType) EnumDescriptor() ([]byte, []int) { return file_token_balance_proto_rawDescGZIP(), []int{0} } -type Decimal struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Scale int32 `protobuf:"varint,1,opt,name=scale,proto3" json:"scale,omitempty"` // scale ( same as decimal in ERC-20 ) - Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` // big.Int as string -} - -func (x *Decimal) Reset() { - *x = Decimal{} - if protoimpl.UnsafeEnabled { - mi := &file_token_balance_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Decimal) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Decimal) ProtoMessage() {} - -func (x *Decimal) ProtoReflect() protoreflect.Message { - mi := &file_token_balance_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Decimal.ProtoReflect.Descriptor instead. -func (*Decimal) Descriptor() ([]byte, []int) { - return file_token_balance_proto_rawDescGZIP(), []int{0} -} - -func (x *Decimal) GetScale() int32 { - if x != nil { - return x.Scale - } - return 0 -} - -func (x *Decimal) GetValue() string { - if x != nil { - return x.Value - } - return "" -} - type TransferRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -145,14 +91,14 @@ type TransferRequest struct { Recipient string `protobuf:"bytes,1,opt,name=recipient,proto3" json:"recipient,omitempty"` Symbol string `protobuf:"bytes,2,opt,name=symbol,proto3" json:"symbol,omitempty"` Group []string `protobuf:"bytes,3,rep,name=group,proto3" json:"group,omitempty"` - Amount *Decimal `protobuf:"bytes,4,opt,name=amount,proto3" json:"amount,omitempty"` + Amount *decimal.Decimal `protobuf:"bytes,4,opt,name=amount,proto3" json:"amount,omitempty"` Meta []*AddMetaRequest `protobuf:"bytes,5,rep,name=meta,proto3" json:"meta,omitempty"` } func (x *TransferRequest) Reset() { *x = TransferRequest{} if protoimpl.UnsafeEnabled { - mi := &file_token_balance_proto_msgTypes[1] + mi := &file_token_balance_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -165,7 +111,7 @@ func (x *TransferRequest) String() string { func (*TransferRequest) ProtoMessage() {} func (x *TransferRequest) ProtoReflect() protoreflect.Message { - mi := &file_token_balance_proto_msgTypes[1] + mi := &file_token_balance_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -178,7 +124,7 @@ func (x *TransferRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use TransferRequest.ProtoReflect.Descriptor instead. func (*TransferRequest) Descriptor() ([]byte, []int) { - return file_token_balance_proto_rawDescGZIP(), []int{1} + return file_token_balance_proto_rawDescGZIP(), []int{0} } func (x *TransferRequest) GetRecipient() string { @@ -202,7 +148,7 @@ func (x *TransferRequest) GetGroup() []string { return nil } -func (x *TransferRequest) GetAmount() *Decimal { +func (x *TransferRequest) GetAmount() *decimal.Decimal { if x != nil { return x.Amount } @@ -221,18 +167,18 @@ type TransferResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Sender string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty"` - Recipient string `protobuf:"bytes,2,opt,name=recipient,proto3" json:"recipient,omitempty"` - Symbol string `protobuf:"bytes,3,opt,name=symbol,proto3" json:"symbol,omitempty"` - Group []string `protobuf:"bytes,4,rep,name=group,proto3" json:"group,omitempty"` - Amount *Decimal `protobuf:"bytes,5,opt,name=amount,proto3" json:"amount,omitempty"` - Meta []*Meta `protobuf:"bytes,6,rep,name=meta,proto3" json:"meta,omitempty"` + Sender string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty"` + Recipient string `protobuf:"bytes,2,opt,name=recipient,proto3" json:"recipient,omitempty"` + Symbol string `protobuf:"bytes,3,opt,name=symbol,proto3" json:"symbol,omitempty"` + Group []string `protobuf:"bytes,4,rep,name=group,proto3" json:"group,omitempty"` + Amount *decimal.Decimal `protobuf:"bytes,5,opt,name=amount,proto3" json:"amount,omitempty"` + Meta []*Meta `protobuf:"bytes,6,rep,name=meta,proto3" json:"meta,omitempty"` } func (x *TransferResponse) Reset() { *x = TransferResponse{} if protoimpl.UnsafeEnabled { - mi := &file_token_balance_proto_msgTypes[2] + mi := &file_token_balance_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -245,7 +191,7 @@ func (x *TransferResponse) String() string { func (*TransferResponse) ProtoMessage() {} func (x *TransferResponse) ProtoReflect() protoreflect.Message { - mi := &file_token_balance_proto_msgTypes[2] + mi := &file_token_balance_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -258,7 +204,7 @@ func (x *TransferResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use TransferResponse.ProtoReflect.Descriptor instead. func (*TransferResponse) Descriptor() ([]byte, []int) { - return file_token_balance_proto_rawDescGZIP(), []int{2} + return file_token_balance_proto_rawDescGZIP(), []int{1} } func (x *TransferResponse) GetSender() string { @@ -289,7 +235,7 @@ func (x *TransferResponse) GetGroup() []string { return nil } -func (x *TransferResponse) GetAmount() *Decimal { +func (x *TransferResponse) GetAmount() *decimal.Decimal { if x != nil { return x.Amount } @@ -314,7 +260,7 @@ type TransferBatchRequest struct { func (x *TransferBatchRequest) Reset() { *x = TransferBatchRequest{} if protoimpl.UnsafeEnabled { - mi := &file_token_balance_proto_msgTypes[3] + mi := &file_token_balance_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -327,7 +273,7 @@ func (x *TransferBatchRequest) String() string { func (*TransferBatchRequest) ProtoMessage() {} func (x *TransferBatchRequest) ProtoReflect() protoreflect.Message { - mi := &file_token_balance_proto_msgTypes[3] + mi := &file_token_balance_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -340,7 +286,7 @@ func (x *TransferBatchRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use TransferBatchRequest.ProtoReflect.Descriptor instead. func (*TransferBatchRequest) Descriptor() ([]byte, []int) { - return file_token_balance_proto_rawDescGZIP(), []int{3} + return file_token_balance_proto_rawDescGZIP(), []int{2} } func (x *TransferBatchRequest) GetTransfers() []*TransferRequest { @@ -361,7 +307,7 @@ type TransferBatchResponse struct { func (x *TransferBatchResponse) Reset() { *x = TransferBatchResponse{} if protoimpl.UnsafeEnabled { - mi := &file_token_balance_proto_msgTypes[4] + mi := &file_token_balance_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -374,7 +320,7 @@ func (x *TransferBatchResponse) String() string { func (*TransferBatchResponse) ProtoMessage() {} func (x *TransferBatchResponse) ProtoReflect() protoreflect.Message { - mi := &file_token_balance_proto_msgTypes[4] + mi := &file_token_balance_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -387,7 +333,7 @@ func (x *TransferBatchResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use TransferBatchResponse.ProtoReflect.Descriptor instead. func (*TransferBatchResponse) Descriptor() ([]byte, []int) { - return file_token_balance_proto_rawDescGZIP(), []int{4} + return file_token_balance_proto_rawDescGZIP(), []int{3} } func (x *TransferBatchResponse) GetTransfers() []*TransferResponse { @@ -411,7 +357,7 @@ type BalanceId struct { func (x *BalanceId) Reset() { *x = BalanceId{} if protoimpl.UnsafeEnabled { - mi := &file_token_balance_proto_msgTypes[5] + mi := &file_token_balance_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -424,7 +370,7 @@ func (x *BalanceId) String() string { func (*BalanceId) ProtoMessage() {} func (x *BalanceId) ProtoReflect() protoreflect.Message { - mi := &file_token_balance_proto_msgTypes[5] + mi := &file_token_balance_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -437,7 +383,7 @@ func (x *BalanceId) ProtoReflect() protoreflect.Message { // Deprecated: Use BalanceId.ProtoReflect.Descriptor instead. func (*BalanceId) Descriptor() ([]byte, []int) { - return file_token_balance_proto_rawDescGZIP(), []int{5} + return file_token_balance_proto_rawDescGZIP(), []int{4} } func (x *BalanceId) GetSymbol() string { @@ -474,13 +420,13 @@ type Balance struct { // account address Address string `protobuf:"bytes,3,opt,name=address,proto3" json:"address,omitempty"` // Balance amount - Amount *Decimal `protobuf:"bytes,4,opt,name=amount,proto3" json:"amount,omitempty"` + Amount *decimal.Decimal `protobuf:"bytes,4,opt,name=amount,proto3" json:"amount,omitempty"` } func (x *Balance) Reset() { *x = Balance{} if protoimpl.UnsafeEnabled { - mi := &file_token_balance_proto_msgTypes[6] + mi := &file_token_balance_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -493,7 +439,7 @@ func (x *Balance) String() string { func (*Balance) ProtoMessage() {} func (x *Balance) ProtoReflect() protoreflect.Message { - mi := &file_token_balance_proto_msgTypes[6] + mi := &file_token_balance_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -506,7 +452,7 @@ func (x *Balance) ProtoReflect() protoreflect.Message { // Deprecated: Use Balance.ProtoReflect.Descriptor instead. func (*Balance) Descriptor() ([]byte, []int) { - return file_token_balance_proto_rawDescGZIP(), []int{6} + return file_token_balance_proto_rawDescGZIP(), []int{5} } func (x *Balance) GetSymbol() string { @@ -530,7 +476,7 @@ func (x *Balance) GetAddress() string { return "" } -func (x *Balance) GetAmount() *Decimal { +func (x *Balance) GetAmount() *decimal.Decimal { if x != nil { return x.Amount } @@ -549,7 +495,7 @@ type Balances struct { func (x *Balances) Reset() { *x = Balances{} if protoimpl.UnsafeEnabled { - mi := &file_token_balance_proto_msgTypes[7] + mi := &file_token_balance_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -562,7 +508,7 @@ func (x *Balances) String() string { func (*Balances) ProtoMessage() {} func (x *Balances) ProtoReflect() protoreflect.Message { - mi := &file_token_balance_proto_msgTypes[7] + mi := &file_token_balance_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -575,7 +521,7 @@ func (x *Balances) ProtoReflect() protoreflect.Message { // Deprecated: Use Balances.ProtoReflect.Descriptor instead. func (*Balances) Descriptor() ([]byte, []int) { - return file_token_balance_proto_rawDescGZIP(), []int{7} + return file_token_balance_proto_rawDescGZIP(), []int{6} } func (x *Balances) GetItems() []*Balance { @@ -590,18 +536,18 @@ type Operation struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Sender string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty"` - Recipient string `protobuf:"bytes,2,opt,name=recipient,proto3" json:"recipient,omitempty"` - Symbol string `protobuf:"bytes,3,opt,name=symbol,proto3" json:"symbol,omitempty"` - Group []string `protobuf:"bytes,4,rep,name=group,proto3" json:"group,omitempty"` - Amount *Decimal `protobuf:"bytes,5,opt,name=amount,proto3" json:"amount,omitempty"` - Type OperationType `protobuf:"varint,6,opt,name=type,proto3,enum=cckit.extensions.token.OperationType" json:"type,omitempty"` + Sender string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty"` + Recipient string `protobuf:"bytes,2,opt,name=recipient,proto3" json:"recipient,omitempty"` + Symbol string `protobuf:"bytes,3,opt,name=symbol,proto3" json:"symbol,omitempty"` + Group []string `protobuf:"bytes,4,rep,name=group,proto3" json:"group,omitempty"` + Amount *decimal.Decimal `protobuf:"bytes,5,opt,name=amount,proto3" json:"amount,omitempty"` + Type OperationType `protobuf:"varint,6,opt,name=type,proto3,enum=cckit.extensions.token.OperationType" json:"type,omitempty"` } func (x *Operation) Reset() { *x = Operation{} if protoimpl.UnsafeEnabled { - mi := &file_token_balance_proto_msgTypes[8] + mi := &file_token_balance_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -614,7 +560,7 @@ func (x *Operation) String() string { func (*Operation) ProtoMessage() {} func (x *Operation) ProtoReflect() protoreflect.Message { - mi := &file_token_balance_proto_msgTypes[8] + mi := &file_token_balance_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -627,7 +573,7 @@ func (x *Operation) ProtoReflect() protoreflect.Message { // Deprecated: Use Operation.ProtoReflect.Descriptor instead. func (*Operation) Descriptor() ([]byte, []int) { - return file_token_balance_proto_rawDescGZIP(), []int{8} + return file_token_balance_proto_rawDescGZIP(), []int{7} } func (x *Operation) GetSender() string { @@ -658,7 +604,7 @@ func (x *Operation) GetGroup() []string { return nil } -func (x *Operation) GetAmount() *Decimal { +func (x *Operation) GetAmount() *decimal.Decimal { if x != nil { return x.Amount } @@ -681,14 +627,14 @@ type TransferOperation struct { Recipient string `protobuf:"bytes,2,opt,name=recipient,proto3" json:"recipient,omitempty"` Symbol string `protobuf:"bytes,3,opt,name=symbol,proto3" json:"symbol,omitempty"` Group []string `protobuf:"bytes,4,rep,name=group,proto3" json:"group,omitempty"` - Amount *Decimal `protobuf:"bytes,5,opt,name=amount,proto3" json:"amount,omitempty"` + Amount *decimal.Decimal `protobuf:"bytes,5,opt,name=amount,proto3" json:"amount,omitempty"` Meta []*AddMetaRequest `protobuf:"bytes,6,rep,name=meta,proto3" json:"meta,omitempty"` } func (x *TransferOperation) Reset() { *x = TransferOperation{} if protoimpl.UnsafeEnabled { - mi := &file_token_balance_proto_msgTypes[9] + mi := &file_token_balance_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -701,7 +647,7 @@ func (x *TransferOperation) String() string { func (*TransferOperation) ProtoMessage() {} func (x *TransferOperation) ProtoReflect() protoreflect.Message { - mi := &file_token_balance_proto_msgTypes[9] + mi := &file_token_balance_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -714,7 +660,7 @@ func (x *TransferOperation) ProtoReflect() protoreflect.Message { // Deprecated: Use TransferOperation.ProtoReflect.Descriptor instead. func (*TransferOperation) Descriptor() ([]byte, []int) { - return file_token_balance_proto_rawDescGZIP(), []int{9} + return file_token_balance_proto_rawDescGZIP(), []int{8} } func (x *TransferOperation) GetSender() string { @@ -745,7 +691,7 @@ func (x *TransferOperation) GetGroup() []string { return nil } -func (x *TransferOperation) GetAmount() *Decimal { +func (x *TransferOperation) GetAmount() *decimal.Decimal { if x != nil { return x.Amount } @@ -767,14 +713,14 @@ type BalanceOperation struct { Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` Symbol string `protobuf:"bytes,2,opt,name=symbol,proto3" json:"symbol,omitempty"` Group []string `protobuf:"bytes,3,rep,name=group,proto3" json:"group,omitempty"` - Amount *Decimal `protobuf:"bytes,4,opt,name=amount,proto3" json:"amount,omitempty"` + Amount *decimal.Decimal `protobuf:"bytes,4,opt,name=amount,proto3" json:"amount,omitempty"` Meta []*AddMetaRequest `protobuf:"bytes,5,rep,name=meta,proto3" json:"meta,omitempty"` } func (x *BalanceOperation) Reset() { *x = BalanceOperation{} if protoimpl.UnsafeEnabled { - mi := &file_token_balance_proto_msgTypes[10] + mi := &file_token_balance_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -787,7 +733,7 @@ func (x *BalanceOperation) String() string { func (*BalanceOperation) ProtoMessage() {} func (x *BalanceOperation) ProtoReflect() protoreflect.Message { - mi := &file_token_balance_proto_msgTypes[10] + mi := &file_token_balance_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -800,7 +746,7 @@ func (x *BalanceOperation) ProtoReflect() protoreflect.Message { // Deprecated: Use BalanceOperation.ProtoReflect.Descriptor instead. func (*BalanceOperation) Descriptor() ([]byte, []int) { - return file_token_balance_proto_rawDescGZIP(), []int{10} + return file_token_balance_proto_rawDescGZIP(), []int{9} } func (x *BalanceOperation) GetAddress() string { @@ -824,7 +770,7 @@ func (x *BalanceOperation) GetGroup() []string { return nil } -func (x *BalanceOperation) GetAmount() *Decimal { +func (x *BalanceOperation) GetAmount() *decimal.Decimal { if x != nil { return x.Amount } @@ -844,18 +790,18 @@ type Transferred struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Sender string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty"` - Recipient string `protobuf:"bytes,2,opt,name=recipient,proto3" json:"recipient,omitempty"` - Symbol string `protobuf:"bytes,3,opt,name=symbol,proto3" json:"symbol,omitempty"` - Group []string `protobuf:"bytes,4,rep,name=group,proto3" json:"group,omitempty"` - Amount *Decimal `protobuf:"bytes,5,opt,name=amount,proto3" json:"amount,omitempty"` - Meta []*Meta `protobuf:"bytes,6,rep,name=meta,proto3" json:"meta,omitempty"` + Sender string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty"` + Recipient string `protobuf:"bytes,2,opt,name=recipient,proto3" json:"recipient,omitempty"` + Symbol string `protobuf:"bytes,3,opt,name=symbol,proto3" json:"symbol,omitempty"` + Group []string `protobuf:"bytes,4,rep,name=group,proto3" json:"group,omitempty"` + Amount *decimal.Decimal `protobuf:"bytes,5,opt,name=amount,proto3" json:"amount,omitempty"` + Meta []*Meta `protobuf:"bytes,6,rep,name=meta,proto3" json:"meta,omitempty"` } func (x *Transferred) Reset() { *x = Transferred{} if protoimpl.UnsafeEnabled { - mi := &file_token_balance_proto_msgTypes[11] + mi := &file_token_balance_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -868,7 +814,7 @@ func (x *Transferred) String() string { func (*Transferred) ProtoMessage() {} func (x *Transferred) ProtoReflect() protoreflect.Message { - mi := &file_token_balance_proto_msgTypes[11] + mi := &file_token_balance_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -881,7 +827,7 @@ func (x *Transferred) ProtoReflect() protoreflect.Message { // Deprecated: Use Transferred.ProtoReflect.Descriptor instead. func (*Transferred) Descriptor() ([]byte, []int) { - return file_token_balance_proto_rawDescGZIP(), []int{11} + return file_token_balance_proto_rawDescGZIP(), []int{10} } func (x *Transferred) GetSender() string { @@ -912,7 +858,7 @@ func (x *Transferred) GetGroup() []string { return nil } -func (x *Transferred) GetAmount() *Decimal { +func (x *Transferred) GetAmount() *decimal.Decimal { if x != nil { return x.Amount } @@ -938,7 +884,7 @@ type TransferredBatch struct { func (x *TransferredBatch) Reset() { *x = TransferredBatch{} if protoimpl.UnsafeEnabled { - mi := &file_token_balance_proto_msgTypes[12] + mi := &file_token_balance_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -951,7 +897,7 @@ func (x *TransferredBatch) String() string { func (*TransferredBatch) ProtoMessage() {} func (x *TransferredBatch) ProtoReflect() protoreflect.Message { - mi := &file_token_balance_proto_msgTypes[12] + mi := &file_token_balance_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -964,7 +910,7 @@ func (x *TransferredBatch) ProtoReflect() protoreflect.Message { // Deprecated: Use TransferredBatch.ProtoReflect.Descriptor instead. func (*TransferredBatch) Descriptor() ([]byte, []int) { - return file_token_balance_proto_rawDescGZIP(), []int{12} + return file_token_balance_proto_rawDescGZIP(), []int{11} } func (x *TransferredBatch) GetTransfers() []*Transferred { @@ -986,7 +932,7 @@ type AddMetaRequest struct { func (x *AddMetaRequest) Reset() { *x = AddMetaRequest{} if protoimpl.UnsafeEnabled { - mi := &file_token_balance_proto_msgTypes[13] + mi := &file_token_balance_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -999,7 +945,7 @@ func (x *AddMetaRequest) String() string { func (*AddMetaRequest) ProtoMessage() {} func (x *AddMetaRequest) ProtoReflect() protoreflect.Message { - mi := &file_token_balance_proto_msgTypes[13] + mi := &file_token_balance_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1012,7 +958,7 @@ func (x *AddMetaRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AddMetaRequest.ProtoReflect.Descriptor instead. func (*AddMetaRequest) Descriptor() ([]byte, []int) { - return file_token_balance_proto_rawDescGZIP(), []int{13} + return file_token_balance_proto_rawDescGZIP(), []int{12} } func (x *AddMetaRequest) GetKey() string { @@ -1041,7 +987,7 @@ type Meta struct { func (x *Meta) Reset() { *x = Meta{} if protoimpl.UnsafeEnabled { - mi := &file_token_balance_proto_msgTypes[14] + mi := &file_token_balance_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1054,7 +1000,7 @@ func (x *Meta) String() string { func (*Meta) ProtoMessage() {} func (x *Meta) ProtoReflect() protoreflect.Message { - mi := &file_token_balance_proto_msgTypes[14] + mi := &file_token_balance_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1067,7 +1013,7 @@ func (x *Meta) ProtoReflect() protoreflect.Message { // Deprecated: Use Meta.ProtoReflect.Descriptor instead. func (*Meta) Descriptor() ([]byte, []int) { - return file_token_balance_proto_rawDescGZIP(), []int{14} + return file_token_balance_proto_rawDescGZIP(), []int{13} } func (x *Meta) GetKey() string { @@ -1099,7 +1045,7 @@ type UTXOId struct { func (x *UTXOId) Reset() { *x = UTXOId{} if protoimpl.UnsafeEnabled { - mi := &file_token_balance_proto_msgTypes[15] + mi := &file_token_balance_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1112,7 +1058,7 @@ func (x *UTXOId) String() string { func (*UTXOId) ProtoMessage() {} func (x *UTXOId) ProtoReflect() protoreflect.Message { - mi := &file_token_balance_proto_msgTypes[15] + mi := &file_token_balance_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1125,7 +1071,7 @@ func (x *UTXOId) ProtoReflect() protoreflect.Message { // Deprecated: Use UTXOId.ProtoReflect.Descriptor instead. func (*UTXOId) Descriptor() ([]byte, []int) { - return file_token_balance_proto_rawDescGZIP(), []int{15} + return file_token_balance_proto_rawDescGZIP(), []int{14} } func (x *UTXOId) GetSymbol() string { @@ -1162,19 +1108,19 @@ type UTXO struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Symbol string `protobuf:"bytes,1,opt,name=symbol,proto3" json:"symbol,omitempty"` // Token symbol - Group string `protobuf:"bytes,2,opt,name=group,proto3" json:"group,omitempty"` // Token groups, joined - Address string `protobuf:"bytes,3,opt,name=address,proto3" json:"address,omitempty"` // account address - TxId string `protobuf:"bytes,4,opt,name=tx_id,json=txId,proto3" json:"tx_id,omitempty"` // Transaction Id - Amount *Decimal `protobuf:"bytes,6,opt,name=amount,proto3" json:"amount,omitempty"` // amount - Locked bool `protobuf:"varint,7,opt,name=locked,proto3" json:"locked,omitempty"` - Meta []*Meta `protobuf:"bytes,8,rep,name=meta,proto3" json:"meta,omitempty"` // meta + Symbol string `protobuf:"bytes,1,opt,name=symbol,proto3" json:"symbol,omitempty"` // Token symbol + Group string `protobuf:"bytes,2,opt,name=group,proto3" json:"group,omitempty"` // Token groups, joined + Address string `protobuf:"bytes,3,opt,name=address,proto3" json:"address,omitempty"` // account address + TxId string `protobuf:"bytes,4,opt,name=tx_id,json=txId,proto3" json:"tx_id,omitempty"` // Transaction Id + Amount *decimal.Decimal `protobuf:"bytes,6,opt,name=amount,proto3" json:"amount,omitempty"` // amount + Locked bool `protobuf:"varint,7,opt,name=locked,proto3" json:"locked,omitempty"` + Meta []*Meta `protobuf:"bytes,8,rep,name=meta,proto3" json:"meta,omitempty"` // meta } func (x *UTXO) Reset() { *x = UTXO{} if protoimpl.UnsafeEnabled { - mi := &file_token_balance_proto_msgTypes[16] + mi := &file_token_balance_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1187,7 +1133,7 @@ func (x *UTXO) String() string { func (*UTXO) ProtoMessage() {} func (x *UTXO) ProtoReflect() protoreflect.Message { - mi := &file_token_balance_proto_msgTypes[16] + mi := &file_token_balance_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1200,7 +1146,7 @@ func (x *UTXO) ProtoReflect() protoreflect.Message { // Deprecated: Use UTXO.ProtoReflect.Descriptor instead. func (*UTXO) Descriptor() ([]byte, []int) { - return file_token_balance_proto_rawDescGZIP(), []int{16} + return file_token_balance_proto_rawDescGZIP(), []int{15} } func (x *UTXO) GetSymbol() string { @@ -1231,7 +1177,7 @@ func (x *UTXO) GetTxId() string { return "" } -func (x *UTXO) GetAmount() *Decimal { +func (x *UTXO) GetAmount() *decimal.Decimal { if x != nil { return x.Amount } @@ -1263,7 +1209,7 @@ type UTXOs struct { func (x *UTXOs) Reset() { *x = UTXOs{} if protoimpl.UnsafeEnabled { - mi := &file_token_balance_proto_msgTypes[17] + mi := &file_token_balance_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1276,7 +1222,7 @@ func (x *UTXOs) String() string { func (*UTXOs) ProtoMessage() {} func (x *UTXOs) ProtoReflect() protoreflect.Message { - mi := &file_token_balance_proto_msgTypes[17] + mi := &file_token_balance_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1289,7 +1235,7 @@ func (x *UTXOs) ProtoReflect() protoreflect.Message { // Deprecated: Use UTXOs.ProtoReflect.Descriptor instead. func (*UTXOs) Descriptor() ([]byte, []int) { - return file_token_balance_proto_rawDescGZIP(), []int{17} + return file_token_balance_proto_rawDescGZIP(), []int{16} } func (x *UTXOs) GetItems() []*UTXO { @@ -1311,214 +1257,216 @@ var file_token_balance_proto_rawDesc = []byte{ 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2b, 0x6d, 0x77, 0x69, 0x74, 0x6b, 0x6f, 0x77, 0x2f, 0x67, 0x6f, 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x35, 0x0a, 0x07, 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, - 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x05, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xea, 0x01, 0x0a, - 0x0f, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x24, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x09, 0x72, 0x65, 0x63, - 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x06, - 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x3f, 0x0a, 0x06, - 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, - 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x42, 0x06, 0xe2, - 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3a, 0x0a, - 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x63, - 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x22, 0xe1, 0x01, 0x0a, 0x10, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, - 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, - 0x69, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x14, 0x0a, 0x05, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x12, 0x37, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x44, 0x65, 0x63, 0x69, - 0x6d, 0x61, 0x6c, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x04, 0x6d, - 0x65, 0x74, 0x61, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x63, 0x6b, 0x69, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2f, 0x64, 0x65, 0x63, + 0x69, 0x6d, 0x61, 0x6c, 0x2f, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x22, 0xf2, 0x01, 0x0a, 0x0f, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, + 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, + 0x01, 0x52, 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x06, + 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, + 0x1f, 0x02, 0x58, 0x01, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x14, 0x0a, 0x05, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x12, 0x47, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x64, 0x65, 0x63, 0x69, + 0x6d, 0x61, 0x6c, 0x2e, 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x42, 0x06, 0xe2, 0xdf, 0x1f, + 0x02, 0x58, 0x01, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3a, 0x0a, 0x04, 0x6d, + 0x65, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x22, 0x65, 0x0a, - 0x14, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4d, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, - 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, - 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x60, 0x01, 0x52, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x66, 0x65, 0x72, 0x73, 0x22, 0x5f, 0x0a, 0x15, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, - 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, - 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x28, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, - 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x09, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x66, 0x65, 0x72, 0x73, 0x22, 0x53, 0x0a, 0x09, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, - 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, + 0x65, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x22, 0xe9, 0x01, 0x0a, 0x10, 0x54, 0x72, 0x61, 0x6e, + 0x73, 0x66, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, + 0x6e, 0x64, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, + 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x8a, 0x01, 0x0a, 0x07, 0x42, - 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 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, 0x14, - 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x37, - 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, + 0x6f, 0x75, 0x70, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x12, 0x3f, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x27, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, + 0x6c, 0x2e, 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x30, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1c, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, + 0x65, 0x74, 0x61, 0x22, 0x65, 0x0a, 0x14, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x42, + 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4d, 0x0a, 0x09, 0x74, + 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, - 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x52, - 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x41, 0x0a, 0x08, 0x42, 0x61, 0x6c, 0x61, 0x6e, - 0x63, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x42, 0x61, 0x6c, 0x61, - 0x6e, 0x63, 0x65, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0xe3, 0x01, 0x0a, 0x09, 0x4f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, - 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, - 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x16, - 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, - 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x37, 0x0a, 0x06, - 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, - 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x52, 0x06, 0x61, - 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, - 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x22, 0x8c, 0x02, 0x0a, 0x11, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x06, - 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, - 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, - 0x01, 0x52, 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x06, - 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, - 0x1f, 0x02, 0x58, 0x01, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x14, 0x0a, 0x05, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x12, 0x3f, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x44, 0x65, 0x63, 0x69, + 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x60, 0x01, 0x52, + 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x22, 0x5f, 0x0a, 0x15, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, + 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x52, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x22, 0x53, 0x0a, 0x09, 0x42, + 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, + 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, + 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x22, 0x92, 0x01, 0x0a, 0x07, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 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, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x12, 0x3f, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, + 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x64, 0x65, + 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x2e, 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x52, 0x06, 0x61, + 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x41, 0x0a, 0x08, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, + 0x73, 0x12, 0x35, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1f, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, + 0x65, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0xeb, 0x01, 0x0a, 0x09, 0x4f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x1c, + 0x0a, 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, + 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, + 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x3f, 0x0a, 0x06, 0x61, 0x6d, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x63, 0x6b, + 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x2e, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x2e, 0x44, 0x65, 0x63, 0x69, + 0x6d, 0x61, 0x6c, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x63, 0x63, 0x6b, 0x69, + 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, + 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x94, 0x02, 0x0a, 0x11, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x06, + 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, + 0x1f, 0x02, 0x58, 0x01, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x09, + 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, + 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, + 0x6f, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x04, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x47, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, + 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x2e, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x2e, 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, + 0x6c, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x3a, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x26, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x4d, 0x65, 0x74, 0x61, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x22, 0xef, 0x01, + 0x0a, 0x10, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x07, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x12, 0x1e, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x06, 0x73, 0x79, + 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x47, 0x0a, 0x06, 0x61, 0x6d, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x63, 0x6b, + 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x2e, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x2e, 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x06, 0x61, 0x6d, 0x6f, - 0x75, 0x6e, 0x74, 0x12, 0x3a, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x06, 0x20, 0x03, 0x28, + 0x75, 0x6e, 0x74, 0x12, 0x3a, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x22, - 0xe7, 0x01, 0x0a, 0x10, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x07, 0x61, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1e, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x06, - 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x3f, 0x0a, 0x06, - 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, - 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x42, 0x06, 0xe2, - 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3a, 0x0a, - 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x63, + 0xe4, 0x01, 0x0a, 0x0b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x12, + 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, + 0x69, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x63, 0x69, + 0x70, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x14, 0x0a, + 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x12, 0x3f, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x64, 0x65, 0x63, + 0x69, 0x6d, 0x61, 0x6c, 0x2e, 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x52, 0x06, 0x61, 0x6d, + 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x06, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, + 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x22, 0x55, 0x0a, 0x10, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x65, 0x72, 0x72, 0x65, 0x64, 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x41, 0x0a, 0x09, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, + 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x72, + 0x65, 0x64, 0x52, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x22, 0x48, 0x0a, + 0x0e, 0x41, 0x64, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x18, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, + 0x1f, 0x02, 0x58, 0x01, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1c, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x2e, 0x0a, 0x04, 0x4d, 0x65, 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, 0x06, 0x55, 0x54, 0x58, 0x4f, 0x49, + 0x64, 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, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, + 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x13, 0x0a, 0x05, 0x74, 0x78, 0x5f, + 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x78, 0x49, 0x64, 0x22, 0xee, + 0x01, 0x0a, 0x04, 0x55, 0x54, 0x58, 0x4f, 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, + 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, + 0x13, 0x0a, 0x05, 0x74, 0x78, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x74, 0x78, 0x49, 0x64, 0x12, 0x3f, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, + 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x64, 0x65, + 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x2e, 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x52, 0x06, 0x61, + 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x12, 0x30, 0x0a, + 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x22, 0xdc, 0x01, 0x0a, 0x0b, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, - 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, - 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x12, - 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x37, 0x0a, - 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, + 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x22, + 0x3b, 0x0a, 0x05, 0x55, 0x54, 0x58, 0x4f, 0x73, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, + 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x2e, 0x55, 0x54, 0x58, 0x4f, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2a, 0x7a, 0x0a, 0x0d, + 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x15, 0x0a, + 0x11, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, + 0x57, 0x4e, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, + 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x49, 0x4e, 0x54, 0x10, 0x02, + 0x12, 0x12, 0x0a, 0x0e, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x55, + 0x52, 0x4e, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0x04, 0x32, 0xa2, 0x04, 0x0a, 0x0e, 0x42, 0x61, 0x6c, + 0x61, 0x6e, 0x63, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x84, 0x01, 0x0a, 0x0a, + 0x47, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x21, 0x2e, 0x63, 0x63, 0x6b, + 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x2e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x1a, 0x1f, 0x2e, + 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x32, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x12, 0x2a, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2f, 0x62, + 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x7d, + 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x2f, 0x7b, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x7d, 0x12, 0x7d, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, + 0x65, 0x73, 0x12, 0x21, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x42, 0x61, 0x6c, 0x61, + 0x6e, 0x63, 0x65, 0x49, 0x64, 0x1a, 0x20, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x42, + 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x12, + 0x20, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, + 0x2f, 0x7b, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x7d, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x7d, 0x12, 0x79, 0x0a, 0x08, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x27, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x52, 0x06, - 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x06, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, - 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x4d, 0x65, - 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x22, 0x55, 0x0a, 0x10, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x41, 0x0a, 0x09, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x23, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, - 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, - 0x72, 0x72, 0x65, 0x64, 0x52, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x22, - 0x48, 0x0a, 0x0e, 0x41, 0x64, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x18, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, - 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1c, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, - 0x58, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x2e, 0x0a, 0x04, 0x4d, 0x65, 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, 0x06, 0x55, 0x54, 0x58, - 0x4f, 0x49, 0x64, 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, 0x14, 0x0a, 0x05, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x13, 0x0a, 0x05, 0x74, - 0x78, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x78, 0x49, 0x64, - 0x22, 0xe6, 0x01, 0x0a, 0x04, 0x55, 0x54, 0x58, 0x4f, 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, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x12, 0x13, 0x0a, 0x05, 0x74, 0x78, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x74, 0x78, 0x49, 0x64, 0x12, 0x37, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, + 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, - 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, - 0x16, 0x0a, 0x06, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x06, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x12, 0x30, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, - 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, - 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x4d, - 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x22, 0x3b, 0x0a, 0x05, 0x55, 0x54, 0x58, - 0x4f, 0x73, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, - 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x55, 0x54, 0x58, 0x4f, 0x52, - 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2a, 0x7a, 0x0a, 0x0d, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x4f, 0x50, 0x45, 0x52, 0x41, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x16, - 0x0a, 0x12, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x41, 0x4e, - 0x53, 0x46, 0x45, 0x52, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x49, 0x4e, 0x54, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x4f, 0x50, - 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x55, 0x52, 0x4e, 0x10, 0x03, 0x12, 0x12, - 0x0a, 0x0e, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x4f, 0x43, 0x4b, - 0x10, 0x04, 0x32, 0xa2, 0x04, 0x0a, 0x0e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x84, 0x01, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6c, - 0x61, 0x6e, 0x63, 0x65, 0x12, 0x21, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, - 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x42, 0x61, - 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x1a, 0x1f, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, - 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x2e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x32, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, - 0x12, 0x2a, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, - 0x73, 0x2f, 0x7b, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x7d, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x7d, 0x2f, 0x7b, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x7d, 0x12, 0x7d, 0x0a, 0x0c, - 0x4c, 0x69, 0x73, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x21, 0x2e, 0x63, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x3a, 0x01, 0x2a, 0x22, 0x0f, 0x2f, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x8e, 0x01, 0x0a, + 0x0d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x2c, + 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, + 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x1a, - 0x20, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, - 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, - 0x73, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, 0x2f, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x2f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x79, 0x6d, 0x62, - 0x6f, 0x6c, 0x7d, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x12, 0x79, 0x0a, 0x08, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x27, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, - 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x28, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, - 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x14, 0x22, 0x0f, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x66, 0x65, 0x72, 0x3a, 0x01, 0x2a, 0x12, 0x8e, 0x01, 0x0a, 0x0d, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x66, 0x65, 0x72, 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x2c, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, - 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, - 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x22, 0x15, 0x2f, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2d, 0x62, - 0x61, 0x74, 0x63, 0x68, 0x3a, 0x01, 0x2a, 0x42, 0x34, 0x5a, 0x32, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x68, 0x79, 0x70, 0x65, 0x72, 0x6c, 0x65, 0x64, 0x67, 0x65, - 0x72, 0x2d, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2f, 0x65, 0x78, 0x74, - 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x42, 0x61, + 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x1a, 0x3a, 0x01, 0x2a, 0x22, 0x15, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2f, 0x74, + 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2d, 0x62, 0x61, 0x74, 0x63, 0x68, 0x42, 0x34, 0x5a, + 0x32, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x68, 0x79, 0x70, 0x65, + 0x72, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2d, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x63, 0x63, 0x6b, + 0x69, 0x74, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1534,57 +1482,57 @@ func file_token_balance_proto_rawDescGZIP() []byte { } var file_token_balance_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_token_balance_proto_msgTypes = make([]protoimpl.MessageInfo, 18) +var file_token_balance_proto_msgTypes = make([]protoimpl.MessageInfo, 17) var file_token_balance_proto_goTypes = []interface{}{ (OperationType)(0), // 0: cckit.extensions.token.OperationType - (*Decimal)(nil), // 1: cckit.extensions.token.Decimal - (*TransferRequest)(nil), // 2: cckit.extensions.token.TransferRequest - (*TransferResponse)(nil), // 3: cckit.extensions.token.TransferResponse - (*TransferBatchRequest)(nil), // 4: cckit.extensions.token.TransferBatchRequest - (*TransferBatchResponse)(nil), // 5: cckit.extensions.token.TransferBatchResponse - (*BalanceId)(nil), // 6: cckit.extensions.token.BalanceId - (*Balance)(nil), // 7: cckit.extensions.token.Balance - (*Balances)(nil), // 8: cckit.extensions.token.Balances - (*Operation)(nil), // 9: cckit.extensions.token.Operation - (*TransferOperation)(nil), // 10: cckit.extensions.token.TransferOperation - (*BalanceOperation)(nil), // 11: cckit.extensions.token.BalanceOperation - (*Transferred)(nil), // 12: cckit.extensions.token.Transferred - (*TransferredBatch)(nil), // 13: cckit.extensions.token.TransferredBatch - (*AddMetaRequest)(nil), // 14: cckit.extensions.token.AddMetaRequest - (*Meta)(nil), // 15: cckit.extensions.token.Meta - (*UTXOId)(nil), // 16: cckit.extensions.token.UTXOId - (*UTXO)(nil), // 17: cckit.extensions.token.UTXO - (*UTXOs)(nil), // 18: cckit.extensions.token.UTXOs + (*TransferRequest)(nil), // 1: cckit.extensions.token.TransferRequest + (*TransferResponse)(nil), // 2: cckit.extensions.token.TransferResponse + (*TransferBatchRequest)(nil), // 3: cckit.extensions.token.TransferBatchRequest + (*TransferBatchResponse)(nil), // 4: cckit.extensions.token.TransferBatchResponse + (*BalanceId)(nil), // 5: cckit.extensions.token.BalanceId + (*Balance)(nil), // 6: cckit.extensions.token.Balance + (*Balances)(nil), // 7: cckit.extensions.token.Balances + (*Operation)(nil), // 8: cckit.extensions.token.Operation + (*TransferOperation)(nil), // 9: cckit.extensions.token.TransferOperation + (*BalanceOperation)(nil), // 10: cckit.extensions.token.BalanceOperation + (*Transferred)(nil), // 11: cckit.extensions.token.Transferred + (*TransferredBatch)(nil), // 12: cckit.extensions.token.TransferredBatch + (*AddMetaRequest)(nil), // 13: cckit.extensions.token.AddMetaRequest + (*Meta)(nil), // 14: cckit.extensions.token.Meta + (*UTXOId)(nil), // 15: cckit.extensions.token.UTXOId + (*UTXO)(nil), // 16: cckit.extensions.token.UTXO + (*UTXOs)(nil), // 17: cckit.extensions.token.UTXOs + (*decimal.Decimal)(nil), // 18: cckit.extensions.token.decimal.Decimal } var file_token_balance_proto_depIdxs = []int32{ - 1, // 0: cckit.extensions.token.TransferRequest.amount:type_name -> cckit.extensions.token.Decimal - 14, // 1: cckit.extensions.token.TransferRequest.meta:type_name -> cckit.extensions.token.AddMetaRequest - 1, // 2: cckit.extensions.token.TransferResponse.amount:type_name -> cckit.extensions.token.Decimal - 15, // 3: cckit.extensions.token.TransferResponse.meta:type_name -> cckit.extensions.token.Meta - 2, // 4: cckit.extensions.token.TransferBatchRequest.transfers:type_name -> cckit.extensions.token.TransferRequest - 3, // 5: cckit.extensions.token.TransferBatchResponse.transfers:type_name -> cckit.extensions.token.TransferResponse - 1, // 6: cckit.extensions.token.Balance.amount:type_name -> cckit.extensions.token.Decimal - 7, // 7: cckit.extensions.token.Balances.items:type_name -> cckit.extensions.token.Balance - 1, // 8: cckit.extensions.token.Operation.amount:type_name -> cckit.extensions.token.Decimal + 18, // 0: cckit.extensions.token.TransferRequest.amount:type_name -> cckit.extensions.token.decimal.Decimal + 13, // 1: cckit.extensions.token.TransferRequest.meta:type_name -> cckit.extensions.token.AddMetaRequest + 18, // 2: cckit.extensions.token.TransferResponse.amount:type_name -> cckit.extensions.token.decimal.Decimal + 14, // 3: cckit.extensions.token.TransferResponse.meta:type_name -> cckit.extensions.token.Meta + 1, // 4: cckit.extensions.token.TransferBatchRequest.transfers:type_name -> cckit.extensions.token.TransferRequest + 2, // 5: cckit.extensions.token.TransferBatchResponse.transfers:type_name -> cckit.extensions.token.TransferResponse + 18, // 6: cckit.extensions.token.Balance.amount:type_name -> cckit.extensions.token.decimal.Decimal + 6, // 7: cckit.extensions.token.Balances.items:type_name -> cckit.extensions.token.Balance + 18, // 8: cckit.extensions.token.Operation.amount:type_name -> cckit.extensions.token.decimal.Decimal 0, // 9: cckit.extensions.token.Operation.type:type_name -> cckit.extensions.token.OperationType - 1, // 10: cckit.extensions.token.TransferOperation.amount:type_name -> cckit.extensions.token.Decimal - 14, // 11: cckit.extensions.token.TransferOperation.meta:type_name -> cckit.extensions.token.AddMetaRequest - 1, // 12: cckit.extensions.token.BalanceOperation.amount:type_name -> cckit.extensions.token.Decimal - 14, // 13: cckit.extensions.token.BalanceOperation.meta:type_name -> cckit.extensions.token.AddMetaRequest - 1, // 14: cckit.extensions.token.Transferred.amount:type_name -> cckit.extensions.token.Decimal - 15, // 15: cckit.extensions.token.Transferred.meta:type_name -> cckit.extensions.token.Meta - 12, // 16: cckit.extensions.token.TransferredBatch.transfers:type_name -> cckit.extensions.token.Transferred - 1, // 17: cckit.extensions.token.UTXO.amount:type_name -> cckit.extensions.token.Decimal - 15, // 18: cckit.extensions.token.UTXO.meta:type_name -> cckit.extensions.token.Meta - 17, // 19: cckit.extensions.token.UTXOs.items:type_name -> cckit.extensions.token.UTXO - 6, // 20: cckit.extensions.token.BalanceService.GetBalance:input_type -> cckit.extensions.token.BalanceId - 6, // 21: cckit.extensions.token.BalanceService.ListBalances:input_type -> cckit.extensions.token.BalanceId - 2, // 22: cckit.extensions.token.BalanceService.Transfer:input_type -> cckit.extensions.token.TransferRequest - 4, // 23: cckit.extensions.token.BalanceService.TransferBatch:input_type -> cckit.extensions.token.TransferBatchRequest - 7, // 24: cckit.extensions.token.BalanceService.GetBalance:output_type -> cckit.extensions.token.Balance - 8, // 25: cckit.extensions.token.BalanceService.ListBalances:output_type -> cckit.extensions.token.Balances - 3, // 26: cckit.extensions.token.BalanceService.Transfer:output_type -> cckit.extensions.token.TransferResponse - 5, // 27: cckit.extensions.token.BalanceService.TransferBatch:output_type -> cckit.extensions.token.TransferBatchResponse + 18, // 10: cckit.extensions.token.TransferOperation.amount:type_name -> cckit.extensions.token.decimal.Decimal + 13, // 11: cckit.extensions.token.TransferOperation.meta:type_name -> cckit.extensions.token.AddMetaRequest + 18, // 12: cckit.extensions.token.BalanceOperation.amount:type_name -> cckit.extensions.token.decimal.Decimal + 13, // 13: cckit.extensions.token.BalanceOperation.meta:type_name -> cckit.extensions.token.AddMetaRequest + 18, // 14: cckit.extensions.token.Transferred.amount:type_name -> cckit.extensions.token.decimal.Decimal + 14, // 15: cckit.extensions.token.Transferred.meta:type_name -> cckit.extensions.token.Meta + 11, // 16: cckit.extensions.token.TransferredBatch.transfers:type_name -> cckit.extensions.token.Transferred + 18, // 17: cckit.extensions.token.UTXO.amount:type_name -> cckit.extensions.token.decimal.Decimal + 14, // 18: cckit.extensions.token.UTXO.meta:type_name -> cckit.extensions.token.Meta + 16, // 19: cckit.extensions.token.UTXOs.items:type_name -> cckit.extensions.token.UTXO + 5, // 20: cckit.extensions.token.BalanceService.GetBalance:input_type -> cckit.extensions.token.BalanceId + 5, // 21: cckit.extensions.token.BalanceService.ListBalances:input_type -> cckit.extensions.token.BalanceId + 1, // 22: cckit.extensions.token.BalanceService.Transfer:input_type -> cckit.extensions.token.TransferRequest + 3, // 23: cckit.extensions.token.BalanceService.TransferBatch:input_type -> cckit.extensions.token.TransferBatchRequest + 6, // 24: cckit.extensions.token.BalanceService.GetBalance:output_type -> cckit.extensions.token.Balance + 7, // 25: cckit.extensions.token.BalanceService.ListBalances:output_type -> cckit.extensions.token.Balances + 2, // 26: cckit.extensions.token.BalanceService.Transfer:output_type -> cckit.extensions.token.TransferResponse + 4, // 27: cckit.extensions.token.BalanceService.TransferBatch:output_type -> cckit.extensions.token.TransferBatchResponse 24, // [24:28] is the sub-list for method output_type 20, // [20:24] is the sub-list for method input_type 20, // [20:20] is the sub-list for extension type_name @@ -1599,18 +1547,6 @@ func file_token_balance_proto_init() { } if !protoimpl.UnsafeEnabled { file_token_balance_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Decimal); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_token_balance_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TransferRequest); i { case 0: return &v.state @@ -1622,7 +1558,7 @@ func file_token_balance_proto_init() { return nil } } - file_token_balance_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_token_balance_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TransferResponse); i { case 0: return &v.state @@ -1634,7 +1570,7 @@ func file_token_balance_proto_init() { return nil } } - file_token_balance_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_token_balance_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TransferBatchRequest); i { case 0: return &v.state @@ -1646,7 +1582,7 @@ func file_token_balance_proto_init() { return nil } } - file_token_balance_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + file_token_balance_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TransferBatchResponse); i { case 0: return &v.state @@ -1658,7 +1594,7 @@ func file_token_balance_proto_init() { return nil } } - file_token_balance_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_token_balance_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BalanceId); i { case 0: return &v.state @@ -1670,7 +1606,7 @@ func file_token_balance_proto_init() { return nil } } - file_token_balance_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + file_token_balance_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Balance); i { case 0: return &v.state @@ -1682,7 +1618,7 @@ func file_token_balance_proto_init() { return nil } } - file_token_balance_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + file_token_balance_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Balances); i { case 0: return &v.state @@ -1694,7 +1630,7 @@ func file_token_balance_proto_init() { return nil } } - file_token_balance_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + file_token_balance_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Operation); i { case 0: return &v.state @@ -1706,7 +1642,7 @@ func file_token_balance_proto_init() { return nil } } - file_token_balance_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + file_token_balance_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TransferOperation); i { case 0: return &v.state @@ -1718,7 +1654,7 @@ func file_token_balance_proto_init() { return nil } } - file_token_balance_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + file_token_balance_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BalanceOperation); i { case 0: return &v.state @@ -1730,7 +1666,7 @@ func file_token_balance_proto_init() { return nil } } - file_token_balance_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + file_token_balance_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Transferred); i { case 0: return &v.state @@ -1742,7 +1678,7 @@ func file_token_balance_proto_init() { return nil } } - file_token_balance_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + file_token_balance_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TransferredBatch); i { case 0: return &v.state @@ -1754,7 +1690,7 @@ func file_token_balance_proto_init() { return nil } } - file_token_balance_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + file_token_balance_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddMetaRequest); i { case 0: return &v.state @@ -1766,7 +1702,7 @@ func file_token_balance_proto_init() { return nil } } - file_token_balance_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + file_token_balance_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Meta); i { case 0: return &v.state @@ -1778,7 +1714,7 @@ func file_token_balance_proto_init() { return nil } } - file_token_balance_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + file_token_balance_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UTXOId); i { case 0: return &v.state @@ -1790,7 +1726,7 @@ func file_token_balance_proto_init() { return nil } } - file_token_balance_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + file_token_balance_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UTXO); i { case 0: return &v.state @@ -1802,7 +1738,7 @@ func file_token_balance_proto_init() { return nil } } - file_token_balance_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + file_token_balance_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UTXOs); i { case 0: return &v.state @@ -1821,7 +1757,7 @@ func file_token_balance_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_token_balance_proto_rawDesc, NumEnums: 1, - NumMessages: 18, + NumMessages: 17, NumExtensions: 0, NumServices: 1, }, diff --git a/extensions/token/balance.proto b/extensions/token/balance.proto index 7471254..a894962 100644 --- a/extensions/token/balance.proto +++ b/extensions/token/balance.proto @@ -7,7 +7,7 @@ package cckit.extensions.token; import "google/api/annotations.proto"; import "google/protobuf/empty.proto"; import "mwitkow/go-proto-validators/validator.proto"; - +import "token/decimal/decimal.proto"; // Balance service BalanceService { @@ -41,16 +41,11 @@ service BalanceService { } } -message Decimal { - int32 scale = 1; // scale ( same as decimal in ERC-20 ) - string value = 2; // big.Int as string -} - message TransferRequest { string recipient = 1 [(validator.field) = {string_not_empty : true}]; string symbol = 2 [(validator.field) = {string_not_empty : true}]; repeated string group = 3; - Decimal amount = 4 [(validator.field) = {string_not_empty : true}]; + decimal.Decimal amount = 4 [(validator.field) = {string_not_empty : true}]; repeated AddMetaRequest meta = 5; } @@ -59,7 +54,7 @@ message TransferResponse { string recipient = 2; string symbol = 3; repeated string group = 4; - Decimal amount = 5; + decimal.Decimal amount = 5; repeated Meta meta = 6; } @@ -88,7 +83,7 @@ message Balance { // account address string address = 3; // Balance amount - Decimal amount = 4; + decimal.Decimal amount = 4; } // List: balances @@ -109,7 +104,7 @@ message Operation { string recipient = 2; string symbol = 3; repeated string group = 4; - Decimal amount = 5; + decimal.Decimal amount = 5; OperationType type = 6; } @@ -118,7 +113,7 @@ message TransferOperation { string recipient = 2 [(validator.field) = {string_not_empty : true}]; string symbol = 3 [(validator.field) = {string_not_empty : true}]; repeated string group = 4; - Decimal amount = 5 [(validator.field) = {string_not_empty : true}]; + decimal.Decimal amount = 5 [(validator.field) = {string_not_empty : true}]; repeated AddMetaRequest meta = 6; } @@ -126,7 +121,7 @@ message BalanceOperation { string address = 1 [(validator.field) = {string_not_empty : true}]; string symbol = 2 [(validator.field) = {string_not_empty : true}]; repeated string group = 3; - Decimal amount = 4 [(validator.field) = {string_not_empty : true}]; + decimal.Decimal amount = 4 [(validator.field) = {string_not_empty : true}]; repeated AddMetaRequest meta = 5; } @@ -136,7 +131,7 @@ message Transferred { string recipient = 2; string symbol = 3; repeated string group = 4; - Decimal amount = 5; + decimal.Decimal amount = 5; repeated Meta meta = 6; } @@ -169,7 +164,7 @@ message UTXO { string group = 2; // Token groups, joined string address = 3; // account address string tx_id = 4; // Transaction Id - Decimal amount = 6; // amount + decimal.Decimal amount = 6; // amount bool locked = 7; repeated Meta meta = 8; // meta } diff --git a/extensions/token/balance.swagger.json b/extensions/token/balance.swagger.json index 957e0b5..69cebc8 100644 --- a/extensions/token/balance.swagger.json +++ b/extensions/token/balance.swagger.json @@ -173,6 +173,18 @@ } }, "definitions": { + "decimalDecimal": { + "type": "object", + "properties": { + "scale": { + "type": "integer", + "format": "int32" + }, + "value": { + "type": "string" + } + } + }, "protobufAny": { "type": "object", "properties": { @@ -236,7 +248,7 @@ "title": "account address" }, "amount": { - "$ref": "#/definitions/tokenDecimal", + "$ref": "#/definitions/decimalDecimal", "title": "Balance amount" } }, @@ -254,18 +266,6 @@ }, "title": "List: balances" }, - "tokenDecimal": { - "type": "object", - "properties": { - "scale": { - "type": "integer", - "format": "int32" - }, - "value": { - "type": "string" - } - } - }, "tokenMeta": { "type": "object", "properties": { @@ -315,7 +315,7 @@ } }, "amount": { - "$ref": "#/definitions/tokenDecimal" + "$ref": "#/definitions/decimalDecimal" }, "meta": { "type": "array", @@ -344,7 +344,7 @@ } }, "amount": { - "$ref": "#/definitions/tokenDecimal" + "$ref": "#/definitions/decimalDecimal" }, "meta": { "type": "array", diff --git a/extensions/token/balance.validator.pb.go b/extensions/token/balance.validator.pb.go index bceda36..f60cada 100644 --- a/extensions/token/balance.validator.pb.go +++ b/extensions/token/balance.validator.pb.go @@ -6,6 +6,7 @@ package token import ( fmt "fmt" proto "github.com/golang/protobuf/proto" + _ "github.com/hyperledger-labs/cckit/extensions/token/decimal" _ "github.com/mwitkow/go-proto-validators" github_com_mwitkow_go_proto_validators "github.com/mwitkow/go-proto-validators" _ "google.golang.org/genproto/googleapis/api/annotations" @@ -18,9 +19,6 @@ var _ = proto.Marshal var _ = fmt.Errorf var _ = math.Inf -func (this *Decimal) Validate() error { - return nil -} func (this *TransferRequest) Validate() error { if this.Recipient == "" { return github_com_mwitkow_go_proto_validators.FieldError("Recipient", fmt.Errorf(`value '%v' must not be an empty string`, this.Recipient)) diff --git a/extensions/token/balance_account.go b/extensions/token/balance_account.go index 030be1c..fd51d75 100644 --- a/extensions/token/balance_account.go +++ b/extensions/token/balance_account.go @@ -5,6 +5,7 @@ import ( "math/big" "strings" + "github.com/hyperledger-labs/cckit/extensions/token/decimal" "github.com/hyperledger-labs/cckit/router" "github.com/hyperledger-labs/cckit/state" ) @@ -30,7 +31,7 @@ func (s *AccountStore) Get(ctx router.Context, id *BalanceId) (*Balance, error) Address: id.Address, Symbol: id.Symbol, Group: id.Group, - Amount: NewDecimal(big.NewInt(0)), + Amount: decimal.New(big.NewInt(0)), }, nil } return nil, err @@ -154,7 +155,7 @@ func (s *AccountStore) add(ctx router.Context, op *BalanceOperation) (*Balance, Address: op.Address, Symbol: op.Symbol, Group: op.Group, - Amount: BigIntSubAsDecimal(curBalanceAmount, toAdd), + Amount: decimal.BigIntSubAsDecimal(curBalanceAmount, toAdd), } if err = State(ctx).Put(newBalance); err != nil { @@ -185,7 +186,7 @@ func (s *AccountStore) sub(ctx router.Context, op *BalanceOperation) (*Balance, Address: op.Address, Symbol: op.Symbol, Group: op.Group, - Amount: BigIntSubAsDecimal(balAmount, opAmount), + Amount: decimal.BigIntSubAsDecimal(balAmount, opAmount), } if err = State(ctx).Put(newBalance); err != nil { diff --git a/extensions/token/balance_utxo.go b/extensions/token/balance_utxo.go index e465513..1d974d2 100644 --- a/extensions/token/balance_utxo.go +++ b/extensions/token/balance_utxo.go @@ -5,6 +5,7 @@ import ( "math/big" "strings" + "github.com/hyperledger-labs/cckit/extensions/token/decimal" "github.com/hyperledger-labs/cckit/router" "github.com/hyperledger-labs/cckit/state" ) @@ -59,7 +60,7 @@ func (u *UTXOStore) Get(ctx router.Context, balanceId *BalanceId) (*Balance, err Address: balanceId.Address, Symbol: balanceId.Symbol, Group: balanceId.Group, - Amount: NewDecimal(amount), + Amount: decimal.New(amount), } return balance, nil @@ -89,7 +90,7 @@ func (u *UTXOStore) GetLocked(ctx router.Context, balanceId *BalanceId) (*Balanc Symbol: balanceId.Symbol, Group: balanceId.Group, Address: balanceId.Address, - Amount: NewDecimal(amount), + Amount: decimal.New(amount), } return balance, nil @@ -153,7 +154,7 @@ func (u *UTXOStore) Transfer(ctx router.Context, transfer *TransferOperation) er Group: strings.Join(transfer.Group, `,`), Address: transfer.Sender, TxId: txID, - Amount: BigIntSubAsDecimal(outputsAmount, transferAmount), + Amount: decimal.BigIntSubAsDecimal(outputsAmount, transferAmount), Locked: false, } if err := State(ctx).Insert(senderChangeOutput); err != nil { @@ -261,7 +262,7 @@ func (u *UTXOStore) TransferBatch(ctx router.Context, transfers []*TransferOpera Group: strings.Join(group, `,`), Address: sender, TxId: txID, - Amount: BigIntSubAsDecimal(outputsAmount, totalAmount), + Amount: decimal.BigIntSubAsDecimal(outputsAmount, totalAmount), Locked: false, } if err := State(ctx).Insert(senderChangeOutput); err != nil { @@ -333,7 +334,7 @@ func (u *UTXOStore) Lock(ctx router.Context, op *BalanceOperation) (*LockId, err Group: strings.Join(op.Group, `,`), Address: op.Address, TxId: ctx.Stub().GetTxID() + ".1", - Amount: BigIntSubAsDecimal(outputsAmount, opAmount), + Amount: decimal.BigIntSubAsDecimal(outputsAmount, opAmount), Locked: false, } if err := State(ctx).Insert(senderChangeOutput); err != nil { @@ -499,7 +500,7 @@ func burn(ctx router.Context, burn *BalanceOperation, locked bool) error { Group: strings.Join(burn.Group, `,`), Address: burn.Address, TxId: ctx.Stub().GetTxID(), - Amount: BigIntSubAsDecimal(outputsAmount, burnAmount), + Amount: decimal.BigIntSubAsDecimal(outputsAmount, burnAmount), Locked: locked, } if err := State(ctx).Insert(senderChangeOutput); err != nil { diff --git a/extensions/token/balance_utxo_test.go b/extensions/token/balance_utxo_test.go index 7d8caec..8ea4256 100644 --- a/extensions/token/balance_utxo_test.go +++ b/extensions/token/balance_utxo_test.go @@ -9,6 +9,7 @@ import ( . "github.com/onsi/gomega" "github.com/hyperledger-labs/cckit/extensions/token" + "github.com/hyperledger-labs/cckit/extensions/token/decimal" "github.com/hyperledger-labs/cckit/identity" "github.com/hyperledger-labs/cckit/identity/testdata" "github.com/hyperledger-labs/cckit/router" @@ -68,7 +69,7 @@ func (w *Wallet) ExpectBalance(amount *big.Int) { Symbol: w.symbol, }) Expect(err).NotTo(HaveOccurred()) - Expect(b.Amount).To(Equal(token.NewDecimal(amount))) + Expect(b.Amount).To(Equal(decimal.New(amount))) } func (w *Wallet) ExpectMint(amount *big.Int) { @@ -76,7 +77,7 @@ func (w *Wallet) ExpectMint(amount *big.Int) { err := w.store.Mint(w.ctx, &token.BalanceOperation{ Address: w.address, Symbol: w.symbol, - Amount: token.NewDecimal(amount), + Amount: decimal.New(amount), }) Expect(err).NotTo(HaveOccurred()) }) @@ -87,7 +88,7 @@ func (w *Wallet) ExpectBurn(amount *big.Int) { err := w.store.Burn(w.ctx, &token.BalanceOperation{ Address: w.address, Symbol: w.symbol, - Amount: token.NewDecimal(amount), + Amount: decimal.New(amount), }) Expect(err).NotTo(HaveOccurred()) }) @@ -120,7 +121,7 @@ func (w *Wallet) ExpectTransfer(recipient string, amount *big.Int) { Sender: w.address, Recipient: recipient, Symbol: w.symbol, - Amount: token.NewDecimal(amount), + Amount: decimal.New(amount), }) Expect(err).NotTo(HaveOccurred()) }) @@ -141,7 +142,7 @@ func (w *Wallet) ExpectNotTransfer(recipient string, amount *big.Int) { Sender: w.address, Recipient: recipient, Symbol: w.symbol, - Amount: token.NewDecimal(amount), + Amount: decimal.New(amount), }) Expect(err).To(HaveOccurred()) }) @@ -152,7 +153,7 @@ func (w *Wallet) ExpectLock(amount *big.Int) { lockId, err := w.store.Lock(w.ctx, &token.BalanceOperation{ Address: w.address, Symbol: w.symbol, - Amount: token.NewDecimal(amount), + Amount: decimal.New(amount), }) Expect(err).NotTo(HaveOccurred()) Expect(lockId.Address).To(Equal(w.address)) @@ -176,7 +177,7 @@ func (w *Wallet) ExpectLockedBalance(amount *big.Int) { }) Expect(err).NotTo(HaveOccurred()) - Expect(b.Amount).To(Equal(token.NewDecimal(amount))) + Expect(b.Amount).To(Equal(decimal.New(amount))) } type transfer struct { @@ -193,7 +194,7 @@ func (w *Wallet) ExpectTransferBatch(transfers []*transfer) { Sender: w.address, Recipient: t.recipient, Symbol: w.symbol, - Amount: token.NewDecimal(t.amount), + Amount: decimal.New(t.amount), }) } w.cc.Tx(func() { diff --git a/extensions/token/decimal.go b/extensions/token/decimal/decimal.go similarity index 80% rename from extensions/token/decimal.go rename to extensions/token/decimal/decimal.go index 853978a..f1794b2 100644 --- a/extensions/token/decimal.go +++ b/extensions/token/decimal/decimal.go @@ -1,4 +1,4 @@ -package token +package decimal import ( "errors" @@ -15,7 +15,7 @@ func (x *Decimal) BigInt() (*big.Int, error) { return bigInt, nil } -func NewDecimal(val *big.Int, scale ...int32) *Decimal { +func New(val *big.Int, scale ...int32) *Decimal { d := &Decimal{ Value: val.String(), } @@ -32,7 +32,7 @@ func BigIntSum(a, b *big.Int) *big.Int { } func BigIntSumAsDecimal(a, b *big.Int, scale ...int32) *Decimal { - return NewDecimal(BigIntSum(a, b), scale...) + return New(BigIntSum(a, b), scale...) } func BigIntSub(a, b *big.Int) *big.Int { @@ -40,5 +40,5 @@ func BigIntSub(a, b *big.Int) *big.Int { } func BigIntSubAsDecimal(a, b *big.Int, scale ...int32) *Decimal { - return NewDecimal(BigIntSub(a, b), scale...) + return New(BigIntSub(a, b), scale...) } diff --git a/extensions/token/decimal/decimal.pb.go b/extensions/token/decimal/decimal.pb.go new file mode 100644 index 0000000..9d2755e --- /dev/null +++ b/extensions/token/decimal/decimal.pb.go @@ -0,0 +1,156 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.1 +// protoc (unknown) +// source: token/decimal/decimal.proto + +package decimal + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type Decimal struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Scale int32 `protobuf:"varint,1,opt,name=scale,proto3" json:"scale,omitempty"` // scale ( same as decimal in ERC-20 ) + Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` // big.Int as string +} + +func (x *Decimal) Reset() { + *x = Decimal{} + if protoimpl.UnsafeEnabled { + mi := &file_token_decimal_decimal_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Decimal) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Decimal) ProtoMessage() {} + +func (x *Decimal) ProtoReflect() protoreflect.Message { + mi := &file_token_decimal_decimal_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Decimal.ProtoReflect.Descriptor instead. +func (*Decimal) Descriptor() ([]byte, []int) { + return file_token_decimal_decimal_proto_rawDescGZIP(), []int{0} +} + +func (x *Decimal) GetScale() int32 { + if x != nil { + return x.Scale + } + return 0 +} + +func (x *Decimal) GetValue() string { + if x != nil { + return x.Value + } + return "" +} + +var File_token_decimal_decimal_proto protoreflect.FileDescriptor + +var file_token_decimal_decimal_proto_rawDesc = []byte{ + 0x0a, 0x1b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2f, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x2f, + 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1e, 0x63, + 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x22, 0x35, 0x0a, + 0x07, 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x61, 0x6c, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x42, 0x3c, 0x5a, 0x3a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x68, 0x79, 0x70, 0x65, 0x72, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2d, 0x6c, + 0x61, 0x62, 0x73, 0x2f, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2f, 0x64, 0x65, 0x63, 0x69, 0x6d, + 0x61, 0x6c, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_token_decimal_decimal_proto_rawDescOnce sync.Once + file_token_decimal_decimal_proto_rawDescData = file_token_decimal_decimal_proto_rawDesc +) + +func file_token_decimal_decimal_proto_rawDescGZIP() []byte { + file_token_decimal_decimal_proto_rawDescOnce.Do(func() { + file_token_decimal_decimal_proto_rawDescData = protoimpl.X.CompressGZIP(file_token_decimal_decimal_proto_rawDescData) + }) + return file_token_decimal_decimal_proto_rawDescData +} + +var file_token_decimal_decimal_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_token_decimal_decimal_proto_goTypes = []interface{}{ + (*Decimal)(nil), // 0: cckit.extensions.token.decimal.Decimal +} +var file_token_decimal_decimal_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_token_decimal_decimal_proto_init() } +func file_token_decimal_decimal_proto_init() { + if File_token_decimal_decimal_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_token_decimal_decimal_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Decimal); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_token_decimal_decimal_proto_rawDesc, + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_token_decimal_decimal_proto_goTypes, + DependencyIndexes: file_token_decimal_decimal_proto_depIdxs, + MessageInfos: file_token_decimal_decimal_proto_msgTypes, + }.Build() + File_token_decimal_decimal_proto = out.File + file_token_decimal_decimal_proto_rawDesc = nil + file_token_decimal_decimal_proto_goTypes = nil + file_token_decimal_decimal_proto_depIdxs = nil +} diff --git a/extensions/token/decimal/decimal.proto b/extensions/token/decimal/decimal.proto new file mode 100644 index 0000000..85aa475 --- /dev/null +++ b/extensions/token/decimal/decimal.proto @@ -0,0 +1,10 @@ +syntax = "proto3"; + +option go_package = "github.com/hyperledger-labs/cckit/extensions/token/decimal"; + +package cckit.extensions.token.decimal; + +message Decimal { + int32 scale = 1; // scale ( same as decimal in ERC-20 ) + string value = 2; // big.Int as string +} diff --git a/extensions/token/decimal/decimal.swagger.json b/extensions/token/decimal/decimal.swagger.json new file mode 100644 index 0000000..eea7de9 --- /dev/null +++ b/extensions/token/decimal/decimal.swagger.json @@ -0,0 +1,49 @@ +{ + "swagger": "2.0", + "info": { + "title": "token/decimal/decimal.proto", + "version": "version not set" + }, + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "paths": {}, + "definitions": { + "protobufAny": { + "type": "object", + "properties": { + "type_url": { + "type": "string" + }, + "value": { + "type": "string", + "format": "byte" + } + } + }, + "runtimeError": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "code": { + "type": "integer", + "format": "int32" + }, + "message": { + "type": "string" + }, + "details": { + "type": "array", + "items": { + "$ref": "#/definitions/protobufAny" + } + } + } + } + } +} diff --git a/extensions/token/decimal/decimal.validator.pb.go b/extensions/token/decimal/decimal.validator.pb.go new file mode 100644 index 0000000..377a60d --- /dev/null +++ b/extensions/token/decimal/decimal.validator.pb.go @@ -0,0 +1,19 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: token/decimal/decimal.proto + +package decimal + +import ( + fmt "fmt" + proto "github.com/golang/protobuf/proto" + math "math" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +func (this *Decimal) Validate() error { + return nil +} diff --git a/extensions/token/decimal_test.go b/extensions/token/decimal_test.go index f3ff55b..1911527 100644 --- a/extensions/token/decimal_test.go +++ b/extensions/token/decimal_test.go @@ -5,6 +5,7 @@ import ( . "github.com/onsi/gomega" "github.com/hyperledger-labs/cckit/extensions/token" + "github.com/hyperledger-labs/cckit/extensions/token/decimal" "github.com/hyperledger-labs/cckit/serialize" ) @@ -14,7 +15,7 @@ var ( Group: "b", Address: "c", TxId: "d", - Amount: &token.Decimal{ + Amount: &decimal.Decimal{ Value: `12345`, }, } diff --git a/extensions/token/token.pb.cc.go b/extensions/token/token.pb.cc.go index db31e6f..97e0126 100644 --- a/extensions/token/token.pb.cc.go +++ b/extensions/token/token.pb.cc.go @@ -3,10 +3,10 @@ /* Package token contains - * chaincode methods names {service_name}Chaincode_{method_name} - * chaincode interface definition {service_name}Chaincode - * chaincode gateway definition {service_name}}Gateway - * chaincode service to cckit router registration func + - chaincode methods names {service_name}Chaincode_{method_name} + - chaincode interface definition {service_name}Chaincode + - chaincode gateway definition {service_name}}Gateway + - chaincode service to cckit router registration func */ package token diff --git a/extensions/token/token.pb.go b/extensions/token/token.pb.go index 365fef9..dd65f6d 100644 --- a/extensions/token/token.pb.go +++ b/extensions/token/token.pb.go @@ -8,6 +8,7 @@ package token import ( context "context" + decimal "github.com/hyperledger-labs/cckit/extensions/token/decimal" _ "github.com/mwitkow/go-proto-validators" _ "google.golang.org/genproto/googleapis/api/annotations" grpc "google.golang.org/grpc" @@ -84,8 +85,8 @@ type CreateTokenTypeRequest struct { Symbol string `protobuf:"bytes,1,opt,name=symbol,proto3" json:"symbol,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` Decimals uint32 `protobuf:"varint,3,opt,name=decimals,proto3" json:"decimals,omitempty"` // from 0 to 8 - GroupType TokenGroupType `protobuf:"varint,4,opt,name=group_type,json=groupType,proto3,enum=extensions.token.TokenGroupType" json:"group_type,omitempty"` - TotalSupply *Decimal `protobuf:"bytes,5,opt,name=total_supply,json=totalSupply,proto3" json:"total_supply,omitempty"` // big.Int + GroupType TokenGroupType `protobuf:"varint,4,opt,name=group_type,json=groupType,proto3,enum=cckit.extensions.token.TokenGroupType" json:"group_type,omitempty"` + TotalSupply *decimal.Decimal `protobuf:"bytes,5,opt,name=total_supply,json=totalSupply,proto3" json:"total_supply,omitempty"` // big.Int Meta []*TokenMetaRequest `protobuf:"bytes,6,rep,name=meta,proto3" json:"meta,omitempty"` } @@ -149,7 +150,7 @@ func (x *CreateTokenTypeRequest) GetGroupType() TokenGroupType { return TokenGroupType_OPTIONAL } -func (x *CreateTokenTypeRequest) GetTotalSupply() *Decimal { +func (x *CreateTokenTypeRequest) GetTotalSupply() *decimal.Decimal { if x != nil { return x.TotalSupply } @@ -242,7 +243,7 @@ type CreateTokenGroupRequest struct { Symbol string `protobuf:"bytes,1,opt,name=symbol,proto3" json:"symbol,omitempty"` Group []string `protobuf:"bytes,2,rep,name=group,proto3" json:"group,omitempty"` Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` - TotalSupply *Decimal `protobuf:"bytes,4,opt,name=total_supply,json=totalSupply,proto3" json:"total_supply,omitempty"` // big.Int + TotalSupply *decimal.Decimal `protobuf:"bytes,4,opt,name=total_supply,json=totalSupply,proto3" json:"total_supply,omitempty"` // big.Int Meta []*TokenMetaRequest `protobuf:"bytes,5,rep,name=meta,proto3" json:"meta,omitempty"` } @@ -299,7 +300,7 @@ func (x *CreateTokenGroupRequest) GetName() string { return "" } -func (x *CreateTokenGroupRequest) GetTotalSupply() *Decimal { +func (x *CreateTokenGroupRequest) GetTotalSupply() *decimal.Decimal { if x != nil { return x.TotalSupply } @@ -485,12 +486,12 @@ type TokenType struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Symbol string `protobuf:"bytes,1,opt,name=symbol,proto3" json:"symbol,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Decimals uint32 `protobuf:"varint,3,opt,name=decimals,proto3" json:"decimals,omitempty"` - TotalSupply *Decimal `protobuf:"bytes,4,opt,name=total_supply,json=totalSupply,proto3" json:"total_supply,omitempty"` - GroupType TokenGroupType `protobuf:"varint,5,opt,name=group_type,json=groupType,proto3,enum=extensions.token.TokenGroupType" json:"group_type,omitempty"` - Meta []*TokenMeta `protobuf:"bytes,6,rep,name=meta,proto3" json:"meta,omitempty"` + Symbol string `protobuf:"bytes,1,opt,name=symbol,proto3" json:"symbol,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Decimals uint32 `protobuf:"varint,3,opt,name=decimals,proto3" json:"decimals,omitempty"` + TotalSupply *decimal.Decimal `protobuf:"bytes,4,opt,name=total_supply,json=totalSupply,proto3" json:"total_supply,omitempty"` + GroupType TokenGroupType `protobuf:"varint,5,opt,name=group_type,json=groupType,proto3,enum=cckit.extensions.token.TokenGroupType" json:"group_type,omitempty"` + Meta []*TokenMeta `protobuf:"bytes,6,rep,name=meta,proto3" json:"meta,omitempty"` } func (x *TokenType) Reset() { @@ -546,7 +547,7 @@ func (x *TokenType) GetDecimals() uint32 { return 0 } -func (x *TokenType) GetTotalSupply() *Decimal { +func (x *TokenType) GetTotalSupply() *decimal.Decimal { if x != nil { return x.TotalSupply } @@ -675,11 +676,11 @@ type TokenGroup struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Symbol string `protobuf:"bytes,1,opt,name=symbol,proto3" json:"symbol,omitempty"` - Group []string `protobuf:"bytes,2,rep,name=group,proto3" json:"group,omitempty"` - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` - TotalSupply *Decimal `protobuf:"bytes,4,opt,name=total_supply,json=totalSupply,proto3" json:"total_supply,omitempty"` - Meta []*TokenMeta `protobuf:"bytes,5,rep,name=meta,proto3" json:"meta,omitempty"` + Symbol string `protobuf:"bytes,1,opt,name=symbol,proto3" json:"symbol,omitempty"` + Group []string `protobuf:"bytes,2,rep,name=group,proto3" json:"group,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + TotalSupply *decimal.Decimal `protobuf:"bytes,4,opt,name=total_supply,json=totalSupply,proto3" json:"total_supply,omitempty"` + Meta []*TokenMeta `protobuf:"bytes,5,rep,name=meta,proto3" json:"meta,omitempty"` } func (x *TokenGroup) Reset() { @@ -735,7 +736,7 @@ func (x *TokenGroup) GetName() string { return "" } -func (x *TokenGroup) GetTotalSupply() *Decimal { +func (x *TokenGroup) GetTotalSupply() *decimal.Decimal { if x != nil { return x.TotalSupply } @@ -1083,243 +1084,260 @@ var File_token_token_proto protoreflect.FileDescriptor var file_token_token_proto_rawDesc = []byte{ 0x0a, 0x11, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x12, 0x10, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x2b, 0x6d, 0x77, 0x69, 0x74, 0x6b, 0x6f, 0x77, 0x2f, 0x67, 0x6f, 0x2d, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x76, 0x61, - 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x13, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x2f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x22, 0xbe, 0x02, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, - 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, - 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x1a, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, - 0x02, 0x58, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x08, 0x64, 0x65, 0x63, - 0x69, 0x6d, 0x61, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xe2, 0xdf, 0x1f, - 0x02, 0x18, 0x09, 0x52, 0x08, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x73, 0x12, 0x48, 0x0a, - 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x20, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x54, - 0x79, 0x70, 0x65, 0x42, 0x07, 0xe2, 0xdf, 0x1f, 0x03, 0x88, 0x01, 0x01, 0x52, 0x09, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x42, 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, - 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, - 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x52, 0x0b, - 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x12, 0x36, 0x0a, 0x04, 0x6d, - 0x65, 0x74, 0x61, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x65, 0x78, 0x74, 0x65, - 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x04, 0x6d, - 0x65, 0x74, 0x61, 0x22, 0xaf, 0x01, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, - 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, - 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x1a, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, - 0x1f, 0x02, 0x58, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x6f, - 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x12, 0x36, 0x0a, - 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x65, 0x78, - 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, - 0x04, 0x6d, 0x65, 0x74, 0x61, 0x22, 0xef, 0x01, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x1e, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, - 0x6c, 0x12, 0x1c, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, - 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x60, 0x01, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, - 0x1a, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, - 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x42, 0x0a, 0x0c, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, - 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x44, 0x65, 0x63, 0x69, 0x6d, - 0x61, 0x6c, 0x52, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x12, - 0x36, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, - 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x22, 0xa8, 0x01, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x12, 0x3e, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x65, 0x78, 0x74, 0x65, - 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x49, 0x64, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x12, 0x2d, 0x0a, 0x13, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x73, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x10, 0x6d, 0x61, 0x78, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x4e, 0x75, - 0x6d, 0x12, 0x2f, 0x0a, 0x14, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x73, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x11, 0x6d, 0x61, 0x78, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x4e, - 0x75, 0x6d, 0x22, 0x3f, 0x0a, 0x07, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x64, 0x12, 0x1e, 0x0a, - 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, - 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x14, 0x0a, - 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x22, 0x25, 0x0a, 0x0b, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, - 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x22, 0x89, 0x02, 0x0a, 0x09, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, 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, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x73, - 0x12, 0x42, 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x79, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, + 0x6f, 0x74, 0x6f, 0x12, 0x16, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2b, 0x6d, 0x77, 0x69, 0x74, 0x6b, 0x6f, 0x77, 0x2f, + 0x67, 0x6f, 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x6f, 0x72, 0x73, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x13, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2f, 0x62, 0x61, 0x6c, 0x61, 0x6e, + 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2f, + 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x2f, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd2, 0x02, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x1e, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, + 0x12, 0x1a, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, + 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x08, + 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, + 0xe2, 0xdf, 0x1f, 0x02, 0x18, 0x09, 0x52, 0x08, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x73, + 0x12, 0x4e, 0x0a, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, + 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, 0x42, 0x07, 0xe2, 0xdf, + 0x1f, 0x03, 0x88, 0x01, 0x01, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x4a, 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x79, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, - 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x52, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x75, - 0x70, 0x70, 0x6c, 0x79, 0x12, 0x3f, 0x0a, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, + 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x2e, 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x52, + 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x12, 0x3c, 0x0a, 0x04, + 0x6d, 0x65, 0x74, 0x61, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x63, 0x6b, + 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x22, 0xb5, 0x01, 0x0a, 0x16, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x06, 0x73, + 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x1a, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6c, + 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x75, + 0x70, 0x70, 0x6c, 0x79, 0x12, 0x3c, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x06, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x4d, 0x65, 0x74, 0x61, - 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x22, 0x3f, 0x0a, 0x0a, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x54, - 0x79, 0x70, 0x65, 0x73, 0x12, 0x31, 0x0a, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, - 0x52, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x22, 0x3c, 0x0a, 0x0c, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 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, - 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22, 0xc3, 0x01, 0x0a, 0x0a, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x47, - 0x72, 0x6f, 0x75, 0x70, 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, 0x14, 0x0a, 0x05, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x42, 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, - 0x73, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, - 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x52, 0x0b, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x12, 0x2f, 0x0a, 0x04, 0x6d, 0x65, - 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x22, 0x43, 0x0a, 0x0b, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x34, 0x0a, 0x06, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x65, 0x78, 0x74, - 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, - 0x22, 0x4a, 0x0a, 0x10, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1c, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, - 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x33, 0x0a, 0x09, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x4d, 0x65, 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, 0x6c, 0x0a, 0x05, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x2f, 0x0a, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, + 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x04, 0x6d, 0x65, + 0x74, 0x61, 0x22, 0xfd, 0x01, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, + 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, + 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x1c, + 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, 0x06, 0xe2, + 0xdf, 0x1f, 0x02, 0x60, 0x01, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1a, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, + 0x58, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x4a, 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61, + 0x6c, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, + 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x2e, + 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x52, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x75, + 0x70, 0x70, 0x6c, 0x79, 0x12, 0x3c, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x32, 0x0a, 0x05, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x65, 0x78, 0x74, + 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x04, 0x6d, 0x65, + 0x74, 0x61, 0x22, 0xae, 0x01, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x44, 0x0a, + 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22, - 0x3e, 0x0a, 0x10, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 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, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, - 0x55, 0x0a, 0x11, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x64, 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, 0x14, 0x0a, 0x05, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x2a, 0x3d, 0x0a, 0x0e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0c, 0x0a, 0x08, 0x4f, 0x50, 0x54, 0x49, - 0x4f, 0x4e, 0x41, 0x4c, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x45, 0x51, 0x55, 0x49, 0x52, - 0x45, 0x44, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x4e, 0x4f, 0x54, 0x5f, 0x41, 0x4c, 0x4c, 0x4f, - 0x57, 0x45, 0x44, 0x10, 0x03, 0x32, 0xa0, 0x0b, 0x0a, 0x0c, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x54, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x18, 0x2e, 0x65, 0x78, - 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x15, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0f, 0x12, 0x0d, 0x2f, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x59, 0x0a, 0x09, - 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x2e, 0x65, 0x78, 0x74, 0x65, - 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x1a, 0x18, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x18, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x1a, 0x0d, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2f, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x3a, 0x01, 0x2a, 0x12, 0x66, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x12, 0x19, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x64, 0x1a, 0x17, - 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, - 0x1e, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x2f, 0x7b, - 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x7d, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x12, - 0x5a, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x17, 0x2e, 0x65, 0x78, 0x74, - 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x22, 0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x12, 0x0e, 0x2f, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x2f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x71, 0x0a, 0x0f, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x28, - 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, + 0x6b, 0x65, 0x6e, 0x49, 0x64, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x12, 0x2d, 0x0a, 0x13, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x10, 0x6d, 0x61, 0x78, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x4e, + 0x75, 0x6d, 0x12, 0x2f, 0x0a, 0x14, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x11, 0x6d, 0x61, 0x78, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, + 0x4e, 0x75, 0x6d, 0x22, 0x3f, 0x0a, 0x07, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x64, 0x12, 0x1e, + 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, + 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x14, + 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x22, 0x25, 0x0a, 0x0b, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, + 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x22, 0x9d, 0x02, 0x0a, 0x09, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, 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, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, + 0x73, 0x12, 0x4a, 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6c, + 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, + 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x2e, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x2e, 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, + 0x52, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x12, 0x45, 0x0a, + 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x26, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x35, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x06, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x54, 0x79, 0x70, 0x65, 0x22, 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x22, 0x0c, 0x2f, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x69, - 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, + 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x22, 0x45, 0x0a, 0x0a, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x37, 0x0a, 0x05, 0x74, 0x79, 0x70, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x1a, 0x1b, 0x2e, + 0x6e, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x74, 0x79, 0x70, + 0x65, 0x73, 0x22, 0x3c, 0x0a, 0x0c, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x49, 0x64, 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, 0x14, 0x0a, 0x05, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x22, 0xd1, 0x01, 0x0a, 0x0a, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 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, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x4a, 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6c, + 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x17, 0x12, 0x15, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, - 0x2f, 0x7b, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x7d, 0x12, 0x5c, 0x0a, 0x0e, 0x4c, 0x69, 0x73, - 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, + 0x2e, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x2e, 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, + 0x52, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x12, 0x35, 0x0a, + 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x63, + 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, + 0x6d, 0x65, 0x74, 0x61, 0x22, 0x49, 0x0a, 0x0b, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x73, 0x12, 0x3a, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x22, + 0x4a, 0x0a, 0x10, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1c, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, + 0x1f, 0x02, 0x58, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x33, 0x0a, 0x09, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x4d, 0x65, 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, 0x78, 0x0a, 0x05, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x35, 0x0a, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, + 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x12, 0x38, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x22, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x3e, 0x0a, 0x10, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 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, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x55, 0x0a, 0x11, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 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, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x2a, 0x3d, 0x0a, 0x0e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x0c, 0x0a, 0x08, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x10, + 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x45, 0x51, 0x55, 0x49, 0x52, 0x45, 0x44, 0x10, 0x01, 0x12, + 0x0f, 0x0a, 0x0b, 0x4e, 0x4f, 0x54, 0x5f, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x45, 0x44, 0x10, 0x03, + 0x32, 0xae, 0x0c, 0x0a, 0x0c, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x12, 0x5a, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x16, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1e, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, + 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x15, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0f, 0x12, 0x0d, + 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x65, 0x0a, + 0x09, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1e, 0x2e, 0x63, 0x63, 0x6b, + 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x1e, 0x2e, 0x63, 0x63, 0x6b, + 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x12, 0x3a, 0x01, 0x2a, 0x1a, 0x0d, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x12, 0x72, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x12, 0x1f, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, + 0x64, 0x1a, 0x1d, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x2f, 0x7b, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x7d, + 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x12, 0x60, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x44, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, - 0x70, 0x74, 0x79, 0x1a, 0x1c, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x70, 0x74, 0x79, 0x1a, 0x1d, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x22, 0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x12, 0x0e, 0x2f, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x2f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x7d, 0x0a, 0x0f, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2e, 0x2e, + 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, + 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, - 0x73, 0x22, 0x14, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0e, 0x12, 0x0c, 0x2f, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x12, 0x7a, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x28, 0x2e, 0x65, 0x78, 0x74, - 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, + 0x22, 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x3a, 0x01, 0x2a, 0x22, 0x0c, 0x2f, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x12, 0x75, 0x0a, 0x0c, 0x47, 0x65, 0x74, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x2e, 0x63, 0x63, 0x6b, 0x69, + 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x1a, 0x21, + 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, - 0x65, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x1a, 0x15, 0x2f, 0x74, 0x6f, 0x6b, 0x65, + 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x7d, - 0x3a, 0x01, 0x2a, 0x12, 0x6c, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, + 0x12, 0x62, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, + 0x65, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x22, 0x2e, 0x63, 0x63, 0x6b, + 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x22, 0x14, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0e, 0x12, 0x0c, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2f, 0x74, + 0x79, 0x70, 0x65, 0x73, 0x12, 0x86, 0x01, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2e, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, + 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, + 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x22, 0x20, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x1a, 0x3a, 0x01, 0x2a, 0x1a, 0x15, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2f, 0x74, + 0x79, 0x70, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x7d, 0x12, 0x78, 0x0a, + 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x23, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x54, - 0x79, 0x70, 0x65, 0x49, 0x64, 0x1a, 0x1b, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, - 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, - 0x70, 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x2a, 0x15, 0x2f, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, - 0x7d, 0x12, 0x74, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x73, 0x12, 0x1d, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, - 0x49, 0x64, 0x1a, 0x1d, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x73, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x12, 0x1c, 0x2f, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x7d, - 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x84, 0x01, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x29, 0x2e, 0x65, - 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, - 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x22, 0x1c, 0x2f, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x79, 0x6d, - 0x62, 0x6f, 0x6c, 0x7d, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x7c, + 0x79, 0x70, 0x65, 0x49, 0x64, 0x1a, 0x21, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, + 0x2a, 0x15, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x7b, + 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x7d, 0x12, 0x80, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x23, 0x2e, 0x63, 0x63, 0x6b, + 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x1a, + 0x23, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x73, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x12, 0x1c, 0x2f, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x79, 0x6d, 0x62, + 0x6f, 0x6c, 0x7d, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x90, 0x01, 0x0a, 0x10, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, + 0x2f, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x22, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x3a, 0x01, 0x2a, 0x22, + 0x1c, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x7b, 0x73, + 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x7d, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x88, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, - 0x1e, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x1a, - 0x1c, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x2d, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x12, 0x25, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2f, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x73, 0x2f, 0x7b, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x7d, 0x2f, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x12, 0x7a, 0x0a, 0x10, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x12, 0x1e, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, - 0x1a, 0x17, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x27, 0x2a, 0x25, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, + 0x24, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x49, 0x64, 0x1a, 0x22, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x27, 0x12, 0x25, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x2f, 0x7b, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x7d, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, - 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x42, 0x34, 0x5a, 0x32, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x68, 0x79, 0x70, 0x65, 0x72, 0x6c, 0x65, 0x64, 0x67, - 0x65, 0x72, 0x2d, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2f, 0x65, 0x78, - 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x12, 0x86, 0x01, 0x0a, 0x10, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x24, 0x2e, + 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x49, 0x64, 0x1a, 0x1d, 0x2e, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x2a, 0x25, 0x2f, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x2f, 0x7b, 0x73, 0x79, 0x6d, 0x62, 0x6f, + 0x6c, 0x7d, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x7d, 0x42, 0x34, 0x5a, 0x32, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x68, 0x79, 0x70, 0x65, 0x72, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2d, 0x6c, 0x61, 0x62, 0x73, + 0x2f, 0x63, 0x63, 0x6b, 0x69, 0x74, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1337,69 +1355,69 @@ func file_token_token_proto_rawDescGZIP() []byte { var file_token_token_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_token_token_proto_msgTypes = make([]protoimpl.MessageInfo, 16) var file_token_token_proto_goTypes = []interface{}{ - (TokenGroupType)(0), // 0: extensions.token.TokenGroupType - (*CreateTokenTypeRequest)(nil), // 1: extensions.token.CreateTokenTypeRequest - (*UpdateTokenTypeRequest)(nil), // 2: extensions.token.UpdateTokenTypeRequest - (*CreateTokenGroupRequest)(nil), // 3: extensions.token.CreateTokenGroupRequest - (*Config)(nil), // 4: extensions.token.Config - (*TokenId)(nil), // 5: extensions.token.TokenId - (*TokenTypeId)(nil), // 6: extensions.token.TokenTypeId - (*TokenType)(nil), // 7: extensions.token.TokenType - (*TokenTypes)(nil), // 8: extensions.token.TokenTypes - (*TokenGroupId)(nil), // 9: extensions.token.TokenGroupId - (*TokenGroup)(nil), // 10: extensions.token.TokenGroup - (*TokenGroups)(nil), // 11: extensions.token.TokenGroups - (*TokenMetaRequest)(nil), // 12: extensions.token.TokenMetaRequest - (*TokenMeta)(nil), // 13: extensions.token.TokenMeta - (*Token)(nil), // 14: extensions.token.Token - (*TokenTypeCreated)(nil), // 15: extensions.token.TokenTypeCreated - (*TokenGroupCreated)(nil), // 16: extensions.token.TokenGroupCreated - (*Decimal)(nil), // 17: cckit.extensions.token.Decimal + (TokenGroupType)(0), // 0: cckit.extensions.token.TokenGroupType + (*CreateTokenTypeRequest)(nil), // 1: cckit.extensions.token.CreateTokenTypeRequest + (*UpdateTokenTypeRequest)(nil), // 2: cckit.extensions.token.UpdateTokenTypeRequest + (*CreateTokenGroupRequest)(nil), // 3: cckit.extensions.token.CreateTokenGroupRequest + (*Config)(nil), // 4: cckit.extensions.token.Config + (*TokenId)(nil), // 5: cckit.extensions.token.TokenId + (*TokenTypeId)(nil), // 6: cckit.extensions.token.TokenTypeId + (*TokenType)(nil), // 7: cckit.extensions.token.TokenType + (*TokenTypes)(nil), // 8: cckit.extensions.token.TokenTypes + (*TokenGroupId)(nil), // 9: cckit.extensions.token.TokenGroupId + (*TokenGroup)(nil), // 10: cckit.extensions.token.TokenGroup + (*TokenGroups)(nil), // 11: cckit.extensions.token.TokenGroups + (*TokenMetaRequest)(nil), // 12: cckit.extensions.token.TokenMetaRequest + (*TokenMeta)(nil), // 13: cckit.extensions.token.TokenMeta + (*Token)(nil), // 14: cckit.extensions.token.Token + (*TokenTypeCreated)(nil), // 15: cckit.extensions.token.TokenTypeCreated + (*TokenGroupCreated)(nil), // 16: cckit.extensions.token.TokenGroupCreated + (*decimal.Decimal)(nil), // 17: cckit.extensions.token.decimal.Decimal (*emptypb.Empty)(nil), // 18: google.protobuf.Empty } var file_token_token_proto_depIdxs = []int32{ - 0, // 0: extensions.token.CreateTokenTypeRequest.group_type:type_name -> extensions.token.TokenGroupType - 17, // 1: extensions.token.CreateTokenTypeRequest.total_supply:type_name -> cckit.extensions.token.Decimal - 12, // 2: extensions.token.CreateTokenTypeRequest.meta:type_name -> extensions.token.TokenMetaRequest - 12, // 3: extensions.token.UpdateTokenTypeRequest.meta:type_name -> extensions.token.TokenMetaRequest - 17, // 4: extensions.token.CreateTokenGroupRequest.total_supply:type_name -> cckit.extensions.token.Decimal - 12, // 5: extensions.token.CreateTokenGroupRequest.meta:type_name -> extensions.token.TokenMetaRequest - 5, // 6: extensions.token.Config.default_token:type_name -> extensions.token.TokenId - 17, // 7: extensions.token.TokenType.total_supply:type_name -> cckit.extensions.token.Decimal - 0, // 8: extensions.token.TokenType.group_type:type_name -> extensions.token.TokenGroupType - 13, // 9: extensions.token.TokenType.meta:type_name -> extensions.token.TokenMeta - 7, // 10: extensions.token.TokenTypes.types:type_name -> extensions.token.TokenType - 17, // 11: extensions.token.TokenGroup.total_supply:type_name -> cckit.extensions.token.Decimal - 13, // 12: extensions.token.TokenGroup.meta:type_name -> extensions.token.TokenMeta - 10, // 13: extensions.token.TokenGroups.groups:type_name -> extensions.token.TokenGroup - 7, // 14: extensions.token.Token.type:type_name -> extensions.token.TokenType - 10, // 15: extensions.token.Token.group:type_name -> extensions.token.TokenGroup - 18, // 16: extensions.token.TokenService.GetConfig:input_type -> google.protobuf.Empty - 4, // 17: extensions.token.TokenService.SetConfig:input_type -> extensions.token.Config - 5, // 18: extensions.token.TokenService.GetToken:input_type -> extensions.token.TokenId - 18, // 19: extensions.token.TokenService.GetDefaultToken:input_type -> google.protobuf.Empty - 1, // 20: extensions.token.TokenService.CreateTokenType:input_type -> extensions.token.CreateTokenTypeRequest - 6, // 21: extensions.token.TokenService.GetTokenType:input_type -> extensions.token.TokenTypeId - 18, // 22: extensions.token.TokenService.ListTokenTypes:input_type -> google.protobuf.Empty - 2, // 23: extensions.token.TokenService.UpdateTokenType:input_type -> extensions.token.UpdateTokenTypeRequest - 6, // 24: extensions.token.TokenService.DeleteTokenType:input_type -> extensions.token.TokenTypeId - 6, // 25: extensions.token.TokenService.GetTokenGroups:input_type -> extensions.token.TokenTypeId - 3, // 26: extensions.token.TokenService.CreateTokenGroup:input_type -> extensions.token.CreateTokenGroupRequest - 9, // 27: extensions.token.TokenService.GetTokenGroup:input_type -> extensions.token.TokenGroupId - 9, // 28: extensions.token.TokenService.DeleteTokenGroup:input_type -> extensions.token.TokenGroupId - 4, // 29: extensions.token.TokenService.GetConfig:output_type -> extensions.token.Config - 4, // 30: extensions.token.TokenService.SetConfig:output_type -> extensions.token.Config - 14, // 31: extensions.token.TokenService.GetToken:output_type -> extensions.token.Token - 14, // 32: extensions.token.TokenService.GetDefaultToken:output_type -> extensions.token.Token - 7, // 33: extensions.token.TokenService.CreateTokenType:output_type -> extensions.token.TokenType - 7, // 34: extensions.token.TokenService.GetTokenType:output_type -> extensions.token.TokenType - 8, // 35: extensions.token.TokenService.ListTokenTypes:output_type -> extensions.token.TokenTypes - 7, // 36: extensions.token.TokenService.UpdateTokenType:output_type -> extensions.token.TokenType - 7, // 37: extensions.token.TokenService.DeleteTokenType:output_type -> extensions.token.TokenType - 11, // 38: extensions.token.TokenService.GetTokenGroups:output_type -> extensions.token.TokenGroups - 10, // 39: extensions.token.TokenService.CreateTokenGroup:output_type -> extensions.token.TokenGroup - 10, // 40: extensions.token.TokenService.GetTokenGroup:output_type -> extensions.token.TokenGroup - 14, // 41: extensions.token.TokenService.DeleteTokenGroup:output_type -> extensions.token.Token + 0, // 0: cckit.extensions.token.CreateTokenTypeRequest.group_type:type_name -> cckit.extensions.token.TokenGroupType + 17, // 1: cckit.extensions.token.CreateTokenTypeRequest.total_supply:type_name -> cckit.extensions.token.decimal.Decimal + 12, // 2: cckit.extensions.token.CreateTokenTypeRequest.meta:type_name -> cckit.extensions.token.TokenMetaRequest + 12, // 3: cckit.extensions.token.UpdateTokenTypeRequest.meta:type_name -> cckit.extensions.token.TokenMetaRequest + 17, // 4: cckit.extensions.token.CreateTokenGroupRequest.total_supply:type_name -> cckit.extensions.token.decimal.Decimal + 12, // 5: cckit.extensions.token.CreateTokenGroupRequest.meta:type_name -> cckit.extensions.token.TokenMetaRequest + 5, // 6: cckit.extensions.token.Config.default_token:type_name -> cckit.extensions.token.TokenId + 17, // 7: cckit.extensions.token.TokenType.total_supply:type_name -> cckit.extensions.token.decimal.Decimal + 0, // 8: cckit.extensions.token.TokenType.group_type:type_name -> cckit.extensions.token.TokenGroupType + 13, // 9: cckit.extensions.token.TokenType.meta:type_name -> cckit.extensions.token.TokenMeta + 7, // 10: cckit.extensions.token.TokenTypes.types:type_name -> cckit.extensions.token.TokenType + 17, // 11: cckit.extensions.token.TokenGroup.total_supply:type_name -> cckit.extensions.token.decimal.Decimal + 13, // 12: cckit.extensions.token.TokenGroup.meta:type_name -> cckit.extensions.token.TokenMeta + 10, // 13: cckit.extensions.token.TokenGroups.groups:type_name -> cckit.extensions.token.TokenGroup + 7, // 14: cckit.extensions.token.Token.type:type_name -> cckit.extensions.token.TokenType + 10, // 15: cckit.extensions.token.Token.group:type_name -> cckit.extensions.token.TokenGroup + 18, // 16: cckit.extensions.token.TokenService.GetConfig:input_type -> google.protobuf.Empty + 4, // 17: cckit.extensions.token.TokenService.SetConfig:input_type -> cckit.extensions.token.Config + 5, // 18: cckit.extensions.token.TokenService.GetToken:input_type -> cckit.extensions.token.TokenId + 18, // 19: cckit.extensions.token.TokenService.GetDefaultToken:input_type -> google.protobuf.Empty + 1, // 20: cckit.extensions.token.TokenService.CreateTokenType:input_type -> cckit.extensions.token.CreateTokenTypeRequest + 6, // 21: cckit.extensions.token.TokenService.GetTokenType:input_type -> cckit.extensions.token.TokenTypeId + 18, // 22: cckit.extensions.token.TokenService.ListTokenTypes:input_type -> google.protobuf.Empty + 2, // 23: cckit.extensions.token.TokenService.UpdateTokenType:input_type -> cckit.extensions.token.UpdateTokenTypeRequest + 6, // 24: cckit.extensions.token.TokenService.DeleteTokenType:input_type -> cckit.extensions.token.TokenTypeId + 6, // 25: cckit.extensions.token.TokenService.GetTokenGroups:input_type -> cckit.extensions.token.TokenTypeId + 3, // 26: cckit.extensions.token.TokenService.CreateTokenGroup:input_type -> cckit.extensions.token.CreateTokenGroupRequest + 9, // 27: cckit.extensions.token.TokenService.GetTokenGroup:input_type -> cckit.extensions.token.TokenGroupId + 9, // 28: cckit.extensions.token.TokenService.DeleteTokenGroup:input_type -> cckit.extensions.token.TokenGroupId + 4, // 29: cckit.extensions.token.TokenService.GetConfig:output_type -> cckit.extensions.token.Config + 4, // 30: cckit.extensions.token.TokenService.SetConfig:output_type -> cckit.extensions.token.Config + 14, // 31: cckit.extensions.token.TokenService.GetToken:output_type -> cckit.extensions.token.Token + 14, // 32: cckit.extensions.token.TokenService.GetDefaultToken:output_type -> cckit.extensions.token.Token + 7, // 33: cckit.extensions.token.TokenService.CreateTokenType:output_type -> cckit.extensions.token.TokenType + 7, // 34: cckit.extensions.token.TokenService.GetTokenType:output_type -> cckit.extensions.token.TokenType + 8, // 35: cckit.extensions.token.TokenService.ListTokenTypes:output_type -> cckit.extensions.token.TokenTypes + 7, // 36: cckit.extensions.token.TokenService.UpdateTokenType:output_type -> cckit.extensions.token.TokenType + 7, // 37: cckit.extensions.token.TokenService.DeleteTokenType:output_type -> cckit.extensions.token.TokenType + 11, // 38: cckit.extensions.token.TokenService.GetTokenGroups:output_type -> cckit.extensions.token.TokenGroups + 10, // 39: cckit.extensions.token.TokenService.CreateTokenGroup:output_type -> cckit.extensions.token.TokenGroup + 10, // 40: cckit.extensions.token.TokenService.GetTokenGroup:output_type -> cckit.extensions.token.TokenGroup + 14, // 41: cckit.extensions.token.TokenService.DeleteTokenGroup:output_type -> cckit.extensions.token.Token 29, // [29:42] is the sub-list for method output_type 16, // [16:29] is the sub-list for method input_type 16, // [16:16] is the sub-list for extension type_name @@ -1665,7 +1683,7 @@ func NewTokenServiceClient(cc grpc.ClientConnInterface) TokenServiceClient { func (c *tokenServiceClient) GetConfig(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*Config, error) { out := new(Config) - err := c.cc.Invoke(ctx, "/extensions.token.TokenService/GetConfig", in, out, opts...) + err := c.cc.Invoke(ctx, "/cckit.extensions.token.TokenService/GetConfig", in, out, opts...) if err != nil { return nil, err } @@ -1674,7 +1692,7 @@ func (c *tokenServiceClient) GetConfig(ctx context.Context, in *emptypb.Empty, o func (c *tokenServiceClient) SetConfig(ctx context.Context, in *Config, opts ...grpc.CallOption) (*Config, error) { out := new(Config) - err := c.cc.Invoke(ctx, "/extensions.token.TokenService/SetConfig", in, out, opts...) + err := c.cc.Invoke(ctx, "/cckit.extensions.token.TokenService/SetConfig", in, out, opts...) if err != nil { return nil, err } @@ -1683,7 +1701,7 @@ func (c *tokenServiceClient) SetConfig(ctx context.Context, in *Config, opts ... func (c *tokenServiceClient) GetToken(ctx context.Context, in *TokenId, opts ...grpc.CallOption) (*Token, error) { out := new(Token) - err := c.cc.Invoke(ctx, "/extensions.token.TokenService/GetToken", in, out, opts...) + err := c.cc.Invoke(ctx, "/cckit.extensions.token.TokenService/GetToken", in, out, opts...) if err != nil { return nil, err } @@ -1692,7 +1710,7 @@ func (c *tokenServiceClient) GetToken(ctx context.Context, in *TokenId, opts ... func (c *tokenServiceClient) GetDefaultToken(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*Token, error) { out := new(Token) - err := c.cc.Invoke(ctx, "/extensions.token.TokenService/GetDefaultToken", in, out, opts...) + err := c.cc.Invoke(ctx, "/cckit.extensions.token.TokenService/GetDefaultToken", in, out, opts...) if err != nil { return nil, err } @@ -1701,7 +1719,7 @@ func (c *tokenServiceClient) GetDefaultToken(ctx context.Context, in *emptypb.Em func (c *tokenServiceClient) CreateTokenType(ctx context.Context, in *CreateTokenTypeRequest, opts ...grpc.CallOption) (*TokenType, error) { out := new(TokenType) - err := c.cc.Invoke(ctx, "/extensions.token.TokenService/CreateTokenType", in, out, opts...) + err := c.cc.Invoke(ctx, "/cckit.extensions.token.TokenService/CreateTokenType", in, out, opts...) if err != nil { return nil, err } @@ -1710,7 +1728,7 @@ func (c *tokenServiceClient) CreateTokenType(ctx context.Context, in *CreateToke func (c *tokenServiceClient) GetTokenType(ctx context.Context, in *TokenTypeId, opts ...grpc.CallOption) (*TokenType, error) { out := new(TokenType) - err := c.cc.Invoke(ctx, "/extensions.token.TokenService/GetTokenType", in, out, opts...) + err := c.cc.Invoke(ctx, "/cckit.extensions.token.TokenService/GetTokenType", in, out, opts...) if err != nil { return nil, err } @@ -1719,7 +1737,7 @@ func (c *tokenServiceClient) GetTokenType(ctx context.Context, in *TokenTypeId, func (c *tokenServiceClient) ListTokenTypes(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*TokenTypes, error) { out := new(TokenTypes) - err := c.cc.Invoke(ctx, "/extensions.token.TokenService/ListTokenTypes", in, out, opts...) + err := c.cc.Invoke(ctx, "/cckit.extensions.token.TokenService/ListTokenTypes", in, out, opts...) if err != nil { return nil, err } @@ -1728,7 +1746,7 @@ func (c *tokenServiceClient) ListTokenTypes(ctx context.Context, in *emptypb.Emp func (c *tokenServiceClient) UpdateTokenType(ctx context.Context, in *UpdateTokenTypeRequest, opts ...grpc.CallOption) (*TokenType, error) { out := new(TokenType) - err := c.cc.Invoke(ctx, "/extensions.token.TokenService/UpdateTokenType", in, out, opts...) + err := c.cc.Invoke(ctx, "/cckit.extensions.token.TokenService/UpdateTokenType", in, out, opts...) if err != nil { return nil, err } @@ -1737,7 +1755,7 @@ func (c *tokenServiceClient) UpdateTokenType(ctx context.Context, in *UpdateToke func (c *tokenServiceClient) DeleteTokenType(ctx context.Context, in *TokenTypeId, opts ...grpc.CallOption) (*TokenType, error) { out := new(TokenType) - err := c.cc.Invoke(ctx, "/extensions.token.TokenService/DeleteTokenType", in, out, opts...) + err := c.cc.Invoke(ctx, "/cckit.extensions.token.TokenService/DeleteTokenType", in, out, opts...) if err != nil { return nil, err } @@ -1746,7 +1764,7 @@ func (c *tokenServiceClient) DeleteTokenType(ctx context.Context, in *TokenTypeI func (c *tokenServiceClient) GetTokenGroups(ctx context.Context, in *TokenTypeId, opts ...grpc.CallOption) (*TokenGroups, error) { out := new(TokenGroups) - err := c.cc.Invoke(ctx, "/extensions.token.TokenService/GetTokenGroups", in, out, opts...) + err := c.cc.Invoke(ctx, "/cckit.extensions.token.TokenService/GetTokenGroups", in, out, opts...) if err != nil { return nil, err } @@ -1755,7 +1773,7 @@ func (c *tokenServiceClient) GetTokenGroups(ctx context.Context, in *TokenTypeId func (c *tokenServiceClient) CreateTokenGroup(ctx context.Context, in *CreateTokenGroupRequest, opts ...grpc.CallOption) (*TokenGroup, error) { out := new(TokenGroup) - err := c.cc.Invoke(ctx, "/extensions.token.TokenService/CreateTokenGroup", in, out, opts...) + err := c.cc.Invoke(ctx, "/cckit.extensions.token.TokenService/CreateTokenGroup", in, out, opts...) if err != nil { return nil, err } @@ -1764,7 +1782,7 @@ func (c *tokenServiceClient) CreateTokenGroup(ctx context.Context, in *CreateTok func (c *tokenServiceClient) GetTokenGroup(ctx context.Context, in *TokenGroupId, opts ...grpc.CallOption) (*TokenGroup, error) { out := new(TokenGroup) - err := c.cc.Invoke(ctx, "/extensions.token.TokenService/GetTokenGroup", in, out, opts...) + err := c.cc.Invoke(ctx, "/cckit.extensions.token.TokenService/GetTokenGroup", in, out, opts...) if err != nil { return nil, err } @@ -1773,7 +1791,7 @@ func (c *tokenServiceClient) GetTokenGroup(ctx context.Context, in *TokenGroupId func (c *tokenServiceClient) DeleteTokenGroup(ctx context.Context, in *TokenGroupId, opts ...grpc.CallOption) (*Token, error) { out := new(Token) - err := c.cc.Invoke(ctx, "/extensions.token.TokenService/DeleteTokenGroup", in, out, opts...) + err := c.cc.Invoke(ctx, "/cckit.extensions.token.TokenService/DeleteTokenGroup", in, out, opts...) if err != nil { return nil, err } @@ -1855,7 +1873,7 @@ func _TokenService_GetConfig_Handler(srv interface{}, ctx context.Context, dec f } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/extensions.token.TokenService/GetConfig", + FullMethod: "/cckit.extensions.token.TokenService/GetConfig", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(TokenServiceServer).GetConfig(ctx, req.(*emptypb.Empty)) @@ -1873,7 +1891,7 @@ func _TokenService_SetConfig_Handler(srv interface{}, ctx context.Context, dec f } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/extensions.token.TokenService/SetConfig", + FullMethod: "/cckit.extensions.token.TokenService/SetConfig", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(TokenServiceServer).SetConfig(ctx, req.(*Config)) @@ -1891,7 +1909,7 @@ func _TokenService_GetToken_Handler(srv interface{}, ctx context.Context, dec fu } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/extensions.token.TokenService/GetToken", + FullMethod: "/cckit.extensions.token.TokenService/GetToken", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(TokenServiceServer).GetToken(ctx, req.(*TokenId)) @@ -1909,7 +1927,7 @@ func _TokenService_GetDefaultToken_Handler(srv interface{}, ctx context.Context, } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/extensions.token.TokenService/GetDefaultToken", + FullMethod: "/cckit.extensions.token.TokenService/GetDefaultToken", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(TokenServiceServer).GetDefaultToken(ctx, req.(*emptypb.Empty)) @@ -1927,7 +1945,7 @@ func _TokenService_CreateTokenType_Handler(srv interface{}, ctx context.Context, } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/extensions.token.TokenService/CreateTokenType", + FullMethod: "/cckit.extensions.token.TokenService/CreateTokenType", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(TokenServiceServer).CreateTokenType(ctx, req.(*CreateTokenTypeRequest)) @@ -1945,7 +1963,7 @@ func _TokenService_GetTokenType_Handler(srv interface{}, ctx context.Context, de } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/extensions.token.TokenService/GetTokenType", + FullMethod: "/cckit.extensions.token.TokenService/GetTokenType", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(TokenServiceServer).GetTokenType(ctx, req.(*TokenTypeId)) @@ -1963,7 +1981,7 @@ func _TokenService_ListTokenTypes_Handler(srv interface{}, ctx context.Context, } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/extensions.token.TokenService/ListTokenTypes", + FullMethod: "/cckit.extensions.token.TokenService/ListTokenTypes", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(TokenServiceServer).ListTokenTypes(ctx, req.(*emptypb.Empty)) @@ -1981,7 +1999,7 @@ func _TokenService_UpdateTokenType_Handler(srv interface{}, ctx context.Context, } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/extensions.token.TokenService/UpdateTokenType", + FullMethod: "/cckit.extensions.token.TokenService/UpdateTokenType", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(TokenServiceServer).UpdateTokenType(ctx, req.(*UpdateTokenTypeRequest)) @@ -1999,7 +2017,7 @@ func _TokenService_DeleteTokenType_Handler(srv interface{}, ctx context.Context, } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/extensions.token.TokenService/DeleteTokenType", + FullMethod: "/cckit.extensions.token.TokenService/DeleteTokenType", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(TokenServiceServer).DeleteTokenType(ctx, req.(*TokenTypeId)) @@ -2017,7 +2035,7 @@ func _TokenService_GetTokenGroups_Handler(srv interface{}, ctx context.Context, } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/extensions.token.TokenService/GetTokenGroups", + FullMethod: "/cckit.extensions.token.TokenService/GetTokenGroups", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(TokenServiceServer).GetTokenGroups(ctx, req.(*TokenTypeId)) @@ -2035,7 +2053,7 @@ func _TokenService_CreateTokenGroup_Handler(srv interface{}, ctx context.Context } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/extensions.token.TokenService/CreateTokenGroup", + FullMethod: "/cckit.extensions.token.TokenService/CreateTokenGroup", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(TokenServiceServer).CreateTokenGroup(ctx, req.(*CreateTokenGroupRequest)) @@ -2053,7 +2071,7 @@ func _TokenService_GetTokenGroup_Handler(srv interface{}, ctx context.Context, d } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/extensions.token.TokenService/GetTokenGroup", + FullMethod: "/cckit.extensions.token.TokenService/GetTokenGroup", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(TokenServiceServer).GetTokenGroup(ctx, req.(*TokenGroupId)) @@ -2071,7 +2089,7 @@ func _TokenService_DeleteTokenGroup_Handler(srv interface{}, ctx context.Context } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/extensions.token.TokenService/DeleteTokenGroup", + FullMethod: "/cckit.extensions.token.TokenService/DeleteTokenGroup", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(TokenServiceServer).DeleteTokenGroup(ctx, req.(*TokenGroupId)) @@ -2080,7 +2098,7 @@ func _TokenService_DeleteTokenGroup_Handler(srv interface{}, ctx context.Context } var _TokenService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "extensions.token.TokenService", + ServiceName: "cckit.extensions.token.TokenService", HandlerType: (*TokenServiceServer)(nil), Methods: []grpc.MethodDesc{ { diff --git a/extensions/token/token.proto b/extensions/token/token.proto index 33abf18..b48a123 100644 --- a/extensions/token/token.proto +++ b/extensions/token/token.proto @@ -2,13 +2,14 @@ syntax = "proto3"; option go_package = "github.com/hyperledger-labs/cckit/extensions/token"; -package extensions.token; +package cckit.extensions.token; import "google/api/annotations.proto"; import "google/protobuf/empty.proto"; import "mwitkow/go-proto-validators/validator.proto"; import "token/balance.proto"; +import "token/decimal/decimal.proto"; service TokenService { @@ -100,7 +101,7 @@ message CreateTokenTypeRequest { string name = 2 [(validator.field) = {string_not_empty : true}]; uint32 decimals = 3 [(validator.field) = {int_lt: 9}]; // from 0 to 8 TokenGroupType group_type = 4 [(validator.field) = {is_in_enum : true}];; - cckit.extensions.token.Decimal total_supply = 5; // big.Int + decimal.Decimal total_supply = 5; // big.Int repeated TokenMetaRequest meta = 6; } @@ -115,7 +116,7 @@ message CreateTokenGroupRequest { string symbol = 1 [(validator.field) = {string_not_empty : true}]; repeated string group = 2 [(validator.field) = {repeated_count_min : 1}]; string name = 3 [(validator.field) = {string_not_empty : true}]; - cckit.extensions.token.Decimal total_supply = 4; // big.Int + decimal.Decimal total_supply = 4; // big.Int repeated TokenMetaRequest meta = 5; } @@ -140,7 +141,7 @@ message TokenType { string symbol = 1; string name = 2; uint32 decimals = 3; - cckit.extensions.token.Decimal total_supply = 4; + decimal.Decimal total_supply = 4; TokenGroupType group_type = 5; repeated TokenMeta meta = 6; } @@ -159,7 +160,7 @@ message TokenGroup { string symbol = 1; repeated string group = 2; string name = 3; - cckit.extensions.token.Decimal total_supply = 4; + decimal.Decimal total_supply = 4; repeated TokenMeta meta = 5; } diff --git a/extensions/token/token.swagger.json b/extensions/token/token.swagger.json index 15497ef..ba7ad3f 100644 --- a/extensions/token/token.swagger.json +++ b/extensions/token/token.swagger.json @@ -420,6 +420,18 @@ } }, "definitions": { + "decimalDecimal": { + "type": "object", + "properties": { + "scale": { + "type": "integer", + "format": "int32" + }, + "value": { + "type": "string" + } + } + }, "protobufAny": { "type": "object", "properties": { @@ -485,7 +497,7 @@ "type": "string" }, "total_supply": { - "$ref": "#/definitions/tokenDecimal" + "$ref": "#/definitions/decimalDecimal" }, "meta": { "type": "array", @@ -512,7 +524,7 @@ "$ref": "#/definitions/tokenTokenGroupType" }, "total_supply": { - "$ref": "#/definitions/tokenDecimal" + "$ref": "#/definitions/decimalDecimal" }, "meta": { "type": "array", @@ -522,18 +534,6 @@ } } }, - "tokenDecimal": { - "type": "object", - "properties": { - "scale": { - "type": "integer", - "format": "int32" - }, - "value": { - "type": "string" - } - } - }, "tokenToken": { "type": "object", "properties": { @@ -561,7 +561,7 @@ "type": "string" }, "total_supply": { - "$ref": "#/definitions/tokenDecimal" + "$ref": "#/definitions/decimalDecimal" }, "meta": { "type": "array", @@ -642,7 +642,7 @@ "format": "int64" }, "total_supply": { - "$ref": "#/definitions/tokenDecimal" + "$ref": "#/definitions/decimalDecimal" }, "group_type": { "$ref": "#/definitions/tokenTokenGroupType" diff --git a/extensions/token/token.validator.pb.go b/extensions/token/token.validator.pb.go index 282f715..a2be063 100644 --- a/extensions/token/token.validator.pb.go +++ b/extensions/token/token.validator.pb.go @@ -6,6 +6,7 @@ package token import ( fmt "fmt" proto "github.com/golang/protobuf/proto" + _ "github.com/hyperledger-labs/cckit/extensions/token/decimal" _ "github.com/mwitkow/go-proto-validators" github_com_mwitkow_go_proto_validators "github.com/mwitkow/go-proto-validators" _ "google.golang.org/genproto/googleapis/api/annotations"