// Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.26.0 // protoc v3.19.3 // source: pkg/pb/bbgo.proto package pb import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" ) const ( // Verify that this generated code is sufficiently up-to-date. _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) // Verify that runtime/protoimpl is sufficiently up-to-date. _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) type 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_ERROR Event = 99 ) // Enum value maps for Event. var ( Event_name = map[int32]string{ 0: "UNKNOWN", 1: "SUBSCRIBED", 2: "UNSUBSCRIBED", 3: "SNAPSHOT", 4: "UPDATE", 5: "AUTHENTICATED", 99: "ERROR", } Event_value = map[string]int32{ "UNKNOWN": 0, "SUBSCRIBED": 1, "UNSUBSCRIBED": 2, "SNAPSHOT": 3, "UPDATE": 4, "AUTHENTICATED": 5, "ERROR": 99, } ) func (x Event) Enum() *Event { p := new(Event) *p = x return p } func (x Event) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (Event) Descriptor() protoreflect.EnumDescriptor { return file_pkg_pb_bbgo_proto_enumTypes[0].Descriptor() } func (Event) Type() protoreflect.EnumType { return &file_pkg_pb_bbgo_proto_enumTypes[0] } func (x Event) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use Event.Descriptor instead. func (Event) EnumDescriptor() ([]byte, []int) { return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{0} } type Channel int32 const ( 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. var ( Channel_name = map[int32]string{ 0: "BOOK", 1: "TRADE", 2: "TICKER", 3: "KLINE", 4: "BALANCE", } Channel_value = map[string]int32{ "BOOK": 0, "TRADE": 1, "TICKER": 2, "KLINE": 3, "BALANCE": 4, } ) func (x Channel) Enum() *Channel { p := new(Channel) *p = x return p } func (x Channel) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (Channel) Descriptor() protoreflect.EnumDescriptor { return file_pkg_pb_bbgo_proto_enumTypes[1].Descriptor() } func (Channel) Type() protoreflect.EnumType { return &file_pkg_pb_bbgo_proto_enumTypes[1] } func (x Channel) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use Channel.Descriptor instead. func (Channel) EnumDescriptor() ([]byte, []int) { return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{1} } type Side int32 const ( Side_BUY Side = 0 Side_SELL Side = 1 ) // Enum value maps for Side. var ( Side_name = map[int32]string{ 0: "BUY", 1: "SELL", } Side_value = map[string]int32{ "BUY": 0, "SELL": 1, } ) func (x Side) Enum() *Side { p := new(Side) *p = x return p } func (x Side) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (Side) Descriptor() protoreflect.EnumDescriptor { return file_pkg_pb_bbgo_proto_enumTypes[2].Descriptor() } func (Side) Type() protoreflect.EnumType { return &file_pkg_pb_bbgo_proto_enumTypes[2] } func (x Side) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use Side.Descriptor instead. func (Side) EnumDescriptor() ([]byte, []int) { return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{2} } type OrderType int32 const ( OrderType_MARKET OrderType = 0 OrderType_LIMIT OrderType = 1 OrderType_STOP_MARKET OrderType = 2 OrderType_STOP_LIMIT OrderType = 3 OrderType_POST_ONLY OrderType = 4 OrderType_IOC_LIMIT OrderType = 5 ) // Enum value maps for OrderType. var ( OrderType_name = map[int32]string{ 0: "MARKET", 1: "LIMIT", 2: "STOP_MARKET", 3: "STOP_LIMIT", 4: "POST_ONLY", 5: "IOC_LIMIT", } OrderType_value = map[string]int32{ "MARKET": 0, "LIMIT": 1, "STOP_MARKET": 2, "STOP_LIMIT": 3, "POST_ONLY": 4, "IOC_LIMIT": 5, } ) func (x OrderType) Enum() *OrderType { p := new(OrderType) *p = x return p } func (x OrderType) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (OrderType) Descriptor() protoreflect.EnumDescriptor { return file_pkg_pb_bbgo_proto_enumTypes[3].Descriptor() } func (OrderType) Type() protoreflect.EnumType { return &file_pkg_pb_bbgo_proto_enumTypes[3] } func (x OrderType) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use OrderType.Descriptor instead. func (OrderType) EnumDescriptor() ([]byte, []int) { return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{3} } type Empty struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *Empty) Reset() { *x = Empty{} if protoimpl.UnsafeEnabled { mi := &file_pkg_pb_bbgo_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Empty) String() string { return protoimpl.X.MessageStringOf(x) } func (*Empty) ProtoMessage() {} func (x *Empty) ProtoReflect() protoreflect.Message { mi := &file_pkg_pb_bbgo_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Empty.ProtoReflect.Descriptor instead. func (*Empty) Descriptor() ([]byte, []int) { return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{0} } type Error struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ErrorCode int64 `protobuf:"varint,1,opt,name=error_code,json=errorCode,proto3" json:"error_code,omitempty"` ErrorMessage string `protobuf:"bytes,2,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"` } func (x *Error) Reset() { *x = Error{} if protoimpl.UnsafeEnabled { mi := &file_pkg_pb_bbgo_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Error) String() string { return protoimpl.X.MessageStringOf(x) } func (*Error) ProtoMessage() {} func (x *Error) ProtoReflect() protoreflect.Message { mi := &file_pkg_pb_bbgo_proto_msgTypes[1] 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 Error.ProtoReflect.Descriptor instead. func (*Error) Descriptor() ([]byte, []int) { return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{1} } func (x *Error) GetErrorCode() int64 { if x != nil { return x.ErrorCode } return 0 } func (x *Error) GetErrorMessage() string { if x != nil { return x.ErrorMessage } 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 unknownFields protoimpl.UnknownFields Subscriptions []*Subscription `protobuf:"bytes,1,rep,name=subscriptions,proto3" json:"subscriptions,omitempty"` } func (x *SubscribeRequest) Reset() { *x = SubscribeRequest{} if protoimpl.UnsafeEnabled { mi := &file_pkg_pb_bbgo_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SubscribeRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*SubscribeRequest) ProtoMessage() {} func (x *SubscribeRequest) ProtoReflect() protoreflect.Message { mi := &file_pkg_pb_bbgo_proto_msgTypes[4] 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 SubscribeRequest.ProtoReflect.Descriptor instead. func (*SubscribeRequest) Descriptor() ([]byte, []int) { return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{4} } func (x *SubscribeRequest) GetSubscriptions() []*Subscription { if x != nil { return x.Subscriptions } return nil } type Subscription struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` Channel Channel `protobuf:"varint,2,opt,name=channel,proto3,enum=bbgo.Channel" json:"channel,omitempty"` // book, trade, ticker Symbol string `protobuf:"bytes,3,opt,name=symbol,proto3" json:"symbol,omitempty"` Depth string `protobuf:"bytes,4,opt,name=depth,proto3" json:"depth,omitempty"` // depth is for book, valid values are full, medium, 1, 5 and 20 Interval string `protobuf:"bytes,5,opt,name=interval,proto3" json:"interval,omitempty"` // interval is for kline channel } func (x *Subscription) Reset() { *x = Subscription{} if protoimpl.UnsafeEnabled { mi := &file_pkg_pb_bbgo_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Subscription) String() string { return protoimpl.X.MessageStringOf(x) } func (*Subscription) ProtoMessage() {} func (x *Subscription) ProtoReflect() protoreflect.Message { mi := &file_pkg_pb_bbgo_proto_msgTypes[5] 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 Subscription.ProtoReflect.Descriptor instead. func (*Subscription) Descriptor() ([]byte, []int) { return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{5} } func (x *Subscription) GetExchange() string { if x != nil { return x.Exchange } return "" } func (x *Subscription) GetChannel() Channel { if x != nil { return x.Channel } return Channel_BOOK } func (x *Subscription) GetSymbol() string { if x != nil { return x.Symbol } return "" } func (x *Subscription) GetDepth() string { if x != nil { return x.Depth } return "" } func (x *Subscription) GetInterval() string { if x != nil { return x.Interval } return "" } 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 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 *MarketData) Reset() { *x = MarketData{} if protoimpl.UnsafeEnabled { mi := &file_pkg_pb_bbgo_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *MarketData) String() string { return protoimpl.X.MessageStringOf(x) } func (*MarketData) ProtoMessage() {} 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 { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use MarketData.ProtoReflect.Descriptor instead. func (*MarketData) Descriptor() ([]byte, []int) { return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{6} } func (x *MarketData) GetSession() string { if x != nil { return x.Session } return "" } func (x *MarketData) GetExchange() string { if x != nil { return x.Exchange } return "" } func (x *MarketData) GetSymbol() string { if x != nil { return x.Symbol } return "" } func (x *MarketData) GetChannel() Channel { if x != nil { return x.Channel } return Channel_BOOK } func (x *MarketData) GetEvent() Event { if x != nil { return x.Event } return Event_UNKNOWN } func (x *MarketData) GetDepth() *Depth { if x != nil { return x.Depth } return nil } func (x *MarketData) GetKline() *KLine { if x != nil { return x.Kline } return nil } func (x *MarketData) GetTicker() *Ticker { if x != nil { return x.Ticker } return nil } func (x *MarketData) GetTrades() []*Trade { if x != nil { return x.Trades } return nil } func (x *MarketData) GetSubscribedAt() int64 { if x != nil { return x.SubscribedAt } return 0 } func (x *MarketData) GetError() *Error { if x != nil { return x.Error } return nil } type Depth struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` Symbol string `protobuf:"bytes,2,opt,name=symbol,proto3" json:"symbol,omitempty"` Asks []*PriceVolume `protobuf:"bytes,3,rep,name=asks,proto3" json:"asks,omitempty"` Bids []*PriceVolume `protobuf:"bytes,4,rep,name=bids,proto3" json:"bids,omitempty"` } func (x *Depth) Reset() { *x = Depth{} if protoimpl.UnsafeEnabled { mi := &file_pkg_pb_bbgo_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Depth) String() string { return protoimpl.X.MessageStringOf(x) } func (*Depth) ProtoMessage() {} func (x *Depth) ProtoReflect() protoreflect.Message { mi := &file_pkg_pb_bbgo_proto_msgTypes[7] 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 Depth.ProtoReflect.Descriptor instead. func (*Depth) Descriptor() ([]byte, []int) { return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{7} } func (x *Depth) GetExchange() string { if x != nil { return x.Exchange } return "" } func (x *Depth) GetSymbol() string { if x != nil { return x.Symbol } return "" } func (x *Depth) GetAsks() []*PriceVolume { if x != nil { return x.Asks } return nil } func (x *Depth) GetBids() []*PriceVolume { if x != nil { return x.Bids } return nil } type PriceVolume struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Price string `protobuf:"bytes,1,opt,name=price,proto3" json:"price,omitempty"` Volume string `protobuf:"bytes,2,opt,name=volume,proto3" json:"volume,omitempty"` } func (x *PriceVolume) Reset() { *x = PriceVolume{} if protoimpl.UnsafeEnabled { mi := &file_pkg_pb_bbgo_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *PriceVolume) String() string { return protoimpl.X.MessageStringOf(x) } func (*PriceVolume) ProtoMessage() {} func (x *PriceVolume) ProtoReflect() protoreflect.Message { mi := &file_pkg_pb_bbgo_proto_msgTypes[8] 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 PriceVolume.ProtoReflect.Descriptor instead. func (*PriceVolume) Descriptor() ([]byte, []int) { return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{8} } func (x *PriceVolume) GetPrice() string { if x != nil { return x.Price } return "" } func (x *PriceVolume) GetVolume() string { if x != nil { return x.Volume } return "" } // https://maicoin.github.io/max-websocket-docs/#/private_channels?id=trade-response // https://maicoin.github.io/max-websocket-docs/#/public_trade?id=success-response type Trade struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` Symbol string `protobuf:"bytes,2,opt,name=symbol,proto3" json:"symbol,omitempty"` Id string `protobuf:"bytes,3,opt,name=id,proto3" json:"id,omitempty"` Price string `protobuf:"bytes,4,opt,name=price,proto3" json:"price,omitempty"` Quantity string `protobuf:"bytes,5,opt,name=quantity,proto3" json:"quantity,omitempty"` CreatedAt int64 `protobuf:"varint,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` Side Side `protobuf:"varint,7,opt,name=side,proto3,enum=bbgo.Side" json:"side,omitempty"` FeeCurrency string `protobuf:"bytes,8,opt,name=fee_currency,json=feeCurrency,proto3" json:"fee_currency,omitempty"` Fee string `protobuf:"bytes,9,opt,name=fee,proto3" json:"fee,omitempty"` Maker bool `protobuf:"varint,10,opt,name=maker,proto3" json:"maker,omitempty"` } func (x *Trade) Reset() { *x = Trade{} if protoimpl.UnsafeEnabled { mi := &file_pkg_pb_bbgo_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Trade) String() string { return protoimpl.X.MessageStringOf(x) } func (*Trade) ProtoMessage() {} func (x *Trade) ProtoReflect() protoreflect.Message { mi := &file_pkg_pb_bbgo_proto_msgTypes[9] 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 Trade.ProtoReflect.Descriptor instead. func (*Trade) Descriptor() ([]byte, []int) { return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{9} } func (x *Trade) GetExchange() string { if x != nil { return x.Exchange } return "" } func (x *Trade) GetSymbol() string { if x != nil { return x.Symbol } return "" } func (x *Trade) GetId() string { if x != nil { return x.Id } return "" } func (x *Trade) GetPrice() string { if x != nil { return x.Price } return "" } func (x *Trade) GetQuantity() string { if x != nil { return x.Quantity } return "" } func (x *Trade) GetCreatedAt() int64 { if x != nil { return x.CreatedAt } return 0 } func (x *Trade) GetSide() Side { if x != nil { return x.Side } return Side_BUY } func (x *Trade) GetFeeCurrency() string { if x != nil { return x.FeeCurrency } return "" } func (x *Trade) GetFee() string { if x != nil { return x.Fee } return "" } func (x *Trade) GetMaker() bool { if x != nil { return x.Maker } return false } // https://maicoin.github.io/max-websocket-docs/#/public_ticker?id=success-response type Ticker struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` Symbol string `protobuf:"bytes,2,opt,name=symbol,proto3" json:"symbol,omitempty"` Open float64 `protobuf:"fixed64,3,opt,name=open,proto3" json:"open,omitempty"` High float64 `protobuf:"fixed64,4,opt,name=high,proto3" json:"high,omitempty"` Low float64 `protobuf:"fixed64,5,opt,name=low,proto3" json:"low,omitempty"` Close float64 `protobuf:"fixed64,6,opt,name=close,proto3" json:"close,omitempty"` Volume float64 `protobuf:"fixed64,7,opt,name=volume,proto3" json:"volume,omitempty"` } func (x *Ticker) Reset() { *x = Ticker{} if protoimpl.UnsafeEnabled { mi := &file_pkg_pb_bbgo_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Ticker) String() string { return protoimpl.X.MessageStringOf(x) } func (*Ticker) ProtoMessage() {} func (x *Ticker) ProtoReflect() protoreflect.Message { mi := &file_pkg_pb_bbgo_proto_msgTypes[10] 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 Ticker.ProtoReflect.Descriptor instead. func (*Ticker) Descriptor() ([]byte, []int) { return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{10} } func (x *Ticker) GetExchange() string { if x != nil { return x.Exchange } return "" } func (x *Ticker) GetSymbol() string { if x != nil { return x.Symbol } return "" } func (x *Ticker) GetOpen() float64 { if x != nil { return x.Open } return 0 } func (x *Ticker) GetHigh() float64 { if x != nil { return x.High } return 0 } func (x *Ticker) GetLow() float64 { if x != nil { return x.Low } return 0 } func (x *Ticker) GetClose() float64 { if x != nil { return x.Close } return 0 } func (x *Ticker) GetVolume() float64 { if x != nil { return x.Volume } return 0 } // https://maicoin.github.io/max-websocket-docs/#/private_channels?id=snapshot type Order struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` Symbol string `protobuf:"bytes,2,opt,name=symbol,proto3" json:"symbol,omitempty"` Id string `protobuf:"bytes,3,opt,name=id,proto3" json:"id,omitempty"` Side Side `protobuf:"varint,4,opt,name=side,proto3,enum=bbgo.Side" json:"side,omitempty"` OrderType OrderType `protobuf:"varint,5,opt,name=order_type,json=orderType,proto3,enum=bbgo.OrderType" json:"order_type,omitempty"` Price float64 `protobuf:"fixed64,6,opt,name=price,proto3" json:"price,omitempty"` StopPrice float64 `protobuf:"fixed64,7,opt,name=stop_price,json=stopPrice,proto3" json:"stop_price,omitempty"` AvgPrice float64 `protobuf:"fixed64,8,opt,name=avg_price,json=avgPrice,proto3" json:"avg_price,omitempty"` Status string `protobuf:"bytes,9,opt,name=status,proto3" json:"status,omitempty"` CreatedAt int64 `protobuf:"varint,10,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` Quantity float64 `protobuf:"fixed64,11,opt,name=quantity,proto3" json:"quantity,omitempty"` ExecutedVolume float64 `protobuf:"fixed64,12,opt,name=executed_volume,json=executedVolume,proto3" json:"executed_volume,omitempty"` TradesCount int64 `protobuf:"varint,13,opt,name=trades_count,json=tradesCount,proto3" json:"trades_count,omitempty"` ClientOrderId string `protobuf:"bytes,14,opt,name=client_order_id,json=clientOrderId,proto3" json:"client_order_id,omitempty"` GroupId int64 `protobuf:"varint,15,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` } func (x *Order) Reset() { *x = Order{} if protoimpl.UnsafeEnabled { mi := &file_pkg_pb_bbgo_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Order) String() string { return protoimpl.X.MessageStringOf(x) } func (*Order) ProtoMessage() {} func (x *Order) ProtoReflect() protoreflect.Message { mi := &file_pkg_pb_bbgo_proto_msgTypes[11] 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 Order.ProtoReflect.Descriptor instead. func (*Order) Descriptor() ([]byte, []int) { return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{11} } func (x *Order) GetExchange() string { if x != nil { return x.Exchange } return "" } func (x *Order) GetSymbol() string { if x != nil { return x.Symbol } return "" } func (x *Order) GetId() string { if x != nil { return x.Id } return "" } func (x *Order) GetSide() Side { if x != nil { return x.Side } return Side_BUY } func (x *Order) GetOrderType() OrderType { if x != nil { return x.OrderType } return OrderType_MARKET } func (x *Order) GetPrice() float64 { if x != nil { return x.Price } return 0 } func (x *Order) GetStopPrice() float64 { if x != nil { return x.StopPrice } return 0 } func (x *Order) GetAvgPrice() float64 { if x != nil { return x.AvgPrice } return 0 } func (x *Order) GetStatus() string { if x != nil { return x.Status } return "" } func (x *Order) GetCreatedAt() int64 { if x != nil { return x.CreatedAt } return 0 } func (x *Order) GetQuantity() float64 { if x != nil { return x.Quantity } return 0 } func (x *Order) GetExecutedVolume() float64 { if x != nil { return x.ExecutedVolume } return 0 } func (x *Order) GetTradesCount() int64 { if x != nil { return x.TradesCount } return 0 } func (x *Order) GetClientOrderId() string { if x != nil { return x.ClientOrderId } return "" } func (x *Order) GetGroupId() int64 { if x != nil { return x.GroupId } return 0 } type SubmitOrder struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` Symbol string `protobuf:"bytes,2,opt,name=symbol,proto3" json:"symbol,omitempty"` Side Side `protobuf:"varint,3,opt,name=side,proto3,enum=bbgo.Side" json:"side,omitempty"` Quantity float64 `protobuf:"fixed64,4,opt,name=quantity,proto3" json:"quantity,omitempty"` Price float64 `protobuf:"fixed64,5,opt,name=price,proto3" json:"price,omitempty"` StopPrice float64 `protobuf:"fixed64,6,opt,name=stop_price,json=stopPrice,proto3" json:"stop_price,omitempty"` OrderType OrderType `protobuf:"varint,7,opt,name=order_type,json=orderType,proto3,enum=bbgo.OrderType" json:"order_type,omitempty"` ClientOrderId string `protobuf:"bytes,8,opt,name=client_order_id,json=clientOrderId,proto3" json:"client_order_id,omitempty"` GroupId int64 `protobuf:"varint,9,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` } func (x *SubmitOrder) Reset() { *x = SubmitOrder{} if protoimpl.UnsafeEnabled { mi := &file_pkg_pb_bbgo_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SubmitOrder) String() string { return protoimpl.X.MessageStringOf(x) } func (*SubmitOrder) ProtoMessage() {} func (x *SubmitOrder) ProtoReflect() protoreflect.Message { mi := &file_pkg_pb_bbgo_proto_msgTypes[12] 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 SubmitOrder.ProtoReflect.Descriptor instead. func (*SubmitOrder) Descriptor() ([]byte, []int) { return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{12} } func (x *SubmitOrder) GetExchange() string { if x != nil { return x.Exchange } return "" } func (x *SubmitOrder) GetSymbol() string { if x != nil { return x.Symbol } return "" } func (x *SubmitOrder) GetSide() Side { if x != nil { return x.Side } return Side_BUY } func (x *SubmitOrder) GetQuantity() float64 { if x != nil { return x.Quantity } return 0 } func (x *SubmitOrder) GetPrice() float64 { if x != nil { return x.Price } return 0 } func (x *SubmitOrder) GetStopPrice() float64 { if x != nil { return x.StopPrice } return 0 } func (x *SubmitOrder) GetOrderType() OrderType { if x != nil { return x.OrderType } return OrderType_MARKET } func (x *SubmitOrder) GetClientOrderId() string { if x != nil { return x.ClientOrderId } return "" } func (x *SubmitOrder) GetGroupId() int64 { if x != nil { return x.GroupId } return 0 } // https://maicoin.github.io/max-websocket-docs/#/private_channels?id=account-response type Balance struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` Currency string `protobuf:"bytes,2,opt,name=currency,proto3" json:"currency,omitempty"` Available float64 `protobuf:"fixed64,3,opt,name=available,proto3" json:"available,omitempty"` Locked float64 `protobuf:"fixed64,4,opt,name=locked,proto3" json:"locked,omitempty"` } func (x *Balance) Reset() { *x = Balance{} if protoimpl.UnsafeEnabled { mi := &file_pkg_pb_bbgo_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Balance) String() string { return protoimpl.X.MessageStringOf(x) } func (*Balance) ProtoMessage() {} func (x *Balance) ProtoReflect() protoreflect.Message { mi := &file_pkg_pb_bbgo_proto_msgTypes[13] 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 Balance.ProtoReflect.Descriptor instead. func (*Balance) Descriptor() ([]byte, []int) { return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{13} } func (x *Balance) GetExchange() string { if x != nil { return x.Exchange } return "" } func (x *Balance) GetCurrency() string { if x != nil { return x.Currency } return "" } func (x *Balance) GetAvailable() float64 { if x != nil { return x.Available } return 0 } func (x *Balance) GetLocked() float64 { if x != nil { return x.Locked } return 0 } type SubmitOrderRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields SubmitOrder *SubmitOrder `protobuf:"bytes,1,opt,name=submit_order,json=submitOrder,proto3" json:"submit_order,omitempty"` } func (x *SubmitOrderRequest) Reset() { *x = SubmitOrderRequest{} if protoimpl.UnsafeEnabled { mi := &file_pkg_pb_bbgo_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SubmitOrderRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*SubmitOrderRequest) ProtoMessage() {} func (x *SubmitOrderRequest) ProtoReflect() protoreflect.Message { mi := &file_pkg_pb_bbgo_proto_msgTypes[14] 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 SubmitOrderRequest.ProtoReflect.Descriptor instead. func (*SubmitOrderRequest) Descriptor() ([]byte, []int) { return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{14} } func (x *SubmitOrderRequest) GetSubmitOrder() *SubmitOrder { if x != nil { return x.SubmitOrder } return nil } type SubmitOrderResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Order *Order `protobuf:"bytes,1,opt,name=order,proto3" json:"order,omitempty"` Error *Error `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"` } func (x *SubmitOrderResponse) Reset() { *x = SubmitOrderResponse{} if protoimpl.UnsafeEnabled { mi := &file_pkg_pb_bbgo_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SubmitOrderResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*SubmitOrderResponse) ProtoMessage() {} func (x *SubmitOrderResponse) ProtoReflect() protoreflect.Message { mi := &file_pkg_pb_bbgo_proto_msgTypes[15] 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 SubmitOrderResponse.ProtoReflect.Descriptor instead. func (*SubmitOrderResponse) Descriptor() ([]byte, []int) { return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{15} } func (x *SubmitOrderResponse) GetOrder() *Order { if x != nil { return x.Order } return nil } func (x *SubmitOrderResponse) GetError() *Error { if x != nil { return x.Error } return nil } type CancelOrderRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` ClientOrderId string `protobuf:"bytes,3,opt,name=client_order_id,json=clientOrderId,proto3" json:"client_order_id,omitempty"` } func (x *CancelOrderRequest) Reset() { *x = CancelOrderRequest{} if protoimpl.UnsafeEnabled { mi := &file_pkg_pb_bbgo_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CancelOrderRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*CancelOrderRequest) ProtoMessage() {} func (x *CancelOrderRequest) ProtoReflect() protoreflect.Message { mi := &file_pkg_pb_bbgo_proto_msgTypes[16] 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 CancelOrderRequest.ProtoReflect.Descriptor instead. func (*CancelOrderRequest) Descriptor() ([]byte, []int) { return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{16} } func (x *CancelOrderRequest) GetExchange() string { if x != nil { return x.Exchange } return "" } func (x *CancelOrderRequest) GetId() string { if x != nil { return x.Id } return "" } func (x *CancelOrderRequest) GetClientOrderId() string { if x != nil { return x.ClientOrderId } return "" } type CancelOrderResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Order *Order `protobuf:"bytes,1,opt,name=order,proto3" json:"order,omitempty"` Error *Error `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"` } func (x *CancelOrderResponse) Reset() { *x = CancelOrderResponse{} if protoimpl.UnsafeEnabled { mi := &file_pkg_pb_bbgo_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CancelOrderResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*CancelOrderResponse) ProtoMessage() {} func (x *CancelOrderResponse) ProtoReflect() protoreflect.Message { mi := &file_pkg_pb_bbgo_proto_msgTypes[17] 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 CancelOrderResponse.ProtoReflect.Descriptor instead. func (*CancelOrderResponse) Descriptor() ([]byte, []int) { return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{17} } func (x *CancelOrderResponse) GetOrder() *Order { if x != nil { return x.Order } return nil } func (x *CancelOrderResponse) GetError() *Error { if x != nil { return x.Error } return nil } type QueryOrderRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` ClientOrderId string `protobuf:"bytes,3,opt,name=client_order_id,json=clientOrderId,proto3" json:"client_order_id,omitempty"` } func (x *QueryOrderRequest) Reset() { *x = QueryOrderRequest{} if protoimpl.UnsafeEnabled { mi := &file_pkg_pb_bbgo_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *QueryOrderRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*QueryOrderRequest) ProtoMessage() {} func (x *QueryOrderRequest) ProtoReflect() protoreflect.Message { mi := &file_pkg_pb_bbgo_proto_msgTypes[18] 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 QueryOrderRequest.ProtoReflect.Descriptor instead. func (*QueryOrderRequest) Descriptor() ([]byte, []int) { return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{18} } func (x *QueryOrderRequest) GetExchange() string { if x != nil { return x.Exchange } return "" } func (x *QueryOrderRequest) GetId() string { if x != nil { return x.Id } return "" } func (x *QueryOrderRequest) GetClientOrderId() string { if x != nil { return x.ClientOrderId } return "" } type QueryOrderResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Order *Order `protobuf:"bytes,1,opt,name=order,proto3" json:"order,omitempty"` Error *Error `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"` } func (x *QueryOrderResponse) Reset() { *x = QueryOrderResponse{} if protoimpl.UnsafeEnabled { mi := &file_pkg_pb_bbgo_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *QueryOrderResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*QueryOrderResponse) ProtoMessage() {} func (x *QueryOrderResponse) ProtoReflect() protoreflect.Message { mi := &file_pkg_pb_bbgo_proto_msgTypes[19] 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 QueryOrderResponse.ProtoReflect.Descriptor instead. func (*QueryOrderResponse) Descriptor() ([]byte, []int) { return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{19} } func (x *QueryOrderResponse) GetOrder() *Order { if x != nil { return x.Order } return nil } func (x *QueryOrderResponse) GetError() *Error { if x != nil { return x.Error } return nil } type QueryOrdersRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` Symbol string `protobuf:"bytes,2,opt,name=symbol,proto3" json:"symbol,omitempty"` State []string `protobuf:"bytes,3,rep,name=state,proto3" json:"state,omitempty"` OrderBy string `protobuf:"bytes,4,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"` GroupId int64 `protobuf:"varint,5,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` Pagination bool `protobuf:"varint,6,opt,name=pagination,proto3" json:"pagination,omitempty"` Page int64 `protobuf:"varint,7,opt,name=page,proto3" json:"page,omitempty"` Limit int64 `protobuf:"varint,8,opt,name=limit,proto3" json:"limit,omitempty"` Offset int64 `protobuf:"varint,9,opt,name=offset,proto3" json:"offset,omitempty"` } func (x *QueryOrdersRequest) Reset() { *x = QueryOrdersRequest{} if protoimpl.UnsafeEnabled { mi := &file_pkg_pb_bbgo_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *QueryOrdersRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*QueryOrdersRequest) ProtoMessage() {} func (x *QueryOrdersRequest) ProtoReflect() protoreflect.Message { mi := &file_pkg_pb_bbgo_proto_msgTypes[20] 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 QueryOrdersRequest.ProtoReflect.Descriptor instead. func (*QueryOrdersRequest) Descriptor() ([]byte, []int) { return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{20} } func (x *QueryOrdersRequest) GetExchange() string { if x != nil { return x.Exchange } return "" } func (x *QueryOrdersRequest) GetSymbol() string { if x != nil { return x.Symbol } return "" } func (x *QueryOrdersRequest) GetState() []string { if x != nil { return x.State } return nil } func (x *QueryOrdersRequest) GetOrderBy() string { if x != nil { return x.OrderBy } return "" } func (x *QueryOrdersRequest) GetGroupId() int64 { if x != nil { return x.GroupId } return 0 } func (x *QueryOrdersRequest) GetPagination() bool { if x != nil { return x.Pagination } return false } func (x *QueryOrdersRequest) GetPage() int64 { if x != nil { return x.Page } return 0 } func (x *QueryOrdersRequest) GetLimit() int64 { if x != nil { return x.Limit } return 0 } func (x *QueryOrdersRequest) GetOffset() int64 { if x != nil { return x.Offset } return 0 } type QueryOrdersResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Orders []*Order `protobuf:"bytes,1,rep,name=orders,proto3" json:"orders,omitempty"` Error *Error `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"` } func (x *QueryOrdersResponse) Reset() { *x = QueryOrdersResponse{} if protoimpl.UnsafeEnabled { mi := &file_pkg_pb_bbgo_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *QueryOrdersResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*QueryOrdersResponse) ProtoMessage() {} func (x *QueryOrdersResponse) ProtoReflect() protoreflect.Message { mi := &file_pkg_pb_bbgo_proto_msgTypes[21] 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 QueryOrdersResponse.ProtoReflect.Descriptor instead. func (*QueryOrdersResponse) Descriptor() ([]byte, []int) { return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{21} } func (x *QueryOrdersResponse) GetOrders() []*Order { if x != nil { return x.Orders } return nil } func (x *QueryOrdersResponse) GetError() *Error { if x != nil { return x.Error } return nil } type QueryTradesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` Symbol string `protobuf:"bytes,2,opt,name=symbol,proto3" json:"symbol,omitempty"` Timestamp int64 `protobuf:"varint,3,opt,name=timestamp,proto3" json:"timestamp,omitempty"` From int64 `protobuf:"varint,4,opt,name=from,proto3" json:"from,omitempty"` To int64 `protobuf:"varint,5,opt,name=to,proto3" json:"to,omitempty"` OrderBy string `protobuf:"bytes,6,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"` Pagination bool `protobuf:"varint,7,opt,name=pagination,proto3" json:"pagination,omitempty"` Page int64 `protobuf:"varint,8,opt,name=page,proto3" json:"page,omitempty"` Limit int64 `protobuf:"varint,9,opt,name=limit,proto3" json:"limit,omitempty"` Offset int64 `protobuf:"varint,10,opt,name=offset,proto3" json:"offset,omitempty"` } func (x *QueryTradesRequest) Reset() { *x = QueryTradesRequest{} if protoimpl.UnsafeEnabled { mi := &file_pkg_pb_bbgo_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *QueryTradesRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*QueryTradesRequest) ProtoMessage() {} func (x *QueryTradesRequest) ProtoReflect() protoreflect.Message { mi := &file_pkg_pb_bbgo_proto_msgTypes[22] 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 QueryTradesRequest.ProtoReflect.Descriptor instead. func (*QueryTradesRequest) Descriptor() ([]byte, []int) { return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{22} } func (x *QueryTradesRequest) GetExchange() string { if x != nil { return x.Exchange } return "" } func (x *QueryTradesRequest) GetSymbol() string { if x != nil { return x.Symbol } return "" } func (x *QueryTradesRequest) GetTimestamp() int64 { if x != nil { return x.Timestamp } return 0 } func (x *QueryTradesRequest) GetFrom() int64 { if x != nil { return x.From } return 0 } func (x *QueryTradesRequest) GetTo() int64 { if x != nil { return x.To } return 0 } func (x *QueryTradesRequest) GetOrderBy() string { if x != nil { return x.OrderBy } return "" } func (x *QueryTradesRequest) GetPagination() bool { if x != nil { return x.Pagination } return false } func (x *QueryTradesRequest) GetPage() int64 { if x != nil { return x.Page } return 0 } func (x *QueryTradesRequest) GetLimit() int64 { if x != nil { return x.Limit } return 0 } func (x *QueryTradesRequest) GetOffset() int64 { if x != nil { return x.Offset } return 0 } type QueryTradesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Trades []*Trade `protobuf:"bytes,1,rep,name=trades,proto3" json:"trades,omitempty"` Error *Error `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"` } func (x *QueryTradesResponse) Reset() { *x = QueryTradesResponse{} if protoimpl.UnsafeEnabled { mi := &file_pkg_pb_bbgo_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *QueryTradesResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*QueryTradesResponse) ProtoMessage() {} func (x *QueryTradesResponse) ProtoReflect() protoreflect.Message { mi := &file_pkg_pb_bbgo_proto_msgTypes[23] 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 QueryTradesResponse.ProtoReflect.Descriptor instead. func (*QueryTradesResponse) Descriptor() ([]byte, []int) { return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{23} } func (x *QueryTradesResponse) GetTrades() []*Trade { if x != nil { return x.Trades } return nil } func (x *QueryTradesResponse) GetError() *Error { if x != nil { return x.Error } return nil } type QueryKLinesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` Symbol string `protobuf:"bytes,2,opt,name=symbol,proto3" json:"symbol,omitempty"` Interval string `protobuf:"bytes,3,opt,name=interval,proto3" json:"interval,omitempty"` // time period of K line in minute StartTime int64 `protobuf:"varint,4,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` EndTime int64 `protobuf:"varint,5,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` Limit int64 `protobuf:"varint,6,opt,name=limit,proto3" json:"limit,omitempty"` } func (x *QueryKLinesRequest) Reset() { *x = QueryKLinesRequest{} if protoimpl.UnsafeEnabled { mi := &file_pkg_pb_bbgo_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *QueryKLinesRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*QueryKLinesRequest) ProtoMessage() {} func (x *QueryKLinesRequest) ProtoReflect() protoreflect.Message { mi := &file_pkg_pb_bbgo_proto_msgTypes[24] 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 QueryKLinesRequest.ProtoReflect.Descriptor instead. func (*QueryKLinesRequest) Descriptor() ([]byte, []int) { return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{24} } func (x *QueryKLinesRequest) GetExchange() string { if x != nil { return x.Exchange } return "" } func (x *QueryKLinesRequest) GetSymbol() string { if x != nil { return x.Symbol } return "" } func (x *QueryKLinesRequest) GetInterval() string { if x != nil { return x.Interval } return "" } func (x *QueryKLinesRequest) GetStartTime() int64 { if x != nil { return x.StartTime } return 0 } func (x *QueryKLinesRequest) GetEndTime() int64 { if x != nil { return x.EndTime } return 0 } func (x *QueryKLinesRequest) GetLimit() int64 { if x != nil { return x.Limit } return 0 } type QueryKLinesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Klines []*KLine `protobuf:"bytes,1,rep,name=klines,proto3" json:"klines,omitempty"` Error *Error `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"` } func (x *QueryKLinesResponse) Reset() { *x = QueryKLinesResponse{} if protoimpl.UnsafeEnabled { mi := &file_pkg_pb_bbgo_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *QueryKLinesResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*QueryKLinesResponse) ProtoMessage() {} func (x *QueryKLinesResponse) ProtoReflect() protoreflect.Message { mi := &file_pkg_pb_bbgo_proto_msgTypes[25] 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 QueryKLinesResponse.ProtoReflect.Descriptor instead. func (*QueryKLinesResponse) Descriptor() ([]byte, []int) { return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{25} } func (x *QueryKLinesResponse) GetKlines() []*KLine { if x != nil { return x.Klines } return nil } func (x *QueryKLinesResponse) GetError() *Error { if x != nil { return x.Error } return nil } type KLine 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"` Open string `protobuf:"bytes,4,opt,name=open,proto3" json:"open,omitempty"` High string `protobuf:"bytes,5,opt,name=high,proto3" json:"high,omitempty"` Low string `protobuf:"bytes,6,opt,name=low,proto3" json:"low,omitempty"` Close string `protobuf:"bytes,7,opt,name=close,proto3" json:"close,omitempty"` Volume string `protobuf:"bytes,8,opt,name=volume,proto3" json:"volume,omitempty"` QuoteVolume string `protobuf:"bytes,9,opt,name=quote_volume,json=quoteVolume,proto3" json:"quote_volume,omitempty"` StartTime int64 `protobuf:"varint,10,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` EndTime int64 `protobuf:"varint,11,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` Closed bool `protobuf:"varint,12,opt,name=closed,proto3" json:"closed,omitempty"` } func (x *KLine) Reset() { *x = KLine{} if protoimpl.UnsafeEnabled { mi := &file_pkg_pb_bbgo_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *KLine) String() string { return protoimpl.X.MessageStringOf(x) } func (*KLine) ProtoMessage() {} func (x *KLine) ProtoReflect() protoreflect.Message { mi := &file_pkg_pb_bbgo_proto_msgTypes[26] 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 KLine.ProtoReflect.Descriptor instead. func (*KLine) Descriptor() ([]byte, []int) { return file_pkg_pb_bbgo_proto_rawDescGZIP(), []int{26} } func (x *KLine) GetSession() string { if x != nil { return x.Session } return "" } func (x *KLine) GetExchange() string { if x != nil { return x.Exchange } return "" } func (x *KLine) GetSymbol() string { if x != nil { return x.Symbol } return "" } func (x *KLine) GetOpen() string { if x != nil { return x.Open } return "" } func (x *KLine) GetHigh() string { if x != nil { return x.High } return "" } func (x *KLine) GetLow() string { if x != nil { return x.Low } return "" } func (x *KLine) GetClose() string { if x != nil { return x.Close } return "" } func (x *KLine) GetVolume() string { if x != nil { return x.Volume } return "" } func (x *KLine) GetQuoteVolume() string { if x != nil { return x.QuoteVolume } return "" } func (x *KLine) GetStartTime() int64 { if x != nil { return x.StartTime } return 0 } func (x *KLine) GetEndTime() int64 { if x != nil { return x.EndTime } return 0 } func (x *KLine) GetClosed() bool { if x != nil { return x.Closed } return false } var File_pkg_pb_bbgo_proto protoreflect.FileDescriptor var file_pkg_pb_bbgo_proto_rawDesc = []byte{ 0x0a, 0x11, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x62, 0x2f, 0x62, 0x62, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x04, 0x62, 0x62, 0x67, 0x6f, 0x22, 0x07, 0x0a, 0x05, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x4b, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 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, 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, 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, 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, 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, 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, 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, 0x12, 0x09, 0x0a, 0x05, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 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, 0x94, 0x01, 0x0a, 0x11, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 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, 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 ( file_pkg_pb_bbgo_proto_rawDescOnce sync.Once file_pkg_pb_bbgo_proto_rawDescData = file_pkg_pb_bbgo_proto_rawDesc ) func file_pkg_pb_bbgo_proto_rawDescGZIP() []byte { file_pkg_pb_bbgo_proto_rawDescOnce.Do(func() { file_pkg_pb_bbgo_proto_rawDescData = protoimpl.X.CompressGZIP(file_pkg_pb_bbgo_proto_rawDescData) }) return file_pkg_pb_bbgo_proto_rawDescData } var file_pkg_pb_bbgo_proto_enumTypes = make([]protoimpl.EnumInfo, 4) 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 (Side)(0), // 2: bbgo.Side (OrderType)(0), // 3: bbgo.OrderType (*Empty)(nil), // 4: bbgo.Empty (*Error)(nil), // 5: bbgo.Error (*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{ 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() } func file_pkg_pb_bbgo_proto_init() { if File_pkg_pb_bbgo_proto != nil { return } if !protoimpl.UnsafeEnabled { file_pkg_pb_bbgo_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Empty); 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[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Error); 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[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserDataRequest); 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[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserData); 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[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SubscribeRequest); 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[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Subscription); 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[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MarketData); 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[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Depth); 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[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PriceVolume); 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[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Trade); 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[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Ticker); 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[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Order); 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[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SubmitOrder); 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[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Balance); 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[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SubmitOrderRequest); 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[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SubmitOrderResponse); 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[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CancelOrderRequest); 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[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CancelOrderResponse); 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[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*QueryOrderRequest); 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[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*QueryOrderResponse); 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[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*QueryOrdersRequest); 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[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*QueryOrdersResponse); 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[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*QueryTradesRequest); 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[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*QueryTradesResponse); 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[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 case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_pkg_pb_bbgo_proto_rawDesc, NumEnums: 4, NumMessages: 27, NumExtensions: 0, NumServices: 3, }, GoTypes: file_pkg_pb_bbgo_proto_goTypes, DependencyIndexes: file_pkg_pb_bbgo_proto_depIdxs, EnumInfos: file_pkg_pb_bbgo_proto_enumTypes, MessageInfos: file_pkg_pb_bbgo_proto_msgTypes, }.Build() File_pkg_pb_bbgo_proto = out.File file_pkg_pb_bbgo_proto_rawDesc = nil file_pkg_pb_bbgo_proto_goTypes = nil file_pkg_pb_bbgo_proto_depIdxs = nil }