From 8e81716d2ac3eb9be9acaf5fc7a8bb60c49b0427 Mon Sep 17 00:00:00 2001 From: c9s Date: Wed, 13 Apr 2022 14:14:25 +0800 Subject: [PATCH] grpc: separate market data message and user data message --- pkg/grpc/convert.go | 54 +- pkg/grpc/server.go | 21 +- pkg/pb/bbgo.pb.go | 1245 ++++++++++++++++++++++------------------ pkg/pb/bbgo.proto | 39 +- pkg/pb/bbgo_grpc.pb.go | 54 +- 5 files changed, 768 insertions(+), 645 deletions(-) diff --git a/pkg/grpc/convert.go b/pkg/grpc/convert.go index dc6374c44..8f9f466eb 100644 --- a/pkg/grpc/convert.go +++ b/pkg/grpc/convert.go @@ -49,8 +49,8 @@ func transPriceVolume(srcPvs types.PriceVolumeSlice) (pvs []*pb.PriceVolume) { return pvs } -func transBook(session *bbgo.ExchangeSession, book types.SliceOrderBook, event pb.Event) *pb.SubscribeResponse { - return &pb.SubscribeResponse{ +func transBook(session *bbgo.ExchangeSession, book types.SliceOrderBook, event pb.Event) *pb.MarketData { + return &pb.MarketData{ Session: session.Name, Exchange: session.ExchangeName.String(), Symbol: book.Symbol, @@ -65,8 +65,8 @@ func transBook(session *bbgo.ExchangeSession, book types.SliceOrderBook, event p } } -func transMarketTrade(session *bbgo.ExchangeSession, marketTrade types.Trade) *pb.SubscribeResponse { - return &pb.SubscribeResponse{ +func transMarketTrade(session *bbgo.ExchangeSession, marketTrade types.Trade) *pb.MarketData { + return &pb.MarketData{ Session: session.Name, Exchange: session.ExchangeName.String(), Symbol: marketTrade.Symbol, @@ -100,27 +100,31 @@ func transSide(side types.SideType) pb.Side { return pb.Side_SELL } -func transKLine(session *bbgo.ExchangeSession, kline types.KLine) *pb.SubscribeResponse { - return &pb.SubscribeResponse{ - Session: session.Name, - Exchange: kline.Exchange.String(), - Symbol: kline.Symbol, - Channel: pb.Channel_KLINE, - Event: pb.Event_UPDATE, - Kline: &pb.KLine{ - Session: session.Name, - Exchange: kline.Exchange.String(), - Symbol: kline.Symbol, - Open: kline.Open.String(), - High: kline.High.String(), - Low: kline.Low.String(), - Close: kline.Close.String(), - Volume: kline.Volume.String(), - QuoteVolume: kline.QuoteVolume.String(), - StartTime: kline.StartTime.UnixMilli(), - EndTime: kline.StartTime.UnixMilli(), - Closed: kline.Closed, - }, +func transKLine(session *bbgo.ExchangeSession, kline types.KLine) *pb.KLine { + return &pb.KLine{ + Session: session.Name, + Exchange: kline.Exchange.String(), + Symbol: kline.Symbol, + Open: kline.Open.String(), + High: kline.High.String(), + Low: kline.Low.String(), + Close: kline.Close.String(), + Volume: kline.Volume.String(), + QuoteVolume: kline.QuoteVolume.String(), + StartTime: kline.StartTime.UnixMilli(), + EndTime: kline.StartTime.UnixMilli(), + Closed: kline.Closed, + } +} + +func transKLineResponse(session *bbgo.ExchangeSession, kline types.KLine) *pb.MarketData { + return &pb.MarketData{ + Session: session.Name, + Exchange: kline.Exchange.String(), + Symbol: kline.Symbol, + Channel: pb.Channel_KLINE, + Event: pb.Event_UPDATE, + Kline: transKLine(session, kline), SubscribedAt: 0, } } diff --git a/pkg/grpc/server.go b/pkg/grpc/server.go index 54fd1155d..890bd1d3c 100644 --- a/pkg/grpc/server.go +++ b/pkg/grpc/server.go @@ -22,6 +22,11 @@ type Server struct { Trader *bbgo.Trader pb.UnimplementedMarketDataServiceServer + pb.UnimplementedUserDataServiceServer +} + +func (s *Server) SubscribeUserData(empty *pb.Empty, server pb.UserDataService_SubscribeServer) error { + return nil } func (s *Server) Subscribe(request *pb.SubscribeRequest, server pb.MarketDataService_SubscribeServer) error { @@ -73,7 +78,7 @@ func (s *Server) Subscribe(request *pb.SubscribeRequest, server pb.MarketDataSer } }) stream.OnKLineClosed(func(kline types.KLine) { - err := server.Send(transKLine(session, kline)) + err := server.Send(transKLineResponse(session, kline)) if err != nil { log.WithError(err).Error("grpc stream send error") } @@ -132,19 +137,7 @@ func (s *Server) QueryKLines(ctx context.Context, request *pb.QueryKLinesRequest } for _, kline := range klines { - response.Klines = append(response.Klines, &pb.KLine{ - Exchange: kline.Exchange.String(), - Symbol: kline.Symbol, - Open: kline.Open.String(), - High: kline.High.String(), - Low: kline.Low.String(), - Close: kline.Close.String(), - Volume: kline.Volume.String(), - QuoteVolume: kline.QuoteVolume.String(), - Closed: kline.Closed, - StartTime: kline.StartTime.UnixMilli(), - EndTime: kline.EndTime.UnixMilli(), - }) + response.Klines = append(response.Klines, transKLine(session, kline)) } return response, nil diff --git a/pkg/pb/bbgo.pb.go b/pkg/pb/bbgo.pb.go index 5d4f3e2b1..ba6361808 100644 --- a/pkg/pb/bbgo.pb.go +++ b/pkg/pb/bbgo.pb.go @@ -23,19 +23,13 @@ const ( type Event int32 const ( - Event_UNKNOWN Event = 0 - Event_SUBSCRIBED Event = 1 - Event_UNSUBSCRIBED Event = 2 - Event_SNAPSHOT Event = 3 - Event_UPDATE Event = 4 - Event_AUTHENTICATED Event = 5 - Event_ORDER_SNAPSHOT Event = 6 - Event_ORDER_UPDATE Event = 7 - Event_TRADE_SNAPSHOT Event = 8 - Event_TRADE_UPDATE Event = 9 - Event_ACCOUNT_SNAPSHOT Event = 10 - Event_ACCOUNT_UPDATE Event = 11 - Event_ERROR Event = 99 + Event_UNKNOWN Event = 0 + Event_SUBSCRIBED Event = 1 + Event_UNSUBSCRIBED Event = 2 + Event_SNAPSHOT Event = 3 + Event_UPDATE Event = 4 + Event_AUTHENTICATED Event = 5 + Event_ERROR Event = 99 ) // Enum value maps for Event. @@ -47,28 +41,16 @@ var ( 3: "SNAPSHOT", 4: "UPDATE", 5: "AUTHENTICATED", - 6: "ORDER_SNAPSHOT", - 7: "ORDER_UPDATE", - 8: "TRADE_SNAPSHOT", - 9: "TRADE_UPDATE", - 10: "ACCOUNT_SNAPSHOT", - 11: "ACCOUNT_UPDATE", 99: "ERROR", } Event_value = map[string]int32{ - "UNKNOWN": 0, - "SUBSCRIBED": 1, - "UNSUBSCRIBED": 2, - "SNAPSHOT": 3, - "UPDATE": 4, - "AUTHENTICATED": 5, - "ORDER_SNAPSHOT": 6, - "ORDER_UPDATE": 7, - "TRADE_SNAPSHOT": 8, - "TRADE_UPDATE": 9, - "ACCOUNT_SNAPSHOT": 10, - "ACCOUNT_UPDATE": 11, - "ERROR": 99, + "UNKNOWN": 0, + "SUBSCRIBED": 1, + "UNSUBSCRIBED": 2, + "SNAPSHOT": 3, + "UPDATE": 4, + "AUTHENTICATED": 5, + "ERROR": 99, } ) @@ -102,11 +84,11 @@ func (Event) EnumDescriptor() ([]byte, []int) { type Channel int32 const ( - Channel_BOOK Channel = 0 - Channel_TRADE Channel = 1 - Channel_TICKER Channel = 2 - Channel_USER Channel = 3 - Channel_KLINE Channel = 4 + Channel_BOOK Channel = 0 + Channel_TRADE Channel = 1 + Channel_TICKER Channel = 2 + Channel_KLINE Channel = 3 + Channel_BALANCE Channel = 4 ) // Enum value maps for Channel. @@ -115,15 +97,15 @@ var ( 0: "BOOK", 1: "TRADE", 2: "TICKER", - 3: "USER", - 4: "KLINE", + 3: "KLINE", + 4: "BALANCE", } Channel_value = map[string]int32{ - "BOOK": 0, - "TRADE": 1, - "TICKER": 2, - "USER": 3, - "KLINE": 4, + "BOOK": 0, + "TRADE": 1, + "TICKER": 2, + "KLINE": 3, + "BALANCE": 4, } ) @@ -351,6 +333,132 @@ func (x *Error) GetErrorMessage() string { return "" } +type UserDataRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Session string `protobuf:"bytes,1,opt,name=session,proto3" json:"session,omitempty"` +} + +func (x *UserDataRequest) Reset() { + *x = UserDataRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_pb_bbgo_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UserDataRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UserDataRequest) ProtoMessage() {} + +func (x *UserDataRequest) ProtoReflect() protoreflect.Message { + mi := &file_pkg_pb_bbgo_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UserDataRequest.ProtoReflect.Descriptor instead. +func (*UserDataRequest) Descriptor() ([]byte, []int) { + return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{2} +} + +func (x *UserDataRequest) GetSession() string { + if x != nil { + return x.Session + } + return "" +} + +type UserData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Channel Channel `protobuf:"varint,1,opt,name=channel,proto3,enum=bbgo.Channel" json:"channel,omitempty"` // trade, order, balance + Event Event `protobuf:"varint,2,opt,name=event,proto3,enum=bbgo.Event" json:"event,omitempty"` // snapshot, update ... + Balances []*Balance `protobuf:"bytes,3,rep,name=balances,proto3" json:"balances,omitempty"` + Trades []*Trade `protobuf:"bytes,4,rep,name=trades,proto3" json:"trades,omitempty"` + Orders []*Order `protobuf:"bytes,5,rep,name=orders,proto3" json:"orders,omitempty"` +} + +func (x *UserData) Reset() { + *x = UserData{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_pb_bbgo_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UserData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UserData) ProtoMessage() {} + +func (x *UserData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_pb_bbgo_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UserData.ProtoReflect.Descriptor instead. +func (*UserData) Descriptor() ([]byte, []int) { + return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{3} +} + +func (x *UserData) GetChannel() Channel { + if x != nil { + return x.Channel + } + return Channel_BOOK +} + +func (x *UserData) GetEvent() Event { + if x != nil { + return x.Event + } + return Event_UNKNOWN +} + +func (x *UserData) GetBalances() []*Balance { + if x != nil { + return x.Balances + } + return nil +} + +func (x *UserData) GetTrades() []*Trade { + if x != nil { + return x.Trades + } + return nil +} + +func (x *UserData) GetOrders() []*Order { + if x != nil { + return x.Orders + } + return nil +} + type SubscribeRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -362,7 +470,7 @@ type SubscribeRequest struct { func (x *SubscribeRequest) Reset() { *x = SubscribeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_pb_bbgo_proto_msgTypes[2] + mi := &file_pkg_pb_bbgo_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -375,7 +483,7 @@ func (x *SubscribeRequest) String() string { func (*SubscribeRequest) ProtoMessage() {} func (x *SubscribeRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_pb_bbgo_proto_msgTypes[2] + mi := &file_pkg_pb_bbgo_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -388,7 +496,7 @@ func (x *SubscribeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscribeRequest.ProtoReflect.Descriptor instead. func (*SubscribeRequest) Descriptor() ([]byte, []int) { - return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{2} + return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{4} } func (x *SubscribeRequest) GetSubscriptions() []*Subscription { @@ -413,7 +521,7 @@ type Subscription struct { func (x *Subscription) Reset() { *x = Subscription{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_pb_bbgo_proto_msgTypes[3] + mi := &file_pkg_pb_bbgo_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -426,7 +534,7 @@ func (x *Subscription) String() string { func (*Subscription) ProtoMessage() {} func (x *Subscription) ProtoReflect() protoreflect.Message { - mi := &file_pkg_pb_bbgo_proto_msgTypes[3] + mi := &file_pkg_pb_bbgo_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -439,7 +547,7 @@ func (x *Subscription) ProtoReflect() protoreflect.Message { // Deprecated: Use Subscription.ProtoReflect.Descriptor instead. func (*Subscription) Descriptor() ([]byte, []int) { - return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{3} + return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{5} } func (x *Subscription) GetExchange() string { @@ -477,43 +585,41 @@ func (x *Subscription) GetInterval() string { return "" } -type SubscribeResponse struct { +type MarketData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Session string `protobuf:"bytes,1,opt,name=session,proto3" json:"session,omitempty"` - Exchange string `protobuf:"bytes,2,opt,name=exchange,proto3" json:"exchange,omitempty"` - Symbol string `protobuf:"bytes,3,opt,name=symbol,proto3" json:"symbol,omitempty"` - Channel Channel `protobuf:"varint,4,opt,name=channel,proto3,enum=bbgo.Channel" json:"channel,omitempty"` // book, trade, ticker, user - Event Event `protobuf:"varint,5,opt,name=event,proto3,enum=bbgo.Event" json:"event,omitempty"` // snapshot, update, order_snapshot, ... - Depth *Depth `protobuf:"bytes,6,opt,name=depth,proto3" json:"depth,omitempty"` // depth: used by book - Kline *KLine `protobuf:"bytes,7,opt,name=kline,proto3" json:"kline,omitempty"` - Trades []*Trade `protobuf:"bytes,8,rep,name=trades,proto3" json:"trades,omitempty"` - Ticker *Ticker `protobuf:"bytes,9,opt,name=ticker,proto3" json:"ticker,omitempty"` - Orders []*Order `protobuf:"bytes,10,rep,name=orders,proto3" json:"orders,omitempty"` - Balances []*Balance `protobuf:"bytes,11,rep,name=balances,proto3" json:"balances,omitempty"` - SubscribedAt int64 `protobuf:"varint,12,opt,name=subscribed_at,json=subscribedAt,proto3" json:"subscribed_at,omitempty"` - Error *Error `protobuf:"bytes,13,opt,name=error,proto3" json:"error,omitempty"` + Session string `protobuf:"bytes,1,opt,name=session,proto3" json:"session,omitempty"` + Exchange string `protobuf:"bytes,2,opt,name=exchange,proto3" json:"exchange,omitempty"` + Symbol string `protobuf:"bytes,3,opt,name=symbol,proto3" json:"symbol,omitempty"` + Channel Channel `protobuf:"varint,4,opt,name=channel,proto3,enum=bbgo.Channel" json:"channel,omitempty"` // book, trade, ticker, user + Event Event `protobuf:"varint,5,opt,name=event,proto3,enum=bbgo.Event" json:"event,omitempty"` // snapshot or update + Depth *Depth `protobuf:"bytes,6,opt,name=depth,proto3" json:"depth,omitempty"` // depth: used by book + Kline *KLine `protobuf:"bytes,7,opt,name=kline,proto3" json:"kline,omitempty"` + Ticker *Ticker `protobuf:"bytes,9,opt,name=ticker,proto3" json:"ticker,omitempty"` // market ticker + Trades []*Trade `protobuf:"bytes,8,rep,name=trades,proto3" json:"trades,omitempty"` // market trades + SubscribedAt int64 `protobuf:"varint,12,opt,name=subscribed_at,json=subscribedAt,proto3" json:"subscribed_at,omitempty"` + Error *Error `protobuf:"bytes,13,opt,name=error,proto3" json:"error,omitempty"` } -func (x *SubscribeResponse) Reset() { - *x = SubscribeResponse{} +func (x *MarketData) Reset() { + *x = MarketData{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_pb_bbgo_proto_msgTypes[4] + mi := &file_pkg_pb_bbgo_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *SubscribeResponse) String() string { +func (x *MarketData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SubscribeResponse) ProtoMessage() {} +func (*MarketData) ProtoMessage() {} -func (x *SubscribeResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_pb_bbgo_proto_msgTypes[4] +func (x *MarketData) ProtoReflect() protoreflect.Message { + mi := &file_pkg_pb_bbgo_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -524,96 +630,82 @@ func (x *SubscribeResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use SubscribeResponse.ProtoReflect.Descriptor instead. -func (*SubscribeResponse) Descriptor() ([]byte, []int) { - return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{4} +// Deprecated: Use MarketData.ProtoReflect.Descriptor instead. +func (*MarketData) Descriptor() ([]byte, []int) { + return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{6} } -func (x *SubscribeResponse) GetSession() string { +func (x *MarketData) GetSession() string { if x != nil { return x.Session } return "" } -func (x *SubscribeResponse) GetExchange() string { +func (x *MarketData) GetExchange() string { if x != nil { return x.Exchange } return "" } -func (x *SubscribeResponse) GetSymbol() string { +func (x *MarketData) GetSymbol() string { if x != nil { return x.Symbol } return "" } -func (x *SubscribeResponse) GetChannel() Channel { +func (x *MarketData) GetChannel() Channel { if x != nil { return x.Channel } return Channel_BOOK } -func (x *SubscribeResponse) GetEvent() Event { +func (x *MarketData) GetEvent() Event { if x != nil { return x.Event } return Event_UNKNOWN } -func (x *SubscribeResponse) GetDepth() *Depth { +func (x *MarketData) GetDepth() *Depth { if x != nil { return x.Depth } return nil } -func (x *SubscribeResponse) GetKline() *KLine { +func (x *MarketData) GetKline() *KLine { if x != nil { return x.Kline } return nil } -func (x *SubscribeResponse) GetTrades() []*Trade { - if x != nil { - return x.Trades - } - return nil -} - -func (x *SubscribeResponse) GetTicker() *Ticker { +func (x *MarketData) GetTicker() *Ticker { if x != nil { return x.Ticker } return nil } -func (x *SubscribeResponse) GetOrders() []*Order { +func (x *MarketData) GetTrades() []*Trade { if x != nil { - return x.Orders + return x.Trades } return nil } -func (x *SubscribeResponse) GetBalances() []*Balance { - if x != nil { - return x.Balances - } - return nil -} - -func (x *SubscribeResponse) GetSubscribedAt() int64 { +func (x *MarketData) GetSubscribedAt() int64 { if x != nil { return x.SubscribedAt } return 0 } -func (x *SubscribeResponse) GetError() *Error { +func (x *MarketData) GetError() *Error { if x != nil { return x.Error } @@ -634,7 +726,7 @@ type Depth struct { func (x *Depth) Reset() { *x = Depth{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_pb_bbgo_proto_msgTypes[5] + mi := &file_pkg_pb_bbgo_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -647,7 +739,7 @@ func (x *Depth) String() string { func (*Depth) ProtoMessage() {} func (x *Depth) ProtoReflect() protoreflect.Message { - mi := &file_pkg_pb_bbgo_proto_msgTypes[5] + mi := &file_pkg_pb_bbgo_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -660,7 +752,7 @@ func (x *Depth) ProtoReflect() protoreflect.Message { // Deprecated: Use Depth.ProtoReflect.Descriptor instead. func (*Depth) Descriptor() ([]byte, []int) { - return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{5} + return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{7} } func (x *Depth) GetExchange() string { @@ -703,7 +795,7 @@ type PriceVolume struct { func (x *PriceVolume) Reset() { *x = PriceVolume{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_pb_bbgo_proto_msgTypes[6] + mi := &file_pkg_pb_bbgo_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -716,7 +808,7 @@ func (x *PriceVolume) String() string { func (*PriceVolume) ProtoMessage() {} func (x *PriceVolume) ProtoReflect() protoreflect.Message { - mi := &file_pkg_pb_bbgo_proto_msgTypes[6] + mi := &file_pkg_pb_bbgo_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -729,7 +821,7 @@ func (x *PriceVolume) ProtoReflect() protoreflect.Message { // Deprecated: Use PriceVolume.ProtoReflect.Descriptor instead. func (*PriceVolume) Descriptor() ([]byte, []int) { - return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{6} + return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{8} } func (x *PriceVolume) GetPrice() string { @@ -768,7 +860,7 @@ type Trade struct { func (x *Trade) Reset() { *x = Trade{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_pb_bbgo_proto_msgTypes[7] + mi := &file_pkg_pb_bbgo_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -781,7 +873,7 @@ func (x *Trade) String() string { func (*Trade) ProtoMessage() {} func (x *Trade) ProtoReflect() protoreflect.Message { - mi := &file_pkg_pb_bbgo_proto_msgTypes[7] + mi := &file_pkg_pb_bbgo_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -794,7 +886,7 @@ func (x *Trade) ProtoReflect() protoreflect.Message { // Deprecated: Use Trade.ProtoReflect.Descriptor instead. func (*Trade) Descriptor() ([]byte, []int) { - return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{7} + return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{9} } func (x *Trade) GetExchange() string { @@ -885,7 +977,7 @@ type Ticker struct { func (x *Ticker) Reset() { *x = Ticker{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_pb_bbgo_proto_msgTypes[8] + mi := &file_pkg_pb_bbgo_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -898,7 +990,7 @@ func (x *Ticker) String() string { func (*Ticker) ProtoMessage() {} func (x *Ticker) ProtoReflect() protoreflect.Message { - mi := &file_pkg_pb_bbgo_proto_msgTypes[8] + mi := &file_pkg_pb_bbgo_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -911,7 +1003,7 @@ func (x *Ticker) ProtoReflect() protoreflect.Message { // Deprecated: Use Ticker.ProtoReflect.Descriptor instead. func (*Ticker) Descriptor() ([]byte, []int) { - return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{8} + return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{10} } func (x *Ticker) GetExchange() string { @@ -989,7 +1081,7 @@ type Order struct { func (x *Order) Reset() { *x = Order{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_pb_bbgo_proto_msgTypes[9] + mi := &file_pkg_pb_bbgo_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1002,7 +1094,7 @@ func (x *Order) String() string { func (*Order) ProtoMessage() {} func (x *Order) ProtoReflect() protoreflect.Message { - mi := &file_pkg_pb_bbgo_proto_msgTypes[9] + mi := &file_pkg_pb_bbgo_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1015,7 +1107,7 @@ func (x *Order) ProtoReflect() protoreflect.Message { // Deprecated: Use Order.ProtoReflect.Descriptor instead. func (*Order) Descriptor() ([]byte, []int) { - return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{9} + return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{11} } func (x *Order) GetExchange() string { @@ -1142,7 +1234,7 @@ type SubmitOrder struct { func (x *SubmitOrder) Reset() { *x = SubmitOrder{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_pb_bbgo_proto_msgTypes[10] + mi := &file_pkg_pb_bbgo_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1155,7 +1247,7 @@ func (x *SubmitOrder) String() string { func (*SubmitOrder) ProtoMessage() {} func (x *SubmitOrder) ProtoReflect() protoreflect.Message { - mi := &file_pkg_pb_bbgo_proto_msgTypes[10] + mi := &file_pkg_pb_bbgo_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1168,7 +1260,7 @@ func (x *SubmitOrder) ProtoReflect() protoreflect.Message { // Deprecated: Use SubmitOrder.ProtoReflect.Descriptor instead. func (*SubmitOrder) Descriptor() ([]byte, []int) { - return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{10} + return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{12} } func (x *SubmitOrder) GetExchange() string { @@ -1249,7 +1341,7 @@ type Balance struct { func (x *Balance) Reset() { *x = Balance{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_pb_bbgo_proto_msgTypes[11] + mi := &file_pkg_pb_bbgo_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1262,7 +1354,7 @@ func (x *Balance) String() string { func (*Balance) ProtoMessage() {} func (x *Balance) ProtoReflect() protoreflect.Message { - mi := &file_pkg_pb_bbgo_proto_msgTypes[11] + mi := &file_pkg_pb_bbgo_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1275,7 +1367,7 @@ func (x *Balance) ProtoReflect() protoreflect.Message { // Deprecated: Use Balance.ProtoReflect.Descriptor instead. func (*Balance) Descriptor() ([]byte, []int) { - return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{11} + return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{13} } func (x *Balance) GetExchange() string { @@ -1317,7 +1409,7 @@ type SubmitOrderRequest struct { func (x *SubmitOrderRequest) Reset() { *x = SubmitOrderRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_pb_bbgo_proto_msgTypes[12] + mi := &file_pkg_pb_bbgo_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1330,7 +1422,7 @@ func (x *SubmitOrderRequest) String() string { func (*SubmitOrderRequest) ProtoMessage() {} func (x *SubmitOrderRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_pb_bbgo_proto_msgTypes[12] + mi := &file_pkg_pb_bbgo_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1343,7 +1435,7 @@ func (x *SubmitOrderRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SubmitOrderRequest.ProtoReflect.Descriptor instead. func (*SubmitOrderRequest) Descriptor() ([]byte, []int) { - return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{12} + return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{14} } func (x *SubmitOrderRequest) GetSubmitOrder() *SubmitOrder { @@ -1365,7 +1457,7 @@ type SubmitOrderResponse struct { func (x *SubmitOrderResponse) Reset() { *x = SubmitOrderResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_pb_bbgo_proto_msgTypes[13] + mi := &file_pkg_pb_bbgo_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1378,7 +1470,7 @@ func (x *SubmitOrderResponse) String() string { func (*SubmitOrderResponse) ProtoMessage() {} func (x *SubmitOrderResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_pb_bbgo_proto_msgTypes[13] + mi := &file_pkg_pb_bbgo_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1391,7 +1483,7 @@ func (x *SubmitOrderResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SubmitOrderResponse.ProtoReflect.Descriptor instead. func (*SubmitOrderResponse) Descriptor() ([]byte, []int) { - return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{13} + return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{15} } func (x *SubmitOrderResponse) GetOrder() *Order { @@ -1421,7 +1513,7 @@ type CancelOrderRequest struct { func (x *CancelOrderRequest) Reset() { *x = CancelOrderRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_pb_bbgo_proto_msgTypes[14] + mi := &file_pkg_pb_bbgo_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1434,7 +1526,7 @@ func (x *CancelOrderRequest) String() string { func (*CancelOrderRequest) ProtoMessage() {} func (x *CancelOrderRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_pb_bbgo_proto_msgTypes[14] + mi := &file_pkg_pb_bbgo_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1447,7 +1539,7 @@ func (x *CancelOrderRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CancelOrderRequest.ProtoReflect.Descriptor instead. func (*CancelOrderRequest) Descriptor() ([]byte, []int) { - return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{14} + return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{16} } func (x *CancelOrderRequest) GetExchange() string { @@ -1483,7 +1575,7 @@ type CancelOrderResponse struct { func (x *CancelOrderResponse) Reset() { *x = CancelOrderResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_pb_bbgo_proto_msgTypes[15] + mi := &file_pkg_pb_bbgo_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1496,7 +1588,7 @@ func (x *CancelOrderResponse) String() string { func (*CancelOrderResponse) ProtoMessage() {} func (x *CancelOrderResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_pb_bbgo_proto_msgTypes[15] + mi := &file_pkg_pb_bbgo_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1509,7 +1601,7 @@ func (x *CancelOrderResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CancelOrderResponse.ProtoReflect.Descriptor instead. func (*CancelOrderResponse) Descriptor() ([]byte, []int) { - return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{15} + return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{17} } func (x *CancelOrderResponse) GetOrder() *Order { @@ -1539,7 +1631,7 @@ type QueryOrderRequest struct { func (x *QueryOrderRequest) Reset() { *x = QueryOrderRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_pb_bbgo_proto_msgTypes[16] + mi := &file_pkg_pb_bbgo_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1552,7 +1644,7 @@ func (x *QueryOrderRequest) String() string { func (*QueryOrderRequest) ProtoMessage() {} func (x *QueryOrderRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_pb_bbgo_proto_msgTypes[16] + mi := &file_pkg_pb_bbgo_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1565,7 +1657,7 @@ func (x *QueryOrderRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use QueryOrderRequest.ProtoReflect.Descriptor instead. func (*QueryOrderRequest) Descriptor() ([]byte, []int) { - return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{16} + return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{18} } func (x *QueryOrderRequest) GetExchange() string { @@ -1601,7 +1693,7 @@ type QueryOrderResponse struct { func (x *QueryOrderResponse) Reset() { *x = QueryOrderResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_pb_bbgo_proto_msgTypes[17] + mi := &file_pkg_pb_bbgo_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1614,7 +1706,7 @@ func (x *QueryOrderResponse) String() string { func (*QueryOrderResponse) ProtoMessage() {} func (x *QueryOrderResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_pb_bbgo_proto_msgTypes[17] + mi := &file_pkg_pb_bbgo_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1627,7 +1719,7 @@ func (x *QueryOrderResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use QueryOrderResponse.ProtoReflect.Descriptor instead. func (*QueryOrderResponse) Descriptor() ([]byte, []int) { - return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{17} + return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{19} } func (x *QueryOrderResponse) GetOrder() *Order { @@ -1663,7 +1755,7 @@ type QueryOrdersRequest struct { func (x *QueryOrdersRequest) Reset() { *x = QueryOrdersRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_pb_bbgo_proto_msgTypes[18] + mi := &file_pkg_pb_bbgo_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1676,7 +1768,7 @@ func (x *QueryOrdersRequest) String() string { func (*QueryOrdersRequest) ProtoMessage() {} func (x *QueryOrdersRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_pb_bbgo_proto_msgTypes[18] + mi := &file_pkg_pb_bbgo_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1689,7 +1781,7 @@ func (x *QueryOrdersRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use QueryOrdersRequest.ProtoReflect.Descriptor instead. func (*QueryOrdersRequest) Descriptor() ([]byte, []int) { - return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{18} + return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{20} } func (x *QueryOrdersRequest) GetExchange() string { @@ -1767,7 +1859,7 @@ type QueryOrdersResponse struct { func (x *QueryOrdersResponse) Reset() { *x = QueryOrdersResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_pb_bbgo_proto_msgTypes[19] + mi := &file_pkg_pb_bbgo_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1780,7 +1872,7 @@ func (x *QueryOrdersResponse) String() string { func (*QueryOrdersResponse) ProtoMessage() {} func (x *QueryOrdersResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_pb_bbgo_proto_msgTypes[19] + mi := &file_pkg_pb_bbgo_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1793,7 +1885,7 @@ func (x *QueryOrdersResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use QueryOrdersResponse.ProtoReflect.Descriptor instead. func (*QueryOrdersResponse) Descriptor() ([]byte, []int) { - return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{19} + return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{21} } func (x *QueryOrdersResponse) GetOrders() []*Order { @@ -1830,7 +1922,7 @@ type QueryTradesRequest struct { func (x *QueryTradesRequest) Reset() { *x = QueryTradesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_pb_bbgo_proto_msgTypes[20] + mi := &file_pkg_pb_bbgo_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1843,7 +1935,7 @@ func (x *QueryTradesRequest) String() string { func (*QueryTradesRequest) ProtoMessage() {} func (x *QueryTradesRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_pb_bbgo_proto_msgTypes[20] + mi := &file_pkg_pb_bbgo_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1856,7 +1948,7 @@ func (x *QueryTradesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use QueryTradesRequest.ProtoReflect.Descriptor instead. func (*QueryTradesRequest) Descriptor() ([]byte, []int) { - return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{20} + return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{22} } func (x *QueryTradesRequest) GetExchange() string { @@ -1941,7 +2033,7 @@ type QueryTradesResponse struct { func (x *QueryTradesResponse) Reset() { *x = QueryTradesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_pb_bbgo_proto_msgTypes[21] + mi := &file_pkg_pb_bbgo_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1954,7 +2046,7 @@ func (x *QueryTradesResponse) String() string { func (*QueryTradesResponse) ProtoMessage() {} func (x *QueryTradesResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_pb_bbgo_proto_msgTypes[21] + mi := &file_pkg_pb_bbgo_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1967,7 +2059,7 @@ func (x *QueryTradesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use QueryTradesResponse.ProtoReflect.Descriptor instead. func (*QueryTradesResponse) Descriptor() ([]byte, []int) { - return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{21} + return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{23} } func (x *QueryTradesResponse) GetTrades() []*Trade { @@ -2000,7 +2092,7 @@ type QueryKLinesRequest struct { func (x *QueryKLinesRequest) Reset() { *x = QueryKLinesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_pb_bbgo_proto_msgTypes[22] + mi := &file_pkg_pb_bbgo_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2013,7 +2105,7 @@ func (x *QueryKLinesRequest) String() string { func (*QueryKLinesRequest) ProtoMessage() {} func (x *QueryKLinesRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_pb_bbgo_proto_msgTypes[22] + mi := &file_pkg_pb_bbgo_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2026,7 +2118,7 @@ func (x *QueryKLinesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use QueryKLinesRequest.ProtoReflect.Descriptor instead. func (*QueryKLinesRequest) Descriptor() ([]byte, []int) { - return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{22} + return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{24} } func (x *QueryKLinesRequest) GetExchange() string { @@ -2083,7 +2175,7 @@ type QueryKLinesResponse struct { func (x *QueryKLinesResponse) Reset() { *x = QueryKLinesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_pb_bbgo_proto_msgTypes[23] + mi := &file_pkg_pb_bbgo_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2096,7 +2188,7 @@ func (x *QueryKLinesResponse) String() string { func (*QueryKLinesResponse) ProtoMessage() {} func (x *QueryKLinesResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_pb_bbgo_proto_msgTypes[23] + mi := &file_pkg_pb_bbgo_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2109,7 +2201,7 @@ func (x *QueryKLinesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use QueryKLinesResponse.ProtoReflect.Descriptor instead. func (*QueryKLinesResponse) Descriptor() ([]byte, []int) { - return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{23} + return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{25} } func (x *QueryKLinesResponse) GetKlines() []*KLine { @@ -2148,7 +2240,7 @@ type KLine struct { func (x *KLine) Reset() { *x = KLine{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_pb_bbgo_proto_msgTypes[24] + mi := &file_pkg_pb_bbgo_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2161,7 +2253,7 @@ func (x *KLine) String() string { func (*KLine) ProtoMessage() {} func (x *KLine) ProtoReflect() protoreflect.Message { - mi := &file_pkg_pb_bbgo_proto_msgTypes[24] + mi := &file_pkg_pb_bbgo_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2174,7 +2266,7 @@ func (x *KLine) ProtoReflect() protoreflect.Message { // Deprecated: Use KLine.ProtoReflect.Descriptor instead. func (*KLine) Descriptor() ([]byte, []int) { - return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{24} + return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{26} } func (x *KLine) GetSession() string { @@ -2271,280 +2363,283 @@ var file_pkg_pb_bbgo_proto_rawDesc = []byte{ 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, - 0x4c, 0x0a, 0x10, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x62, 0x62, 0x67, - 0x6f, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, - 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x9d, 0x01, - 0x0a, 0x0c, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, - 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x27, 0x0a, 0x07, 0x63, 0x68, - 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x62, 0x62, - 0x67, 0x6f, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, - 0x6e, 0x65, 0x6c, 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, 0x64, - 0x65, 0x70, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x64, 0x65, 0x70, 0x74, - 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x22, 0xd6, 0x03, - 0x0a, 0x11, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, - 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 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, 0x27, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, - 0x6c, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x21, 0x0a, 0x05, 0x65, 0x76, - 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0b, 0x2e, 0x62, 0x62, 0x67, 0x6f, - 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x21, 0x0a, - 0x05, 0x64, 0x65, 0x70, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x62, - 0x62, 0x67, 0x6f, 0x2e, 0x44, 0x65, 0x70, 0x74, 0x68, 0x52, 0x05, 0x64, 0x65, 0x70, 0x74, 0x68, - 0x12, 0x21, 0x0a, 0x05, 0x6b, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x0b, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x4b, 0x4c, 0x69, 0x6e, 0x65, 0x52, 0x05, 0x6b, 0x6c, - 0x69, 0x6e, 0x65, 0x12, 0x23, 0x0a, 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x18, 0x08, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x54, 0x72, 0x61, 0x64, 0x65, - 0x52, 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x06, 0x74, 0x69, 0x63, 0x6b, - 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, - 0x54, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x52, 0x06, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x12, 0x23, - 0x0a, 0x06, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, - 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x06, 0x6f, 0x72, 0x64, - 0x65, 0x72, 0x73, 0x12, 0x29, 0x0a, 0x08, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, - 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x42, 0x61, 0x6c, - 0x61, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x23, - 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, - 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, - 0x64, 0x41, 0x74, 0x12, 0x21, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x0d, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, - 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x89, 0x01, 0x0a, 0x05, 0x44, 0x65, 0x70, 0x74, 0x68, - 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 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, 0x25, 0x0a, 0x04, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x56, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x04, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x25, 0x0a, 0x04, 0x62, - 0x69, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x62, 0x62, 0x67, 0x6f, - 0x2e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x04, 0x62, 0x69, - 0x64, 0x73, 0x22, 0x3b, 0x0a, 0x0b, 0x50, 0x72, 0x69, 0x63, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x22, - 0x87, 0x02, 0x0a, 0x05, 0x54, 0x72, 0x61, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, + 0x2b, 0x0a, 0x0f, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xcb, 0x01, 0x0a, + 0x08, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x27, 0x0a, 0x07, 0x63, 0x68, 0x61, + 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x62, 0x62, 0x67, + 0x6f, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x6e, + 0x65, 0x6c, 0x12, 0x21, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x0b, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x29, 0x0a, 0x08, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x42, + 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, + 0x12, 0x23, 0x0a, 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x0b, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x54, 0x72, 0x61, 0x64, 0x65, 0x52, 0x06, 0x74, + 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x06, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, + 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x4f, 0x72, 0x64, + 0x65, 0x72, 0x52, 0x06, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x22, 0x4c, 0x0a, 0x10, 0x53, 0x75, + 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, + 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x53, 0x75, 0x62, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x73, 0x75, 0x62, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x9d, 0x01, 0x0a, 0x0c, 0x53, 0x75, 0x62, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 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, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, - 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x72, - 0x69, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, - 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1e, - 0x0a, 0x04, 0x73, 0x69, 0x64, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0a, 0x2e, 0x62, - 0x62, 0x67, 0x6f, 0x2e, 0x53, 0x69, 0x64, 0x65, 0x52, 0x04, 0x73, 0x69, 0x64, 0x65, 0x12, 0x21, - 0x0a, 0x0c, 0x66, 0x65, 0x65, 0x5f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x65, 0x65, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x65, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x66, 0x65, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x61, 0x6b, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x05, 0x6d, 0x61, 0x6b, 0x65, 0x72, 0x22, 0xa4, 0x01, 0x0a, 0x06, 0x54, 0x69, - 0x63, 0x6b, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x27, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x43, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 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, 0x64, 0x65, 0x70, 0x74, 0x68, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x64, 0x65, 0x70, 0x74, 0x68, 0x12, 0x1a, 0x0a, 0x08, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x22, 0xff, 0x02, 0x0a, 0x0a, 0x4d, 0x61, 0x72, + 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 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, 0x27, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x43, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x21, + 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0b, 0x2e, + 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x12, 0x21, 0x0a, 0x05, 0x64, 0x65, 0x70, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0b, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x44, 0x65, 0x70, 0x74, 0x68, 0x52, 0x05, 0x64, + 0x65, 0x70, 0x74, 0x68, 0x12, 0x21, 0x0a, 0x05, 0x6b, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x4b, 0x4c, 0x69, 0x6e, 0x65, + 0x52, 0x05, 0x6b, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x24, 0x0a, 0x06, 0x74, 0x69, 0x63, 0x6b, 0x65, + 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x54, + 0x69, 0x63, 0x6b, 0x65, 0x72, 0x52, 0x06, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x12, 0x23, 0x0a, + 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, + 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x54, 0x72, 0x61, 0x64, 0x65, 0x52, 0x06, 0x74, 0x72, 0x61, 0x64, + 0x65, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x64, + 0x5f, 0x61, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, + 0x72, 0x69, 0x62, 0x65, 0x64, 0x41, 0x74, 0x12, 0x21, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, + 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x45, 0x72, + 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x89, 0x01, 0x0a, 0x05, 0x44, + 0x65, 0x70, 0x74, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 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, 0x12, 0x0a, 0x04, 0x6f, 0x70, 0x65, 0x6e, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x12, 0x12, 0x0a, 0x04, - 0x68, 0x69, 0x67, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x68, 0x69, 0x67, 0x68, - 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x6f, 0x77, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x6c, - 0x6f, 0x77, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x01, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x22, 0xcf, 0x03, 0x0a, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 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, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1e, - 0x0a, 0x04, 0x73, 0x69, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0a, 0x2e, 0x62, - 0x62, 0x67, 0x6f, 0x2e, 0x53, 0x69, 0x64, 0x65, 0x52, 0x04, 0x73, 0x69, 0x64, 0x65, 0x12, 0x2e, - 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x54, - 0x79, 0x70, 0x65, 0x52, 0x09, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, - 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x70, - 0x72, 0x69, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x70, 0x72, 0x69, - 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x73, 0x74, 0x6f, 0x70, 0x50, 0x72, - 0x69, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x76, 0x67, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x61, 0x76, 0x67, 0x50, 0x72, 0x69, 0x63, 0x65, - 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, - 0x69, 0x74, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, - 0x69, 0x74, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x5f, - 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0e, 0x65, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, - 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, - 0x26, 0x0a, 0x0f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, - 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x5f, 0x69, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x49, 0x64, 0x22, 0xa5, 0x02, 0x0a, 0x0b, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4f, 0x72, 0x64, - 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 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, 0x1e, 0x0a, 0x04, 0x73, 0x69, 0x64, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0a, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x53, 0x69, 0x64, 0x65, - 0x52, 0x04, 0x73, 0x69, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, - 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, - 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x25, 0x0a, 0x04, 0x61, 0x73, 0x6b, 0x73, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x50, 0x72, + 0x69, 0x63, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x04, 0x61, 0x73, 0x6b, 0x73, 0x12, + 0x25, 0x0a, 0x04, 0x62, 0x69, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, + 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, + 0x52, 0x04, 0x62, 0x69, 0x64, 0x73, 0x22, 0x3b, 0x0a, 0x0b, 0x50, 0x72, 0x69, 0x63, 0x65, 0x56, + 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, + 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x76, 0x6f, 0x6c, + 0x75, 0x6d, 0x65, 0x22, 0x87, 0x02, 0x0a, 0x05, 0x54, 0x72, 0x61, 0x64, 0x65, 0x12, 0x1a, 0x0a, + 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 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, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, + 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, + 0x69, 0x74, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, + 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x12, 0x1e, 0x0a, 0x04, 0x73, 0x69, 0x64, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x0a, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x53, 0x69, 0x64, 0x65, 0x52, 0x04, 0x73, 0x69, + 0x64, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x65, 0x65, 0x5f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, + 0x63, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x65, 0x65, 0x43, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x65, 0x65, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x66, 0x65, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x61, 0x6b, 0x65, 0x72, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x6d, 0x61, 0x6b, 0x65, 0x72, 0x22, 0xa4, 0x01, + 0x0a, 0x06, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 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, 0x12, 0x0a, 0x04, + 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x6f, 0x70, 0x65, 0x6e, + 0x12, 0x12, 0x0a, 0x04, 0x68, 0x69, 0x67, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, + 0x68, 0x69, 0x67, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x6f, 0x77, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x01, 0x52, 0x03, 0x6c, 0x6f, 0x77, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x76, 0x6f, + 0x6c, 0x75, 0x6d, 0x65, 0x22, 0xcf, 0x03, 0x0a, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1a, + 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 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, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x04, 0x73, 0x69, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x0a, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x53, 0x69, 0x64, 0x65, 0x52, 0x04, 0x73, 0x69, + 0x64, 0x65, 0x12, 0x2e, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x4f, 0x72, + 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x6f, 0x70, - 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x73, 0x74, - 0x6f, 0x70, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x2e, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x62, 0x62, - 0x67, 0x6f, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x6f, 0x72, - 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x63, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, - 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x22, 0x77, 0x0a, 0x07, 0x42, 0x61, - 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x1c, 0x0a, - 0x09, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, - 0x52, 0x09, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6c, - 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x6c, 0x6f, 0x63, - 0x6b, 0x65, 0x64, 0x22, 0x4a, 0x0a, 0x12, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4f, 0x72, 0x64, - 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x34, 0x0a, 0x0c, 0x73, 0x75, 0x62, - 0x6d, 0x69, 0x74, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x11, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4f, 0x72, 0x64, - 0x65, 0x72, 0x52, 0x0b, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x22, - 0x5b, 0x0a, 0x13, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, + 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x73, 0x74, + 0x6f, 0x70, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x76, 0x67, 0x5f, 0x70, + 0x72, 0x69, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x61, 0x76, 0x67, 0x50, + 0x72, 0x69, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1d, 0x0a, 0x0a, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x71, + 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x71, + 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x65, 0x64, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x01, + 0x52, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, + 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x26, 0x0a, 0x0f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6f, 0x72, + 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x22, 0xa5, 0x02, 0x0a, 0x0b, 0x53, 0x75, 0x62, 0x6d, 0x69, + 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 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, 0x1e, 0x0a, 0x04, 0x73, 0x69, + 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0a, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, + 0x53, 0x69, 0x64, 0x65, 0x52, 0x04, 0x73, 0x69, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x71, 0x75, + 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x71, 0x75, + 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x0a, + 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, + 0x52, 0x09, 0x73, 0x74, 0x6f, 0x70, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x2e, 0x0a, 0x0a, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x0f, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, + 0x52, 0x09, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x63, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4f, 0x72, 0x64, 0x65, + 0x72, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x22, 0x77, + 0x0a, 0x07, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, + 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, + 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, + 0x06, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x22, 0x4a, 0x0a, 0x12, 0x53, 0x75, 0x62, 0x6d, 0x69, + 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x34, 0x0a, + 0x0c, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, + 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x0b, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4f, 0x72, + 0x64, 0x65, 0x72, 0x22, 0x5b, 0x0a, 0x13, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4f, 0x72, 0x64, + 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x05, 0x6f, 0x72, + 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x62, 0x62, 0x67, 0x6f, + 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x21, 0x0a, + 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x62, + 0x62, 0x67, 0x6f, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, + 0x22, 0x68, 0x0a, 0x12, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6f, 0x72, 0x64, + 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x22, 0x5b, 0x0a, 0x13, 0x43, 0x61, + 0x6e, 0x63, 0x65, 0x6c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x21, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0b, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x05, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, + 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x67, 0x0a, 0x11, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, + 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x63, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, + 0x22, 0x5a, 0x0a, 0x12, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x68, 0x0a, 0x12, - 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x26, - 0x0a, 0x0f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x69, - 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4f, - 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x22, 0x5b, 0x0a, 0x13, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, - 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x62, - 0x62, 0x67, 0x6f, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, + 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xf6, 0x01, 0x0a, + 0x12, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 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, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x19, 0x0a, + 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, + 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0x5d, 0x0a, 0x13, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, + 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x06, + 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x62, + 0x62, 0x67, 0x6f, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x06, 0x6f, 0x72, 0x64, 0x65, 0x72, + 0x73, 0x12, 0x21, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0b, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x22, 0x87, 0x02, 0x0a, 0x12, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x72, + 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 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, + 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x12, 0x0a, + 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x66, 0x72, 0x6f, + 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x74, + 0x6f, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x12, 0x1e, 0x0a, 0x0a, + 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, + 0x70, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0x5d, + 0x0a, 0x13, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x54, 0x72, 0x61, + 0x64, 0x65, 0x52, 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x05, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x62, 0x62, 0x67, 0x6f, + 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xb4, 0x01, + 0x0a, 0x12, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4b, 0x4c, 0x69, 0x6e, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 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, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x76, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x76, 0x61, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, + 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6c, + 0x69, 0x6d, 0x69, 0x74, 0x22, 0x5d, 0x0a, 0x13, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4b, 0x4c, 0x69, + 0x6e, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x06, 0x6b, + 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x62, 0x62, + 0x67, 0x6f, 0x2e, 0x4b, 0x4c, 0x69, 0x6e, 0x65, 0x52, 0x06, 0x6b, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x22, 0x67, 0x0a, 0x11, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x64, 0x65, - 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x22, 0x5a, 0x0a, 0x12, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x21, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x0b, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x05, - 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xf6, 0x01, 0x0a, 0x12, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 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, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x72, 0x64, - 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, - 0x65, 0x72, 0x42, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, - 0x1e, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x70, - 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, - 0x73, 0x65, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x22, 0x5d, 0x0a, 0x13, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x06, 0x6f, 0x72, 0x64, 0x65, - 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x06, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x21, 0x0a, - 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x62, - 0x62, 0x67, 0x6f, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x22, 0x87, 0x02, 0x0a, 0x12, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 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, 0x1c, 0x0a, 0x09, 0x74, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, - 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, - 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x0e, 0x0a, - 0x02, 0x74, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x74, 0x6f, 0x12, 0x19, 0x0a, - 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, - 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x70, 0x61, - 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6c, 0x69, 0x6d, - 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0x5d, 0x0a, 0x13, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x23, 0x0a, 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x0b, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x54, 0x72, 0x61, 0x64, 0x65, 0x52, 0x06, - 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x45, 0x72, 0x72, - 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xb4, 0x01, 0x0a, 0x12, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x4b, 0x4c, 0x69, 0x6e, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 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, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, - 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, - 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, - 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x22, 0x5d, 0x0a, 0x13, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4b, 0x4c, 0x69, 0x6e, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x06, 0x6b, 0x6c, 0x69, 0x6e, 0x65, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x4b, - 0x4c, 0x69, 0x6e, 0x65, 0x52, 0x06, 0x6b, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x05, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x62, 0x62, - 0x67, 0x6f, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, - 0xb2, 0x02, 0x0a, 0x05, 0x4b, 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 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, 0x12, 0x0a, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x68, - 0x69, 0x67, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x69, 0x67, 0x68, 0x12, - 0x10, 0x0a, 0x03, 0x6c, 0x6f, 0x77, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6c, 0x6f, - 0x77, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, - 0x21, 0x0a, 0x0c, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, - 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x63, 0x6c, - 0x6f, 0x73, 0x65, 0x64, 0x2a, 0xe4, 0x01, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0b, - 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x53, - 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x42, 0x45, 0x44, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x55, - 0x4e, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x42, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0c, 0x0a, - 0x08, 0x53, 0x4e, 0x41, 0x50, 0x53, 0x48, 0x4f, 0x54, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x55, - 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x04, 0x12, 0x11, 0x0a, 0x0d, 0x41, 0x55, 0x54, 0x48, 0x45, - 0x4e, 0x54, 0x49, 0x43, 0x41, 0x54, 0x45, 0x44, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x4f, 0x52, - 0x44, 0x45, 0x52, 0x5f, 0x53, 0x4e, 0x41, 0x50, 0x53, 0x48, 0x4f, 0x54, 0x10, 0x06, 0x12, 0x10, - 0x0a, 0x0c, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x07, - 0x12, 0x12, 0x0a, 0x0e, 0x54, 0x52, 0x41, 0x44, 0x45, 0x5f, 0x53, 0x4e, 0x41, 0x50, 0x53, 0x48, - 0x4f, 0x54, 0x10, 0x08, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x52, 0x41, 0x44, 0x45, 0x5f, 0x55, 0x50, - 0x44, 0x41, 0x54, 0x45, 0x10, 0x09, 0x12, 0x14, 0x0a, 0x10, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, - 0x54, 0x5f, 0x53, 0x4e, 0x41, 0x50, 0x53, 0x48, 0x4f, 0x54, 0x10, 0x0a, 0x12, 0x12, 0x0a, 0x0e, - 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x0b, - 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x63, 0x2a, 0x3f, 0x0a, 0x07, 0x43, - 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x08, 0x0a, 0x04, 0x42, 0x4f, 0x4f, 0x4b, 0x10, 0x00, - 0x12, 0x09, 0x0a, 0x05, 0x54, 0x52, 0x41, 0x44, 0x45, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x54, - 0x49, 0x43, 0x4b, 0x45, 0x52, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x55, 0x53, 0x45, 0x52, 0x10, - 0x03, 0x12, 0x09, 0x0a, 0x05, 0x4b, 0x4c, 0x49, 0x4e, 0x45, 0x10, 0x04, 0x2a, 0x19, 0x0a, 0x04, + 0x72, 0x6f, 0x72, 0x22, 0xb2, 0x02, 0x0a, 0x05, 0x4b, 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 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, 0x12, 0x0a, 0x04, 0x6f, + 0x70, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x12, + 0x12, 0x0a, 0x04, 0x68, 0x69, 0x67, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, + 0x69, 0x67, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x6f, 0x77, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6c, 0x6f, 0x77, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, + 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x76, 0x6f, 0x6c, + 0x75, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x5f, 0x76, 0x6f, 0x6c, + 0x75, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x71, 0x75, 0x6f, 0x74, 0x65, + 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x06, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x2a, 0x6e, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0e, + 0x0a, 0x0a, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x42, 0x45, 0x44, 0x10, 0x01, 0x12, 0x10, + 0x0a, 0x0c, 0x55, 0x4e, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x42, 0x45, 0x44, 0x10, 0x02, + 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x4e, 0x41, 0x50, 0x53, 0x48, 0x4f, 0x54, 0x10, 0x03, 0x12, 0x0a, + 0x0a, 0x06, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x04, 0x12, 0x11, 0x0a, 0x0d, 0x41, 0x55, + 0x54, 0x48, 0x45, 0x4e, 0x54, 0x49, 0x43, 0x41, 0x54, 0x45, 0x44, 0x10, 0x05, 0x12, 0x09, 0x0a, + 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x63, 0x2a, 0x42, 0x0a, 0x07, 0x43, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x12, 0x08, 0x0a, 0x04, 0x42, 0x4f, 0x4f, 0x4b, 0x10, 0x00, 0x12, 0x09, 0x0a, + 0x05, 0x54, 0x52, 0x41, 0x44, 0x45, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x54, 0x49, 0x43, 0x4b, + 0x45, 0x52, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x4b, 0x4c, 0x49, 0x4e, 0x45, 0x10, 0x03, 0x12, + 0x0b, 0x0a, 0x07, 0x42, 0x41, 0x4c, 0x41, 0x4e, 0x43, 0x45, 0x10, 0x04, 0x2a, 0x19, 0x0a, 0x04, 0x53, 0x69, 0x64, 0x65, 0x12, 0x07, 0x0a, 0x03, 0x42, 0x55, 0x59, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x45, 0x4c, 0x4c, 0x10, 0x01, 0x2a, 0x61, 0x0a, 0x09, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x54, 0x10, 0x00, @@ -2552,46 +2647,45 @@ var file_pkg_pb_bbgo_proto_rawDesc = []byte{ 0x54, 0x4f, 0x50, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x54, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x54, 0x4f, 0x50, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x4f, 0x53, 0x54, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x49, - 0x4f, 0x43, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x10, 0x05, 0x32, 0x9b, 0x01, 0x0a, 0x11, 0x4d, + 0x4f, 0x43, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x10, 0x05, 0x32, 0x94, 0x01, 0x0a, 0x11, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x12, 0x40, 0x0a, 0x09, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0x16, 0x2e, + 0x12, 0x39, 0x0a, 0x09, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0x16, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x53, 0x75, 0x62, - 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x30, 0x01, 0x12, 0x44, 0x0a, 0x0b, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4b, 0x4c, 0x69, 0x6e, 0x65, - 0x73, 0x12, 0x18, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4b, 0x4c, - 0x69, 0x6e, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x62, 0x62, - 0x67, 0x6f, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4b, 0x4c, 0x69, 0x6e, 0x65, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x32, 0x50, 0x0a, 0x0f, 0x55, 0x73, 0x65, 0x72, - 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x3d, 0x0a, 0x11, 0x53, - 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, - 0x12, 0x0b, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x17, 0x2e, - 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x32, 0xeb, 0x02, 0x0a, 0x0e, 0x54, - 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x44, 0x0a, - 0x0b, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x18, 0x2e, 0x62, - 0x62, 0x67, 0x6f, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x53, 0x75, - 0x62, 0x6d, 0x69, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x44, 0x0a, 0x0b, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x4f, 0x72, 0x64, - 0x65, 0x72, 0x12, 0x18, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x62, - 0x62, 0x67, 0x6f, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x41, 0x0a, 0x0a, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x17, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x18, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x64, - 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x44, 0x0a, 0x0b, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x18, 0x2e, 0x62, 0x62, - 0x67, 0x6f, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x44, 0x0a, 0x0b, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x72, 0x61, 0x64, 0x65, - 0x73, 0x12, 0x18, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x72, - 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x62, 0x62, - 0x67, 0x6f, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x07, 0x5a, 0x05, 0x2e, 0x2e, 0x2f, 0x70, - 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x4d, 0x61, 0x72, + 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x22, 0x00, 0x30, 0x01, 0x12, 0x44, 0x0a, 0x0b, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x4b, 0x4c, 0x69, 0x6e, 0x65, 0x73, 0x12, 0x18, 0x2e, 0x62, 0x62, 0x67, + 0x6f, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4b, 0x4c, 0x69, 0x6e, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x4b, 0x4c, 0x69, 0x6e, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x32, 0x49, 0x0a, 0x0f, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x12, 0x36, 0x0a, 0x09, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, + 0x65, 0x12, 0x15, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, + 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, + 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x22, 0x00, 0x30, 0x01, 0x32, 0xeb, 0x02, 0x0a, + 0x0e, 0x54, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, + 0x44, 0x0a, 0x0b, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x18, + 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4f, 0x72, 0x64, 0x65, + 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, + 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x44, 0x0a, 0x0b, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x4f, + 0x72, 0x64, 0x65, 0x72, 0x12, 0x18, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x43, 0x61, 0x6e, 0x63, + 0x65, 0x6c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, + 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x4f, 0x72, 0x64, 0x65, + 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x41, 0x0a, 0x0a, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x17, 0x2e, 0x62, 0x62, 0x67, 0x6f, + 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, + 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x44, + 0x0a, 0x0b, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x18, 0x2e, + 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x44, 0x0a, 0x0b, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x72, 0x61, + 0x64, 0x65, 0x73, 0x12, 0x18, 0x2e, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, + 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x07, 0x5a, 0x05, 0x2e, 0x2e, + 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2607,7 +2701,7 @@ func file_pkg_pb_bbgo_proto_rawDescGZIP() []byte { } var file_pkg_pb_bbgo_proto_enumTypes = make([]protoimpl.EnumInfo, 4) -var file_pkg_pb_bbgo_proto_msgTypes = make([]protoimpl.MessageInfo, 25) +var file_pkg_pb_bbgo_proto_msgTypes = make([]protoimpl.MessageInfo, 27) var file_pkg_pb_bbgo_proto_goTypes = []interface{}{ (Event)(0), // 0: bbgo.Event (Channel)(0), // 1: bbgo.Channel @@ -2615,83 +2709,88 @@ var file_pkg_pb_bbgo_proto_goTypes = []interface{}{ (OrderType)(0), // 3: bbgo.OrderType (*Empty)(nil), // 4: bbgo.Empty (*Error)(nil), // 5: bbgo.Error - (*SubscribeRequest)(nil), // 6: bbgo.SubscribeRequest - (*Subscription)(nil), // 7: bbgo.Subscription - (*SubscribeResponse)(nil), // 8: bbgo.SubscribeResponse - (*Depth)(nil), // 9: bbgo.Depth - (*PriceVolume)(nil), // 10: bbgo.PriceVolume - (*Trade)(nil), // 11: bbgo.Trade - (*Ticker)(nil), // 12: bbgo.Ticker - (*Order)(nil), // 13: bbgo.Order - (*SubmitOrder)(nil), // 14: bbgo.SubmitOrder - (*Balance)(nil), // 15: bbgo.Balance - (*SubmitOrderRequest)(nil), // 16: bbgo.SubmitOrderRequest - (*SubmitOrderResponse)(nil), // 17: bbgo.SubmitOrderResponse - (*CancelOrderRequest)(nil), // 18: bbgo.CancelOrderRequest - (*CancelOrderResponse)(nil), // 19: bbgo.CancelOrderResponse - (*QueryOrderRequest)(nil), // 20: bbgo.QueryOrderRequest - (*QueryOrderResponse)(nil), // 21: bbgo.QueryOrderResponse - (*QueryOrdersRequest)(nil), // 22: bbgo.QueryOrdersRequest - (*QueryOrdersResponse)(nil), // 23: bbgo.QueryOrdersResponse - (*QueryTradesRequest)(nil), // 24: bbgo.QueryTradesRequest - (*QueryTradesResponse)(nil), // 25: bbgo.QueryTradesResponse - (*QueryKLinesRequest)(nil), // 26: bbgo.QueryKLinesRequest - (*QueryKLinesResponse)(nil), // 27: bbgo.QueryKLinesResponse - (*KLine)(nil), // 28: bbgo.KLine + (*UserDataRequest)(nil), // 6: bbgo.UserDataRequest + (*UserData)(nil), // 7: bbgo.UserData + (*SubscribeRequest)(nil), // 8: bbgo.SubscribeRequest + (*Subscription)(nil), // 9: bbgo.Subscription + (*MarketData)(nil), // 10: bbgo.MarketData + (*Depth)(nil), // 11: bbgo.Depth + (*PriceVolume)(nil), // 12: bbgo.PriceVolume + (*Trade)(nil), // 13: bbgo.Trade + (*Ticker)(nil), // 14: bbgo.Ticker + (*Order)(nil), // 15: bbgo.Order + (*SubmitOrder)(nil), // 16: bbgo.SubmitOrder + (*Balance)(nil), // 17: bbgo.Balance + (*SubmitOrderRequest)(nil), // 18: bbgo.SubmitOrderRequest + (*SubmitOrderResponse)(nil), // 19: bbgo.SubmitOrderResponse + (*CancelOrderRequest)(nil), // 20: bbgo.CancelOrderRequest + (*CancelOrderResponse)(nil), // 21: bbgo.CancelOrderResponse + (*QueryOrderRequest)(nil), // 22: bbgo.QueryOrderRequest + (*QueryOrderResponse)(nil), // 23: bbgo.QueryOrderResponse + (*QueryOrdersRequest)(nil), // 24: bbgo.QueryOrdersRequest + (*QueryOrdersResponse)(nil), // 25: bbgo.QueryOrdersResponse + (*QueryTradesRequest)(nil), // 26: bbgo.QueryTradesRequest + (*QueryTradesResponse)(nil), // 27: bbgo.QueryTradesResponse + (*QueryKLinesRequest)(nil), // 28: bbgo.QueryKLinesRequest + (*QueryKLinesResponse)(nil), // 29: bbgo.QueryKLinesResponse + (*KLine)(nil), // 30: bbgo.KLine } var file_pkg_pb_bbgo_proto_depIdxs = []int32{ - 7, // 0: bbgo.SubscribeRequest.subscriptions:type_name -> bbgo.Subscription - 1, // 1: bbgo.Subscription.channel:type_name -> bbgo.Channel - 1, // 2: bbgo.SubscribeResponse.channel:type_name -> bbgo.Channel - 0, // 3: bbgo.SubscribeResponse.event:type_name -> bbgo.Event - 9, // 4: bbgo.SubscribeResponse.depth:type_name -> bbgo.Depth - 28, // 5: bbgo.SubscribeResponse.kline:type_name -> bbgo.KLine - 11, // 6: bbgo.SubscribeResponse.trades:type_name -> bbgo.Trade - 12, // 7: bbgo.SubscribeResponse.ticker:type_name -> bbgo.Ticker - 13, // 8: bbgo.SubscribeResponse.orders:type_name -> bbgo.Order - 15, // 9: bbgo.SubscribeResponse.balances:type_name -> bbgo.Balance - 5, // 10: bbgo.SubscribeResponse.error:type_name -> bbgo.Error - 10, // 11: bbgo.Depth.asks:type_name -> bbgo.PriceVolume - 10, // 12: bbgo.Depth.bids:type_name -> bbgo.PriceVolume - 2, // 13: bbgo.Trade.side:type_name -> bbgo.Side - 2, // 14: bbgo.Order.side:type_name -> bbgo.Side - 3, // 15: bbgo.Order.order_type:type_name -> bbgo.OrderType - 2, // 16: bbgo.SubmitOrder.side:type_name -> bbgo.Side - 3, // 17: bbgo.SubmitOrder.order_type:type_name -> bbgo.OrderType - 14, // 18: bbgo.SubmitOrderRequest.submit_order:type_name -> bbgo.SubmitOrder - 13, // 19: bbgo.SubmitOrderResponse.order:type_name -> bbgo.Order - 5, // 20: bbgo.SubmitOrderResponse.error:type_name -> bbgo.Error - 13, // 21: bbgo.CancelOrderResponse.order:type_name -> bbgo.Order - 5, // 22: bbgo.CancelOrderResponse.error:type_name -> bbgo.Error - 13, // 23: bbgo.QueryOrderResponse.order:type_name -> bbgo.Order - 5, // 24: bbgo.QueryOrderResponse.error:type_name -> bbgo.Error - 13, // 25: bbgo.QueryOrdersResponse.orders:type_name -> bbgo.Order - 5, // 26: bbgo.QueryOrdersResponse.error:type_name -> bbgo.Error - 11, // 27: bbgo.QueryTradesResponse.trades:type_name -> bbgo.Trade - 5, // 28: bbgo.QueryTradesResponse.error:type_name -> bbgo.Error - 28, // 29: bbgo.QueryKLinesResponse.klines:type_name -> bbgo.KLine - 5, // 30: bbgo.QueryKLinesResponse.error:type_name -> bbgo.Error - 6, // 31: bbgo.MarketDataService.Subscribe:input_type -> bbgo.SubscribeRequest - 26, // 32: bbgo.MarketDataService.QueryKLines:input_type -> bbgo.QueryKLinesRequest - 4, // 33: bbgo.UserDataService.SubscribeUserData:input_type -> bbgo.Empty - 16, // 34: bbgo.TradingService.SubmitOrder:input_type -> bbgo.SubmitOrderRequest - 18, // 35: bbgo.TradingService.CancelOrder:input_type -> bbgo.CancelOrderRequest - 20, // 36: bbgo.TradingService.QueryOrder:input_type -> bbgo.QueryOrderRequest - 22, // 37: bbgo.TradingService.QueryOrders:input_type -> bbgo.QueryOrdersRequest - 24, // 38: bbgo.TradingService.QueryTrades:input_type -> bbgo.QueryTradesRequest - 8, // 39: bbgo.MarketDataService.Subscribe:output_type -> bbgo.SubscribeResponse - 27, // 40: bbgo.MarketDataService.QueryKLines:output_type -> bbgo.QueryKLinesResponse - 8, // 41: bbgo.UserDataService.SubscribeUserData:output_type -> bbgo.SubscribeResponse - 17, // 42: bbgo.TradingService.SubmitOrder:output_type -> bbgo.SubmitOrderResponse - 19, // 43: bbgo.TradingService.CancelOrder:output_type -> bbgo.CancelOrderResponse - 21, // 44: bbgo.TradingService.QueryOrder:output_type -> bbgo.QueryOrderResponse - 23, // 45: bbgo.TradingService.QueryOrders:output_type -> bbgo.QueryOrdersResponse - 25, // 46: bbgo.TradingService.QueryTrades:output_type -> bbgo.QueryTradesResponse - 39, // [39:47] is the sub-list for method output_type - 31, // [31:39] is the sub-list for method input_type - 31, // [31:31] is the sub-list for extension type_name - 31, // [31:31] is the sub-list for extension extendee - 0, // [0:31] is the sub-list for field type_name + 1, // 0: bbgo.UserData.channel:type_name -> bbgo.Channel + 0, // 1: bbgo.UserData.event:type_name -> bbgo.Event + 17, // 2: bbgo.UserData.balances:type_name -> bbgo.Balance + 13, // 3: bbgo.UserData.trades:type_name -> bbgo.Trade + 15, // 4: bbgo.UserData.orders:type_name -> bbgo.Order + 9, // 5: bbgo.SubscribeRequest.subscriptions:type_name -> bbgo.Subscription + 1, // 6: bbgo.Subscription.channel:type_name -> bbgo.Channel + 1, // 7: bbgo.MarketData.channel:type_name -> bbgo.Channel + 0, // 8: bbgo.MarketData.event:type_name -> bbgo.Event + 11, // 9: bbgo.MarketData.depth:type_name -> bbgo.Depth + 30, // 10: bbgo.MarketData.kline:type_name -> bbgo.KLine + 14, // 11: bbgo.MarketData.ticker:type_name -> bbgo.Ticker + 13, // 12: bbgo.MarketData.trades:type_name -> bbgo.Trade + 5, // 13: bbgo.MarketData.error:type_name -> bbgo.Error + 12, // 14: bbgo.Depth.asks:type_name -> bbgo.PriceVolume + 12, // 15: bbgo.Depth.bids:type_name -> bbgo.PriceVolume + 2, // 16: bbgo.Trade.side:type_name -> bbgo.Side + 2, // 17: bbgo.Order.side:type_name -> bbgo.Side + 3, // 18: bbgo.Order.order_type:type_name -> bbgo.OrderType + 2, // 19: bbgo.SubmitOrder.side:type_name -> bbgo.Side + 3, // 20: bbgo.SubmitOrder.order_type:type_name -> bbgo.OrderType + 16, // 21: bbgo.SubmitOrderRequest.submit_order:type_name -> bbgo.SubmitOrder + 15, // 22: bbgo.SubmitOrderResponse.order:type_name -> bbgo.Order + 5, // 23: bbgo.SubmitOrderResponse.error:type_name -> bbgo.Error + 15, // 24: bbgo.CancelOrderResponse.order:type_name -> bbgo.Order + 5, // 25: bbgo.CancelOrderResponse.error:type_name -> bbgo.Error + 15, // 26: bbgo.QueryOrderResponse.order:type_name -> bbgo.Order + 5, // 27: bbgo.QueryOrderResponse.error:type_name -> bbgo.Error + 15, // 28: bbgo.QueryOrdersResponse.orders:type_name -> bbgo.Order + 5, // 29: bbgo.QueryOrdersResponse.error:type_name -> bbgo.Error + 13, // 30: bbgo.QueryTradesResponse.trades:type_name -> bbgo.Trade + 5, // 31: bbgo.QueryTradesResponse.error:type_name -> bbgo.Error + 30, // 32: bbgo.QueryKLinesResponse.klines:type_name -> bbgo.KLine + 5, // 33: bbgo.QueryKLinesResponse.error:type_name -> bbgo.Error + 8, // 34: bbgo.MarketDataService.Subscribe:input_type -> bbgo.SubscribeRequest + 28, // 35: bbgo.MarketDataService.QueryKLines:input_type -> bbgo.QueryKLinesRequest + 6, // 36: bbgo.UserDataService.Subscribe:input_type -> bbgo.UserDataRequest + 18, // 37: bbgo.TradingService.SubmitOrder:input_type -> bbgo.SubmitOrderRequest + 20, // 38: bbgo.TradingService.CancelOrder:input_type -> bbgo.CancelOrderRequest + 22, // 39: bbgo.TradingService.QueryOrder:input_type -> bbgo.QueryOrderRequest + 24, // 40: bbgo.TradingService.QueryOrders:input_type -> bbgo.QueryOrdersRequest + 26, // 41: bbgo.TradingService.QueryTrades:input_type -> bbgo.QueryTradesRequest + 10, // 42: bbgo.MarketDataService.Subscribe:output_type -> bbgo.MarketData + 29, // 43: bbgo.MarketDataService.QueryKLines:output_type -> bbgo.QueryKLinesResponse + 7, // 44: bbgo.UserDataService.Subscribe:output_type -> bbgo.UserData + 19, // 45: bbgo.TradingService.SubmitOrder:output_type -> bbgo.SubmitOrderResponse + 21, // 46: bbgo.TradingService.CancelOrder:output_type -> bbgo.CancelOrderResponse + 23, // 47: bbgo.TradingService.QueryOrder:output_type -> bbgo.QueryOrderResponse + 25, // 48: bbgo.TradingService.QueryOrders:output_type -> bbgo.QueryOrdersResponse + 27, // 49: bbgo.TradingService.QueryTrades:output_type -> bbgo.QueryTradesResponse + 42, // [42:50] is the sub-list for method output_type + 34, // [34:42] is the sub-list for method input_type + 34, // [34:34] is the sub-list for extension type_name + 34, // [34:34] is the sub-list for extension extendee + 0, // [0:34] is the sub-list for field type_name } func init() { file_pkg_pb_bbgo_proto_init() } @@ -2725,7 +2824,7 @@ func file_pkg_pb_bbgo_proto_init() { } } file_pkg_pb_bbgo_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubscribeRequest); i { + switch v := v.(*UserDataRequest); i { case 0: return &v.state case 1: @@ -2737,7 +2836,7 @@ func file_pkg_pb_bbgo_proto_init() { } } file_pkg_pb_bbgo_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Subscription); i { + switch v := v.(*UserData); i { case 0: return &v.state case 1: @@ -2749,7 +2848,7 @@ func file_pkg_pb_bbgo_proto_init() { } } file_pkg_pb_bbgo_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubscribeResponse); i { + switch v := v.(*SubscribeRequest); i { case 0: return &v.state case 1: @@ -2761,7 +2860,7 @@ func file_pkg_pb_bbgo_proto_init() { } } file_pkg_pb_bbgo_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Depth); i { + switch v := v.(*Subscription); i { case 0: return &v.state case 1: @@ -2773,7 +2872,7 @@ func file_pkg_pb_bbgo_proto_init() { } } file_pkg_pb_bbgo_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PriceVolume); i { + switch v := v.(*MarketData); i { case 0: return &v.state case 1: @@ -2785,7 +2884,7 @@ func file_pkg_pb_bbgo_proto_init() { } } file_pkg_pb_bbgo_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Trade); i { + switch v := v.(*Depth); i { case 0: return &v.state case 1: @@ -2797,7 +2896,7 @@ func file_pkg_pb_bbgo_proto_init() { } } file_pkg_pb_bbgo_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Ticker); i { + switch v := v.(*PriceVolume); i { case 0: return &v.state case 1: @@ -2809,7 +2908,7 @@ func file_pkg_pb_bbgo_proto_init() { } } file_pkg_pb_bbgo_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Order); i { + switch v := v.(*Trade); i { case 0: return &v.state case 1: @@ -2821,7 +2920,7 @@ func file_pkg_pb_bbgo_proto_init() { } } file_pkg_pb_bbgo_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubmitOrder); i { + switch v := v.(*Ticker); i { case 0: return &v.state case 1: @@ -2833,7 +2932,7 @@ func file_pkg_pb_bbgo_proto_init() { } } file_pkg_pb_bbgo_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Balance); i { + switch v := v.(*Order); i { case 0: return &v.state case 1: @@ -2845,7 +2944,7 @@ func file_pkg_pb_bbgo_proto_init() { } } file_pkg_pb_bbgo_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubmitOrderRequest); i { + switch v := v.(*SubmitOrder); i { case 0: return &v.state case 1: @@ -2857,7 +2956,7 @@ func file_pkg_pb_bbgo_proto_init() { } } file_pkg_pb_bbgo_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubmitOrderResponse); i { + switch v := v.(*Balance); i { case 0: return &v.state case 1: @@ -2869,7 +2968,7 @@ func file_pkg_pb_bbgo_proto_init() { } } file_pkg_pb_bbgo_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CancelOrderRequest); i { + switch v := v.(*SubmitOrderRequest); i { case 0: return &v.state case 1: @@ -2881,7 +2980,7 @@ func file_pkg_pb_bbgo_proto_init() { } } file_pkg_pb_bbgo_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CancelOrderResponse); i { + switch v := v.(*SubmitOrderResponse); i { case 0: return &v.state case 1: @@ -2893,7 +2992,7 @@ func file_pkg_pb_bbgo_proto_init() { } } file_pkg_pb_bbgo_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QueryOrderRequest); i { + switch v := v.(*CancelOrderRequest); i { case 0: return &v.state case 1: @@ -2905,7 +3004,7 @@ func file_pkg_pb_bbgo_proto_init() { } } file_pkg_pb_bbgo_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QueryOrderResponse); i { + switch v := v.(*CancelOrderResponse); i { case 0: return &v.state case 1: @@ -2917,7 +3016,7 @@ func file_pkg_pb_bbgo_proto_init() { } } file_pkg_pb_bbgo_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QueryOrdersRequest); i { + switch v := v.(*QueryOrderRequest); i { case 0: return &v.state case 1: @@ -2929,7 +3028,7 @@ func file_pkg_pb_bbgo_proto_init() { } } file_pkg_pb_bbgo_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QueryOrdersResponse); i { + switch v := v.(*QueryOrderResponse); i { case 0: return &v.state case 1: @@ -2941,7 +3040,7 @@ func file_pkg_pb_bbgo_proto_init() { } } file_pkg_pb_bbgo_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QueryTradesRequest); i { + switch v := v.(*QueryOrdersRequest); i { case 0: return &v.state case 1: @@ -2953,7 +3052,7 @@ func file_pkg_pb_bbgo_proto_init() { } } file_pkg_pb_bbgo_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QueryTradesResponse); i { + switch v := v.(*QueryOrdersResponse); i { case 0: return &v.state case 1: @@ -2965,7 +3064,7 @@ func file_pkg_pb_bbgo_proto_init() { } } file_pkg_pb_bbgo_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QueryKLinesRequest); i { + switch v := v.(*QueryTradesRequest); i { case 0: return &v.state case 1: @@ -2977,7 +3076,7 @@ func file_pkg_pb_bbgo_proto_init() { } } file_pkg_pb_bbgo_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QueryKLinesResponse); i { + switch v := v.(*QueryTradesResponse); i { case 0: return &v.state case 1: @@ -2989,6 +3088,30 @@ func file_pkg_pb_bbgo_proto_init() { } } file_pkg_pb_bbgo_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryKLinesRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_pb_bbgo_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryKLinesResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_pb_bbgo_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*KLine); i { case 0: return &v.state @@ -3007,7 +3130,7 @@ func file_pkg_pb_bbgo_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_pkg_pb_bbgo_proto_rawDesc, NumEnums: 4, - NumMessages: 25, + NumMessages: 27, NumExtensions: 0, NumServices: 3, }, diff --git a/pkg/pb/bbgo.proto b/pkg/pb/bbgo.proto index 11a32789e..409ed92bb 100644 --- a/pkg/pb/bbgo.proto +++ b/pkg/pb/bbgo.proto @@ -5,13 +5,12 @@ package bbgo; option go_package = "../pb"; service MarketDataService { - rpc Subscribe(SubscribeRequest) returns (stream SubscribeResponse) {} + rpc Subscribe(SubscribeRequest) returns (stream MarketData) {} rpc QueryKLines(QueryKLinesRequest) returns (QueryKLinesResponse) {} } service UserDataService { - // should support streaming - rpc SubscribeUserData(Empty) returns (stream SubscribeResponse) {} + rpc Subscribe(UserDataRequest) returns (stream UserData) {} } service TradingService { @@ -30,12 +29,6 @@ enum Event { SNAPSHOT = 3; UPDATE = 4; AUTHENTICATED = 5; - ORDER_SNAPSHOT = 6; - ORDER_UPDATE = 7; - TRADE_SNAPSHOT = 8; - TRADE_UPDATE = 9; - ACCOUNT_SNAPSHOT = 10; - ACCOUNT_UPDATE = 11; ERROR = 99; } @@ -43,8 +36,8 @@ enum Channel { BOOK = 0; TRADE = 1; TICKER = 2; - USER = 3; - KLINE = 4; + KLINE = 3; + BALANCE = 4; } enum Side { @@ -68,6 +61,20 @@ message Error { string error_message = 2; } +message UserDataRequest { + string session = 1; +} + +message UserData { + string session = 1; + string exchange = 2; + Channel channel = 3; // trade, order, balance + Event event = 4; // snapshot, update ... + repeated Balance balances = 5; + repeated Trade trades = 6; + repeated Order orders = 7; +} + message SubscribeRequest { repeated Subscription subscriptions = 1; } @@ -80,18 +87,16 @@ message Subscription { string interval = 5; // interval is for kline channel } -message SubscribeResponse { +message MarketData { string session = 1; string exchange = 2; string symbol = 3; Channel channel = 4; // book, trade, ticker, user - Event event = 5; // snapshot, update, order_snapshot, ... + Event event = 5; // snapshot or update Depth depth = 6; // depth: used by book KLine kline = 7; - repeated Trade trades = 8; - Ticker ticker = 9; - repeated Order orders = 10; - repeated Balance balances = 11; + Ticker ticker = 9; // market ticker + repeated Trade trades = 8; // market trades int64 subscribed_at = 12; Error error = 13; } diff --git a/pkg/pb/bbgo_grpc.pb.go b/pkg/pb/bbgo_grpc.pb.go index 672faf628..cee6dc2e0 100644 --- a/pkg/pb/bbgo_grpc.pb.go +++ b/pkg/pb/bbgo_grpc.pb.go @@ -46,7 +46,7 @@ func (c *marketDataServiceClient) Subscribe(ctx context.Context, in *SubscribeRe } type MarketDataService_SubscribeClient interface { - Recv() (*SubscribeResponse, error) + Recv() (*MarketData, error) grpc.ClientStream } @@ -54,8 +54,8 @@ type marketDataServiceSubscribeClient struct { grpc.ClientStream } -func (x *marketDataServiceSubscribeClient) Recv() (*SubscribeResponse, error) { - m := new(SubscribeResponse) +func (x *marketDataServiceSubscribeClient) Recv() (*MarketData, error) { + m := new(MarketData) if err := x.ClientStream.RecvMsg(m); err != nil { return nil, err } @@ -112,7 +112,7 @@ func _MarketDataService_Subscribe_Handler(srv interface{}, stream grpc.ServerStr } type MarketDataService_SubscribeServer interface { - Send(*SubscribeResponse) error + Send(*MarketData) error grpc.ServerStream } @@ -120,7 +120,7 @@ type marketDataServiceSubscribeServer struct { grpc.ServerStream } -func (x *marketDataServiceSubscribeServer) Send(m *SubscribeResponse) error { +func (x *marketDataServiceSubscribeServer) Send(m *MarketData) error { return x.ServerStream.SendMsg(m) } @@ -168,8 +168,7 @@ var MarketDataService_ServiceDesc = grpc.ServiceDesc{ // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type UserDataServiceClient interface { - // should support streaming - SubscribeUserData(ctx context.Context, in *Empty, opts ...grpc.CallOption) (UserDataService_SubscribeUserDataClient, error) + Subscribe(ctx context.Context, in *UserDataRequest, opts ...grpc.CallOption) (UserDataService_SubscribeClient, error) } type userDataServiceClient struct { @@ -180,12 +179,12 @@ func NewUserDataServiceClient(cc grpc.ClientConnInterface) UserDataServiceClient return &userDataServiceClient{cc} } -func (c *userDataServiceClient) SubscribeUserData(ctx context.Context, in *Empty, opts ...grpc.CallOption) (UserDataService_SubscribeUserDataClient, error) { - stream, err := c.cc.NewStream(ctx, &UserDataService_ServiceDesc.Streams[0], "/bbgo.UserDataService/SubscribeUserData", opts...) +func (c *userDataServiceClient) Subscribe(ctx context.Context, in *UserDataRequest, opts ...grpc.CallOption) (UserDataService_SubscribeClient, error) { + stream, err := c.cc.NewStream(ctx, &UserDataService_ServiceDesc.Streams[0], "/bbgo.UserDataService/Subscribe", opts...) if err != nil { return nil, err } - x := &userDataServiceSubscribeUserDataClient{stream} + x := &userDataServiceSubscribeClient{stream} if err := x.ClientStream.SendMsg(in); err != nil { return nil, err } @@ -195,17 +194,17 @@ func (c *userDataServiceClient) SubscribeUserData(ctx context.Context, in *Empty return x, nil } -type UserDataService_SubscribeUserDataClient interface { - Recv() (*SubscribeResponse, error) +type UserDataService_SubscribeClient interface { + Recv() (*UserData, error) grpc.ClientStream } -type userDataServiceSubscribeUserDataClient struct { +type userDataServiceSubscribeClient struct { grpc.ClientStream } -func (x *userDataServiceSubscribeUserDataClient) Recv() (*SubscribeResponse, error) { - m := new(SubscribeResponse) +func (x *userDataServiceSubscribeClient) Recv() (*UserData, error) { + m := new(UserData) if err := x.ClientStream.RecvMsg(m); err != nil { return nil, err } @@ -216,8 +215,7 @@ func (x *userDataServiceSubscribeUserDataClient) Recv() (*SubscribeResponse, err // All implementations must embed UnimplementedUserDataServiceServer // for forward compatibility type UserDataServiceServer interface { - // should support streaming - SubscribeUserData(*Empty, UserDataService_SubscribeUserDataServer) error + Subscribe(*UserDataRequest, UserDataService_SubscribeServer) error mustEmbedUnimplementedUserDataServiceServer() } @@ -225,8 +223,8 @@ type UserDataServiceServer interface { type UnimplementedUserDataServiceServer struct { } -func (UnimplementedUserDataServiceServer) SubscribeUserData(*Empty, UserDataService_SubscribeUserDataServer) error { - return status.Errorf(codes.Unimplemented, "method SubscribeUserData not implemented") +func (UnimplementedUserDataServiceServer) Subscribe(*UserDataRequest, UserDataService_SubscribeServer) error { + return status.Errorf(codes.Unimplemented, "method Subscribe not implemented") } func (UnimplementedUserDataServiceServer) mustEmbedUnimplementedUserDataServiceServer() {} @@ -241,24 +239,24 @@ func RegisterUserDataServiceServer(s grpc.ServiceRegistrar, srv UserDataServiceS s.RegisterService(&UserDataService_ServiceDesc, srv) } -func _UserDataService_SubscribeUserData_Handler(srv interface{}, stream grpc.ServerStream) error { - m := new(Empty) +func _UserDataService_Subscribe_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(UserDataRequest) if err := stream.RecvMsg(m); err != nil { return err } - return srv.(UserDataServiceServer).SubscribeUserData(m, &userDataServiceSubscribeUserDataServer{stream}) + return srv.(UserDataServiceServer).Subscribe(m, &userDataServiceSubscribeServer{stream}) } -type UserDataService_SubscribeUserDataServer interface { - Send(*SubscribeResponse) error +type UserDataService_SubscribeServer interface { + Send(*UserData) error grpc.ServerStream } -type userDataServiceSubscribeUserDataServer struct { +type userDataServiceSubscribeServer struct { grpc.ServerStream } -func (x *userDataServiceSubscribeUserDataServer) Send(m *SubscribeResponse) error { +func (x *userDataServiceSubscribeServer) Send(m *UserData) error { return x.ServerStream.SendMsg(m) } @@ -271,8 +269,8 @@ var UserDataService_ServiceDesc = grpc.ServiceDesc{ Methods: []grpc.MethodDesc{}, Streams: []grpc.StreamDesc{ { - StreamName: "SubscribeUserData", - Handler: _UserDataService_SubscribeUserData_Handler, + StreamName: "Subscribe", + Handler: _UserDataService_Subscribe_Handler, ServerStreams: true, }, },