// Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.27.1-devel // protoc v3.19.4 // source: shop.proto package shop import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" ) const ( // Verify that this generated code is sufficiently up-to-date. _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) // Verify that runtime/protoimpl is sufficiently up-to-date. _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) // 操作结果 type OpResultCode int32 const ( OpResultCode_OPRC_Sucess OpResultCode = 0 //成功 OpResultCode_OPRC_Error OpResultCode = 1 //失败 OpResultCode_OPRC_VCoinNotEnough OpResultCode = 2 //V卡不够 OpResultCode_OPRC_ExchangeLimit OpResultCode = 3 //今日兑换已达上限,请明日再来 OpResultCode_OPRC_ExchangeNotEnough OpResultCode = 4 //该物品已被兑换完 OpResultCode_OPRC_ExchangeDataRtt OpResultCode = 5 //输入信息有误 OpResultCode_OPRC_ExchangeSoldOut OpResultCode = 6 //该商品已下架 OpResultCode_OPRC_ExchangeLimitAcc OpResultCode = 7 //账号被限制,无法进行该操作 OpResultCode_OPRC_JCoinNotEnough OpResultCode = 8 //金券不足 OpResultCode_OPRC_VipLevelNotEnough OpResultCode = 9 //Vip等级不足 ) // Enum value maps for OpResultCode. var ( OpResultCode_name = map[int32]string{ 0: "OPRC_Sucess", 1: "OPRC_Error", 2: "OPRC_VCoinNotEnough", 3: "OPRC_ExchangeLimit", 4: "OPRC_ExchangeNotEnough", 5: "OPRC_ExchangeDataRtt", 6: "OPRC_ExchangeSoldOut", 7: "OPRC_ExchangeLimitAcc", 8: "OPRC_JCoinNotEnough", 9: "OPRC_VipLevelNotEnough", } OpResultCode_value = map[string]int32{ "OPRC_Sucess": 0, "OPRC_Error": 1, "OPRC_VCoinNotEnough": 2, "OPRC_ExchangeLimit": 3, "OPRC_ExchangeNotEnough": 4, "OPRC_ExchangeDataRtt": 5, "OPRC_ExchangeSoldOut": 6, "OPRC_ExchangeLimitAcc": 7, "OPRC_JCoinNotEnough": 8, "OPRC_VipLevelNotEnough": 9, } ) func (x OpResultCode) Enum() *OpResultCode { p := new(OpResultCode) *p = x return p } func (x OpResultCode) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (OpResultCode) Descriptor() protoreflect.EnumDescriptor { return file_shop_proto_enumTypes[0].Descriptor() } func (OpResultCode) Type() protoreflect.EnumType { return &file_shop_proto_enumTypes[0] } func (x OpResultCode) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use OpResultCode.Descriptor instead. func (OpResultCode) EnumDescriptor() ([]byte, []int) { return file_shop_proto_rawDescGZIP(), []int{0} } // 商城 type SPacketID int32 const ( SPacketID_PACKET_SHOP_ZERO SPacketID = 0 // 弃用消息号 SPacketID_PACKET_CS_SHOP_INFO SPacketID = 2500 //请求商品数据 SPacketID_PACKET_SC_SHOP_INFO SPacketID = 2501 //返回商品数据 SPacketID_PACKET_CS_SHOP_ADLOOKED SPacketID = 2502 //观看广告 SPacketID_PACKET_SC_SHOP_ADLOOKED SPacketID = 2503 //观看广告返回 SPacketID_PACKET_CS_SHOP_VCPAYSHOP SPacketID = 2504 //购买虚拟货币或者商品 SPacketID_PACKET_SC_SHOP_VCPAYSHOP SPacketID = 2505 //购买结果返回 SPacketID_PACKET_CS_SHOP_EXCHANGERECORD SPacketID = 2506 //兑换记录 SPacketID_PACKET_SC_SHOP_EXCHANGERECORD SPacketID = 2507 SPacketID_PACKET_CS_SHOP_EXCHANGE SPacketID = 2508 //兑换商品 SPacketID_PACKET_SC_SHOP_EXCHANGE SPacketID = 2509 SPacketID_PACKET_CS_SHOP_EXCHANGELIST SPacketID = 2510 //兑换商品列表 SPacketID_PACKET_SC_SHOP_EXCHANGELIST SPacketID = 2511 /////Exchange SPacketID_SHOP_SC_GIVECOIN_INFO SPacketID = 2514 //通知赠送信息,先临时放到这个地方,其他协议需要合并 SPacketID_PACKET_CSPAYINFO SPacketID = 2515 SPacketID_PACKET_SCPAYINFO SPacketID = 2516 SPacketID_PACKET_CSGETPAYINFOLIST SPacketID = 2517 SPacketID_PACKET_SCGETPAYINFOLIST SPacketID = 2518 SPacketID_PACKET_CSPLAYERADDR SPacketID = 2519 //玩家地址操作 SPacketID_PACKET_SCPLAYERADDR SPacketID = 2520 //玩家地址操作返回 SPacketID_PACKET_CS_UPDATE_VIP_SHOP SPacketID = 2521 //客户端请求刷新vip商城 SPacketID_PACKET_SC_UPDATE_VIP_SHOP SPacketID = 2522 //刷新Vip商城返回 ) // Enum value maps for SPacketID. var ( SPacketID_name = map[int32]string{ 0: "PACKET_SHOP_ZERO", 2500: "PACKET_CS_SHOP_INFO", 2501: "PACKET_SC_SHOP_INFO", 2502: "PACKET_CS_SHOP_ADLOOKED", 2503: "PACKET_SC_SHOP_ADLOOKED", 2504: "PACKET_CS_SHOP_VCPAYSHOP", 2505: "PACKET_SC_SHOP_VCPAYSHOP", 2506: "PACKET_CS_SHOP_EXCHANGERECORD", 2507: "PACKET_SC_SHOP_EXCHANGERECORD", 2508: "PACKET_CS_SHOP_EXCHANGE", 2509: "PACKET_SC_SHOP_EXCHANGE", 2510: "PACKET_CS_SHOP_EXCHANGELIST", 2511: "PACKET_SC_SHOP_EXCHANGELIST", 2514: "SHOP_SC_GIVECOIN_INFO", 2515: "PACKET_CSPAYINFO", 2516: "PACKET_SCPAYINFO", 2517: "PACKET_CSGETPAYINFOLIST", 2518: "PACKET_SCGETPAYINFOLIST", 2519: "PACKET_CSPLAYERADDR", 2520: "PACKET_SCPLAYERADDR", 2521: "PACKET_CS_UPDATE_VIP_SHOP", 2522: "PACKET_SC_UPDATE_VIP_SHOP", } SPacketID_value = map[string]int32{ "PACKET_SHOP_ZERO": 0, "PACKET_CS_SHOP_INFO": 2500, "PACKET_SC_SHOP_INFO": 2501, "PACKET_CS_SHOP_ADLOOKED": 2502, "PACKET_SC_SHOP_ADLOOKED": 2503, "PACKET_CS_SHOP_VCPAYSHOP": 2504, "PACKET_SC_SHOP_VCPAYSHOP": 2505, "PACKET_CS_SHOP_EXCHANGERECORD": 2506, "PACKET_SC_SHOP_EXCHANGERECORD": 2507, "PACKET_CS_SHOP_EXCHANGE": 2508, "PACKET_SC_SHOP_EXCHANGE": 2509, "PACKET_CS_SHOP_EXCHANGELIST": 2510, "PACKET_SC_SHOP_EXCHANGELIST": 2511, "SHOP_SC_GIVECOIN_INFO": 2514, "PACKET_CSPAYINFO": 2515, "PACKET_SCPAYINFO": 2516, "PACKET_CSGETPAYINFOLIST": 2517, "PACKET_SCGETPAYINFOLIST": 2518, "PACKET_CSPLAYERADDR": 2519, "PACKET_SCPLAYERADDR": 2520, "PACKET_CS_UPDATE_VIP_SHOP": 2521, "PACKET_SC_UPDATE_VIP_SHOP": 2522, } ) func (x SPacketID) Enum() *SPacketID { p := new(SPacketID) *p = x return p } func (x SPacketID) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (SPacketID) Descriptor() protoreflect.EnumDescriptor { return file_shop_proto_enumTypes[1].Descriptor() } func (SPacketID) Type() protoreflect.EnumType { return &file_shop_proto_enumTypes[1] } func (x SPacketID) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use SPacketID.Descriptor instead. func (SPacketID) EnumDescriptor() ([]byte, []int) { return file_shop_proto_rawDescGZIP(), []int{1} } // 商品信息 type ShopInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields //数据表数据 Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` //缓存数据 AdLookedNum int32 `protobuf:"varint,2,opt,name=AdLookedNum,proto3" json:"AdLookedNum,omitempty"` //已经观看的次数 AdReceiveNum int32 `protobuf:"varint,3,opt,name=AdReceiveNum,proto3" json:"AdReceiveNum,omitempty"` //已经领取的次数 // int32 RemainingTime = 4;//商品的剩余冷却时间 LastLookTime int32 `protobuf:"varint,4,opt,name=LastLookTime,proto3" json:"LastLookTime,omitempty"` //商品上一次观看时间 //展示数据 RoleAdded int32 `protobuf:"varint,5,opt,name=RoleAdded,proto3" json:"RoleAdded,omitempty"` //人物加成 PetAdded int32 `protobuf:"varint,6,opt,name=PetAdded,proto3" json:"PetAdded,omitempty"` //宠物加成 ItemId int32 `protobuf:"varint,7,opt,name=ItemId,proto3" json:"ItemId,omitempty"` //道具ID Page int32 `protobuf:"varint,8,opt,name=Page,proto3" json:"Page,omitempty"` //页面 1,金币页面 2,钻石页面 3,道具页面 Order int32 `protobuf:"varint,9,opt,name=Order,proto3" json:"Order,omitempty"` //排序 页面内商品的位置排序 Type int32 `protobuf:"varint,10,opt,name=Type,proto3" json:"Type,omitempty"` // 类型 1,金币 2,钻石 3,道具类型1:用金币或者钻石购买 4.道具类型2:走充值购买 5,其他 Location []int32 `protobuf:"varint,11,rep,packed,name=Location,proto3" json:"Location,omitempty"` // 显示位置 第1位,竖版大厅 第2位,Tienlen1级选场 第3位,捕鱼1级选场 Picture string `protobuf:"bytes,12,opt,name=Picture,proto3" json:"Picture,omitempty"` // 图片id Name string `protobuf:"bytes,13,opt,name=Name,proto3" json:"Name,omitempty"` // 名称 Ad int32 `protobuf:"varint,14,opt,name=Ad,proto3" json:"Ad,omitempty"` //是否观看广告 1,是 2,不是 AdTime int32 `protobuf:"varint,15,opt,name=AdTime,proto3" json:"AdTime,omitempty"` // 观看几次广告 RepeatTimes int32 `protobuf:"varint,16,opt,name=RepeatTimes,proto3" json:"RepeatTimes,omitempty"` // 领取次数 CoolingTime []int32 `protobuf:"varint,17,rep,packed,name=CoolingTime,proto3" json:"CoolingTime,omitempty"` // 观看冷却时间 Label []int32 `protobuf:"varint,18,rep,packed,name=Label,proto3" json:"Label,omitempty"` // 标签 Added int32 `protobuf:"varint,19,opt,name=Added,proto3" json:"Added,omitempty"` // 加送百分比 Amount int64 `protobuf:"varint,20,opt,name=Amount,proto3" json:"Amount,omitempty"` // 货币金额 Consume int32 `protobuf:"varint,21,opt,name=Consume,proto3" json:"Consume,omitempty"` // 购买消耗类型 1,金币 2,钻石 3,美金 4,柬埔寨币 ConsumptionAmount int32 `protobuf:"varint,22,opt,name=ConsumptionAmount,proto3" json:"ConsumptionAmount,omitempty"` // 消耗数量 加送百分比(比如加送10%,就配置110) RoleAddedId int32 `protobuf:"varint,23,opt,name=RoleAddedId,proto3" json:"RoleAddedId,omitempty"` //加成人物ID PetAddedId int32 `protobuf:"varint,24,opt,name=PetAddedId,proto3" json:"PetAddedId,omitempty"` //加成宠物ID AddItemInfo []*ItemInfo `protobuf:"bytes,25,rep,name=AddItemInfo,proto3" json:"AddItemInfo,omitempty"` //加赠物品 EndTime int32 `protobuf:"varint,26,opt,name=EndTime,proto3" json:"EndTime,omitempty"` //新手礼包 配置的结束时间间隔 VipLevel int32 `protobuf:"varint,27,opt,name=VipLevel,proto3" json:"VipLevel,omitempty"` //限制Vip等级 IsBuy bool `protobuf:"varint,28,opt,name=IsBuy,proto3" json:"IsBuy,omitempty"` //Vip商城物品购买标识 true 已购买 false未购买 VipShopId int32 `protobuf:"varint,29,opt,name=VipShopId,proto3" json:"VipShopId,omitempty"` //VIP商城物品位置 FirstBuy bool `protobuf:"varint,30,opt,name=FirstBuy,proto3" json:"FirstBuy,omitempty"` //是否首充 AmountFinal int64 `protobuf:"varint,31,opt,name=AmountFinal,proto3" json:"AmountFinal,omitempty"` //实际获得数量 } func (x *ShopInfo) Reset() { *x = ShopInfo{} if protoimpl.UnsafeEnabled { mi := &file_shop_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShopInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShopInfo) ProtoMessage() {} func (x *ShopInfo) ProtoReflect() protoreflect.Message { mi := &file_shop_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 ShopInfo.ProtoReflect.Descriptor instead. func (*ShopInfo) Descriptor() ([]byte, []int) { return file_shop_proto_rawDescGZIP(), []int{0} } func (x *ShopInfo) GetId() int32 { if x != nil { return x.Id } return 0 } func (x *ShopInfo) GetAdLookedNum() int32 { if x != nil { return x.AdLookedNum } return 0 } func (x *ShopInfo) GetAdReceiveNum() int32 { if x != nil { return x.AdReceiveNum } return 0 } func (x *ShopInfo) GetLastLookTime() int32 { if x != nil { return x.LastLookTime } return 0 } func (x *ShopInfo) GetRoleAdded() int32 { if x != nil { return x.RoleAdded } return 0 } func (x *ShopInfo) GetPetAdded() int32 { if x != nil { return x.PetAdded } return 0 } func (x *ShopInfo) GetItemId() int32 { if x != nil { return x.ItemId } return 0 } func (x *ShopInfo) GetPage() int32 { if x != nil { return x.Page } return 0 } func (x *ShopInfo) GetOrder() int32 { if x != nil { return x.Order } return 0 } func (x *ShopInfo) GetType() int32 { if x != nil { return x.Type } return 0 } func (x *ShopInfo) GetLocation() []int32 { if x != nil { return x.Location } return nil } func (x *ShopInfo) GetPicture() string { if x != nil { return x.Picture } return "" } func (x *ShopInfo) GetName() string { if x != nil { return x.Name } return "" } func (x *ShopInfo) GetAd() int32 { if x != nil { return x.Ad } return 0 } func (x *ShopInfo) GetAdTime() int32 { if x != nil { return x.AdTime } return 0 } func (x *ShopInfo) GetRepeatTimes() int32 { if x != nil { return x.RepeatTimes } return 0 } func (x *ShopInfo) GetCoolingTime() []int32 { if x != nil { return x.CoolingTime } return nil } func (x *ShopInfo) GetLabel() []int32 { if x != nil { return x.Label } return nil } func (x *ShopInfo) GetAdded() int32 { if x != nil { return x.Added } return 0 } func (x *ShopInfo) GetAmount() int64 { if x != nil { return x.Amount } return 0 } func (x *ShopInfo) GetConsume() int32 { if x != nil { return x.Consume } return 0 } func (x *ShopInfo) GetConsumptionAmount() int32 { if x != nil { return x.ConsumptionAmount } return 0 } func (x *ShopInfo) GetRoleAddedId() int32 { if x != nil { return x.RoleAddedId } return 0 } func (x *ShopInfo) GetPetAddedId() int32 { if x != nil { return x.PetAddedId } return 0 } func (x *ShopInfo) GetAddItemInfo() []*ItemInfo { if x != nil { return x.AddItemInfo } return nil } func (x *ShopInfo) GetEndTime() int32 { if x != nil { return x.EndTime } return 0 } func (x *ShopInfo) GetVipLevel() int32 { if x != nil { return x.VipLevel } return 0 } func (x *ShopInfo) GetIsBuy() bool { if x != nil { return x.IsBuy } return false } func (x *ShopInfo) GetVipShopId() int32 { if x != nil { return x.VipShopId } return 0 } func (x *ShopInfo) GetFirstBuy() bool { if x != nil { return x.FirstBuy } return false } func (x *ShopInfo) GetAmountFinal() int64 { if x != nil { return x.AmountFinal } return 0 } // PACKET_CS_SHOP_INFO type CSShopInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields NowLocation int32 `protobuf:"varint,1,opt,name=NowLocation,proto3" json:"NowLocation,omitempty"` //0.通用 1.竖版 2.Tienlen 3.捕鱼 } func (x *CSShopInfo) Reset() { *x = CSShopInfo{} if protoimpl.UnsafeEnabled { mi := &file_shop_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CSShopInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*CSShopInfo) ProtoMessage() {} func (x *CSShopInfo) ProtoReflect() protoreflect.Message { mi := &file_shop_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 CSShopInfo.ProtoReflect.Descriptor instead. func (*CSShopInfo) Descriptor() ([]byte, []int) { return file_shop_proto_rawDescGZIP(), []int{1} } func (x *CSShopInfo) GetNowLocation() int32 { if x != nil { return x.NowLocation } return 0 } // PACKET_SC_SHOP_INFO type SCShopInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Infos []*ShopInfo `protobuf:"bytes,1,rep,name=Infos,proto3" json:"Infos,omitempty"` //商品信息 } func (x *SCShopInfo) Reset() { *x = SCShopInfo{} if protoimpl.UnsafeEnabled { mi := &file_shop_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SCShopInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*SCShopInfo) ProtoMessage() {} func (x *SCShopInfo) ProtoReflect() protoreflect.Message { mi := &file_shop_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 SCShopInfo.ProtoReflect.Descriptor instead. func (*SCShopInfo) Descriptor() ([]byte, []int) { return file_shop_proto_rawDescGZIP(), []int{2} } func (x *SCShopInfo) GetInfos() []*ShopInfo { if x != nil { return x.Infos } return nil } // PACKET_CS_SHOP_ADLOOKED type CSAdLooked struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields LookedResult int32 `protobuf:"varint,1,opt,name=LookedResult,proto3" json:"LookedResult,omitempty"` //0.观看成功 //失败或者中断不用告知 ShopId int32 `protobuf:"varint,2,opt,name=ShopId,proto3" json:"ShopId,omitempty"` Position int32 `protobuf:"varint,3,opt,name=Position,proto3" json:"Position,omitempty"` // 商店位置,1大厅 2tienlen } func (x *CSAdLooked) Reset() { *x = CSAdLooked{} if protoimpl.UnsafeEnabled { mi := &file_shop_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CSAdLooked) String() string { return protoimpl.X.MessageStringOf(x) } func (*CSAdLooked) ProtoMessage() {} func (x *CSAdLooked) ProtoReflect() protoreflect.Message { mi := &file_shop_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 CSAdLooked.ProtoReflect.Descriptor instead. func (*CSAdLooked) Descriptor() ([]byte, []int) { return file_shop_proto_rawDescGZIP(), []int{3} } func (x *CSAdLooked) GetLookedResult() int32 { if x != nil { return x.LookedResult } return 0 } func (x *CSAdLooked) GetShopId() int32 { if x != nil { return x.ShopId } return 0 } func (x *CSAdLooked) GetPosition() int32 { if x != nil { return x.Position } return 0 } // PACKET_SC_SHOP_ADLOOKED type SCAdLooked struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields RetCode OpResultCode `protobuf:"varint,1,opt,name=RetCode,proto3,enum=shop.OpResultCode" json:"RetCode,omitempty"` ShopInfo *ShopInfo `protobuf:"bytes,2,opt,name=ShopInfo,proto3" json:"ShopInfo,omitempty"` //刷新商品信息 } func (x *SCAdLooked) Reset() { *x = SCAdLooked{} if protoimpl.UnsafeEnabled { mi := &file_shop_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SCAdLooked) String() string { return protoimpl.X.MessageStringOf(x) } func (*SCAdLooked) ProtoMessage() {} func (x *SCAdLooked) ProtoReflect() protoreflect.Message { mi := &file_shop_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 SCAdLooked.ProtoReflect.Descriptor instead. func (*SCAdLooked) Descriptor() ([]byte, []int) { return file_shop_proto_rawDescGZIP(), []int{4} } func (x *SCAdLooked) GetRetCode() OpResultCode { if x != nil { return x.RetCode } return OpResultCode_OPRC_Sucess } func (x *SCAdLooked) GetShopInfo() *ShopInfo { if x != nil { return x.ShopInfo } return nil } // PACKET_CS_SHOP_VCPAYSHOP type CSVCPayShop struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ShopId int32 `protobuf:"varint,1,opt,name=ShopId,proto3" json:"ShopId,omitempty"` //商品Id ConfigPayId int32 `protobuf:"varint,2,opt,name=ConfigPayId,proto3" json:"ConfigPayId,omitempty"` //支付配置Id VipShopId int32 `protobuf:"varint,3,opt,name=VipShopId,proto3" json:"VipShopId,omitempty"` //VIP商店专用 Position int32 `protobuf:"varint,4,opt,name=Position,proto3" json:"Position,omitempty"` // 商店位置,1大厅 2tienlen } func (x *CSVCPayShop) Reset() { *x = CSVCPayShop{} if protoimpl.UnsafeEnabled { mi := &file_shop_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CSVCPayShop) String() string { return protoimpl.X.MessageStringOf(x) } func (*CSVCPayShop) ProtoMessage() {} func (x *CSVCPayShop) ProtoReflect() protoreflect.Message { mi := &file_shop_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 CSVCPayShop.ProtoReflect.Descriptor instead. func (*CSVCPayShop) Descriptor() ([]byte, []int) { return file_shop_proto_rawDescGZIP(), []int{5} } func (x *CSVCPayShop) GetShopId() int32 { if x != nil { return x.ShopId } return 0 } func (x *CSVCPayShop) GetConfigPayId() int32 { if x != nil { return x.ConfigPayId } return 0 } func (x *CSVCPayShop) GetVipShopId() int32 { if x != nil { return x.VipShopId } return 0 } func (x *CSVCPayShop) GetPosition() int32 { if x != nil { return x.Position } return 0 } // PACKET_SC_SHOP_VCPAYSHOP type SCVCPayShop struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields RetCode OpResultCode `protobuf:"varint,1,opt,name=RetCode,proto3,enum=shop.OpResultCode" json:"RetCode,omitempty"` ShopInfo *ShopInfo `protobuf:"bytes,2,opt,name=ShopInfo,proto3" json:"ShopInfo,omitempty"` //刷新商品信息 Url string `protobuf:"bytes,3,opt,name=Url,proto3" json:"Url,omitempty"` //支付地址 VipShopId int32 `protobuf:"varint,4,opt,name=VipShopId,proto3" json:"VipShopId,omitempty"` //VIP商店专用 } func (x *SCVCPayShop) Reset() { *x = SCVCPayShop{} if protoimpl.UnsafeEnabled { mi := &file_shop_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SCVCPayShop) String() string { return protoimpl.X.MessageStringOf(x) } func (*SCVCPayShop) ProtoMessage() {} func (x *SCVCPayShop) ProtoReflect() protoreflect.Message { mi := &file_shop_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 SCVCPayShop.ProtoReflect.Descriptor instead. func (*SCVCPayShop) Descriptor() ([]byte, []int) { return file_shop_proto_rawDescGZIP(), []int{6} } func (x *SCVCPayShop) GetRetCode() OpResultCode { if x != nil { return x.RetCode } return OpResultCode_OPRC_Sucess } func (x *SCVCPayShop) GetShopInfo() *ShopInfo { if x != nil { return x.ShopInfo } return nil } func (x *SCVCPayShop) GetUrl() string { if x != nil { return x.Url } return "" } func (x *SCVCPayShop) GetVipShopId() int32 { if x != nil { return x.VipShopId } return 0 } type SCNotifyGiveCoinInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields GiveCoin int64 `protobuf:"varint,1,opt,name=GiveCoin,proto3" json:"GiveCoin,omitempty"` //赠送金币 GiveTag int32 `protobuf:"varint,2,opt,name=GiveTag,proto3" json:"GiveTag,omitempty"` //赠送类型,需要对应关系 } func (x *SCNotifyGiveCoinInfo) Reset() { *x = SCNotifyGiveCoinInfo{} if protoimpl.UnsafeEnabled { mi := &file_shop_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SCNotifyGiveCoinInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*SCNotifyGiveCoinInfo) ProtoMessage() {} func (x *SCNotifyGiveCoinInfo) ProtoReflect() protoreflect.Message { mi := &file_shop_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 SCNotifyGiveCoinInfo.ProtoReflect.Descriptor instead. func (*SCNotifyGiveCoinInfo) Descriptor() ([]byte, []int) { return file_shop_proto_rawDescGZIP(), []int{7} } func (x *SCNotifyGiveCoinInfo) GetGiveCoin() int64 { if x != nil { return x.GiveCoin } return 0 } func (x *SCNotifyGiveCoinInfo) GetGiveTag() int32 { if x != nil { return x.GiveTag } return 0 } // 商城兑换记录 // PACKET_CS_SHOP_EXCHANGERECORD type CSShopExchangeRecord struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PageNo int32 `protobuf:"varint,1,opt,name=PageNo,proto3" json:"PageNo,omitempty"` //当前页 } func (x *CSShopExchangeRecord) Reset() { *x = CSShopExchangeRecord{} if protoimpl.UnsafeEnabled { mi := &file_shop_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CSShopExchangeRecord) String() string { return protoimpl.X.MessageStringOf(x) } func (*CSShopExchangeRecord) ProtoMessage() {} func (x *CSShopExchangeRecord) ProtoReflect() protoreflect.Message { mi := &file_shop_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 CSShopExchangeRecord.ProtoReflect.Descriptor instead. func (*CSShopExchangeRecord) Descriptor() ([]byte, []int) { return file_shop_proto_rawDescGZIP(), []int{8} } func (x *CSShopExchangeRecord) GetPageNo() int32 { if x != nil { return x.PageNo } return 0 } type ShopExchangeRecord struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CreateTs int64 `protobuf:"varint,1,opt,name=CreateTs,proto3" json:"CreateTs,omitempty"` //订单创建日期 Name string `protobuf:"bytes,2,opt,name=Name,proto3" json:"Name,omitempty"` //名称 OrderId string `protobuf:"bytes,3,opt,name=OrderId,proto3" json:"OrderId,omitempty"` //订单号 State int32 `protobuf:"varint,4,opt,name=State,proto3" json:"State,omitempty"` //状态 0.等待审核 1.已通过 2.已发货 3. 审核不通过 4.撤单 Remark string `protobuf:"bytes,5,opt,name=Remark,proto3" json:"Remark,omitempty"` //订单备注 PayState bool `protobuf:"varint,6,opt,name=PayState,proto3" json:"PayState,omitempty"` //订单的现金支付状态 ExchangeNum int32 `protobuf:"varint,7,opt,name=ExchangeNum,proto3" json:"ExchangeNum,omitempty"` //兑换数量 EXchangeType int32 `protobuf:"varint,8,opt,name=EXchangeType,proto3" json:"EXchangeType,omitempty"` //兑换类型 GoodsId int32 `protobuf:"varint,9,opt,name=GoodsId,proto3" json:"GoodsId,omitempty"` //商品Id } func (x *ShopExchangeRecord) Reset() { *x = ShopExchangeRecord{} if protoimpl.UnsafeEnabled { mi := &file_shop_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShopExchangeRecord) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShopExchangeRecord) ProtoMessage() {} func (x *ShopExchangeRecord) ProtoReflect() protoreflect.Message { mi := &file_shop_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 ShopExchangeRecord.ProtoReflect.Descriptor instead. func (*ShopExchangeRecord) Descriptor() ([]byte, []int) { return file_shop_proto_rawDescGZIP(), []int{9} } func (x *ShopExchangeRecord) GetCreateTs() int64 { if x != nil { return x.CreateTs } return 0 } func (x *ShopExchangeRecord) GetName() string { if x != nil { return x.Name } return "" } func (x *ShopExchangeRecord) GetOrderId() string { if x != nil { return x.OrderId } return "" } func (x *ShopExchangeRecord) GetState() int32 { if x != nil { return x.State } return 0 } func (x *ShopExchangeRecord) GetRemark() string { if x != nil { return x.Remark } return "" } func (x *ShopExchangeRecord) GetPayState() bool { if x != nil { return x.PayState } return false } func (x *ShopExchangeRecord) GetExchangeNum() int32 { if x != nil { return x.ExchangeNum } return 0 } func (x *ShopExchangeRecord) GetEXchangeType() int32 { if x != nil { return x.EXchangeType } return 0 } func (x *ShopExchangeRecord) GetGoodsId() int32 { if x != nil { return x.GoodsId } return 0 } // PACKET_SC_SHOP_EXCHANGERECORD type SCShopExchangeRecord struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PageNo int32 `protobuf:"varint,1,opt,name=PageNo,proto3" json:"PageNo,omitempty"` //当前页 PageSize int32 `protobuf:"varint,2,opt,name=PageSize,proto3" json:"PageSize,omitempty"` //每页数量 PageSum int32 `protobuf:"varint,3,opt,name=PageSum,proto3" json:"PageSum,omitempty"` //总页数 Infos []*ShopExchangeRecord `protobuf:"bytes,4,rep,name=Infos,proto3" json:"Infos,omitempty"` //刷新商品信息 } func (x *SCShopExchangeRecord) Reset() { *x = SCShopExchangeRecord{} if protoimpl.UnsafeEnabled { mi := &file_shop_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SCShopExchangeRecord) String() string { return protoimpl.X.MessageStringOf(x) } func (*SCShopExchangeRecord) ProtoMessage() {} func (x *SCShopExchangeRecord) ProtoReflect() protoreflect.Message { mi := &file_shop_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 SCShopExchangeRecord.ProtoReflect.Descriptor instead. func (*SCShopExchangeRecord) Descriptor() ([]byte, []int) { return file_shop_proto_rawDescGZIP(), []int{10} } func (x *SCShopExchangeRecord) GetPageNo() int32 { if x != nil { return x.PageNo } return 0 } func (x *SCShopExchangeRecord) GetPageSize() int32 { if x != nil { return x.PageSize } return 0 } func (x *SCShopExchangeRecord) GetPageSum() int32 { if x != nil { return x.PageSum } return 0 } func (x *SCShopExchangeRecord) GetInfos() []*ShopExchangeRecord { if x != nil { return x.Infos } return nil } // 商城兑换 // PACKET_CS_SHOP_EXCHANGERECORD type CSShopExchange struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields GoodsId int32 `protobuf:"varint,1,opt,name=GoodsId,proto3" json:"GoodsId,omitempty"` //商品ID UserName string `protobuf:"bytes,2,opt,name=UserName,proto3" json:"UserName,omitempty"` //兑换人姓名 Mobile string `protobuf:"bytes,3,opt,name=Mobile,proto3" json:"Mobile,omitempty"` //兑换人手机号 Comment string `protobuf:"bytes,4,opt,name=Comment,proto3" json:"Comment,omitempty"` //备注信息 Id int32 `protobuf:"varint,5,opt,name=Id,proto3" json:"Id,omitempty"` //兑换方式Id ExType中的id,对应3种兑换方式 Amount int32 `protobuf:"varint,6,opt,name=Amount,proto3" json:"Amount,omitempty"` //兑换数量 } func (x *CSShopExchange) Reset() { *x = CSShopExchange{} if protoimpl.UnsafeEnabled { mi := &file_shop_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CSShopExchange) String() string { return protoimpl.X.MessageStringOf(x) } func (*CSShopExchange) ProtoMessage() {} func (x *CSShopExchange) ProtoReflect() protoreflect.Message { mi := &file_shop_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 CSShopExchange.ProtoReflect.Descriptor instead. func (*CSShopExchange) Descriptor() ([]byte, []int) { return file_shop_proto_rawDescGZIP(), []int{11} } func (x *CSShopExchange) GetGoodsId() int32 { if x != nil { return x.GoodsId } return 0 } func (x *CSShopExchange) GetUserName() string { if x != nil { return x.UserName } return "" } func (x *CSShopExchange) GetMobile() string { if x != nil { return x.Mobile } return "" } func (x *CSShopExchange) GetComment() string { if x != nil { return x.Comment } return "" } func (x *CSShopExchange) GetId() int32 { if x != nil { return x.Id } return 0 } func (x *CSShopExchange) GetAmount() int32 { if x != nil { return x.Amount } return 0 } type SCShopExchange struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields RetCode OpResultCode `protobuf:"varint,1,opt,name=RetCode,proto3,enum=shop.OpResultCode" json:"RetCode,omitempty"` CreateTs int64 `protobuf:"varint,2,opt,name=CreateTs,proto3" json:"CreateTs,omitempty"` //订单创建日期 OrderId string `protobuf:"bytes,3,opt,name=OrderId,proto3" json:"OrderId,omitempty"` //订单号 } func (x *SCShopExchange) Reset() { *x = SCShopExchange{} if protoimpl.UnsafeEnabled { mi := &file_shop_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SCShopExchange) String() string { return protoimpl.X.MessageStringOf(x) } func (*SCShopExchange) ProtoMessage() {} func (x *SCShopExchange) ProtoReflect() protoreflect.Message { mi := &file_shop_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 SCShopExchange.ProtoReflect.Descriptor instead. func (*SCShopExchange) Descriptor() ([]byte, []int) { return file_shop_proto_rawDescGZIP(), []int{12} } func (x *SCShopExchange) GetRetCode() OpResultCode { if x != nil { return x.RetCode } return OpResultCode_OPRC_Sucess } func (x *SCShopExchange) GetCreateTs() int64 { if x != nil { return x.CreateTs } return 0 } func (x *SCShopExchange) GetOrderId() string { if x != nil { return x.OrderId } return "" } // PACKET_CS_SHOP_EXCHANGELIST type CSShopExchangeList struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *CSShopExchangeList) Reset() { *x = CSShopExchangeList{} if protoimpl.UnsafeEnabled { mi := &file_shop_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CSShopExchangeList) String() string { return protoimpl.X.MessageStringOf(x) } func (*CSShopExchangeList) ProtoMessage() {} func (x *CSShopExchangeList) ProtoReflect() protoreflect.Message { mi := &file_shop_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 CSShopExchangeList.ProtoReflect.Descriptor instead. func (*CSShopExchangeList) Descriptor() ([]byte, []int) { return file_shop_proto_rawDescGZIP(), []int{13} } type ShopExchangeInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Type int32 `protobuf:"varint,1,opt,name=Type,proto3" json:"Type,omitempty"` // 类型 1,话费2,实物 Picture string `protobuf:"bytes,2,opt,name=Picture,proto3" json:"Picture,omitempty"` // 图片 Name string `protobuf:"bytes,3,opt,name=Name,proto3" json:"Name,omitempty"` // 名称 Rule string `protobuf:"bytes,4,opt,name=Rule,proto3" json:"Rule,omitempty"` //规则说明 GoodsId int32 `protobuf:"varint,5,opt,name=GoodsId,proto3" json:"GoodsId,omitempty"` //商品ID ShopLimit int32 `protobuf:"varint,6,opt,name=ShopLimit,proto3" json:"ShopLimit,omitempty"` // 剩余总数 DayMaxLimit int32 `protobuf:"varint,7,opt,name=DayMaxLimit,proto3" json:"DayMaxLimit,omitempty"` // 单日限购总数 DayPlayLimit int32 `protobuf:"varint,8,opt,name=DayPlayLimit,proto3" json:"DayPlayLimit,omitempty"` // 个人单日购买 ExType []*ExchangeType `protobuf:"bytes,9,rep,name=ExType,proto3" json:"ExType,omitempty"` //兑换方式 TelCharge int32 `protobuf:"varint,10,opt,name=TelCharge,proto3" json:"TelCharge,omitempty"` //话费 } func (x *ShopExchangeInfo) Reset() { *x = ShopExchangeInfo{} if protoimpl.UnsafeEnabled { mi := &file_shop_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShopExchangeInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShopExchangeInfo) ProtoMessage() {} func (x *ShopExchangeInfo) ProtoReflect() protoreflect.Message { mi := &file_shop_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 ShopExchangeInfo.ProtoReflect.Descriptor instead. func (*ShopExchangeInfo) Descriptor() ([]byte, []int) { return file_shop_proto_rawDescGZIP(), []int{14} } func (x *ShopExchangeInfo) GetType() int32 { if x != nil { return x.Type } return 0 } func (x *ShopExchangeInfo) GetPicture() string { if x != nil { return x.Picture } return "" } func (x *ShopExchangeInfo) GetName() string { if x != nil { return x.Name } return "" } func (x *ShopExchangeInfo) GetRule() string { if x != nil { return x.Rule } return "" } func (x *ShopExchangeInfo) GetGoodsId() int32 { if x != nil { return x.GoodsId } return 0 } func (x *ShopExchangeInfo) GetShopLimit() int32 { if x != nil { return x.ShopLimit } return 0 } func (x *ShopExchangeInfo) GetDayMaxLimit() int32 { if x != nil { return x.DayMaxLimit } return 0 } func (x *ShopExchangeInfo) GetDayPlayLimit() int32 { if x != nil { return x.DayPlayLimit } return 0 } func (x *ShopExchangeInfo) GetExType() []*ExchangeType { if x != nil { return x.ExType } return nil } func (x *ShopExchangeInfo) GetTelCharge() int32 { if x != nil { return x.TelCharge } return 0 } type ExchangeType struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Price int32 `protobuf:"varint,1,opt,name=Price,proto3" json:"Price,omitempty"` // 消耗V卡数量 JPrice int32 `protobuf:"varint,2,opt,name=JPrice,proto3" json:"JPrice,omitempty"` //消耗金券数量 Cash int32 `protobuf:"varint,3,opt,name=Cash,proto3" json:"Cash,omitempty"` //消耗现金数量 Id int32 `protobuf:"varint,4,opt,name=Id,proto3" json:"Id,omitempty"` //行数 } func (x *ExchangeType) Reset() { *x = ExchangeType{} if protoimpl.UnsafeEnabled { mi := &file_shop_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ExchangeType) String() string { return protoimpl.X.MessageStringOf(x) } func (*ExchangeType) ProtoMessage() {} func (x *ExchangeType) ProtoReflect() protoreflect.Message { mi := &file_shop_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 ExchangeType.ProtoReflect.Descriptor instead. func (*ExchangeType) Descriptor() ([]byte, []int) { return file_shop_proto_rawDescGZIP(), []int{15} } func (x *ExchangeType) GetPrice() int32 { if x != nil { return x.Price } return 0 } func (x *ExchangeType) GetJPrice() int32 { if x != nil { return x.JPrice } return 0 } func (x *ExchangeType) GetCash() int32 { if x != nil { return x.Cash } return 0 } func (x *ExchangeType) GetId() int32 { if x != nil { return x.Id } return 0 } type SCShopExchangeList struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields RetCode OpResultCode `protobuf:"varint,1,opt,name=RetCode,proto3,enum=shop.OpResultCode" json:"RetCode,omitempty"` Infos []*ShopExchangeInfo `protobuf:"bytes,2,rep,name=Infos,proto3" json:"Infos,omitempty"` //兑换商品列表 } func (x *SCShopExchangeList) Reset() { *x = SCShopExchangeList{} if protoimpl.UnsafeEnabled { mi := &file_shop_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SCShopExchangeList) String() string { return protoimpl.X.MessageStringOf(x) } func (*SCShopExchangeList) ProtoMessage() {} func (x *SCShopExchangeList) ProtoReflect() protoreflect.Message { mi := &file_shop_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 SCShopExchangeList.ProtoReflect.Descriptor instead. func (*SCShopExchangeList) Descriptor() ([]byte, []int) { return file_shop_proto_rawDescGZIP(), []int{16} } func (x *SCShopExchangeList) GetRetCode() OpResultCode { if x != nil { return x.RetCode } return OpResultCode_OPRC_Sucess } func (x *SCShopExchangeList) GetInfos() []*ShopExchangeInfo { if x != nil { return x.Infos } return nil } // PACKET_CSPAYINFO type CSPayInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields GoodsId int32 `protobuf:"varint,1,opt,name=GoodsId,proto3" json:"GoodsId,omitempty"` //商品id 101.盲盒 102.首充 103.连充 104 兑换 或者对应的商品shopId ConfigPayId int32 `protobuf:"varint,2,opt,name=ConfigPayId,proto3" json:"ConfigPayId,omitempty"` //支付配置Id BuyId int32 `protobuf:"varint,3,opt,name=BuyId,proto3" json:"BuyId,omitempty"` // 商品对应具体序号 ExchangeId int32 `protobuf:"varint,4,opt,name=ExchangeId,proto3" json:"ExchangeId,omitempty"` //兑换商品现金支付方式的兑换方式id ExchangeOrderId string `protobuf:"bytes,5,opt,name=ExchangeOrderId,proto3" json:"ExchangeOrderId,omitempty"` //兑换订单号 ExchangeNum int32 `protobuf:"varint,6,opt,name=ExchangeNum,proto3" json:"ExchangeNum,omitempty"` //兑换数量 } func (x *CSPayInfo) Reset() { *x = CSPayInfo{} if protoimpl.UnsafeEnabled { mi := &file_shop_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CSPayInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*CSPayInfo) ProtoMessage() {} func (x *CSPayInfo) ProtoReflect() protoreflect.Message { mi := &file_shop_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 CSPayInfo.ProtoReflect.Descriptor instead. func (*CSPayInfo) Descriptor() ([]byte, []int) { return file_shop_proto_rawDescGZIP(), []int{17} } func (x *CSPayInfo) GetGoodsId() int32 { if x != nil { return x.GoodsId } return 0 } func (x *CSPayInfo) GetConfigPayId() int32 { if x != nil { return x.ConfigPayId } return 0 } func (x *CSPayInfo) GetBuyId() int32 { if x != nil { return x.BuyId } return 0 } func (x *CSPayInfo) GetExchangeId() int32 { if x != nil { return x.ExchangeId } return 0 } func (x *CSPayInfo) GetExchangeOrderId() string { if x != nil { return x.ExchangeOrderId } return "" } func (x *CSPayInfo) GetExchangeNum() int32 { if x != nil { return x.ExchangeNum } return 0 } // PACKET_SCPAYINFO type SCPayInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields RetCode OpResultCode `protobuf:"varint,1,opt,name=RetCode,proto3,enum=shop.OpResultCode" json:"RetCode,omitempty"` Url string `protobuf:"bytes,2,opt,name=Url,proto3" json:"Url,omitempty"` } func (x *SCPayInfo) Reset() { *x = SCPayInfo{} if protoimpl.UnsafeEnabled { mi := &file_shop_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SCPayInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*SCPayInfo) ProtoMessage() {} func (x *SCPayInfo) ProtoReflect() protoreflect.Message { mi := &file_shop_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 SCPayInfo.ProtoReflect.Descriptor instead. func (*SCPayInfo) Descriptor() ([]byte, []int) { return file_shop_proto_rawDescGZIP(), []int{18} } func (x *SCPayInfo) GetRetCode() OpResultCode { if x != nil { return x.RetCode } return OpResultCode_OPRC_Sucess } func (x *SCPayInfo) GetUrl() string { if x != nil { return x.Url } return "" } // PACKET_CSGETPAYINFOLIST type CSGetPayInfoList struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields OpType int32 `protobuf:"varint,1,opt,name=OpType,proto3" json:"OpType,omitempty"` //1.金币 2.钻石 3.道具 } func (x *CSGetPayInfoList) Reset() { *x = CSGetPayInfoList{} if protoimpl.UnsafeEnabled { mi := &file_shop_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CSGetPayInfoList) String() string { return protoimpl.X.MessageStringOf(x) } func (*CSGetPayInfoList) ProtoMessage() {} func (x *CSGetPayInfoList) ProtoReflect() protoreflect.Message { mi := &file_shop_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 CSGetPayInfoList.ProtoReflect.Descriptor instead. func (*CSGetPayInfoList) Descriptor() ([]byte, []int) { return file_shop_proto_rawDescGZIP(), []int{19} } func (x *CSGetPayInfoList) GetOpType() int32 { if x != nil { return x.OpType } return 0 } type ItemInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ItemId int32 `protobuf:"varint,1,opt,name=ItemId,proto3" json:"ItemId,omitempty"` ItemNum int64 `protobuf:"varint,2,opt,name=ItemNum,proto3" json:"ItemNum,omitempty"` } func (x *ItemInfo) Reset() { *x = ItemInfo{} if protoimpl.UnsafeEnabled { mi := &file_shop_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ItemInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*ItemInfo) ProtoMessage() {} func (x *ItemInfo) ProtoReflect() protoreflect.Message { mi := &file_shop_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 ItemInfo.ProtoReflect.Descriptor instead. func (*ItemInfo) Descriptor() ([]byte, []int) { return file_shop_proto_rawDescGZIP(), []int{20} } func (x *ItemInfo) GetItemId() int32 { if x != nil { return x.ItemId } return 0 } func (x *ItemInfo) GetItemNum() int64 { if x != nil { return x.ItemNum } return 0 } type PayInfoList struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields OrderId string `protobuf:"bytes,1,opt,name=OrderId,proto3" json:"OrderId,omitempty"` ConsumeType int32 `protobuf:"varint,2,opt,name=ConsumeType,proto3" json:"ConsumeType,omitempty"` //消费类型 1.金币 2.钻石 3.现金 4.道具和现金 ConsumeNum int32 `protobuf:"varint,3,opt,name=ConsumeNum,proto3" json:"ConsumeNum,omitempty"` //消耗数量 Amount []int32 `protobuf:"varint,4,rep,packed,name=Amount,proto3" json:"Amount,omitempty"` //获得类型 0.金币 1.钻石 2.经验 ItemInfo []*ItemInfo `protobuf:"bytes,5,rep,name=ItemInfo,proto3" json:"ItemInfo,omitempty"` //获得道具 State int32 `protobuf:"varint,6,opt,name=State,proto3" json:"State,omitempty"` //状态 0.默认 1.成功 2.失败 Ts int64 `protobuf:"varint,7,opt,name=Ts,proto3" json:"Ts,omitempty"` } func (x *PayInfoList) Reset() { *x = PayInfoList{} if protoimpl.UnsafeEnabled { mi := &file_shop_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *PayInfoList) String() string { return protoimpl.X.MessageStringOf(x) } func (*PayInfoList) ProtoMessage() {} func (x *PayInfoList) ProtoReflect() protoreflect.Message { mi := &file_shop_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 PayInfoList.ProtoReflect.Descriptor instead. func (*PayInfoList) Descriptor() ([]byte, []int) { return file_shop_proto_rawDescGZIP(), []int{21} } func (x *PayInfoList) GetOrderId() string { if x != nil { return x.OrderId } return "" } func (x *PayInfoList) GetConsumeType() int32 { if x != nil { return x.ConsumeType } return 0 } func (x *PayInfoList) GetConsumeNum() int32 { if x != nil { return x.ConsumeNum } return 0 } func (x *PayInfoList) GetAmount() []int32 { if x != nil { return x.Amount } return nil } func (x *PayInfoList) GetItemInfo() []*ItemInfo { if x != nil { return x.ItemInfo } return nil } func (x *PayInfoList) GetState() int32 { if x != nil { return x.State } return 0 } func (x *PayInfoList) GetTs() int64 { if x != nil { return x.Ts } return 0 } // PACKET_SCGETPAYINFOLIST type SCGetPayInfoList struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Info []*PayInfoList `protobuf:"bytes,1,rep,name=Info,proto3" json:"Info,omitempty"` } func (x *SCGetPayInfoList) Reset() { *x = SCGetPayInfoList{} if protoimpl.UnsafeEnabled { mi := &file_shop_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SCGetPayInfoList) String() string { return protoimpl.X.MessageStringOf(x) } func (*SCGetPayInfoList) ProtoMessage() {} func (x *SCGetPayInfoList) ProtoReflect() protoreflect.Message { mi := &file_shop_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 SCGetPayInfoList.ProtoReflect.Descriptor instead. func (*SCGetPayInfoList) Descriptor() ([]byte, []int) { return file_shop_proto_rawDescGZIP(), []int{22} } func (x *SCGetPayInfoList) GetInfo() []*PayInfoList { if x != nil { return x.Info } return nil } // 玩家添加地址 // PACKET_CSPLAYERADDR type CSPlayerAddr struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields OpType int32 `protobuf:"varint,1,opt,name=OpType,proto3" json:"OpType,omitempty"` // 1.增加 2.查询 3.删除 4.修改 Addr string `protobuf:"bytes,2,opt,name=Addr,proto3" json:"Addr,omitempty"` //地址 Id int32 `protobuf:"varint,3,opt,name=Id,proto3" json:"Id,omitempty"` //删除指定id } func (x *CSPlayerAddr) Reset() { *x = CSPlayerAddr{} if protoimpl.UnsafeEnabled { mi := &file_shop_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CSPlayerAddr) String() string { return protoimpl.X.MessageStringOf(x) } func (*CSPlayerAddr) ProtoMessage() {} func (x *CSPlayerAddr) ProtoReflect() protoreflect.Message { mi := &file_shop_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 CSPlayerAddr.ProtoReflect.Descriptor instead. func (*CSPlayerAddr) Descriptor() ([]byte, []int) { return file_shop_proto_rawDescGZIP(), []int{23} } func (x *CSPlayerAddr) GetOpType() int32 { if x != nil { return x.OpType } return 0 } func (x *CSPlayerAddr) GetAddr() string { if x != nil { return x.Addr } return "" } func (x *CSPlayerAddr) GetId() int32 { if x != nil { return x.Id } return 0 } // PACKET_SCPLAYEADDRS type SCGetPlayerAddrs struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Addrs []*AddrData `protobuf:"bytes,1,rep,name=Addrs,proto3" json:"Addrs,omitempty"` } func (x *SCGetPlayerAddrs) Reset() { *x = SCGetPlayerAddrs{} if protoimpl.UnsafeEnabled { mi := &file_shop_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SCGetPlayerAddrs) String() string { return protoimpl.X.MessageStringOf(x) } func (*SCGetPlayerAddrs) ProtoMessage() {} func (x *SCGetPlayerAddrs) ProtoReflect() protoreflect.Message { mi := &file_shop_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 SCGetPlayerAddrs.ProtoReflect.Descriptor instead. func (*SCGetPlayerAddrs) Descriptor() ([]byte, []int) { return file_shop_proto_rawDescGZIP(), []int{24} } func (x *SCGetPlayerAddrs) GetAddrs() []*AddrData { if x != nil { return x.Addrs } return nil } type AddrData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` //位置id Addr string `protobuf:"bytes,2,opt,name=Addr,proto3" json:"Addr,omitempty"` //地址 } func (x *AddrData) Reset() { *x = AddrData{} if protoimpl.UnsafeEnabled { mi := &file_shop_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AddrData) String() string { return protoimpl.X.MessageStringOf(x) } func (*AddrData) ProtoMessage() {} func (x *AddrData) ProtoReflect() protoreflect.Message { mi := &file_shop_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 AddrData.ProtoReflect.Descriptor instead. func (*AddrData) Descriptor() ([]byte, []int) { return file_shop_proto_rawDescGZIP(), []int{25} } func (x *AddrData) GetId() int32 { if x != nil { return x.Id } return 0 } func (x *AddrData) GetAddr() string { if x != nil { return x.Addr } return "" } // VIP商城刷新物品 // PACKET_CS_UPDATE_VIP_SHOP type CSUpdateVipShop struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *CSUpdateVipShop) Reset() { *x = CSUpdateVipShop{} if protoimpl.UnsafeEnabled { mi := &file_shop_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CSUpdateVipShop) String() string { return protoimpl.X.MessageStringOf(x) } func (*CSUpdateVipShop) ProtoMessage() {} func (x *CSUpdateVipShop) ProtoReflect() protoreflect.Message { mi := &file_shop_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 CSUpdateVipShop.ProtoReflect.Descriptor instead. func (*CSUpdateVipShop) Descriptor() ([]byte, []int) { return file_shop_proto_rawDescGZIP(), []int{26} } // VIP商城刷新物品返回 // PACKET_SC_UPDATE_VIP_SHOP type SCUpdateVipShop struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Info []*ShopInfo `protobuf:"bytes,1,rep,name=info,proto3" json:"info,omitempty"` RefreshCount int32 `protobuf:"varint,2,opt,name=RefreshCount,proto3" json:"RefreshCount,omitempty"` } func (x *SCUpdateVipShop) Reset() { *x = SCUpdateVipShop{} if protoimpl.UnsafeEnabled { mi := &file_shop_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SCUpdateVipShop) String() string { return protoimpl.X.MessageStringOf(x) } func (*SCUpdateVipShop) ProtoMessage() {} func (x *SCUpdateVipShop) ProtoReflect() protoreflect.Message { mi := &file_shop_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 SCUpdateVipShop.ProtoReflect.Descriptor instead. func (*SCUpdateVipShop) Descriptor() ([]byte, []int) { return file_shop_proto_rawDescGZIP(), []int{27} } func (x *SCUpdateVipShop) GetInfo() []*ShopInfo { if x != nil { return x.Info } return nil } func (x *SCUpdateVipShop) GetRefreshCount() int32 { if x != nil { return x.RefreshCount } return 0 } var File_shop_proto protoreflect.FileDescriptor var file_shop_proto_rawDesc = []byte{ 0x0a, 0x0a, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x04, 0x73, 0x68, 0x6f, 0x70, 0x22, 0xf2, 0x06, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x41, 0x64, 0x4c, 0x6f, 0x6f, 0x6b, 0x65, 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x41, 0x64, 0x4c, 0x6f, 0x6f, 0x6b, 0x65, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x41, 0x64, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x41, 0x64, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x4c, 0x61, 0x73, 0x74, 0x4c, 0x6f, 0x6f, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4c, 0x61, 0x73, 0x74, 0x4c, 0x6f, 0x6f, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x6f, 0x6c, 0x65, 0x41, 0x64, 0x64, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x52, 0x6f, 0x6c, 0x65, 0x41, 0x64, 0x64, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x65, 0x74, 0x41, 0x64, 0x64, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, 0x65, 0x74, 0x41, 0x64, 0x64, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x50, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x41, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x41, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6f, 0x6f, 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x11, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0b, 0x43, 0x6f, 0x6f, 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x12, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x41, 0x64, 0x64, 0x65, 0x64, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x41, 0x64, 0x64, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x52, 0x6f, 0x6c, 0x65, 0x41, 0x64, 0x64, 0x65, 0x64, 0x49, 0x64, 0x18, 0x17, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x52, 0x6f, 0x6c, 0x65, 0x41, 0x64, 0x64, 0x65, 0x64, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x65, 0x74, 0x41, 0x64, 0x64, 0x65, 0x64, 0x49, 0x64, 0x18, 0x18, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x65, 0x74, 0x41, 0x64, 0x64, 0x65, 0x64, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x0b, 0x41, 0x64, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x19, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x41, 0x64, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x56, 0x69, 0x70, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x56, 0x69, 0x70, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x73, 0x42, 0x75, 0x79, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x49, 0x73, 0x42, 0x75, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x56, 0x69, 0x70, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x56, 0x69, 0x70, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x69, 0x72, 0x73, 0x74, 0x42, 0x75, 0x79, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x46, 0x69, 0x72, 0x73, 0x74, 0x42, 0x75, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x22, 0x2e, 0x0a, 0x0a, 0x43, 0x53, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x4e, 0x6f, 0x77, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x4e, 0x6f, 0x77, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x32, 0x0a, 0x0a, 0x53, 0x43, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x0a, 0x05, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x22, 0x64, 0x0a, 0x0a, 0x43, 0x53, 0x41, 0x64, 0x4c, 0x6f, 0x6f, 0x6b, 0x65, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x4c, 0x6f, 0x6f, 0x6b, 0x65, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4c, 0x6f, 0x6f, 0x6b, 0x65, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x66, 0x0a, 0x0a, 0x53, 0x43, 0x41, 0x64, 0x4c, 0x6f, 0x6f, 0x6b, 0x65, 0x64, 0x12, 0x2c, 0x0a, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x2a, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x81, 0x01, 0x0a, 0x0b, 0x43, 0x53, 0x56, 0x43, 0x50, 0x61, 0x79, 0x53, 0x68, 0x6f, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x61, 0x79, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x61, 0x79, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x56, 0x69, 0x70, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x56, 0x69, 0x70, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x97, 0x01, 0x0a, 0x0b, 0x53, 0x43, 0x56, 0x43, 0x50, 0x61, 0x79, 0x53, 0x68, 0x6f, 0x70, 0x12, 0x2c, 0x0a, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x2a, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x72, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x56, 0x69, 0x70, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x56, 0x69, 0x70, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x22, 0x4c, 0x0a, 0x14, 0x53, 0x43, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x47, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x47, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x69, 0x76, 0x65, 0x54, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x47, 0x69, 0x76, 0x65, 0x54, 0x61, 0x67, 0x22, 0x2e, 0x0a, 0x14, 0x43, 0x53, 0x53, 0x68, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x67, 0x65, 0x4e, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x50, 0x61, 0x67, 0x65, 0x4e, 0x6f, 0x22, 0x88, 0x02, 0x0a, 0x12, 0x53, 0x68, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x50, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x45, 0x58, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x45, 0x58, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x49, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x49, 0x64, 0x22, 0x94, 0x01, 0x0a, 0x14, 0x53, 0x43, 0x53, 0x68, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x67, 0x65, 0x4e, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x50, 0x61, 0x67, 0x65, 0x4e, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x50, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x12, 0x2e, 0x0a, 0x05, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x53, 0x68, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x05, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x22, 0xa0, 0x01, 0x0a, 0x0e, 0x43, 0x53, 0x53, 0x68, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x4d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x4d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x74, 0x0a, 0x0e, 0x53, 0x43, 0x53, 0x68, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x2c, 0x0a, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x22, 0x14, 0x0a, 0x12, 0x43, 0x53, 0x53, 0x68, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x22, 0xb0, 0x02, 0x0a, 0x10, 0x53, 0x68, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x75, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x68, 0x6f, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x68, 0x6f, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x44, 0x61, 0x79, 0x4d, 0x61, 0x78, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x44, 0x61, 0x79, 0x4d, 0x61, 0x78, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x44, 0x61, 0x79, 0x50, 0x6c, 0x61, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x44, 0x61, 0x79, 0x50, 0x6c, 0x61, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x2a, 0x0a, 0x06, 0x45, 0x78, 0x54, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x06, 0x45, 0x78, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x65, 0x6c, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x54, 0x65, 0x6c, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x22, 0x60, 0x0a, 0x0c, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x4a, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4a, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x43, 0x61, 0x73, 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x70, 0x0a, 0x12, 0x53, 0x43, 0x53, 0x68, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x2c, 0x0a, 0x05, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x53, 0x68, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x22, 0xc9, 0x01, 0x0a, 0x09, 0x43, 0x53, 0x50, 0x61, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x61, 0x79, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x61, 0x79, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x42, 0x75, 0x79, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x42, 0x75, 0x79, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x22, 0x4b, 0x0a, 0x09, 0x53, 0x43, 0x50, 0x61, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2c, 0x0a, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x72, 0x6c, 0x22, 0x2a, 0x0a, 0x10, 0x43, 0x53, 0x47, 0x65, 0x74, 0x50, 0x61, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x22, 0x3c, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x22, 0xd3, 0x01, 0x0a, 0x0b, 0x50, 0x61, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x54, 0x73, 0x22, 0x39, 0x0a, 0x10, 0x53, 0x43, 0x47, 0x65, 0x74, 0x50, 0x61, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x50, 0x61, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x4a, 0x0a, 0x0c, 0x43, 0x53, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x41, 0x64, 0x64, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x41, 0x64, 0x64, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x38, 0x0a, 0x10, 0x53, 0x43, 0x47, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x73, 0x12, 0x24, 0x0a, 0x05, 0x41, 0x64, 0x64, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x41, 0x64, 0x64, 0x72, 0x73, 0x22, 0x2e, 0x0a, 0x08, 0x41, 0x64, 0x64, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x41, 0x64, 0x64, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x41, 0x64, 0x64, 0x72, 0x22, 0x11, 0x0a, 0x0f, 0x43, 0x53, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x69, 0x70, 0x53, 0x68, 0x6f, 0x70, 0x22, 0x59, 0x0a, 0x0f, 0x53, 0x43, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x69, 0x70, 0x53, 0x68, 0x6f, 0x70, 0x12, 0x22, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x22, 0x0a, 0x0c, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x2a, 0x80, 0x02, 0x0a, 0x0c, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x75, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x56, 0x43, 0x6f, 0x69, 0x6e, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, 0x03, 0x12, 0x1a, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x04, 0x12, 0x18, 0x0a, 0x14, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x74, 0x74, 0x10, 0x05, 0x12, 0x18, 0x0a, 0x14, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x6f, 0x6c, 0x64, 0x4f, 0x75, 0x74, 0x10, 0x06, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x41, 0x63, 0x63, 0x10, 0x07, 0x12, 0x17, 0x0a, 0x13, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4a, 0x43, 0x6f, 0x69, 0x6e, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x08, 0x12, 0x1a, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x56, 0x69, 0x70, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x09, 0x2a, 0x91, 0x05, 0x0a, 0x09, 0x53, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xc4, 0x13, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xc5, 0x13, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x41, 0x44, 0x4c, 0x4f, 0x4f, 0x4b, 0x45, 0x44, 0x10, 0xc6, 0x13, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x41, 0x44, 0x4c, 0x4f, 0x4f, 0x4b, 0x45, 0x44, 0x10, 0xc7, 0x13, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x56, 0x43, 0x50, 0x41, 0x59, 0x53, 0x48, 0x4f, 0x50, 0x10, 0xc8, 0x13, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x56, 0x43, 0x50, 0x41, 0x59, 0x53, 0x48, 0x4f, 0x50, 0x10, 0xc9, 0x13, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x45, 0x58, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x10, 0xca, 0x13, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x45, 0x58, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x10, 0xcb, 0x13, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x45, 0x58, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0xcc, 0x13, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x45, 0x58, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0xcd, 0x13, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x45, 0x58, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xce, 0x13, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x45, 0x58, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xcf, 0x13, 0x12, 0x1a, 0x0a, 0x15, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x49, 0x56, 0x45, 0x43, 0x4f, 0x49, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xd2, 0x13, 0x12, 0x15, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x41, 0x59, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xd3, 0x13, 0x12, 0x15, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x41, 0x59, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xd4, 0x13, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x47, 0x45, 0x54, 0x50, 0x41, 0x59, 0x49, 0x4e, 0x46, 0x4f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xd5, 0x13, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x47, 0x45, 0x54, 0x50, 0x41, 0x59, 0x49, 0x4e, 0x46, 0x4f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xd6, 0x13, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x41, 0x44, 0x44, 0x52, 0x10, 0xd7, 0x13, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x41, 0x44, 0x44, 0x52, 0x10, 0xd8, 0x13, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x56, 0x49, 0x50, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x10, 0xd9, 0x13, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x56, 0x49, 0x50, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x10, 0xda, 0x13, 0x42, 0x24, 0x5a, 0x22, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x73, 0x68, 0x6f, 0x70, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( file_shop_proto_rawDescOnce sync.Once file_shop_proto_rawDescData = file_shop_proto_rawDesc ) func file_shop_proto_rawDescGZIP() []byte { file_shop_proto_rawDescOnce.Do(func() { file_shop_proto_rawDescData = protoimpl.X.CompressGZIP(file_shop_proto_rawDescData) }) return file_shop_proto_rawDescData } var file_shop_proto_enumTypes = make([]protoimpl.EnumInfo, 2) var file_shop_proto_msgTypes = make([]protoimpl.MessageInfo, 28) var file_shop_proto_goTypes = []interface{}{ (OpResultCode)(0), // 0: shop.OpResultCode (SPacketID)(0), // 1: shop.SPacketID (*ShopInfo)(nil), // 2: shop.ShopInfo (*CSShopInfo)(nil), // 3: shop.CSShopInfo (*SCShopInfo)(nil), // 4: shop.SCShopInfo (*CSAdLooked)(nil), // 5: shop.CSAdLooked (*SCAdLooked)(nil), // 6: shop.SCAdLooked (*CSVCPayShop)(nil), // 7: shop.CSVCPayShop (*SCVCPayShop)(nil), // 8: shop.SCVCPayShop (*SCNotifyGiveCoinInfo)(nil), // 9: shop.SCNotifyGiveCoinInfo (*CSShopExchangeRecord)(nil), // 10: shop.CSShopExchangeRecord (*ShopExchangeRecord)(nil), // 11: shop.ShopExchangeRecord (*SCShopExchangeRecord)(nil), // 12: shop.SCShopExchangeRecord (*CSShopExchange)(nil), // 13: shop.CSShopExchange (*SCShopExchange)(nil), // 14: shop.SCShopExchange (*CSShopExchangeList)(nil), // 15: shop.CSShopExchangeList (*ShopExchangeInfo)(nil), // 16: shop.ShopExchangeInfo (*ExchangeType)(nil), // 17: shop.ExchangeType (*SCShopExchangeList)(nil), // 18: shop.SCShopExchangeList (*CSPayInfo)(nil), // 19: shop.CSPayInfo (*SCPayInfo)(nil), // 20: shop.SCPayInfo (*CSGetPayInfoList)(nil), // 21: shop.CSGetPayInfoList (*ItemInfo)(nil), // 22: shop.ItemInfo (*PayInfoList)(nil), // 23: shop.PayInfoList (*SCGetPayInfoList)(nil), // 24: shop.SCGetPayInfoList (*CSPlayerAddr)(nil), // 25: shop.CSPlayerAddr (*SCGetPlayerAddrs)(nil), // 26: shop.SCGetPlayerAddrs (*AddrData)(nil), // 27: shop.AddrData (*CSUpdateVipShop)(nil), // 28: shop.CSUpdateVipShop (*SCUpdateVipShop)(nil), // 29: shop.SCUpdateVipShop } var file_shop_proto_depIdxs = []int32{ 22, // 0: shop.ShopInfo.AddItemInfo:type_name -> shop.ItemInfo 2, // 1: shop.SCShopInfo.Infos:type_name -> shop.ShopInfo 0, // 2: shop.SCAdLooked.RetCode:type_name -> shop.OpResultCode 2, // 3: shop.SCAdLooked.ShopInfo:type_name -> shop.ShopInfo 0, // 4: shop.SCVCPayShop.RetCode:type_name -> shop.OpResultCode 2, // 5: shop.SCVCPayShop.ShopInfo:type_name -> shop.ShopInfo 11, // 6: shop.SCShopExchangeRecord.Infos:type_name -> shop.ShopExchangeRecord 0, // 7: shop.SCShopExchange.RetCode:type_name -> shop.OpResultCode 17, // 8: shop.ShopExchangeInfo.ExType:type_name -> shop.ExchangeType 0, // 9: shop.SCShopExchangeList.RetCode:type_name -> shop.OpResultCode 16, // 10: shop.SCShopExchangeList.Infos:type_name -> shop.ShopExchangeInfo 0, // 11: shop.SCPayInfo.RetCode:type_name -> shop.OpResultCode 22, // 12: shop.PayInfoList.ItemInfo:type_name -> shop.ItemInfo 23, // 13: shop.SCGetPayInfoList.Info:type_name -> shop.PayInfoList 27, // 14: shop.SCGetPlayerAddrs.Addrs:type_name -> shop.AddrData 2, // 15: shop.SCUpdateVipShop.info:type_name -> shop.ShopInfo 16, // [16:16] is the sub-list for method output_type 16, // [16:16] is the sub-list for method input_type 16, // [16:16] is the sub-list for extension type_name 16, // [16:16] is the sub-list for extension extendee 0, // [0:16] is the sub-list for field type_name } func init() { file_shop_proto_init() } func file_shop_proto_init() { if File_shop_proto != nil { return } if !protoimpl.UnsafeEnabled { file_shop_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShopInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_shop_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CSShopInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_shop_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SCShopInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_shop_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CSAdLooked); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_shop_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SCAdLooked); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_shop_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CSVCPayShop); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_shop_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SCVCPayShop); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_shop_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SCNotifyGiveCoinInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_shop_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CSShopExchangeRecord); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_shop_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShopExchangeRecord); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_shop_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SCShopExchangeRecord); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_shop_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CSShopExchange); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_shop_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SCShopExchange); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_shop_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CSShopExchangeList); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_shop_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShopExchangeInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_shop_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ExchangeType); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_shop_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SCShopExchangeList); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_shop_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CSPayInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_shop_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SCPayInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_shop_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CSGetPayInfoList); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_shop_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ItemInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_shop_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PayInfoList); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_shop_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SCGetPayInfoList); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_shop_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CSPlayerAddr); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_shop_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SCGetPlayerAddrs); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_shop_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddrData); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_shop_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CSUpdateVipShop); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_shop_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SCUpdateVipShop); 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_shop_proto_rawDesc, NumEnums: 2, NumMessages: 28, NumExtensions: 0, NumServices: 0, }, GoTypes: file_shop_proto_goTypes, DependencyIndexes: file_shop_proto_depIdxs, EnumInfos: file_shop_proto_enumTypes, MessageInfos: file_shop_proto_msgTypes, }.Build() File_shop_proto = out.File file_shop_proto_rawDesc = nil file_shop_proto_goTypes = nil file_shop_proto_depIdxs = nil }