Commit 960e7656 authored by hezhengjun's avatar hezhengjun

add para check for mine

parent 6584e084
......@@ -213,7 +213,7 @@ contract BridgeBank is GoAssetBank, EvmAssetBank {
* @param _amount: value of deposit
*/
function lock(
bytes memory _recipient,
address _recipient,
address _token,
uint256 _amount
)
......
......@@ -34,7 +34,7 @@ contract EvmAssetBank {
*/
event LogLock(
address _from,
bytes _to,
address _to,
address _token,
string _symbol,
uint256 _value,
......@@ -183,7 +183,7 @@ contract EvmAssetBank {
*/
function lockFunds(
address payable _sender,
bytes memory _recipient,
address _recipient,
address _token,
string memory _symbol,
uint256 _amount
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -95,7 +95,6 @@ func (e *evmxgoDB) burn(db dbm.KV, amount int64) ([]*types.KeyValue, []*types.Re
return kvs, logs, nil
}
type evmxgoAction struct {
coinsAccount *account.DB
db dbm.KV
......@@ -115,7 +114,6 @@ func newEvmxgoAction(e *evmxgo, toaddr string, tx *types.Transaction) *evmxgoAct
e.GetBlockTime(), e.GetHeight(), dapp.ExecAddress(string(tx.Execer)), e.GetAPI()}
}
func getManageKey(key string, db dbm.KV) ([]byte, error) {
manageKey := types.ManageKey(key)
value, err := db.Get([]byte(manageKey))
......@@ -183,7 +181,6 @@ func loadEvmxgoMintConfig(db dbm.KV, symbol string) (*evmxgotypes.EvmxgoMintConf
return nil, err // types.ErrBadConfigValue
}
configValue := item.GetArr().Value
if len(configValue) <= 0 {
return nil, evmxgotypes.ErrEvmxgoSymbolNotConfigValue
......@@ -247,21 +244,11 @@ func AddTokenToAssets(addr string, db dbm.KVDB, symbol string) []*types.KeyValue
return kv
}
// 同时比较配置symbol与address参数,和parse返回值是否一致
func check() (address, symbol string, amount int64, err error) {
return "", "", 0, err
}
func parse() (address, symbol string, amount int64, err error) {
// 上一个交易是否lock执行成功,如果是,返回实际参数,不是返回error
return "", "", 0, err
}
// 铸币不可控, 也是麻烦。 2选1
// 1. 谁可以发起
// 2. 是否需要审核 这个会增加管理的成本
// 现在实现选择 1
func (action *evmxgoAction) mint(mint *evmxgotypes.EvmxgoMint) (*types.Receipt, error) {
func (action *evmxgoAction) mint(mint *evmxgotypes.EvmxgoMint, tx2lock *types.Transaction) (*types.Receipt, error) {
if mint == nil {
return nil, types.ErrInvalidParam
}
......@@ -269,7 +256,9 @@ func (action *evmxgoAction) mint(mint *evmxgotypes.EvmxgoMint) (*types.Receipt,
return nil, types.ErrInvalidParam
}
cfg := action.api.GetConfig()
parse()
if err := checkMinePara(mint, tx2lock); nil != err {
return nil, err
}
// TODO check()
evmxgodb, err := loadEvmxgoDB(action.db, mint.GetSymbol())
......@@ -343,4 +332,3 @@ func (action *evmxgoAction) burn(burn *evmxgotypes.EvmxgoBurn) (*types.Receipt,
return &types.Receipt{Ty: types.ExecOk, KV: kvs, Logs: logs}, nil
}
package executor
import (
"errors"
"github.com/33cn/chain33/account"
"github.com/33cn/chain33/types"
evmxgotypes "github.com/33cn/plugin/plugin/dapp/evmxgo/types"
......@@ -60,11 +62,18 @@ func (e *evmxgo) Exec_TransferToExec(payload *types.AssetsTransferToExec, tx *ty
}
func (e *evmxgo) Exec_Mint(payload *evmxgotypes.EvmxgoMint, tx *types.Transaction, index int) (*types.Receipt, error) {
action:= newEvmxgoAction(e, "", tx)
return action.mint(payload)
action := newEvmxgoAction(e, "", tx)
txGroup, err := e.GetTxGroup(index)
if nil != err {
return nil, err
}
if len(txGroup) < 2 {
return nil, errors.New("Mint tx should be included in lock tx group")
}
return action.mint(payload, txGroup[0])
}
func (e *evmxgo) Exec_Burn(payload *evmxgotypes.EvmxgoBurn, tx *types.Transaction, index int) (*types.Receipt, error) {
action:= newEvmxgoAction(e, "", tx)
action := newEvmxgoAction(e, "", tx)
return action.burn(payload)
}
package executor
import (
"errors"
"github.com/33cn/chain33/types"
bridgevmxgo "github.com/33cn/plugin/plugin/dapp/bridgevmxgo/contracts/generated"
chain33Abi "github.com/33cn/plugin/plugin/dapp/evm/executor/abi"
evmxgotypes "github.com/33cn/plugin/plugin/dapp/evmxgo/types"
)
const (
LockMethod = "lock"
)
//solidity interface: function lock(address _recipient, address _token, uint256 _amount)
func checkMinePara(mint *evmxgotypes.EvmxgoMint, tx2lock *types.Transaction) error {
unpack, err := chain33Abi.Unpack(tx2lock.Payload, LockMethod, bridgevmxgo.BridgeBankABI)
if err != nil {
return err
}
for _, para := range unpack {
switch para.Name {
case "_recipient":
if mint.Address != para.Value {
return errors.New("Not consitent recipient address")
}
case "_amount":
if mint.Amount != para.Value {
return errors.New("Not consitent Amount")
}
case "_token":
if mint.Token != para.Value {
return errors.New("Not consitent token Address")
}
}
}
return nil
}
......@@ -22,6 +22,7 @@ message EvmxgoMint {
string symbol = 1;
int64 amount = 2;
string address =3;
string token =4;
}
message EvmxgoBurn {
......
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.26.0
// protoc v3.15.8
// protoc-gen-go v1.23.0
// protoc v3.9.1
// source: evmxgo.proto
package types
......@@ -9,6 +9,7 @@ package types
import (
context "context"
types "github.com/33cn/chain33/types"
proto "github.com/golang/protobuf/proto"
grpc "google.golang.org/grpc"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
......@@ -23,6 +24,10 @@ const (
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
// This is a compile-time assertion that a sufficiently up-to-date version
// of the legacy proto package is being used.
const _ = proto.ProtoPackageIsVersion4
// action
type EvmxgoAction struct {
state protoimpl.MessageState
......@@ -162,6 +167,7 @@ type EvmxgoMint struct {
Symbol string `protobuf:"bytes,1,opt,name=symbol,proto3" json:"symbol,omitempty"`
Amount int64 `protobuf:"varint,2,opt,name=amount,proto3" json:"amount,omitempty"`
Address string `protobuf:"bytes,3,opt,name=address,proto3" json:"address,omitempty"`
Token string `protobuf:"bytes,4,opt,name=token,proto3" json:"token,omitempty"`
}
func (x *EvmxgoMint) Reset() {
......@@ -217,6 +223,13 @@ func (x *EvmxgoMint) GetAddress() string {
return ""
}
func (x *EvmxgoMint) GetToken() string {
if x != nil {
return x.Token
}
return ""
}
type EvmxgoBurn struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
......@@ -1310,116 +1323,117 @@ var file_evmxgo_proto_rawDesc = []byte{
0x32, 0x11, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x45, 0x76, 0x6d, 0x78, 0x67, 0x6f, 0x42,
0x75, 0x72, 0x6e, 0x48, 0x00, 0x52, 0x04, 0x62, 0x75, 0x72, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x54,
0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x79, 0x42, 0x07, 0x0a, 0x05, 0x76,
0x61, 0x6c, 0x75, 0x65, 0x22, 0x56, 0x0a, 0x0a, 0x45, 0x76, 0x6d, 0x78, 0x67, 0x6f, 0x4d, 0x69,
0x61, 0x6c, 0x75, 0x65, 0x22, 0x6c, 0x0a, 0x0a, 0x45, 0x76, 0x6d, 0x78, 0x67, 0x6f, 0x4d, 0x69,
0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d,
0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75,
0x6e, 0x74, 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, 0x22, 0x3c, 0x0a, 0x0a,
0x45, 0x76, 0x6d, 0x78, 0x67, 0x6f, 0x42, 0x75, 0x72, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79,
0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05,
0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b,
0x65, 0x6e, 0x22, 0x3c, 0x0a, 0x0a, 0x45, 0x76, 0x6d, 0x78, 0x67, 0x6f, 0x42, 0x75, 0x72, 0x6e,
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, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75,
0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74,
0x22, 0x5a, 0x0a, 0x06, 0x45, 0x76, 0x6d, 0x78, 0x67, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79,
0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62,
0x6f, 0x6c, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69,
0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x64,
0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18,
0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x6e, 0x0a, 0x10,
0x45, 0x76, 0x6d, 0x78, 0x67, 0x6f, 0x4d, 0x69, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
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, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72,
0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70,
0x72, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x6e, 0x74, 0x72,
0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c,
0x69, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x27, 0x0a, 0x0d,
0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x45, 0x76, 0x6d, 0x78, 0x67, 0x6f, 0x12, 0x16, 0x0a,
0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73,
0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x22, 0x61, 0x0a, 0x13, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74,
0x45, 0x76, 0x6d, 0x78, 0x67, 0x6f, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x04,
0x70, 0x72, 0x65, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x74, 0x79, 0x70,
0x65, 0x73, 0x2e, 0x45, 0x76, 0x6d, 0x78, 0x67, 0x6f, 0x52, 0x04, 0x70, 0x72, 0x65, 0x76, 0x12,
0x27, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x0d, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x45, 0x76, 0x6d, 0x78, 0x67, 0x6f, 0x52,
0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x22, 0x7d, 0x0a, 0x0b, 0x4c, 0x6f, 0x63, 0x61,
0x6c, 0x45, 0x76, 0x6d, 0x78, 0x67, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f,
0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12,
0x22, 0x0a, 0x0c, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18,
0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74,
0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01,
0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x65,
0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x72,
0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x7b, 0x0a, 0x0f, 0x4c, 0x6f, 0x63, 0x61, 0x6c,
0x45, 0x76, 0x6d, 0x78, 0x67, 0x6f, 0x4c, 0x6f, 0x67, 0x73, 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, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01,
0x28, 0x03, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x5a, 0x0a, 0x06, 0x45, 0x76,
0x6d, 0x78, 0x67, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x22, 0x0a, 0x0c,
0x69, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01,
0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e,
0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52,
0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x6e, 0x0a, 0x10, 0x45, 0x76, 0x6d, 0x78, 0x67, 0x6f,
0x4d, 0x69, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 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, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f,
0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69,
0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69,
0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x64,
0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x27, 0x0a, 0x0d, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70,
0x74, 0x45, 0x76, 0x6d, 0x78, 0x67, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f,
0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x22,
0x61, 0x0a, 0x13, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x45, 0x76, 0x6d, 0x78, 0x67, 0x6f,
0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x04, 0x70, 0x72, 0x65, 0x76, 0x18, 0x01,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x45, 0x76, 0x6d,
0x78, 0x67, 0x6f, 0x52, 0x04, 0x70, 0x72, 0x65, 0x76, 0x12, 0x27, 0x0a, 0x07, 0x63, 0x75, 0x72,
0x72, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x74, 0x79, 0x70,
0x65, 0x73, 0x2e, 0x45, 0x76, 0x6d, 0x78, 0x67, 0x6f, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65,
0x6e, 0x74, 0x22, 0x7d, 0x0a, 0x0b, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x45, 0x76, 0x6d, 0x78, 0x67,
0x6f, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x6e, 0x74,
0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
0x0c, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a,
0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f,
0x74, 0x61, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e,
0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f,
0x6e, 0x22, 0x7b, 0x0a, 0x0f, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x45, 0x76, 0x6d, 0x78, 0x67, 0x6f,
0x4c, 0x6f, 0x67, 0x73, 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, 0x18, 0x0a, 0x07,
0x74, 0x78, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74,
0x78, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e,
0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x61, 0x63, 0x74, 0x69,
0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68,
0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x22, 0x40,
0x0a, 0x0a, 0x52, 0x65, 0x71, 0x45, 0x76, 0x6d, 0x78, 0x67, 0x6f, 0x73, 0x12, 0x1a, 0x0a, 0x08,
0x71, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08,
0x71, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x6f, 0x6b, 0x65,
0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73,
0x22, 0x3a, 0x0a, 0x0c, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x45, 0x76, 0x6d, 0x78, 0x67, 0x6f, 0x73,
0x12, 0x2a, 0x0a, 0x06, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x45, 0x76,
0x6d, 0x78, 0x67, 0x6f, 0x52, 0x06, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x22, 0x38, 0x0a, 0x0a,
0x45, 0x76, 0x6d, 0x78, 0x67, 0x6f, 0x52, 0x65, 0x63, 0x76, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x76,
0x6d, 0x78, 0x67, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x76, 0x6d, 0x78,
0x67, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x65, 0x63, 0x76, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03,
0x52, 0x04, 0x72, 0x65, 0x63, 0x76, 0x22, 0x4e, 0x0a, 0x17, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x41,
0x64, 0x64, 0x72, 0x52, 0x65, 0x63, 0x76, 0x46, 0x6f, 0x72, 0x45, 0x76, 0x6d, 0x78, 0x67, 0x6f,
0x73, 0x12, 0x33, 0x0a, 0x0b, 0x65, 0x76, 0x6d, 0x78, 0x67, 0x6f, 0x52, 0x65, 0x63, 0x76, 0x73,
0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x45,
0x76, 0x6d, 0x78, 0x67, 0x6f, 0x52, 0x65, 0x63, 0x76, 0x52, 0x0b, 0x65, 0x76, 0x6d, 0x78, 0x67,
0x6f, 0x52, 0x65, 0x63, 0x76, 0x73, 0x22, 0x3b, 0x0a, 0x0d, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x41,
0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x2a, 0x0a, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75,
0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x74, 0x79, 0x70, 0x65,
0x73, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75,
0x6e, 0x74, 0x73, 0x22, 0x4a, 0x0a, 0x16, 0x52, 0x65, 0x71, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e,
0x74, 0x45, 0x76, 0x6d, 0x78, 0x67, 0x6f, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 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, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x78, 0x65, 0x63, 0x65,
0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x78, 0x65, 0x63, 0x65, 0x72, 0x22,
0x4f, 0x0a, 0x0b, 0x45, 0x76, 0x6d, 0x78, 0x67, 0x6f, 0x41, 0x73, 0x73, 0x65, 0x74, 0x12, 0x16,
0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x28, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e,
0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e,
0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
0x22, 0x52, 0x0a, 0x18, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
0x45, 0x76, 0x6d, 0x78, 0x67, 0x6f, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, 0x36, 0x0a, 0x0c,
0x65, 0x76, 0x6d, 0x78, 0x67, 0x6f, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03,
0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x45, 0x76, 0x6d, 0x78, 0x67,
0x6f, 0x41, 0x73, 0x73, 0x65, 0x74, 0x52, 0x0c, 0x65, 0x76, 0x6d, 0x78, 0x67, 0x6f, 0x41, 0x73,
0x73, 0x65, 0x74, 0x73, 0x22, 0xa2, 0x01, 0x0a, 0x0e, 0x52, 0x65, 0x71, 0x41, 0x64, 0x64, 0x72,
0x45, 0x76, 0x6d, 0x78, 0x67, 0x6f, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x64, 0x64, 0x72, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x64, 0x64, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73,
0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61,
0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x76, 0x6d, 0x78, 0x67, 0x6f, 0x18, 0x03, 0x20,
0x03, 0x28, 0x09, 0x52, 0x06, 0x65, 0x76, 0x6d, 0x78, 0x67, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x64,
0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09,
0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75,
0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12,
0x18, 0x0a, 0x07, 0x66, 0x72, 0x6f, 0x6d, 0x4b, 0x65, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09,
0x52, 0x07, 0x66, 0x72, 0x6f, 0x6d, 0x4b, 0x65, 0x79, 0x22, 0xaf, 0x01, 0x0a, 0x0b, 0x52, 0x65,
0x71, 0x45, 0x76, 0x6d, 0x78, 0x67, 0x6f, 0x54, 0x78, 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, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,
0x04, 0x66, 0x6c, 0x61, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03,
0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x64,
0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09,
0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69,
0x67, 0x68, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68,
0x74, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03,
0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x64, 0x64, 0x72, 0x18,
0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x64, 0x64, 0x72, 0x22, 0x3d, 0x0a, 0x0f, 0x52,
0x65, 0x70, 0x6c, 0x79, 0x45, 0x76, 0x6d, 0x78, 0x67, 0x6f, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x2a,
0x0a, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74,
0x79, 0x70, 0x65, 0x73, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x45, 0x76, 0x6d, 0x78, 0x67, 0x6f,
0x4c, 0x6f, 0x67, 0x73, 0x52, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x32, 0x08, 0x0a, 0x06, 0x65, 0x76,
0x6d, 0x78, 0x67, 0x6f, 0x42, 0x0a, 0x5a, 0x08, 0x2e, 0x2e, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73,
0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x6f, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x78, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20,
0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x78, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1e, 0x0a, 0x0a,
0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05,
0x52, 0x0a, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06,
0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x78,
0x48, 0x61, 0x73, 0x68, 0x22, 0x40, 0x0a, 0x0a, 0x52, 0x65, 0x71, 0x45, 0x76, 0x6d, 0x78, 0x67,
0x6f, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x71, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x6c, 0x18, 0x01,
0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x71, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x6c, 0x12, 0x16,
0x0a, 0x06, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06,
0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x22, 0x3a, 0x0a, 0x0c, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x45,
0x76, 0x6d, 0x78, 0x67, 0x6f, 0x73, 0x12, 0x2a, 0x0a, 0x06, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73,
0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4c,
0x6f, 0x63, 0x61, 0x6c, 0x45, 0x76, 0x6d, 0x78, 0x67, 0x6f, 0x52, 0x06, 0x74, 0x6f, 0x6b, 0x65,
0x6e, 0x73, 0x22, 0x38, 0x0a, 0x0a, 0x45, 0x76, 0x6d, 0x78, 0x67, 0x6f, 0x52, 0x65, 0x63, 0x76,
0x12, 0x16, 0x0a, 0x06, 0x65, 0x76, 0x6d, 0x78, 0x67, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x52, 0x06, 0x65, 0x76, 0x6d, 0x78, 0x67, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x65, 0x63, 0x76,
0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x72, 0x65, 0x63, 0x76, 0x22, 0x4e, 0x0a, 0x17,
0x52, 0x65, 0x70, 0x6c, 0x79, 0x41, 0x64, 0x64, 0x72, 0x52, 0x65, 0x63, 0x76, 0x46, 0x6f, 0x72,
0x45, 0x76, 0x6d, 0x78, 0x67, 0x6f, 0x73, 0x12, 0x33, 0x0a, 0x0b, 0x65, 0x76, 0x6d, 0x78, 0x67,
0x6f, 0x52, 0x65, 0x63, 0x76, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x74,
0x79, 0x70, 0x65, 0x73, 0x2e, 0x45, 0x76, 0x6d, 0x78, 0x67, 0x6f, 0x52, 0x65, 0x63, 0x76, 0x52,
0x0b, 0x65, 0x76, 0x6d, 0x78, 0x67, 0x6f, 0x52, 0x65, 0x63, 0x76, 0x73, 0x22, 0x3b, 0x0a, 0x0d,
0x52, 0x65, 0x70, 0x6c, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x2a, 0x0a,
0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x0e, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52,
0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x22, 0x4a, 0x0a, 0x16, 0x52, 0x65, 0x71,
0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x76, 0x6d, 0x78, 0x67, 0x6f, 0x41, 0x73, 0x73,
0x65, 0x74, 0x73, 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, 0x12, 0x16, 0x0a,
0x06, 0x65, 0x78, 0x65, 0x63, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65,
0x78, 0x65, 0x63, 0x65, 0x72, 0x22, 0x4f, 0x0a, 0x0b, 0x45, 0x76, 0x6d, 0x78, 0x67, 0x6f, 0x41,
0x73, 0x73, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x28, 0x0a, 0x07,
0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e,
0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x07, 0x61,
0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x52, 0x0a, 0x18, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x41,
0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x76, 0x6d, 0x78, 0x67, 0x6f, 0x41, 0x73, 0x73, 0x65,
0x74, 0x73, 0x12, 0x36, 0x0a, 0x0c, 0x65, 0x76, 0x6d, 0x78, 0x67, 0x6f, 0x41, 0x73, 0x73, 0x65,
0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73,
0x2e, 0x45, 0x76, 0x6d, 0x78, 0x67, 0x6f, 0x41, 0x73, 0x73, 0x65, 0x74, 0x52, 0x0c, 0x65, 0x76,
0x6d, 0x78, 0x67, 0x6f, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x22, 0xa2, 0x01, 0x0a, 0x0e, 0x52,
0x65, 0x71, 0x41, 0x64, 0x64, 0x72, 0x45, 0x76, 0x6d, 0x78, 0x67, 0x6f, 0x73, 0x12, 0x12, 0x0a,
0x04, 0x61, 0x64, 0x64, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x64, 0x64,
0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28,
0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x76, 0x6d,
0x78, 0x67, 0x6f, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x65, 0x76, 0x6d, 0x78, 0x67,
0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04,
0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12,
0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05,
0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x72, 0x6f, 0x6d, 0x4b, 0x65, 0x79,
0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x72, 0x6f, 0x6d, 0x4b, 0x65, 0x79, 0x22,
0xaf, 0x01, 0x0a, 0x0b, 0x52, 0x65, 0x71, 0x45, 0x76, 0x6d, 0x78, 0x67, 0x6f, 0x54, 0x78, 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, 0x66, 0x6c, 0x61, 0x67, 0x18,
0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x63,
0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e,
0x74, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04,
0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12,
0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52,
0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78,
0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x12, 0x0a,
0x04, 0x61, 0x64, 0x64, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x64, 0x64,
0x72, 0x22, 0x3d, 0x0a, 0x0f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x45, 0x76, 0x6d, 0x78, 0x67, 0x6f,
0x4c, 0x6f, 0x67, 0x73, 0x12, 0x2a, 0x0a, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03,
0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c,
0x45, 0x76, 0x6d, 0x78, 0x67, 0x6f, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x04, 0x6c, 0x6f, 0x67, 0x73,
0x32, 0x08, 0x0a, 0x06, 0x65, 0x76, 0x6d, 0x78, 0x67, 0x6f, 0x42, 0x0a, 0x5a, 0x08, 0x2e, 0x2e,
0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment