// Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.28.1 // protoc v3.11.2 // source: game.proto package gameproto import ( any1 "github.com/golang/protobuf/ptypes/any" 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 NotifyTypeEnum int32 const ( NotifyTypeEnum_NotifyTypePing NotifyTypeEnum = 0 NotifyTypeEnum_NotifyTypeJoinRoom NotifyTypeEnum = 1 NotifyTypeEnum_NotifyTypeLeaveRoom NotifyTypeEnum = 2 NotifyTypeEnum_NotifyTypeCreateRoom NotifyTypeEnum = 3 NotifyTypeEnum_NotifyTypeConnect NotifyTypeEnum = 4 NotifyTypeEnum_NotifyTypeDisconnect NotifyTypeEnum = 5 NotifyTypeEnum_NotifyTypeReady NotifyTypeEnum = 6 NotifyTypeEnum_NotifyTypeUnReady NotifyTypeEnum = 7 NotifyTypeEnum_NotifyTypeStart NotifyTypeEnum = 8 NotifyTypeEnum_NotifyTypeChooseMaster NotifyTypeEnum = 9 NotifyTypeEnum_NotifyTypeChooseMasterFinish NotifyTypeEnum = 10 NotifyTypeEnum_NotifyTypeChooseMul NotifyTypeEnum = 11 NotifyTypeEnum_NotifyTypeChooseMulFinish NotifyTypeEnum = 12 NotifyTypeEnum_NotifyTypeGameInit NotifyTypeEnum = 13 NotifyTypeEnum_NotifyTypeOpen NotifyTypeEnum = 14 NotifyTypeEnum_NotifyTypeOpenFinish NotifyTypeEnum = 15 NotifyTypeEnum_NotifyTypeMsgResp NotifyTypeEnum = 16 //简单的返回 NotifyTypeEnum_NotifyTypeWaitReady NotifyTypeEnum = 17 ) // Enum value maps for NotifyTypeEnum. var ( NotifyTypeEnum_name = map[int32]string{ 0: "NotifyTypePing", 1: "NotifyTypeJoinRoom", 2: "NotifyTypeLeaveRoom", 3: "NotifyTypeCreateRoom", 4: "NotifyTypeConnect", 5: "NotifyTypeDisconnect", 6: "NotifyTypeReady", 7: "NotifyTypeUnReady", 8: "NotifyTypeStart", 9: "NotifyTypeChooseMaster", 10: "NotifyTypeChooseMasterFinish", 11: "NotifyTypeChooseMul", 12: "NotifyTypeChooseMulFinish", 13: "NotifyTypeGameInit", 14: "NotifyTypeOpen", 15: "NotifyTypeOpenFinish", 16: "NotifyTypeMsgResp", 17: "NotifyTypeWaitReady", } NotifyTypeEnum_value = map[string]int32{ "NotifyTypePing": 0, "NotifyTypeJoinRoom": 1, "NotifyTypeLeaveRoom": 2, "NotifyTypeCreateRoom": 3, "NotifyTypeConnect": 4, "NotifyTypeDisconnect": 5, "NotifyTypeReady": 6, "NotifyTypeUnReady": 7, "NotifyTypeStart": 8, "NotifyTypeChooseMaster": 9, "NotifyTypeChooseMasterFinish": 10, "NotifyTypeChooseMul": 11, "NotifyTypeChooseMulFinish": 12, "NotifyTypeGameInit": 13, "NotifyTypeOpen": 14, "NotifyTypeOpenFinish": 15, "NotifyTypeMsgResp": 16, "NotifyTypeWaitReady": 17, } ) func (x NotifyTypeEnum) Enum() *NotifyTypeEnum { p := new(NotifyTypeEnum) *p = x return p } func (x NotifyTypeEnum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (NotifyTypeEnum) Descriptor() protoreflect.EnumDescriptor { return file_game_proto_enumTypes[0].Descriptor() } func (NotifyTypeEnum) Type() protoreflect.EnumType { return &file_game_proto_enumTypes[0] } func (x NotifyTypeEnum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use NotifyTypeEnum.Descriptor instead. func (NotifyTypeEnum) EnumDescriptor() ([]byte, []int) { return file_game_proto_rawDescGZIP(), []int{0} } type DataType int32 const ( DataType_DataTypeNormal DataType = 0 //0x00000000 DataType_DataTypeGZip DataType = 2 //0x00000010 DataType_DataTypeEnc DataType = 4 //0x00000100 ) // Enum value maps for DataType. var ( DataType_name = map[int32]string{ 0: "DataTypeNormal", 2: "DataTypeGZip", 4: "DataTypeEnc", } DataType_value = map[string]int32{ "DataTypeNormal": 0, "DataTypeGZip": 2, "DataTypeEnc": 4, } ) func (x DataType) Enum() *DataType { p := new(DataType) *p = x return p } func (x DataType) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (DataType) Descriptor() protoreflect.EnumDescriptor { return file_game_proto_enumTypes[1].Descriptor() } func (DataType) Type() protoreflect.EnumType { return &file_game_proto_enumTypes[1] } func (x DataType) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use DataType.Descriptor instead. func (DataType) EnumDescriptor() ([]byte, []int) { return file_game_proto_rawDescGZIP(), []int{1} } type RoomType int32 const ( RoomType_RoomTypeFree RoomType = 0 RoomType_RoomTypeNormal RoomType = 1 ) // Enum value maps for RoomType. var ( RoomType_name = map[int32]string{ 0: "RoomTypeFree", 1: "RoomTypeNormal", } RoomType_value = map[string]int32{ "RoomTypeFree": 0, "RoomTypeNormal": 1, } ) func (x RoomType) Enum() *RoomType { p := new(RoomType) *p = x return p } func (x RoomType) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (RoomType) Descriptor() protoreflect.EnumDescriptor { return file_game_proto_enumTypes[2].Descriptor() } func (RoomType) Type() protoreflect.EnumType { return &file_game_proto_enumTypes[2] } func (x RoomType) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use RoomType.Descriptor instead. func (RoomType) EnumDescriptor() ([]byte, []int) { return file_game_proto_rawDescGZIP(), []int{2} } type RespStatus int32 const ( RespStatus_RespStatusSucc RespStatus = 0 RespStatus_RespStatusFailed RespStatus = 1 ) // Enum value maps for RespStatus. var ( RespStatus_name = map[int32]string{ 0: "RespStatusSucc", 1: "RespStatusFailed", } RespStatus_value = map[string]int32{ "RespStatusSucc": 0, "RespStatusFailed": 1, } ) func (x RespStatus) Enum() *RespStatus { p := new(RespStatus) *p = x return p } func (x RespStatus) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (RespStatus) Descriptor() protoreflect.EnumDescriptor { return file_game_proto_enumTypes[3].Descriptor() } func (RespStatus) Type() protoreflect.EnumType { return &file_game_proto_enumTypes[3] } func (x RespStatus) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use RespStatus.Descriptor instead. func (RespStatus) EnumDescriptor() ([]byte, []int) { return file_game_proto_rawDescGZIP(), []int{3} } //Ping type Ping struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *Ping) Reset() { *x = Ping{} if protoimpl.UnsafeEnabled { mi := &file_game_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Ping) String() string { return protoimpl.X.MessageStringOf(x) } func (*Ping) ProtoMessage() {} func (x *Ping) ProtoReflect() protoreflect.Message { mi := &file_game_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 Ping.ProtoReflect.Descriptor instead. func (*Ping) Descriptor() ([]byte, []int) { return file_game_proto_rawDescGZIP(), []int{0} } type MsgResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Once string `protobuf:"bytes,1,opt,name=once,proto3" json:"once,omitempty"` Status RespStatus `protobuf:"varint,2,opt,name=status,proto3,enum=gameproto.RespStatus" json:"status,omitempty"` Msg string `protobuf:"bytes,3,opt,name=msg,proto3" json:"msg,omitempty"` Data *any1.Any `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"` } func (x *MsgResp) Reset() { *x = MsgResp{} if protoimpl.UnsafeEnabled { mi := &file_game_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *MsgResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*MsgResp) ProtoMessage() {} func (x *MsgResp) ProtoReflect() protoreflect.Message { mi := &file_game_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 MsgResp.ProtoReflect.Descriptor instead. func (*MsgResp) Descriptor() ([]byte, []int) { return file_game_proto_rawDescGZIP(), []int{1} } func (x *MsgResp) GetOnce() string { if x != nil { return x.Once } return "" } func (x *MsgResp) GetStatus() RespStatus { if x != nil { return x.Status } return RespStatus_RespStatusSucc } func (x *MsgResp) GetMsg() string { if x != nil { return x.Msg } return "" } func (x *MsgResp) GetData() *any1.Any { if x != nil { return x.Data } return nil } type Room struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ID uint32 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` Name string `protobuf:"bytes,2,opt,name=Name,proto3" json:"Name,omitempty"` NeedPwd bool `protobuf:"varint,10,opt,name=needPwd,proto3" json:"needPwd,omitempty"` RoomType RoomType `protobuf:"varint,3,opt,name=RoomType,proto3,enum=gameproto.RoomType" json:"RoomType,omitempty"` BaseAmount float64 `protobuf:"fixed64,4,opt,name=BaseAmount,proto3" json:"BaseAmount,omitempty"` ChairUserID1 uint32 `protobuf:"varint,5,opt,name=ChairUserID1,proto3" json:"ChairUserID1,omitempty"` ChairUserID2 uint32 `protobuf:"varint,6,opt,name=ChairUserID2,proto3" json:"ChairUserID2,omitempty"` ChairUserID3 uint32 `protobuf:"varint,7,opt,name=ChairUserID3,proto3" json:"ChairUserID3,omitempty"` ChairUserID4 uint32 `protobuf:"varint,8,opt,name=ChairUserID4,proto3" json:"ChairUserID4,omitempty"` ChairUserID5 uint32 `protobuf:"varint,9,opt,name=ChairUserID5,proto3" json:"ChairUserID5,omitempty"` Status uint32 `protobuf:"varint,11,opt,name=Status,proto3" json:"Status,omitempty"` } func (x *Room) Reset() { *x = Room{} if protoimpl.UnsafeEnabled { mi := &file_game_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Room) String() string { return protoimpl.X.MessageStringOf(x) } func (*Room) ProtoMessage() {} func (x *Room) ProtoReflect() protoreflect.Message { mi := &file_game_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 Room.ProtoReflect.Descriptor instead. func (*Room) Descriptor() ([]byte, []int) { return file_game_proto_rawDescGZIP(), []int{2} } func (x *Room) GetID() uint32 { if x != nil { return x.ID } return 0 } func (x *Room) GetName() string { if x != nil { return x.Name } return "" } func (x *Room) GetNeedPwd() bool { if x != nil { return x.NeedPwd } return false } func (x *Room) GetRoomType() RoomType { if x != nil { return x.RoomType } return RoomType_RoomTypeFree } func (x *Room) GetBaseAmount() float64 { if x != nil { return x.BaseAmount } return 0 } func (x *Room) GetChairUserID1() uint32 { if x != nil { return x.ChairUserID1 } return 0 } func (x *Room) GetChairUserID2() uint32 { if x != nil { return x.ChairUserID2 } return 0 } func (x *Room) GetChairUserID3() uint32 { if x != nil { return x.ChairUserID3 } return 0 } func (x *Room) GetChairUserID4() uint32 { if x != nil { return x.ChairUserID4 } return 0 } func (x *Room) GetChairUserID5() uint32 { if x != nil { return x.ChairUserID5 } return 0 } func (x *Room) GetStatus() uint32 { if x != nil { return x.Status } return 0 } type RoomDetail struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ID uint32 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` Name string `protobuf:"bytes,2,opt,name=Name,proto3" json:"Name,omitempty"` NeedPwd bool `protobuf:"varint,10,opt,name=needPwd,proto3" json:"needPwd,omitempty"` RoomType RoomType `protobuf:"varint,3,opt,name=RoomType,proto3,enum=gameproto.RoomType" json:"RoomType,omitempty"` BaseAmount float64 `protobuf:"fixed64,4,opt,name=BaseAmount,proto3" json:"BaseAmount,omitempty"` ChairUserID1 uint32 `protobuf:"varint,5,opt,name=ChairUserID1,proto3" json:"ChairUserID1,omitempty"` ChairUserID2 uint32 `protobuf:"varint,6,opt,name=ChairUserID2,proto3" json:"ChairUserID2,omitempty"` ChairUserID3 uint32 `protobuf:"varint,7,opt,name=ChairUserID3,proto3" json:"ChairUserID3,omitempty"` ChairUserID4 uint32 `protobuf:"varint,8,opt,name=ChairUserID4,proto3" json:"ChairUserID4,omitempty"` ChairUserID5 uint32 `protobuf:"varint,9,opt,name=ChairUserID5,proto3" json:"ChairUserID5,omitempty"` Status uint32 `protobuf:"varint,11,opt,name=Status,proto3" json:"Status,omitempty"` StatusStartTime int64 `protobuf:"varint,13,opt,name=StatusStartTime,proto3" json:"StatusStartTime,omitempty"` RoomUserList []*RoomUser `protobuf:"bytes,12,rep,name=RoomUserList,proto3" json:"RoomUserList,omitempty"` TimeNow int64 `protobuf:"varint,14,opt,name=TimeNow,proto3" json:"TimeNow,omitempty"` } func (x *RoomDetail) Reset() { *x = RoomDetail{} if protoimpl.UnsafeEnabled { mi := &file_game_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RoomDetail) String() string { return protoimpl.X.MessageStringOf(x) } func (*RoomDetail) ProtoMessage() {} func (x *RoomDetail) ProtoReflect() protoreflect.Message { mi := &file_game_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 RoomDetail.ProtoReflect.Descriptor instead. func (*RoomDetail) Descriptor() ([]byte, []int) { return file_game_proto_rawDescGZIP(), []int{3} } func (x *RoomDetail) GetID() uint32 { if x != nil { return x.ID } return 0 } func (x *RoomDetail) GetName() string { if x != nil { return x.Name } return "" } func (x *RoomDetail) GetNeedPwd() bool { if x != nil { return x.NeedPwd } return false } func (x *RoomDetail) GetRoomType() RoomType { if x != nil { return x.RoomType } return RoomType_RoomTypeFree } func (x *RoomDetail) GetBaseAmount() float64 { if x != nil { return x.BaseAmount } return 0 } func (x *RoomDetail) GetChairUserID1() uint32 { if x != nil { return x.ChairUserID1 } return 0 } func (x *RoomDetail) GetChairUserID2() uint32 { if x != nil { return x.ChairUserID2 } return 0 } func (x *RoomDetail) GetChairUserID3() uint32 { if x != nil { return x.ChairUserID3 } return 0 } func (x *RoomDetail) GetChairUserID4() uint32 { if x != nil { return x.ChairUserID4 } return 0 } func (x *RoomDetail) GetChairUserID5() uint32 { if x != nil { return x.ChairUserID5 } return 0 } func (x *RoomDetail) GetStatus() uint32 { if x != nil { return x.Status } return 0 } func (x *RoomDetail) GetStatusStartTime() int64 { if x != nil { return x.StatusStartTime } return 0 } func (x *RoomDetail) GetRoomUserList() []*RoomUser { if x != nil { return x.RoomUserList } return nil } func (x *RoomDetail) GetTimeNow() int64 { if x != nil { return x.TimeNow } return 0 } type RoomUser struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserID uint32 `protobuf:"varint,1,opt,name=UserID,proto3" json:"UserID,omitempty"` CardList []uint32 `protobuf:"varint,2,rep,packed,name=CardList,proto3" json:"CardList,omitempty"` WinAmount float32 `protobuf:"fixed32,3,opt,name=WinAmount,proto3" json:"WinAmount,omitempty"` IsMaster bool `protobuf:"varint,4,opt,name=IsMaster,proto3" json:"IsMaster,omitempty"` MasterMul uint32 `protobuf:"varint,5,opt,name=MasterMul,proto3" json:"MasterMul,omitempty"` Mul uint32 `protobuf:"varint,6,opt,name=Mul,proto3" json:"Mul,omitempty"` Status uint32 `protobuf:"varint,7,opt,name=Status,proto3" json:"Status,omitempty"` Balance float64 `protobuf:"fixed64,8,opt,name=Balance,proto3" json:"Balance,omitempty"` Credits float64 `protobuf:"fixed64,9,opt,name=Credits,proto3" json:"Credits,omitempty"` } func (x *RoomUser) Reset() { *x = RoomUser{} if protoimpl.UnsafeEnabled { mi := &file_game_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RoomUser) String() string { return protoimpl.X.MessageStringOf(x) } func (*RoomUser) ProtoMessage() {} func (x *RoomUser) ProtoReflect() protoreflect.Message { mi := &file_game_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 RoomUser.ProtoReflect.Descriptor instead. func (*RoomUser) Descriptor() ([]byte, []int) { return file_game_proto_rawDescGZIP(), []int{4} } func (x *RoomUser) GetUserID() uint32 { if x != nil { return x.UserID } return 0 } func (x *RoomUser) GetCardList() []uint32 { if x != nil { return x.CardList } return nil } func (x *RoomUser) GetWinAmount() float32 { if x != nil { return x.WinAmount } return 0 } func (x *RoomUser) GetIsMaster() bool { if x != nil { return x.IsMaster } return false } func (x *RoomUser) GetMasterMul() uint32 { if x != nil { return x.MasterMul } return 0 } func (x *RoomUser) GetMul() uint32 { if x != nil { return x.Mul } return 0 } func (x *RoomUser) GetStatus() uint32 { if x != nil { return x.Status } return 0 } func (x *RoomUser) GetBalance() float64 { if x != nil { return x.Balance } return 0 } func (x *RoomUser) GetCredits() float64 { if x != nil { return x.Credits } return 0 } type Game struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Room *Room `protobuf:"bytes,1,opt,name=Room,proto3" json:"Room,omitempty"` //房间信息 RoomUserList []*RoomUser `protobuf:"bytes,2,rep,name=RoomUserList,proto3" json:"RoomUserList,omitempty"` } func (x *Game) Reset() { *x = Game{} if protoimpl.UnsafeEnabled { mi := &file_game_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Game) String() string { return protoimpl.X.MessageStringOf(x) } func (*Game) ProtoMessage() {} func (x *Game) ProtoReflect() protoreflect.Message { mi := &file_game_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 Game.ProtoReflect.Descriptor instead. func (*Game) Descriptor() ([]byte, []int) { return file_game_proto_rawDescGZIP(), []int{5} } func (x *Game) GetRoom() *Room { if x != nil { return x.Room } return nil } func (x *Game) GetRoomUserList() []*RoomUser { if x != nil { return x.RoomUserList } return nil } type User struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserID uint32 `protobuf:"varint,1,opt,name=UserID,proto3" json:"UserID,omitempty"` Name string `protobuf:"bytes,2,opt,name=Name,proto3" json:"Name,omitempty"` Img string `protobuf:"bytes,3,opt,name=Img,proto3" json:"Img,omitempty"` } func (x *User) Reset() { *x = User{} if protoimpl.UnsafeEnabled { mi := &file_game_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *User) String() string { return protoimpl.X.MessageStringOf(x) } func (*User) ProtoMessage() {} func (x *User) ProtoReflect() protoreflect.Message { mi := &file_game_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 User.ProtoReflect.Descriptor instead. func (*User) Descriptor() ([]byte, []int) { return file_game_proto_rawDescGZIP(), []int{6} } func (x *User) GetUserID() uint32 { if x != nil { return x.UserID } return 0 } func (x *User) GetName() string { if x != nil { return x.Name } return "" } func (x *User) GetImg() string { if x != nil { return x.Img } return "" } type Connect struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserID uint32 `protobuf:"varint,1,opt,name=UserID,proto3" json:"UserID,omitempty"` LogID int64 `protobuf:"varint,2,opt,name=LogID,proto3" json:"LogID,omitempty"` Name string `protobuf:"bytes,3,opt,name=Name,proto3" json:"Name,omitempty"` Img string `protobuf:"bytes,4,opt,name=Img,proto3" json:"Img,omitempty"` Balance float64 `protobuf:"fixed64,5,opt,name=Balance,proto3" json:"Balance,omitempty"` Game *Game `protobuf:"bytes,6,opt,name=Game,proto3" json:"Game,omitempty"` RoomList []*Room `protobuf:"bytes,7,rep,name=RoomList,proto3" json:"RoomList,omitempty"` UserList []*User `protobuf:"bytes,8,rep,name=UserList,proto3" json:"UserList,omitempty"` RoomDetail *RoomDetail `protobuf:"bytes,9,opt,name=RoomDetail,proto3" json:"RoomDetail,omitempty"` //用户当前房间的详情 Credits float64 `protobuf:"fixed64,10,opt,name=Credits,proto3" json:"Credits,omitempty"` } func (x *Connect) Reset() { *x = Connect{} if protoimpl.UnsafeEnabled { mi := &file_game_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Connect) String() string { return protoimpl.X.MessageStringOf(x) } func (*Connect) ProtoMessage() {} func (x *Connect) ProtoReflect() protoreflect.Message { mi := &file_game_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 Connect.ProtoReflect.Descriptor instead. func (*Connect) Descriptor() ([]byte, []int) { return file_game_proto_rawDescGZIP(), []int{7} } func (x *Connect) GetUserID() uint32 { if x != nil { return x.UserID } return 0 } func (x *Connect) GetLogID() int64 { if x != nil { return x.LogID } return 0 } func (x *Connect) GetName() string { if x != nil { return x.Name } return "" } func (x *Connect) GetImg() string { if x != nil { return x.Img } return "" } func (x *Connect) GetBalance() float64 { if x != nil { return x.Balance } return 0 } func (x *Connect) GetGame() *Game { if x != nil { return x.Game } return nil } func (x *Connect) GetRoomList() []*Room { if x != nil { return x.RoomList } return nil } func (x *Connect) GetUserList() []*User { if x != nil { return x.UserList } return nil } func (x *Connect) GetRoomDetail() *RoomDetail { if x != nil { return x.RoomDetail } return nil } func (x *Connect) GetCredits() float64 { if x != nil { return x.Credits } return 0 } type Disconnect struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserID uint32 `protobuf:"varint,1,opt,name=UserID,proto3" json:"UserID,omitempty"` } func (x *Disconnect) Reset() { *x = Disconnect{} if protoimpl.UnsafeEnabled { mi := &file_game_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Disconnect) String() string { return protoimpl.X.MessageStringOf(x) } func (*Disconnect) ProtoMessage() {} func (x *Disconnect) ProtoReflect() protoreflect.Message { mi := &file_game_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 Disconnect.ProtoReflect.Descriptor instead. func (*Disconnect) Descriptor() ([]byte, []int) { return file_game_proto_rawDescGZIP(), []int{8} } func (x *Disconnect) GetUserID() uint32 { if x != nil { return x.UserID } return 0 } type JoinRoom struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields RoomID uint32 `protobuf:"varint,1,opt,name=RoomID,proto3" json:"RoomID,omitempty"` ChairID uint32 `protobuf:"varint,2,opt,name=ChairID,proto3" json:"ChairID,omitempty"` UserID uint32 `protobuf:"varint,3,opt,name=UserID,proto3" json:"UserID,omitempty"` GameStatus uint32 `protobuf:"varint,4,opt,name=GameStatus,proto3" json:"GameStatus,omitempty"` User *User `protobuf:"bytes,5,opt,name=User,proto3" json:"User,omitempty"` RoomDetail *RoomDetail `protobuf:"bytes,6,opt,name=RoomDetail,proto3" json:"RoomDetail,omitempty"` } func (x *JoinRoom) Reset() { *x = JoinRoom{} if protoimpl.UnsafeEnabled { mi := &file_game_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *JoinRoom) String() string { return protoimpl.X.MessageStringOf(x) } func (*JoinRoom) ProtoMessage() {} func (x *JoinRoom) ProtoReflect() protoreflect.Message { mi := &file_game_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 JoinRoom.ProtoReflect.Descriptor instead. func (*JoinRoom) Descriptor() ([]byte, []int) { return file_game_proto_rawDescGZIP(), []int{9} } func (x *JoinRoom) GetRoomID() uint32 { if x != nil { return x.RoomID } return 0 } func (x *JoinRoom) GetChairID() uint32 { if x != nil { return x.ChairID } return 0 } func (x *JoinRoom) GetUserID() uint32 { if x != nil { return x.UserID } return 0 } func (x *JoinRoom) GetGameStatus() uint32 { if x != nil { return x.GameStatus } return 0 } func (x *JoinRoom) GetUser() *User { if x != nil { return x.User } return nil } func (x *JoinRoom) GetRoomDetail() *RoomDetail { if x != nil { return x.RoomDetail } return nil } type LeaveRoom struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields RoomID uint32 `protobuf:"varint,1,opt,name=RoomID,proto3" json:"RoomID,omitempty"` ChairID uint32 `protobuf:"varint,2,opt,name=ChairID,proto3" json:"ChairID,omitempty"` UserID uint32 `protobuf:"varint,3,opt,name=UserID,proto3" json:"UserID,omitempty"` User *User `protobuf:"bytes,5,opt,name=User,proto3" json:"User,omitempty"` } func (x *LeaveRoom) Reset() { *x = LeaveRoom{} if protoimpl.UnsafeEnabled { mi := &file_game_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LeaveRoom) String() string { return protoimpl.X.MessageStringOf(x) } func (*LeaveRoom) ProtoMessage() {} func (x *LeaveRoom) ProtoReflect() protoreflect.Message { mi := &file_game_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 LeaveRoom.ProtoReflect.Descriptor instead. func (*LeaveRoom) Descriptor() ([]byte, []int) { return file_game_proto_rawDescGZIP(), []int{10} } func (x *LeaveRoom) GetRoomID() uint32 { if x != nil { return x.RoomID } return 0 } func (x *LeaveRoom) GetChairID() uint32 { if x != nil { return x.ChairID } return 0 } func (x *LeaveRoom) GetUserID() uint32 { if x != nil { return x.UserID } return 0 } func (x *LeaveRoom) GetUser() *User { if x != nil { return x.User } return nil } type CreateRoom struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ID uint32 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` CreatorID uint32 `protobuf:"varint,11,opt,name=CreatorID,proto3" json:"CreatorID,omitempty"` Name string `protobuf:"bytes,2,opt,name=Name,proto3" json:"Name,omitempty"` NeedPwd bool `protobuf:"varint,10,opt,name=needPwd,proto3" json:"needPwd,omitempty"` RoomType RoomType `protobuf:"varint,3,opt,name=RoomType,proto3,enum=gameproto.RoomType" json:"RoomType,omitempty"` BaseAmount float64 `protobuf:"fixed64,4,opt,name=BaseAmount,proto3" json:"BaseAmount,omitempty"` ChairUserID1 uint32 `protobuf:"varint,5,opt,name=ChairUserID1,proto3" json:"ChairUserID1,omitempty"` ChairUserID2 uint32 `protobuf:"varint,6,opt,name=ChairUserID2,proto3" json:"ChairUserID2,omitempty"` ChairUserID3 uint32 `protobuf:"varint,7,opt,name=ChairUserID3,proto3" json:"ChairUserID3,omitempty"` ChairUserID4 uint32 `protobuf:"varint,8,opt,name=ChairUserID4,proto3" json:"ChairUserID4,omitempty"` ChairUserID5 uint32 `protobuf:"varint,9,opt,name=ChairUserID5,proto3" json:"ChairUserID5,omitempty"` } func (x *CreateRoom) Reset() { *x = CreateRoom{} if protoimpl.UnsafeEnabled { mi := &file_game_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreateRoom) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateRoom) ProtoMessage() {} func (x *CreateRoom) ProtoReflect() protoreflect.Message { mi := &file_game_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 CreateRoom.ProtoReflect.Descriptor instead. func (*CreateRoom) Descriptor() ([]byte, []int) { return file_game_proto_rawDescGZIP(), []int{11} } func (x *CreateRoom) GetID() uint32 { if x != nil { return x.ID } return 0 } func (x *CreateRoom) GetCreatorID() uint32 { if x != nil { return x.CreatorID } return 0 } func (x *CreateRoom) GetName() string { if x != nil { return x.Name } return "" } func (x *CreateRoom) GetNeedPwd() bool { if x != nil { return x.NeedPwd } return false } func (x *CreateRoom) GetRoomType() RoomType { if x != nil { return x.RoomType } return RoomType_RoomTypeFree } func (x *CreateRoom) GetBaseAmount() float64 { if x != nil { return x.BaseAmount } return 0 } func (x *CreateRoom) GetChairUserID1() uint32 { if x != nil { return x.ChairUserID1 } return 0 } func (x *CreateRoom) GetChairUserID2() uint32 { if x != nil { return x.ChairUserID2 } return 0 } func (x *CreateRoom) GetChairUserID3() uint32 { if x != nil { return x.ChairUserID3 } return 0 } func (x *CreateRoom) GetChairUserID4() uint32 { if x != nil { return x.ChairUserID4 } return 0 } func (x *CreateRoom) GetChairUserID5() uint32 { if x != nil { return x.ChairUserID5 } return 0 } type Ready struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields RoomID uint32 `protobuf:"varint,1,opt,name=RoomID,proto3" json:"RoomID,omitempty"` UserID uint32 `protobuf:"varint,3,opt,name=UserID,proto3" json:"UserID,omitempty"` } func (x *Ready) Reset() { *x = Ready{} if protoimpl.UnsafeEnabled { mi := &file_game_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Ready) String() string { return protoimpl.X.MessageStringOf(x) } func (*Ready) ProtoMessage() {} func (x *Ready) ProtoReflect() protoreflect.Message { mi := &file_game_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 Ready.ProtoReflect.Descriptor instead. func (*Ready) Descriptor() ([]byte, []int) { return file_game_proto_rawDescGZIP(), []int{12} } func (x *Ready) GetRoomID() uint32 { if x != nil { return x.RoomID } return 0 } func (x *Ready) GetUserID() uint32 { if x != nil { return x.UserID } return 0 } type UnReady struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields RoomID uint32 `protobuf:"varint,1,opt,name=RoomID,proto3" json:"RoomID,omitempty"` UserID uint32 `protobuf:"varint,3,opt,name=UserID,proto3" json:"UserID,omitempty"` } func (x *UnReady) Reset() { *x = UnReady{} if protoimpl.UnsafeEnabled { mi := &file_game_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UnReady) String() string { return protoimpl.X.MessageStringOf(x) } func (*UnReady) ProtoMessage() {} func (x *UnReady) ProtoReflect() protoreflect.Message { mi := &file_game_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 UnReady.ProtoReflect.Descriptor instead. func (*UnReady) Descriptor() ([]byte, []int) { return file_game_proto_rawDescGZIP(), []int{13} } func (x *UnReady) GetRoomID() uint32 { if x != nil { return x.RoomID } return 0 } func (x *UnReady) GetUserID() uint32 { if x != nil { return x.UserID } return 0 } //开始等待其他人准备 type WaitReady struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields RoomID uint32 `protobuf:"varint,1,opt,name=RoomID,proto3" json:"RoomID,omitempty"` Issue string `protobuf:"bytes,2,opt,name=Issue,proto3" json:"Issue,omitempty"` } func (x *WaitReady) Reset() { *x = WaitReady{} if protoimpl.UnsafeEnabled { mi := &file_game_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *WaitReady) String() string { return protoimpl.X.MessageStringOf(x) } func (*WaitReady) ProtoMessage() {} func (x *WaitReady) ProtoReflect() protoreflect.Message { mi := &file_game_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 WaitReady.ProtoReflect.Descriptor instead. func (*WaitReady) Descriptor() ([]byte, []int) { return file_game_proto_rawDescGZIP(), []int{14} } func (x *WaitReady) GetRoomID() uint32 { if x != nil { return x.RoomID } return 0 } func (x *WaitReady) GetIssue() string { if x != nil { return x.Issue } return "" } //准备人数够,开始游戏 type Start struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields RoomID uint32 `protobuf:"varint,1,opt,name=RoomID,proto3" json:"RoomID,omitempty"` ChooseMasterMulList []uint32 `protobuf:"varint,2,rep,packed,name=ChooseMasterMulList,proto3" json:"ChooseMasterMulList,omitempty"` //抢庄倍数列表 Issue string `protobuf:"bytes,3,opt,name=issue,proto3" json:"issue,omitempty"` CardList []uint32 `protobuf:"varint,4,rep,packed,name=CardList,proto3" json:"CardList,omitempty"` //牌型列表 } func (x *Start) Reset() { *x = Start{} if protoimpl.UnsafeEnabled { mi := &file_game_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Start) String() string { return protoimpl.X.MessageStringOf(x) } func (*Start) ProtoMessage() {} func (x *Start) ProtoReflect() protoreflect.Message { mi := &file_game_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 Start.ProtoReflect.Descriptor instead. func (*Start) Descriptor() ([]byte, []int) { return file_game_proto_rawDescGZIP(), []int{15} } func (x *Start) GetRoomID() uint32 { if x != nil { return x.RoomID } return 0 } func (x *Start) GetChooseMasterMulList() []uint32 { if x != nil { return x.ChooseMasterMulList } return nil } func (x *Start) GetIssue() string { if x != nil { return x.Issue } return "" } func (x *Start) GetCardList() []uint32 { if x != nil { return x.CardList } return nil } //选庄 type ChooseMaster struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserID uint32 `protobuf:"varint,1,opt,name=UserID,proto3" json:"UserID,omitempty"` Mul uint32 `protobuf:"varint,2,opt,name=Mul,proto3" json:"Mul,omitempty"` //0,1,2,3 - 0表示不抢 RoomID uint32 `protobuf:"varint,3,opt,name=RoomID,proto3" json:"RoomID,omitempty"` } func (x *ChooseMaster) Reset() { *x = ChooseMaster{} if protoimpl.UnsafeEnabled { mi := &file_game_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ChooseMaster) String() string { return protoimpl.X.MessageStringOf(x) } func (*ChooseMaster) ProtoMessage() {} func (x *ChooseMaster) ProtoReflect() protoreflect.Message { mi := &file_game_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 ChooseMaster.ProtoReflect.Descriptor instead. func (*ChooseMaster) Descriptor() ([]byte, []int) { return file_game_proto_rawDescGZIP(), []int{16} } func (x *ChooseMaster) GetUserID() uint32 { if x != nil { return x.UserID } return 0 } func (x *ChooseMaster) GetMul() uint32 { if x != nil { return x.Mul } return 0 } func (x *ChooseMaster) GetRoomID() uint32 { if x != nil { return x.RoomID } return 0 } //选倍数 type ChooseMul struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserID uint32 `protobuf:"varint,1,opt,name=UserID,proto3" json:"UserID,omitempty"` Mul uint32 `protobuf:"varint,2,opt,name=Mul,proto3" json:"Mul,omitempty"` //1,2,3 - 倍数 RoomID uint32 `protobuf:"varint,3,opt,name=RoomID,proto3" json:"RoomID,omitempty"` CardList []uint32 `protobuf:"varint,4,rep,packed,name=CardList,proto3" json:"CardList,omitempty"` //牌型列表 } func (x *ChooseMul) Reset() { *x = ChooseMul{} if protoimpl.UnsafeEnabled { mi := &file_game_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ChooseMul) String() string { return protoimpl.X.MessageStringOf(x) } func (*ChooseMul) ProtoMessage() {} func (x *ChooseMul) ProtoReflect() protoreflect.Message { mi := &file_game_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 ChooseMul.ProtoReflect.Descriptor instead. func (*ChooseMul) Descriptor() ([]byte, []int) { return file_game_proto_rawDescGZIP(), []int{17} } func (x *ChooseMul) GetUserID() uint32 { if x != nil { return x.UserID } return 0 } func (x *ChooseMul) GetMul() uint32 { if x != nil { return x.Mul } return 0 } func (x *ChooseMul) GetRoomID() uint32 { if x != nil { return x.RoomID } return 0 } func (x *ChooseMul) GetCardList() []uint32 { if x != nil { return x.CardList } return nil } //选庄完成 type ChooseMasterFinish struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields MasterUserID uint32 `protobuf:"varint,1,opt,name=MasterUserID,proto3" json:"MasterUserID,omitempty"` //庄家的ID MulList []uint32 `protobuf:"varint,2,rep,packed,name=MulList,proto3" json:"MulList,omitempty"` //倍数列表 RoomID uint32 `protobuf:"varint,3,opt,name=RoomID,proto3" json:"RoomID,omitempty"` } func (x *ChooseMasterFinish) Reset() { *x = ChooseMasterFinish{} if protoimpl.UnsafeEnabled { mi := &file_game_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ChooseMasterFinish) String() string { return protoimpl.X.MessageStringOf(x) } func (*ChooseMasterFinish) ProtoMessage() {} func (x *ChooseMasterFinish) ProtoReflect() protoreflect.Message { mi := &file_game_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 ChooseMasterFinish.ProtoReflect.Descriptor instead. func (*ChooseMasterFinish) Descriptor() ([]byte, []int) { return file_game_proto_rawDescGZIP(), []int{18} } func (x *ChooseMasterFinish) GetMasterUserID() uint32 { if x != nil { return x.MasterUserID } return 0 } func (x *ChooseMasterFinish) GetMulList() []uint32 { if x != nil { return x.MulList } return nil } func (x *ChooseMasterFinish) GetRoomID() uint32 { if x != nil { return x.RoomID } return 0 } //选倍数完成 type ChooseMulFinish struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields RoomID uint32 `protobuf:"varint,3,opt,name=RoomID,proto3" json:"RoomID,omitempty"` } func (x *ChooseMulFinish) Reset() { *x = ChooseMulFinish{} if protoimpl.UnsafeEnabled { mi := &file_game_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ChooseMulFinish) String() string { return protoimpl.X.MessageStringOf(x) } func (*ChooseMulFinish) ProtoMessage() {} func (x *ChooseMulFinish) ProtoReflect() protoreflect.Message { mi := &file_game_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 ChooseMulFinish.ProtoReflect.Descriptor instead. func (*ChooseMulFinish) Descriptor() ([]byte, []int) { return file_game_proto_rawDescGZIP(), []int{19} } func (x *ChooseMulFinish) GetRoomID() uint32 { if x != nil { return x.RoomID } return 0 } type PayoutInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserID uint32 `protobuf:"varint,1,opt,name=UserID,proto3" json:"UserID,omitempty"` Balance float64 `protobuf:"fixed64,2,opt,name=Balance,proto3" json:"Balance,omitempty"` WinAmount string `protobuf:"bytes,3,opt,name=winAmount,proto3" json:"winAmount,omitempty"` IsMaster bool `protobuf:"varint,4,opt,name=isMaster,proto3" json:"isMaster,omitempty"` Credits float64 `protobuf:"fixed64,5,opt,name=Credits,proto3" json:"Credits,omitempty"` } func (x *PayoutInfo) Reset() { *x = PayoutInfo{} if protoimpl.UnsafeEnabled { mi := &file_game_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *PayoutInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*PayoutInfo) ProtoMessage() {} func (x *PayoutInfo) ProtoReflect() protoreflect.Message { mi := &file_game_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 PayoutInfo.ProtoReflect.Descriptor instead. func (*PayoutInfo) Descriptor() ([]byte, []int) { return file_game_proto_rawDescGZIP(), []int{20} } func (x *PayoutInfo) GetUserID() uint32 { if x != nil { return x.UserID } return 0 } func (x *PayoutInfo) GetBalance() float64 { if x != nil { return x.Balance } return 0 } func (x *PayoutInfo) GetWinAmount() string { if x != nil { return x.WinAmount } return "" } func (x *PayoutInfo) GetIsMaster() bool { if x != nil { return x.IsMaster } return false } func (x *PayoutInfo) GetCredits() float64 { if x != nil { return x.Credits } return 0 } //选倍数完成 type OpenFinish struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields RoomID uint32 `protobuf:"varint,1,opt,name=RoomID,proto3" json:"RoomID,omitempty"` PayoutInfoList []*PayoutInfo `protobuf:"bytes,2,rep,name=PayoutInfoList,proto3" json:"PayoutInfoList,omitempty"` } func (x *OpenFinish) Reset() { *x = OpenFinish{} if protoimpl.UnsafeEnabled { mi := &file_game_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *OpenFinish) String() string { return protoimpl.X.MessageStringOf(x) } func (*OpenFinish) ProtoMessage() {} func (x *OpenFinish) ProtoReflect() protoreflect.Message { mi := &file_game_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 OpenFinish.ProtoReflect.Descriptor instead. func (*OpenFinish) Descriptor() ([]byte, []int) { return file_game_proto_rawDescGZIP(), []int{21} } func (x *OpenFinish) GetRoomID() uint32 { if x != nil { return x.RoomID } return 0 } func (x *OpenFinish) GetPayoutInfoList() []*PayoutInfo { if x != nil { return x.PayoutInfoList } return nil } //开牌 type Open struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields RoomID uint32 `protobuf:"varint,1,opt,name=RoomID,proto3" json:"RoomID,omitempty"` UserID uint32 `protobuf:"varint,2,opt,name=UserID,proto3" json:"UserID,omitempty"` CardList []uint32 `protobuf:"varint,3,rep,packed,name=CardList,proto3" json:"CardList,omitempty"` //牌型列表 } func (x *Open) Reset() { *x = Open{} if protoimpl.UnsafeEnabled { mi := &file_game_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Open) String() string { return protoimpl.X.MessageStringOf(x) } func (*Open) ProtoMessage() {} func (x *Open) ProtoReflect() protoreflect.Message { mi := &file_game_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 Open.ProtoReflect.Descriptor instead. func (*Open) Descriptor() ([]byte, []int) { return file_game_proto_rawDescGZIP(), []int{22} } func (x *Open) GetRoomID() uint32 { if x != nil { return x.RoomID } return 0 } func (x *Open) GetUserID() uint32 { if x != nil { return x.UserID } return 0 } func (x *Open) GetCardList() []uint32 { if x != nil { return x.CardList } return nil } //游戏初始化 type GameInit struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields RoomID uint32 `protobuf:"varint,1,opt,name=RoomID,proto3" json:"RoomID,omitempty"` } func (x *GameInit) Reset() { *x = GameInit{} if protoimpl.UnsafeEnabled { mi := &file_game_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GameInit) String() string { return protoimpl.X.MessageStringOf(x) } func (*GameInit) ProtoMessage() {} func (x *GameInit) ProtoReflect() protoreflect.Message { mi := &file_game_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 GameInit.ProtoReflect.Descriptor instead. func (*GameInit) Descriptor() ([]byte, []int) { return file_game_proto_rawDescGZIP(), []int{23} } func (x *GameInit) GetRoomID() uint32 { if x != nil { return x.RoomID } return 0 } type GameRecordItem struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CreatedAt int64 `protobuf:"varint,1,opt,name=CreatedAt,proto3" json:"CreatedAt,omitempty"` RoomID int64 `protobuf:"varint,2,opt,name=RoomID,proto3" json:"RoomID,omitempty"` RoomType int32 `protobuf:"varint,3,opt,name=RoomType,proto3" json:"RoomType,omitempty"` Issue string `protobuf:"bytes,4,opt,name=Issue,proto3" json:"Issue,omitempty"` OpenNumber string `protobuf:"bytes,5,opt,name=OpenNumber,proto3" json:"OpenNumber,omitempty"` BaseAmount string `protobuf:"bytes,6,opt,name=BaseAmount,proto3" json:"BaseAmount,omitempty"` IsDraw int32 `protobuf:"varint,7,opt,name=IsDraw,proto3" json:"IsDraw,omitempty"` DrawTime int64 `protobuf:"varint,8,opt,name=DrawTime,proto3" json:"DrawTime,omitempty"` IsMaster int32 `protobuf:"varint,9,opt,name=IsMaster,proto3" json:"IsMaster,omitempty"` MasterMul int32 `protobuf:"varint,10,opt,name=MasterMul,proto3" json:"MasterMul,omitempty"` Mul int32 `protobuf:"varint,11,opt,name=Mul,proto3" json:"Mul,omitempty"` IsWin int32 `protobuf:"varint,12,opt,name=IsWin,proto3" json:"IsWin,omitempty"` WinAmount string `protobuf:"bytes,13,opt,name=WinAmount,proto3" json:"WinAmount,omitempty"` } func (x *GameRecordItem) Reset() { *x = GameRecordItem{} if protoimpl.UnsafeEnabled { mi := &file_game_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GameRecordItem) String() string { return protoimpl.X.MessageStringOf(x) } func (*GameRecordItem) ProtoMessage() {} func (x *GameRecordItem) ProtoReflect() protoreflect.Message { mi := &file_game_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 GameRecordItem.ProtoReflect.Descriptor instead. func (*GameRecordItem) Descriptor() ([]byte, []int) { return file_game_proto_rawDescGZIP(), []int{24} } func (x *GameRecordItem) GetCreatedAt() int64 { if x != nil { return x.CreatedAt } return 0 } func (x *GameRecordItem) GetRoomID() int64 { if x != nil { return x.RoomID } return 0 } func (x *GameRecordItem) GetRoomType() int32 { if x != nil { return x.RoomType } return 0 } func (x *GameRecordItem) GetIssue() string { if x != nil { return x.Issue } return "" } func (x *GameRecordItem) GetOpenNumber() string { if x != nil { return x.OpenNumber } return "" } func (x *GameRecordItem) GetBaseAmount() string { if x != nil { return x.BaseAmount } return "" } func (x *GameRecordItem) GetIsDraw() int32 { if x != nil { return x.IsDraw } return 0 } func (x *GameRecordItem) GetDrawTime() int64 { if x != nil { return x.DrawTime } return 0 } func (x *GameRecordItem) GetIsMaster() int32 { if x != nil { return x.IsMaster } return 0 } func (x *GameRecordItem) GetMasterMul() int32 { if x != nil { return x.MasterMul } return 0 } func (x *GameRecordItem) GetMul() int32 { if x != nil { return x.Mul } return 0 } func (x *GameRecordItem) GetIsWin() int32 { if x != nil { return x.IsWin } return 0 } func (x *GameRecordItem) GetWinAmount() string { if x != nil { return x.WinAmount } return "" } type GameRecordResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Total int32 `protobuf:"varint,1,opt,name=Total,proto3" json:"Total,omitempty"` RecordList []*GameRecordItem `protobuf:"bytes,2,rep,name=RecordList,proto3" json:"RecordList,omitempty"` } func (x *GameRecordResp) Reset() { *x = GameRecordResp{} if protoimpl.UnsafeEnabled { mi := &file_game_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GameRecordResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GameRecordResp) ProtoMessage() {} func (x *GameRecordResp) ProtoReflect() protoreflect.Message { mi := &file_game_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 GameRecordResp.ProtoReflect.Descriptor instead. func (*GameRecordResp) Descriptor() ([]byte, []int) { return file_game_proto_rawDescGZIP(), []int{25} } func (x *GameRecordResp) GetTotal() int32 { if x != nil { return x.Total } return 0 } func (x *GameRecordResp) GetRecordList() []*GameRecordItem { if x != nil { return x.RecordList } return nil } type GameOpenRecordItem struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields RoomID int64 `protobuf:"varint,1,opt,name=RoomID,proto3" json:"RoomID,omitempty"` RoomType int32 `protobuf:"varint,2,opt,name=RoomType,proto3" json:"RoomType,omitempty"` Issue string `protobuf:"bytes,3,opt,name=Issue,proto3" json:"Issue,omitempty"` OpenNumber1 string `protobuf:"bytes,4,opt,name=OpenNumber1,proto3" json:"OpenNumber1,omitempty"` OpenNumber2 string `protobuf:"bytes,5,opt,name=OpenNumber2,proto3" json:"OpenNumber2,omitempty"` OpenNumber3 string `protobuf:"bytes,6,opt,name=OpenNumber3,proto3" json:"OpenNumber3,omitempty"` OpenNumber4 string `protobuf:"bytes,7,opt,name=OpenNumber4,proto3" json:"OpenNumber4,omitempty"` OpenNumber5 string `protobuf:"bytes,8,opt,name=OpenNumber5,proto3" json:"OpenNumber5,omitempty"` OpenTime int64 `protobuf:"varint,9,opt,name=OpenTime,proto3" json:"OpenTime,omitempty"` Hash string `protobuf:"bytes,10,opt,name=Hash,proto3" json:"Hash,omitempty"` } func (x *GameOpenRecordItem) Reset() { *x = GameOpenRecordItem{} if protoimpl.UnsafeEnabled { mi := &file_game_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GameOpenRecordItem) String() string { return protoimpl.X.MessageStringOf(x) } func (*GameOpenRecordItem) ProtoMessage() {} func (x *GameOpenRecordItem) ProtoReflect() protoreflect.Message { mi := &file_game_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 GameOpenRecordItem.ProtoReflect.Descriptor instead. func (*GameOpenRecordItem) Descriptor() ([]byte, []int) { return file_game_proto_rawDescGZIP(), []int{26} } func (x *GameOpenRecordItem) GetRoomID() int64 { if x != nil { return x.RoomID } return 0 } func (x *GameOpenRecordItem) GetRoomType() int32 { if x != nil { return x.RoomType } return 0 } func (x *GameOpenRecordItem) GetIssue() string { if x != nil { return x.Issue } return "" } func (x *GameOpenRecordItem) GetOpenNumber1() string { if x != nil { return x.OpenNumber1 } return "" } func (x *GameOpenRecordItem) GetOpenNumber2() string { if x != nil { return x.OpenNumber2 } return "" } func (x *GameOpenRecordItem) GetOpenNumber3() string { if x != nil { return x.OpenNumber3 } return "" } func (x *GameOpenRecordItem) GetOpenNumber4() string { if x != nil { return x.OpenNumber4 } return "" } func (x *GameOpenRecordItem) GetOpenNumber5() string { if x != nil { return x.OpenNumber5 } return "" } func (x *GameOpenRecordItem) GetOpenTime() int64 { if x != nil { return x.OpenTime } return 0 } func (x *GameOpenRecordItem) GetHash() string { if x != nil { return x.Hash } return "" } type GameOpenRecordResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Total int32 `protobuf:"varint,1,opt,name=Total,proto3" json:"Total,omitempty"` OpenRecordList []*GameOpenRecordItem `protobuf:"bytes,2,rep,name=OpenRecordList,proto3" json:"OpenRecordList,omitempty"` } func (x *GameOpenRecordResp) Reset() { *x = GameOpenRecordResp{} if protoimpl.UnsafeEnabled { mi := &file_game_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GameOpenRecordResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GameOpenRecordResp) ProtoMessage() {} func (x *GameOpenRecordResp) ProtoReflect() protoreflect.Message { mi := &file_game_proto_msgTypes[27] 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 GameOpenRecordResp.ProtoReflect.Descriptor instead. func (*GameOpenRecordResp) Descriptor() ([]byte, []int) { return file_game_proto_rawDescGZIP(), []int{27} } func (x *GameOpenRecordResp) GetTotal() int32 { if x != nil { return x.Total } return 0 } func (x *GameOpenRecordResp) GetOpenRecordList() []*GameOpenRecordItem { if x != nil { return x.OpenRecordList } return nil } var File_game_proto protoreflect.FileDescriptor var file_game_proto_rawDesc = []byte{ 0x0a, 0x0a, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x67, 0x61, 0x6d, 0x65, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x06, 0x0a, 0x04, 0x50, 0x69, 0x6e, 0x67, 0x22, 0x88, 0x01, 0x0a, 0x07, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x2d, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x28, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xe1, 0x02, 0x0a, 0x04, 0x52, 0x6f, 0x6f, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x65, 0x64, 0x50, 0x77, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6e, 0x65, 0x65, 0x64, 0x50, 0x77, 0x64, 0x12, 0x2f, 0x0a, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x42, 0x61, 0x73, 0x65, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x42, 0x61, 0x73, 0x65, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x68, 0x61, 0x69, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x31, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x43, 0x68, 0x61, 0x69, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x31, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x68, 0x61, 0x69, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x32, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x43, 0x68, 0x61, 0x69, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x32, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x68, 0x61, 0x69, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x33, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x43, 0x68, 0x61, 0x69, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x33, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x68, 0x61, 0x69, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x34, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x43, 0x68, 0x61, 0x69, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x34, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x68, 0x61, 0x69, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x35, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x43, 0x68, 0x61, 0x69, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x35, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xe4, 0x03, 0x0a, 0x0a, 0x52, 0x6f, 0x6f, 0x6d, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x65, 0x64, 0x50, 0x77, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6e, 0x65, 0x65, 0x64, 0x50, 0x77, 0x64, 0x12, 0x2f, 0x0a, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x42, 0x61, 0x73, 0x65, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x42, 0x61, 0x73, 0x65, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x68, 0x61, 0x69, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x31, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x43, 0x68, 0x61, 0x69, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x31, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x68, 0x61, 0x69, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x32, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x43, 0x68, 0x61, 0x69, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x32, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x68, 0x61, 0x69, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x33, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x43, 0x68, 0x61, 0x69, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x33, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x68, 0x61, 0x69, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x34, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x43, 0x68, 0x61, 0x69, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x34, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x68, 0x61, 0x69, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x35, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x43, 0x68, 0x61, 0x69, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x35, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x0c, 0x52, 0x6f, 0x6f, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x6f, 0x6f, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x52, 0x0c, 0x52, 0x6f, 0x6f, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x54, 0x69, 0x6d, 0x65, 0x4e, 0x6f, 0x77, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x54, 0x69, 0x6d, 0x65, 0x4e, 0x6f, 0x77, 0x22, 0xf4, 0x01, 0x0a, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x08, 0x43, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x57, 0x69, 0x6e, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09, 0x57, 0x69, 0x6e, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x73, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x49, 0x73, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x4d, 0x75, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x4d, 0x75, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x75, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x4d, 0x75, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x22, 0x64, 0x0a, 0x04, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x04, 0x52, 0x6f, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x04, 0x52, 0x6f, 0x6f, 0x6d, 0x12, 0x37, 0x0a, 0x0c, 0x52, 0x6f, 0x6f, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x6f, 0x6f, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x52, 0x0c, 0x52, 0x6f, 0x6f, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x44, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x49, 0x6d, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x49, 0x6d, 0x67, 0x22, 0xc7, 0x02, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x6f, 0x67, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x4c, 0x6f, 0x67, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x49, 0x6d, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x49, 0x6d, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x04, 0x47, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x08, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x35, 0x0a, 0x0a, 0x52, 0x6f, 0x6f, 0x6d, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x6f, 0x6f, 0x6d, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x0a, 0x52, 0x6f, 0x6f, 0x6d, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x22, 0x24, 0x0a, 0x0a, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, 0xd0, 0x01, 0x0a, 0x08, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x68, 0x61, 0x69, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x43, 0x68, 0x61, 0x69, 0x72, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x23, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x35, 0x0a, 0x0a, 0x52, 0x6f, 0x6f, 0x6d, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x6f, 0x6f, 0x6d, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x0a, 0x52, 0x6f, 0x6f, 0x6d, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x22, 0x7a, 0x0a, 0x09, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x68, 0x61, 0x69, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x43, 0x68, 0x61, 0x69, 0x72, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x23, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x55, 0x73, 0x65, 0x72, 0x22, 0xed, 0x02, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x44, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x65, 0x64, 0x50, 0x77, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6e, 0x65, 0x65, 0x64, 0x50, 0x77, 0x64, 0x12, 0x2f, 0x0a, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x42, 0x61, 0x73, 0x65, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x42, 0x61, 0x73, 0x65, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x68, 0x61, 0x69, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x31, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x43, 0x68, 0x61, 0x69, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x31, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x68, 0x61, 0x69, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x32, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x43, 0x68, 0x61, 0x69, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x32, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x68, 0x61, 0x69, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x33, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x43, 0x68, 0x61, 0x69, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x33, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x68, 0x61, 0x69, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x34, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x43, 0x68, 0x61, 0x69, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x34, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x68, 0x61, 0x69, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x35, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x43, 0x68, 0x61, 0x69, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x35, 0x22, 0x37, 0x0a, 0x05, 0x52, 0x65, 0x61, 0x64, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, 0x39, 0x0a, 0x07, 0x55, 0x6e, 0x52, 0x65, 0x61, 0x64, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, 0x39, 0x0a, 0x09, 0x57, 0x61, 0x69, 0x74, 0x52, 0x65, 0x61, 0x64, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x73, 0x73, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x49, 0x73, 0x73, 0x75, 0x65, 0x22, 0x83, 0x01, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x44, 0x12, 0x30, 0x0a, 0x13, 0x43, 0x68, 0x6f, 0x6f, 0x73, 0x65, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x4d, 0x75, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x13, 0x43, 0x68, 0x6f, 0x6f, 0x73, 0x65, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x4d, 0x75, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x73, 0x73, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x73, 0x73, 0x75, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x08, 0x43, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x50, 0x0a, 0x0c, 0x43, 0x68, 0x6f, 0x6f, 0x73, 0x65, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x75, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x4d, 0x75, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x44, 0x22, 0x69, 0x0a, 0x09, 0x43, 0x68, 0x6f, 0x6f, 0x73, 0x65, 0x4d, 0x75, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x75, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x4d, 0x75, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x08, 0x43, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x6a, 0x0a, 0x12, 0x43, 0x68, 0x6f, 0x6f, 0x73, 0x65, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x12, 0x22, 0x0a, 0x0c, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x75, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x07, 0x4d, 0x75, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x44, 0x22, 0x29, 0x0a, 0x0f, 0x43, 0x68, 0x6f, 0x6f, 0x73, 0x65, 0x4d, 0x75, 0x6c, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x44, 0x22, 0x92, 0x01, 0x0a, 0x0a, 0x50, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x77, 0x69, 0x6e, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x77, 0x69, 0x6e, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x73, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x22, 0x63, 0x0a, 0x0a, 0x4f, 0x70, 0x65, 0x6e, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x44, 0x12, 0x3d, 0x0a, 0x0e, 0x50, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0e, 0x50, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x52, 0x0a, 0x04, 0x4f, 0x70, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x08, 0x43, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x22, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x6e, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x44, 0x22, 0xec, 0x02, 0x0a, 0x0e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x73, 0x73, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x49, 0x73, 0x73, 0x75, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x4f, 0x70, 0x65, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x4f, 0x70, 0x65, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x42, 0x61, 0x73, 0x65, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x42, 0x61, 0x73, 0x65, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x73, 0x44, 0x72, 0x61, 0x77, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x73, 0x44, 0x72, 0x61, 0x77, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x72, 0x61, 0x77, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x44, 0x72, 0x61, 0x77, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x73, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x49, 0x73, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x4d, 0x75, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x4d, 0x75, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x75, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x4d, 0x75, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x73, 0x57, 0x69, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x49, 0x73, 0x57, 0x69, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x57, 0x69, 0x6e, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x57, 0x69, 0x6e, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x61, 0x0a, 0x0e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x39, 0x0a, 0x0a, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x0a, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x22, 0xb8, 0x02, 0x0a, 0x12, 0x47, 0x61, 0x6d, 0x65, 0x4f, 0x70, 0x65, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x73, 0x73, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x49, 0x73, 0x73, 0x75, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x70, 0x65, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x31, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x4f, 0x70, 0x65, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x31, 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x70, 0x65, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x32, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x4f, 0x70, 0x65, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x32, 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x70, 0x65, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x33, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x4f, 0x70, 0x65, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x33, 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x70, 0x65, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x34, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x4f, 0x70, 0x65, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x34, 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x70, 0x65, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x35, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x4f, 0x70, 0x65, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x35, 0x12, 0x1a, 0x0a, 0x08, 0x4f, 0x70, 0x65, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x4f, 0x70, 0x65, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x48, 0x61, 0x73, 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x48, 0x61, 0x73, 0x68, 0x22, 0x71, 0x0a, 0x12, 0x47, 0x61, 0x6d, 0x65, 0x4f, 0x70, 0x65, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x45, 0x0a, 0x0e, 0x4f, 0x70, 0x65, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x4f, 0x70, 0x65, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x0e, 0x4f, 0x70, 0x65, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x2a, 0xcd, 0x03, 0x0a, 0x0e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x12, 0x0a, 0x0e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, 0x79, 0x70, 0x65, 0x50, 0x69, 0x6e, 0x67, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, 0x79, 0x70, 0x65, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, 0x79, 0x70, 0x65, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x10, 0x02, 0x12, 0x18, 0x0a, 0x14, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, 0x79, 0x70, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x10, 0x04, 0x12, 0x18, 0x0a, 0x14, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, 0x79, 0x70, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x10, 0x05, 0x12, 0x13, 0x0a, 0x0f, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x61, 0x64, 0x79, 0x10, 0x06, 0x12, 0x15, 0x0a, 0x11, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, 0x79, 0x70, 0x65, 0x55, 0x6e, 0x52, 0x65, 0x61, 0x64, 0x79, 0x10, 0x07, 0x12, 0x13, 0x0a, 0x0f, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, 0x79, 0x70, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x10, 0x08, 0x12, 0x1a, 0x0a, 0x16, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, 0x79, 0x70, 0x65, 0x43, 0x68, 0x6f, 0x6f, 0x73, 0x65, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x10, 0x09, 0x12, 0x20, 0x0a, 0x1c, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, 0x79, 0x70, 0x65, 0x43, 0x68, 0x6f, 0x6f, 0x73, 0x65, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x10, 0x0a, 0x12, 0x17, 0x0a, 0x13, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, 0x79, 0x70, 0x65, 0x43, 0x68, 0x6f, 0x6f, 0x73, 0x65, 0x4d, 0x75, 0x6c, 0x10, 0x0b, 0x12, 0x1d, 0x0a, 0x19, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, 0x79, 0x70, 0x65, 0x43, 0x68, 0x6f, 0x6f, 0x73, 0x65, 0x4d, 0x75, 0x6c, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x10, 0x0c, 0x12, 0x16, 0x0a, 0x12, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, 0x79, 0x70, 0x65, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x6e, 0x69, 0x74, 0x10, 0x0d, 0x12, 0x12, 0x0a, 0x0e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, 0x79, 0x70, 0x65, 0x4f, 0x70, 0x65, 0x6e, 0x10, 0x0e, 0x12, 0x18, 0x0a, 0x14, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, 0x79, 0x70, 0x65, 0x4f, 0x70, 0x65, 0x6e, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x10, 0x0f, 0x12, 0x15, 0x0a, 0x11, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x73, 0x70, 0x10, 0x10, 0x12, 0x17, 0x0a, 0x13, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, 0x79, 0x70, 0x65, 0x57, 0x61, 0x69, 0x74, 0x52, 0x65, 0x61, 0x64, 0x79, 0x10, 0x11, 0x2a, 0x41, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x47, 0x5a, 0x69, 0x70, 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x63, 0x10, 0x04, 0x2a, 0x30, 0x0a, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x46, 0x72, 0x65, 0x65, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x10, 0x01, 0x2a, 0x36, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x75, 0x63, 0x63, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x52, 0x65, 0x73, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0x01, 0x42, 0x0e, 0x5a, 0x0c, 0x2e, 0x2f, 0x3b, 0x67, 0x61, 0x6d, 0x65, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( file_game_proto_rawDescOnce sync.Once file_game_proto_rawDescData = file_game_proto_rawDesc ) func file_game_proto_rawDescGZIP() []byte { file_game_proto_rawDescOnce.Do(func() { file_game_proto_rawDescData = protoimpl.X.CompressGZIP(file_game_proto_rawDescData) }) return file_game_proto_rawDescData } var file_game_proto_enumTypes = make([]protoimpl.EnumInfo, 4) var file_game_proto_msgTypes = make([]protoimpl.MessageInfo, 28) var file_game_proto_goTypes = []interface{}{ (NotifyTypeEnum)(0), // 0: gameproto.NotifyTypeEnum (DataType)(0), // 1: gameproto.DataType (RoomType)(0), // 2: gameproto.RoomType (RespStatus)(0), // 3: gameproto.RespStatus (*Ping)(nil), // 4: gameproto.Ping (*MsgResp)(nil), // 5: gameproto.MsgResp (*Room)(nil), // 6: gameproto.Room (*RoomDetail)(nil), // 7: gameproto.RoomDetail (*RoomUser)(nil), // 8: gameproto.RoomUser (*Game)(nil), // 9: gameproto.Game (*User)(nil), // 10: gameproto.User (*Connect)(nil), // 11: gameproto.Connect (*Disconnect)(nil), // 12: gameproto.Disconnect (*JoinRoom)(nil), // 13: gameproto.JoinRoom (*LeaveRoom)(nil), // 14: gameproto.LeaveRoom (*CreateRoom)(nil), // 15: gameproto.CreateRoom (*Ready)(nil), // 16: gameproto.Ready (*UnReady)(nil), // 17: gameproto.UnReady (*WaitReady)(nil), // 18: gameproto.WaitReady (*Start)(nil), // 19: gameproto.Start (*ChooseMaster)(nil), // 20: gameproto.ChooseMaster (*ChooseMul)(nil), // 21: gameproto.ChooseMul (*ChooseMasterFinish)(nil), // 22: gameproto.ChooseMasterFinish (*ChooseMulFinish)(nil), // 23: gameproto.ChooseMulFinish (*PayoutInfo)(nil), // 24: gameproto.PayoutInfo (*OpenFinish)(nil), // 25: gameproto.OpenFinish (*Open)(nil), // 26: gameproto.Open (*GameInit)(nil), // 27: gameproto.GameInit (*GameRecordItem)(nil), // 28: gameproto.GameRecordItem (*GameRecordResp)(nil), // 29: gameproto.GameRecordResp (*GameOpenRecordItem)(nil), // 30: gameproto.GameOpenRecordItem (*GameOpenRecordResp)(nil), // 31: gameproto.GameOpenRecordResp (*any1.Any)(nil), // 32: google.protobuf.Any } var file_game_proto_depIdxs = []int32{ 3, // 0: gameproto.MsgResp.status:type_name -> gameproto.RespStatus 32, // 1: gameproto.MsgResp.data:type_name -> google.protobuf.Any 2, // 2: gameproto.Room.RoomType:type_name -> gameproto.RoomType 2, // 3: gameproto.RoomDetail.RoomType:type_name -> gameproto.RoomType 8, // 4: gameproto.RoomDetail.RoomUserList:type_name -> gameproto.RoomUser 6, // 5: gameproto.Game.Room:type_name -> gameproto.Room 8, // 6: gameproto.Game.RoomUserList:type_name -> gameproto.RoomUser 9, // 7: gameproto.Connect.Game:type_name -> gameproto.Game 6, // 8: gameproto.Connect.RoomList:type_name -> gameproto.Room 10, // 9: gameproto.Connect.UserList:type_name -> gameproto.User 7, // 10: gameproto.Connect.RoomDetail:type_name -> gameproto.RoomDetail 10, // 11: gameproto.JoinRoom.User:type_name -> gameproto.User 7, // 12: gameproto.JoinRoom.RoomDetail:type_name -> gameproto.RoomDetail 10, // 13: gameproto.LeaveRoom.User:type_name -> gameproto.User 2, // 14: gameproto.CreateRoom.RoomType:type_name -> gameproto.RoomType 24, // 15: gameproto.OpenFinish.PayoutInfoList:type_name -> gameproto.PayoutInfo 28, // 16: gameproto.GameRecordResp.RecordList:type_name -> gameproto.GameRecordItem 30, // 17: gameproto.GameOpenRecordResp.OpenRecordList:type_name -> gameproto.GameOpenRecordItem 18, // [18:18] is the sub-list for method output_type 18, // [18:18] is the sub-list for method input_type 18, // [18:18] is the sub-list for extension type_name 18, // [18:18] is the sub-list for extension extendee 0, // [0:18] is the sub-list for field type_name } func init() { file_game_proto_init() } func file_game_proto_init() { if File_game_proto != nil { return } if !protoimpl.UnsafeEnabled { file_game_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Ping); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_game_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MsgResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_game_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Room); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_game_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RoomDetail); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_game_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RoomUser); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_game_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Game); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_game_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*User); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_game_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Connect); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_game_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Disconnect); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_game_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*JoinRoom); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_game_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LeaveRoom); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_game_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateRoom); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_game_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Ready); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_game_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UnReady); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_game_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WaitReady); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_game_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Start); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_game_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChooseMaster); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_game_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChooseMul); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_game_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChooseMasterFinish); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_game_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChooseMulFinish); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_game_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PayoutInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_game_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OpenFinish); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_game_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Open); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_game_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GameInit); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_game_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GameRecordItem); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_game_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GameRecordResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_game_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GameOpenRecordItem); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_game_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GameOpenRecordResp); 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_game_proto_rawDesc, NumEnums: 4, NumMessages: 28, NumExtensions: 0, NumServices: 0, }, GoTypes: file_game_proto_goTypes, DependencyIndexes: file_game_proto_depIdxs, EnumInfos: file_game_proto_enumTypes, MessageInfos: file_game_proto_msgTypes, }.Build() File_game_proto = out.File file_game_proto_rawDesc = nil file_game_proto_goTypes = nil file_game_proto_depIdxs = nil }