From 0ab62a2a65b763946fe26f74bee9ffc5504d02f2 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Wed, 27 Nov 2024 14:25:52 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/conf/champship/ChampshipCfg.go | 2 +- src/server/conf/invite/inviteCfg.go | 23 + src/server/conf/json.go | 2 + .../limitedTimeEvent/LimitedTimeEventCfg.go | 6 +- src/server/conf/server.json | 2 + src/server/game/GameLogic.go | 69 +- src/server/game/Gm.go | 3 + src/server/game/Player.go | 15 + src/server/game/PlayerBaseMod.go | 5 +- src/server/game/PlayerFriendData.go | 129 - src/server/game/PlayerFunc.go | 47 +- src/server/game/PlayerMod.go | 7 + src/server/game/RegisterNetworkFunc.go | 150 +- src/server/game/ServerMod.go | 1 + src/server/game/mod/base/Base.go | 21 +- src/server/game/mod/friend/Friend.go | 56 +- src/server/game/mod/invite/invite.go | 50 + .../mod/limitedTimeEvent/LimitedTimeEvent.go | 6 + src/server/game/mod/msg/Msg.go | 3 + src/server/go.mod | 3 + src/server/go.sum | 7 + src/server/msg/Gameapi.pb.go | 6638 +++++++++-------- src/server/teLog/log.2024-11-27 | 0 src/server/thinkdata/te.go | 22 + .../ThinkingDataAnalytics/go-sdk/v2/LICENSE | 201 + .../v2/src/thinkingdata/consumer_batch.go | 352 + .../v2/src/thinkingdata/consumer_debug.go | 120 + .../v2/src/thinkingdata/consumer_log.go | 256 + .../go-sdk/v2/src/thinkingdata/td_log.go | 125 + .../v2/src/thinkingdata/thinkingdata.go | 305 + .../go-sdk/v2/src/thinkingdata/utils.go | 143 + .../github.com/google/uuid/CHANGELOG.md | 10 + .../github.com/google/uuid/CONTRIBUTING.md | 26 + .../github.com/google/uuid/CONTRIBUTORS | 9 + .../vendor/github.com/google/uuid/LICENSE | 27 + .../vendor/github.com/google/uuid/README.md | 21 + .../vendor/github.com/google/uuid/dce.go | 80 + .../vendor/github.com/google/uuid/doc.go | 12 + .../vendor/github.com/google/uuid/hash.go | 53 + .../vendor/github.com/google/uuid/marshal.go | 38 + .../vendor/github.com/google/uuid/node.go | 90 + .../vendor/github.com/google/uuid/node_js.go | 12 + .../vendor/github.com/google/uuid/node_net.go | 33 + .../vendor/github.com/google/uuid/null.go | 118 + .../vendor/github.com/google/uuid/sql.go | 59 + .../vendor/github.com/google/uuid/time.go | 123 + .../vendor/github.com/google/uuid/util.go | 43 + .../vendor/github.com/google/uuid/uuid.go | 296 + .../vendor/github.com/google/uuid/version1.go | 44 + .../vendor/github.com/google/uuid/version4.go | 76 + src/server/vendor/modules.txt | 8 + 51 files changed, 6382 insertions(+), 3565 deletions(-) create mode 100644 src/server/conf/invite/inviteCfg.go create mode 100644 src/server/game/mod/invite/invite.go create mode 100644 src/server/teLog/log.2024-11-27 create mode 100644 src/server/thinkdata/te.go create mode 100644 src/server/vendor/github.com/ThinkingDataAnalytics/go-sdk/v2/LICENSE create mode 100644 src/server/vendor/github.com/ThinkingDataAnalytics/go-sdk/v2/src/thinkingdata/consumer_batch.go create mode 100644 src/server/vendor/github.com/ThinkingDataAnalytics/go-sdk/v2/src/thinkingdata/consumer_debug.go create mode 100644 src/server/vendor/github.com/ThinkingDataAnalytics/go-sdk/v2/src/thinkingdata/consumer_log.go create mode 100644 src/server/vendor/github.com/ThinkingDataAnalytics/go-sdk/v2/src/thinkingdata/td_log.go create mode 100644 src/server/vendor/github.com/ThinkingDataAnalytics/go-sdk/v2/src/thinkingdata/thinkingdata.go create mode 100644 src/server/vendor/github.com/ThinkingDataAnalytics/go-sdk/v2/src/thinkingdata/utils.go create mode 100644 src/server/vendor/github.com/google/uuid/CHANGELOG.md create mode 100644 src/server/vendor/github.com/google/uuid/CONTRIBUTING.md create mode 100644 src/server/vendor/github.com/google/uuid/CONTRIBUTORS create mode 100644 src/server/vendor/github.com/google/uuid/LICENSE create mode 100644 src/server/vendor/github.com/google/uuid/README.md create mode 100644 src/server/vendor/github.com/google/uuid/dce.go create mode 100644 src/server/vendor/github.com/google/uuid/doc.go create mode 100644 src/server/vendor/github.com/google/uuid/hash.go create mode 100644 src/server/vendor/github.com/google/uuid/marshal.go create mode 100644 src/server/vendor/github.com/google/uuid/node.go create mode 100644 src/server/vendor/github.com/google/uuid/node_js.go create mode 100644 src/server/vendor/github.com/google/uuid/node_net.go create mode 100644 src/server/vendor/github.com/google/uuid/null.go create mode 100644 src/server/vendor/github.com/google/uuid/sql.go create mode 100644 src/server/vendor/github.com/google/uuid/time.go create mode 100644 src/server/vendor/github.com/google/uuid/util.go create mode 100644 src/server/vendor/github.com/google/uuid/uuid.go create mode 100644 src/server/vendor/github.com/google/uuid/version1.go create mode 100644 src/server/vendor/github.com/google/uuid/version4.go diff --git a/src/server/conf/champship/ChampshipCfg.go b/src/server/conf/champship/ChampshipCfg.go index c1bb22c8..bb0ced4b 100644 --- a/src/server/conf/champship/ChampshipCfg.go +++ b/src/server/conf/champship/ChampshipCfg.go @@ -53,7 +53,7 @@ func GetReward(Reward, Score int) (int, []*item.Item) { continue } if Score >= gamedata.GetIntValue(v, "Score") { - Items := item.ParseItem(gamedata.GetStringValue(v, "Items")) + Items := item.ParseItem(gamedata.GetValue(v, "Items")) r = item.Merge(r, Items) Reward = max(Reward, Id) } diff --git a/src/server/conf/invite/inviteCfg.go b/src/server/conf/invite/inviteCfg.go new file mode 100644 index 00000000..16b0cb23 --- /dev/null +++ b/src/server/conf/invite/inviteCfg.go @@ -0,0 +1,23 @@ +package inviteCfg + +import ( + "server/game/mod/item" + "server/gamedata" +) + +const ( + CFG_INVITE = "invite" +) + +func init() { + gamedata.InitCfg(CFG_INVITE) +} + +func GetInviteReward(index int) (int, []*item.Item) { + data, err := gamedata.GetDataByIntKey(CFG_INVITE, index) + if err != nil { + return 0, nil + } + return gamedata.GetIntValue(data, "reward"), item.ParseItem(gamedata.GetStringValue(data, "reward_item")) + +} diff --git a/src/server/conf/json.go b/src/server/conf/json.go index ae96bc88..4f5c4b41 100644 --- a/src/server/conf/json.go +++ b/src/server/conf/json.go @@ -41,6 +41,8 @@ var Server struct { CenterAddr string RemoteAddr string + + TELOGDIR string } func init() { diff --git a/src/server/conf/limitedTimeEvent/LimitedTimeEventCfg.go b/src/server/conf/limitedTimeEvent/LimitedTimeEventCfg.go index 49c9c865..64e68fec 100644 --- a/src/server/conf/limitedTimeEvent/LimitedTimeEventCfg.go +++ b/src/server/conf/limitedTimeEvent/LimitedTimeEventCfg.go @@ -161,7 +161,7 @@ func GetProgressMax() int { log.Debug("GetProgressMax err:%v", err) return 0 } - return gamedata.GetIntValue(data, "value") + return gamedata.GetIntValue(data, "Value") } func GetProgressRewardRand(Lv int) map[int]int { @@ -186,8 +186,8 @@ func GetProgressSelectNum(Lv int) int { log.Debug("GetProgressSelectNum err:%v", err) return 0 } - Str := gamedata.GetStringValue(data, "value") - Strarr := strings.Split(Str, ";") + Str := gamedata.GetStringValue(data, "Value") + Strarr := strings.Split(Str, "|") for _, v := range Strarr { a := strings.Split(v, ",") if len(a) != 3 { diff --git a/src/server/conf/server.json b/src/server/conf/server.json index bddcb852..4931e68f 100644 --- a/src/server/conf/server.json +++ b/src/server/conf/server.json @@ -12,6 +12,8 @@ "HttpPort": ":8081", "RemoteAddr":"host.docker.internal:9001", + "TELOGDIR" : "./teLog/", + "GameName": "Merge_Pet", "GameID": 1, "ServerType":"node", diff --git a/src/server/game/GameLogic.go b/src/server/game/GameLogic.go index fd8029e3..21550c9f 100644 --- a/src/server/game/GameLogic.go +++ b/src/server/game/GameLogic.go @@ -138,9 +138,6 @@ func (gl *GameLogic) OpenTimestampTick() { gl.Mdispatr.AfterFunc(time.Second*time.Duration(GoUtil.NextNoonTimestampDuration()), func() { gl.NoonFlush() }) - gl.Mdispatr.AfterFunc(time.Second*time.Duration(GoUtil.NextNoonTimestampDuration()), func() { - gl.NoonFlush() - }) gl.CreateDailyLogFile() go func() { @@ -906,9 +903,7 @@ func (ad *GameLogic) RegisterNetWorkFunc() { RegisterMsgProcessFunc("ReqAutoFBAddFriend", ReqAutoFBAddFriend) RegisterMsgProcessFunc("ReqAutoAddInviteFriend", ReqAutoAddInviteFriend) RegisterMsgProcessFunc("ReqRecommendFriendList", ReqRecommendFriendList) - RegisterMsgProcessFunc("ReqInviteFriendData", ReqInviteFriendData) - RegisterMsgProcessFunc("ReqSelfInvited", ReqSelfInvited) - RegisterMsgProcessFunc("ReqGetInviteReward", ReqGetInviteReward) + RegisterMsgProcessFunc("ReqFriendTreasureData", ReqFriendTreasureData) RegisterMsgProcessFunc("ReqUpdateFriendStar", ReqUpdateFriendStar) @@ -938,7 +933,8 @@ func (ad *GameLogic) RegisterNetWorkFunc() { // 玩家 RegisterMsgProcessFunc("ReqUserInfo", ReqUserInfo) - RegisterMsgProcessFunc("ReqSetName", ReqSetName) // 设置名字 + RegisterMsgProcessFunc("ReqSetName", ReqSetName) // 设置名字 + RegisterMsgProcessFunc("ReqSetFacebookUrl", ReqSetFacebookUrl) // 设置facebook地址 // 棋盘 RegisterMsgProcessFunc("ReqSetEnergyMul", RegSetEneryFunc) //设置能量倍数 @@ -970,7 +966,7 @@ func (ad *GameLogic) RegisterNetWorkFunc() { RegisterMsgProcessFunc("ReqAgreeCardGive", ReqAgreeCardGive) // 同意赠送卡牌 RegisterMsgProcessFunc("ReqRefuseCardGive", ReqRefuseCardGive) // 拒绝赠送卡牌 - RegisterMsgProcessFunc("ReqCardExchange", ReqCardExchange) // 请求兑换卡牌 + RegisterMsgProcessFunc("ReqCardExchange", ReqCardExchange) // 请求交换卡牌 RegisterMsgProcessFunc("ReqSelectCardExchange", ReqSelectCardExchange) // 选择交换的卡牌 RegisterMsgProcessFunc("ReqAgreeCardExchange", ReqAgreeCardExchange) // 完成交换卡牌 RegisterMsgProcessFunc("ReqRefuseCardSelect", ReqRefuseCardSelect) // 拒绝选择卡牌进行交换 @@ -1013,6 +1009,11 @@ func (ad *GameLogic) RegisterNetWorkFunc() { RegisterMsgProcessFunc("ReqRefuseFriend", ReqRefuseFriend) // 拒绝申请 RegisterMsgProcessFunc("ReqDelFriend", ReqDelFriend) // 删除好友 + // Facebook邀请好友 + RegisterMsgProcessFunc("ReqInviteFriendData", ReqInviteFriendData) // 请求邀请好友数据 + RegisterMsgProcessFunc("ReqSelfInvited", ReqSelfInvited) // 请求自己邀请的好友 + RegisterMsgProcessFunc("ReqGetInviteReward", ReqGetInviteReward) // 领取邀请奖励 + // 榜单 RegisterMsgProcessFunc("ReqRank", ReqRank) // 请求榜单数据 @@ -1137,58 +1138,6 @@ func (ad *GameLogic) CreateLogManager() { func (ad *GameLogic) InitActivity() { ad.m_CronEntryIDs = make(map[int]*LimitActPeriod) - activityCfg := gamedata.GetConfigByName("Activity") - c := cron.New() - - timeStamp := time.Now().Unix() - t := time.Unix(timeStamp, 0).Local() - nianchu := timeStamp - (int64)(t.Hour()*3600+t.Minute()*60+t.Second()) - int64((t.YearDay()-1)*3600*24) - - for i := 0; i < activityCfg.NumRecord(); i++ { - record := activityCfg.Record(i).(*gamedata.ActivityRecord) - start := record.StartTime - var LAP = LimitActPeriod{} - - LAP.StartCronID, _ = c.AddFunc(start, func() { - log.Debug("Next: UTC", c.Entry(LAP.StartCronID).Next.Unix()) - G_GameLogicPtr.M_LimitActiveList = append(G_GameLogicPtr.M_LimitActiveList, record.Id) - cur := int32(time.Now().Unix()) - GoUtil.CallEvent(MergeConst.OpenNewLimitActivity, []interface{}{record.Id, cur, cur + int32(record.Duration), record.Type}) - go func() { - LeafTimer := ad.Mdispatr.AfterFunc(time.Duration(record.Duration)*time.Second, func() { - GoUtil.CallEvent(MergeConst.CloseNewLimitActivity, []interface{}{record}) - G_GameLogicPtr.M_LimitActiveList = GoUtil.DeleteEleByValue(G_GameLogicPtr.M_LimitActiveList, record.Id) - }) - LAP.EndTimer = LeafTimer - }() - }) - ad.m_CronEntryIDs[record.Id] = &LAP - } - c.Start() - for k, v := range ad.m_CronEntryIDs { - ret := ad.JudgeIsActivity(c, k) - if ret == 3 { //已经结束 - delete(ad.m_CronEntryIDs, k) - } - if ret == 2 { - key := k - value := v - G_GameLogicPtr.M_LimitActiveList = append(G_GameLogicPtr.M_LimitActiveList, k) - go func() { - delta := ad.CalcDeltaEndTime(c, key) - LeafTimer := ad.Mdispatr.AfterFunc(time.Duration(delta)*time.Second, func() { - record := activityCfg.Index(key).(*gamedata.ActivityRecord) - GoUtil.CallEvent(MergeConst.CloseNewLimitActivity, []interface{}{record}) - G_GameLogicPtr.M_LimitActiveList = GoUtil.DeleteEleByValue(G_GameLogicPtr.M_LimitActiveList, key) - }) - value.EndTimer = LeafTimer - Schedule := c.Entry(value.StartCronID).Schedule - Next := Schedule.Next(time.Unix(nianchu, 0)) - value.StartTime = int32(Next.Unix()) - value.EndTime = int32(Next.Unix()) + activityCfg.Index(key).(*gamedata.ActivityRecord).Duration - }() - } - } } func (ad *GameLogic) AddLog(Log *Log) { diff --git a/src/server/game/Gm.go b/src/server/game/Gm.go index cf50e8d5..657a8bae 100644 --- a/src/server/game/Gm.go +++ b/src/server/game/Gm.go @@ -71,6 +71,9 @@ func ReqGmCommand(args []interface{}) error { CardMod.AddCard(3) FriendMod := player.PlayMod.getFriendMod() FriendMod.Card = make(map[string]*card.CardInfo) + case "setProgress": + num, _ := strconv.Atoi(arg[1]) + player.PlayMod.getLimitedTimeEventMod().Progress = num case "champshipGroup": G_GameLogicPtr.ChampshipMgrSend(&MsgMod.Msg{ Type: MsgMod.HANDLE_TYPE_CHAMPSHIP_GROUP, diff --git a/src/server/game/Player.go b/src/server/game/Player.go index dfd6af5d..55c1912e 100644 --- a/src/server/game/Player.go +++ b/src/server/game/Player.go @@ -711,3 +711,18 @@ func (p *Player) HandleInChampshipRank() { } G_GameLogicPtr.ChampshipMgrSend(m) } + +func (p *Player) AddLog(Uid int, Type int, Param string) { + FriendMod := p.PlayMod.getFriendMod() + Id := FriendMod.AddLog(Uid, Type, Param) + p.PlayMod.save() + p.PushClientRes(&msg.NotifyFriendLog{ + Info: &msg.ResFriendLog{ + Player: G_GameLogicPtr.GetResSimplePlayerByUid(Uid), + Type: int32(Type), + Param: Param, + Id: int32(Id), + Time: int32(GoUtil.Now()), + }, + }) +} diff --git a/src/server/game/PlayerBaseMod.go b/src/server/game/PlayerBaseMod.go index dbe66635..1000afbb 100644 --- a/src/server/game/PlayerBaseMod.go +++ b/src/server/game/PlayerBaseMod.go @@ -14,6 +14,7 @@ import ( "server/msg" "server/pkg/github.com/name5566/leaf/log" "server/pkg/github.com/name5566/leaf/timer" + telog "server/thinkdata" "time" "github.com/robfig/cron/v3" @@ -252,7 +253,7 @@ func (p *PlayerBaseData) SaveDataFromDB(Key interface{}) bool { var buf bytes.Buffer encode := gob.NewEncoder(&buf) encode.Encode(p.KeyValueData) - log.Debug("player :%d KeyValueData Save:%v ", p.Data.DwUin, p.KeyValueData) + // log.Debug("player :%d KeyValueData Save:%v ", p.Data.DwUin, p.KeyValueData) db.SavePlayerClientData(&db.SqlModStruct{ DwUin: p.Data.DwUin, ModData: buf.Bytes(), @@ -537,9 +538,11 @@ func (p *PlayerBaseData) AddExp(exp int) (int, error) { ChargeMod := p.M_Player.PlayMod.getChargeMod() ChargeMod.TriggerChargeUnlock(int(p.Data.Level), ChessMod.GetEmitList()) p.M_Player.PushClientRes(ChargeMod.BackData()) + telog.Te.Track(p.Data.UserName, p.Data.UserName, "level_up", map[string]interface{}{}) } p.M_Player.PushClientRes(p.BackAsset()) return upLv, nil + } func (p *PlayerBaseData) GetLevel() int { diff --git a/src/server/game/PlayerFriendData.go b/src/server/game/PlayerFriendData.go index 1b339f4a..89332b2b 100644 --- a/src/server/game/PlayerFriendData.go +++ b/src/server/game/PlayerFriendData.go @@ -316,7 +316,6 @@ func (p *PlayerFriendData) ReqSelfInvited(buf []byte) { } } - res.IdLists = InviteIds agent := p.GetPlayer().GetAgentByPlayer() data, _ := proto.Marshal(res) G_getGameLogic().PackResInfo(agent, "ResSelfInvited", data) @@ -766,134 +765,6 @@ func (p *PlayerFriendData) ReqAutoAddInviteFriend(buf []byte) { proto.Unmarshal(buf, req) res := &msg.ResAutoAddInviteFriend{} - for m := 0; m < len(req.Ids); m++ { - findSql := "SELECT * FROM t_player_baseinfo WHERE dwUin = ?" - sqlStruckBInfo := db.ResPlayerBaseInfo{} - tempId, _ := strconv.Atoi(req.Ids[m]) - var PlayerId int32 = int32(tempId) - - if err2 := db.SqlDb.Get(&sqlStruckBInfo, findSql, req.Ids[m]); err2 != nil { - - } else { - PlayerId = sqlStruckBInfo.DwUin - } - if PlayerId == p.M_Player.M_DwUin { - continue - } - if p.IsFriend(PlayerId) { - continue - } - sqlStrs := []string{} - - sqlStr := "SELECT * FROM t_player_Friend_Data WHERE dwUin = ?" - sqlStruck := db.SqlFriendStruct{} - sqlStruck.FriendList = "" - sqlStruck.DwUin = p.M_Player.M_DwUin - isHave := false - - if err := db.SqlDb.Get(&sqlStruck, sqlStr, p.M_Player.M_DwUin); err != nil { - isHave = false - } else { - isHave = true - } - atrarr := []string{} - if sqlStruck.FriendList != "" { - atrarr = append(atrarr, sqlStruck.FriendList) - } - atrarr = append(atrarr, strconv.Itoa(int(PlayerId))) - sqlStruck.FriendList = strings.Join(atrarr, "_") - params := [][]any{} - if isHave { - sqlStrs = append(sqlStrs, "UPDATE t_player_Friend_Data SET FriendList = ? WHERE dwUin = ?") - - t1 := []any{} - t1 = append(t1, sqlStruck.FriendList) - t1 = append(t1, sqlStruck.DwUin) - params = append(params, t1) - } else { - sqlStrs = append(sqlStrs, "INSERT INTO t_player_Friend_Data(dwUin, FriendList) VALUES(?, ?)") - p.IsHaveDataDb = true - t1 := []any{} - t1 = append(t1, p.M_Player.M_DwUin) - t1 = append(t1, sqlStruck.FriendList) - params = append(params, t1) - } - ////////////// - sqlStruck1 := db.SqlFriendStruct{} - sqlStruck1.FriendList = "" - isHave1 := false - if err := db.SqlDb.Get(&sqlStruck1, sqlStr, PlayerId); err != nil { - isHave1 = false - } else { - isHave1 = true - } - atrarr1 := []string{} - - if sqlStruck1.FriendList != "" { - atrarr1 = append(atrarr1, sqlStruck1.FriendList) - } - atrarr1 = append(atrarr1, strconv.Itoa(int(p.M_Player.M_DwUin))) - sqlStruck1.FriendList = strings.Join(atrarr1, "_") - - if isHave1 { - sqlStrs = append(sqlStrs, "UPDATE t_player_Friend_Data SET FriendList = ? WHERE dwUin = ?") - - t1 := []any{} - t1 = append(t1, sqlStruck1.FriendList) - t1 = append(t1, sqlStruck1.DwUin) - params = append(params, t1) - } else { - sqlStrs = append(sqlStrs, "INSERT INTO t_player_Friend_Data(dwUin, FriendList) VALUES(?, ?)") - - t1 := []any{} - t1 = append(t1, PlayerId) - t1 = append(t1, sqlStruck1.FriendList) - params = append(params, t1) - } - err := db.SeriesTransaction(sqlStrs, params) - if err == nil { - finfo := &msg.FriendInfo{} - Profile := G_GameLogicPtr.MPlayerProfileManager.GetPlayerProfile(PlayerId) - DecorateCnt, ActiveTime, FaceBookId := G_GameLogicPtr.MPlayerProfileManager.GetPlayerDecorate(PlayerId) - if Profile != nil { - - finfo.DwUin = Profile.DwUin - finfo.ImageFrame = Profile.ImageFrame - finfo.ImageIcon = Profile.ImageIcon - finfo.NickName = Profile.NickName - finfo.DecorateCnt = int32(DecorateCnt) - finfo.ActiveTime = int32(ActiveTime) - finfo.FaceBookId = FaceBookId - } else { - - finfo.DwUin = PlayerId - finfo.ImageFrame = 1 - finfo.ImageIcon = 1 - finfo.NickName = "Player" + strconv.Itoa(int(PlayerId)) - finfo.DecorateCnt = int32(DecorateCnt) - finfo.ActiveTime = int32(ActiveTime) - finfo.FaceBookId = FaceBookId - - sql := &db.SqlPlayerProfileStruct{} - sql.DwUin = PlayerId - sql.ImageFrame = 1 - sql.ImageIcon = 1 - sql.NickName = "Player" + strconv.Itoa(int(PlayerId)) - sql.PicURL = "" - G_GameLogicPtr.MPlayerProfileManager.UpdateNewProfile(sql) - } - p.Data.FriendInfos = append(p.Data.FriendInfos, finfo) - - player, ok := G_GameLogicPtr.M_Players[PlayerId] - if ok { - if player.GetGameData("PlayerFriendData") != nil { - player.GetIFGameData("PlayerFriendData").(*PlayerFriendData).NotifySuccessInviteAddFriend(p.M_Player.M_DwUin) - } - } - - } - } - agent := p.GetPlayer().GetAgentByPlayer() data, _ := proto.Marshal(res) G_getGameLogic().PackResInfo(agent, "ResAutoAddInviteFriend", data) diff --git a/src/server/game/PlayerFunc.go b/src/server/game/PlayerFunc.go index fbc7642a..bf5fbf67 100644 --- a/src/server/game/PlayerFunc.go +++ b/src/server/game/PlayerFunc.go @@ -42,19 +42,25 @@ func handle(p *Player, m *msg.Msg) error { switch m.Type { case msg.HANDLE_TYPE_DEL, msg.HANDLE_TYPE_APPLY, msg.HADNLE_TYPE_AGREE, msg.HANDLE_TYPE_REQ_CARD: return HandleFriendMsg(p, m) + case msg.HANDLE_TYPE_INVITE_ADD_FRIEND: + FriendMod := p.PlayMod.getFriendMod() + FriendMod.AddFriend(m.From) + p.PlayMod.save() + case msg.HANDLE_TYPE_INVITE_FRIEND: + InviteMod := p.PlayMod.getInviteMod() + InviteMod.AddInvite(m.From) + p.PlayMod.save() + p.PushClientRes(InviteMod.NotifySuccess()) case msg.HANDLE_TYPE_SEND_CARD: // B收到A赠送的卡牌 CardInfo := m.Extra.(*card.CardInfo) FriendMod := p.PlayMod.getFriendMod() FriendMod.SetCardInfo(CardInfo) - p.PushClientRes( &proto.NotifyFriendCard{ Info: GetCardInfoMsg(CardInfo), }, ) - p.PlayMod.save() - case msg.HANDLE_TYPE_AGREE_CARD: // A收到B同意卡牌 CardInfo := m.Extra.(*card.CardInfo) CardMod := p.PlayMod.getCardMod() @@ -70,6 +76,7 @@ func handle(p *Player, m *msg.Msg) error { msg := &msg.Msg{Type: msg.HANDLE_TYPE_REG_CARD_FINISH, From: v} FriendMgrSend(msg) } + p.AddLog(int(p.M_DwUin), friend.LOG_TYPE_CARD_ACCEPT_GIVE, fmt.Sprintf("%d", CardInfo.CardId)) p.PlayMod.save() p.PushClientRes( &proto.NotifyFriendCard{ @@ -97,6 +104,7 @@ func handle(p *Player, m *msg.Msg) error { FriendMod := p.PlayMod.getFriendMod() CardInfo := m.Extra.(*card.CardInfo) FriendMod.SetCardInfo(CardInfo) + p.AddLog(int(p.M_DwUin), friend.LOG_TYPE_CARD_SELECT_GET, fmt.Sprintf("%d", CardInfo.CardId)) p.PlayMod.save() p.PushClientRes( &proto.NotifyFriendCard{ @@ -165,11 +173,11 @@ func HandleServerMsg(p *Player, msg *msg.Msg) error { // 处理好友请求 func HandleFriendMsg(p *Player, m *msg.Msg) error { FriendMod := p.PlayMod.getFriendMod() - FriendMod.HandleMsg(m) PlayerSimpleData := G_GameLogicPtr.GetResSimplePlayerByUid(m.From) switch m.Type { case msg.HANDLE_TYPE_APPLY: // 好友申请 FriendMod.AddFriendApply(m.From) + p.AddLog(m.From, friend.LOG_TYPE_FRIEND_APPLY, "") p.PushClientRes(&proto.ResFriendApplyNotify{ Player: PlayerSimpleData, Type: friend.FRIEND_NOTIFY_APPLY, @@ -180,6 +188,7 @@ func HandleFriendMsg(p *Player, m *msg.Msg) error { Player: PlayerSimpleData, Type: friend.FRIEND_NOTIFY_APPLY, }) + p.AddLog(m.From, friend.LOG_TYPE_FRIEND_BECOME, "") case msg.HANDLE_TYPE_DEL: // 删除好友 FriendMod.DelFriend(m.From) p.PushClientRes(&proto.ResFriendApplyNotify{ @@ -200,6 +209,7 @@ func HandleFriendMsg(p *Player, m *msg.Msg) error { }, ) } + p.PlayMod.save() return nil } @@ -227,16 +237,9 @@ func FriendListBackData(p *Player) { FriendMod := p.PlayMod.getFriendMod() var fl []*proto.ResPlayerSimple for k := range FriendMod.FriendList { - ps := G_GameLogicPtr.GetSimplePlayerByUid(k) + ps := G_GameLogicPtr.GetResSimplePlayerByUid(k) if ps != nil { - fl = append(fl, &proto.ResPlayerSimple{ - Uid: int32(ps.Uid), - Name: ps.Name, - Level: int32(ps.Level), - Avatar: int32(ps.Avatar), - Face: int32(ps.Face), - Decorate: int32(ps.Decorate), - }) + fl = append(fl, ps) } } p.PushClientRes(&proto.ResFriendList{ @@ -248,15 +251,9 @@ func FriendApplyBackData(p *Player) { FriendMod := p.PlayMod.getFriendMod() var al []*proto.ResPlayerSimple for k := range FriendMod.Apply { - ps := G_GameLogicPtr.GetSimplePlayerByUid(k) + ps := G_GameLogicPtr.GetResSimplePlayerByUid(k) if ps != nil { - al = append(al, &proto.ResPlayerSimple{ - Uid: int32(ps.Uid), - Name: ps.Name, - Level: int32(ps.Level), - Avatar: int32(ps.Avatar), - Face: int32(ps.Face), - }) + al = append(al, ps) } } p.PushClientRes(&proto.ResFriendApply{ @@ -268,13 +265,9 @@ func FriendLogBackData(p *Player) { FriendMod := p.PlayMod.getFriendMod() var log []*proto.ResFriendLog for _, v := range FriendMod.Log { - ps := G_GameLogicPtr.GetSimplePlayerByUid(v.Uid) + ps := G_GameLogicPtr.GetResSimplePlayerByUid(v.Uid) log = append(log, &proto.ResFriendLog{ - Uid: int32(v.Uid), - Name: ps.Name, - Face: int32(ps.Face), - Avatar: int32(ps.Avatar), - Level: int32(ps.Level), + Player: ps, Type: int32(v.Type), Time: int32(v.Time), }) diff --git a/src/server/game/PlayerMod.go b/src/server/game/PlayerMod.go index 4df2e189..3a55c27f 100644 --- a/src/server/game/PlayerMod.go +++ b/src/server/game/PlayerMod.go @@ -20,6 +20,7 @@ import ( "server/game/mod/friend" "server/game/mod/guild" "server/game/mod/handbook" + "server/game/mod/invite" "server/game/mod/limitedTimeEvent" "server/game/mod/mail" "server/game/mod/order" @@ -58,6 +59,7 @@ type PlayerModList struct { Endless endless.EndlessMod `json:"endless"` PiggyBank piggyBank.PiggyBankMod `json:"piggyBank"` Champship champship.ChampshipMod `json:"champship"` + Invite invite.InviteMod `json:"invite"` } func (p *PlayerModData) LoadDataFromDB(dwUin interface{}) bool { @@ -140,6 +142,7 @@ func (p *PlayerModData) InitMod() (bool, error) { p.ModList.Mail.InitData() p.ModList.Charge.InitData() p.ModList.Endless.InitData() + p.ModList.Invite.InitData() return is_update, nil } @@ -266,3 +269,7 @@ func (p *PlayerMod) getPiggyBankMod() *piggyBank.PiggyBankMod { func (p *PlayerMod) getChampshipMod() *champship.ChampshipMod { return &p.mod_list.Champship } + +func (p *PlayerMod) getInviteMod() *invite.InviteMod { + return &p.mod_list.Invite +} diff --git a/src/server/game/RegisterNetworkFunc.go b/src/server/game/RegisterNetworkFunc.go index 1f09a741..5040f7ef 100644 --- a/src/server/game/RegisterNetworkFunc.go +++ b/src/server/game/RegisterNetworkFunc.go @@ -9,14 +9,15 @@ import ( "server/db" "server/game/internal" "server/game/mod/card" + "server/game/mod/friend" "server/game/mod/item" "server/game/mod/limitedTimeEvent" MsqMod "server/game/mod/msg" "server/msg" "strconv" - "time" "server/pkg/github.com/name5566/leaf/gate" + "server/pkg/github.com/name5566/leaf/log" "google.golang.org/protobuf/proto" ) @@ -1512,21 +1513,6 @@ func ReqAutoFBAddFriend(args []interface{}) error { return nil } -func ReqAutoAddInviteFriend(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerFriendData") == nil { - data := &PlayerFriendData{PlayerData: NewPlayerData("PlayerFriendData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerFriendData"] = data - player.playerdataIF["PlayerFriendData"] = data - } - } - player.GetIFGameData("PlayerFriendData").(*PlayerFriendData).ReqAutoAddInviteFriend(buf) - return nil -} - func ReqFriendTreasureData(args []interface{}) error { _, player, buf := ParseArgs(args) @@ -1602,51 +1588,6 @@ func ReqDeleteFriendFunc(args []interface{}) error { return nil } -func ReqInviteFriendData(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerFriendData") == nil { - data := &PlayerFriendData{PlayerData: NewPlayerData("PlayerFriendData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerFriendData"] = data - player.playerdataIF["PlayerFriendData"] = data - } - } - player.GetIFGameData("PlayerFriendData").(*PlayerFriendData).ReqInviteFriendData(buf) - return nil -} - -func ReqSelfInvited(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerFriendData") == nil { - data := &PlayerFriendData{PlayerData: NewPlayerData("PlayerFriendData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerFriendData"] = data - player.playerdataIF["PlayerFriendData"] = data - } - } - player.GetIFGameData("PlayerFriendData").(*PlayerFriendData).ReqSelfInvited(buf) - return nil -} - -func ReqGetInviteReward(args []interface{}) error { - _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerFriendData") == nil { - data := &PlayerFriendData{PlayerData: NewPlayerData("PlayerFriendData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerFriendData"] = data - player.playerdataIF["PlayerFriendData"] = data - } - } - player.GetIFGameData("PlayerFriendData").(*PlayerFriendData).ReqGetInviteReward(buf) - return nil -} - func ReqPlayerProfileDataFunc(args []interface{}) error { G_GameLogicPtr.MPlayerProfileManager.ReqPlayerProfileData(args) return nil @@ -2820,6 +2761,7 @@ func ReqAgreeFriend(args []interface{}) error { Uid: req.Uid, Player: G_GameLogicPtr.GetResSimplePlayerByUid(int(req.Uid)), }) + player.AddLog(Uid, friend.LOG_TYPE_FRIEND_BECOME, "") FriendApplyBackData(player) return nil } @@ -2933,6 +2875,7 @@ func ReqCardGive(args []interface{}) error { Type: card.TYPE_CARD_GIVE, Status: card.STATUS_CARD_GIVE_1, } + player.AddLog(Uid, friend.LOG_TYPE_CARD_GIVE, strconv.Itoa(CardId)) err = CardMod.AddRequestCard(CardInfo) // 添加请求卡牌 if err != nil { player.SendErrClienRes(&msg.ResCardGive{ @@ -3054,7 +2997,7 @@ func ReqCardSend(args []interface{}) error { End: GoUtil.Now() + 86400, Extra: CardInfo, } - setRedisLock(CardInfo.Id, "", time.Second*86400) + player.AddLog(int(req.Uid), friend.LOG_TYPE_CARD_SEND, strconv.Itoa(CardId)) player.PushClientRes(&msg.ResCardSend{ Code: msg.RES_CODE_SUCCESS, }) @@ -3087,7 +3030,8 @@ func ReqCardExchange(args []interface{}) error { End: GoUtil.Now() + 86400, Extra: CardInfo, } - setRedisLock(CardInfo.Id, "", time.Second*86400) + player.AddLog(int(req.Uid), friend.LOG_TYPE_CARD_EX_SEND, "") + player.PushClientRes(CardMod.BackData()) player.PushClientRes(&msg.ResCardExchange{ Code: msg.RES_CODE_SUCCESS, @@ -3124,6 +3068,7 @@ func ReqSelectCardExchange(args []interface{}) error { CardInfo.ExId = CardId CardInfo.Status = card.STATUS_CARD_EX_2 FriendMod.SetCardInfo(CardInfo) + player.AddLog(CardInfo.AUid, friend.LOG_TYPE_CARD_SELECT_SEND, fmt.Sprintf("%d", CardInfo.ExId)) err := CardMod.SubCard(CardId) if err != nil { player.SendErrClienRes(&msg.ResSelectCardExchange{ @@ -3167,6 +3112,7 @@ func ReqAgreeCardExchange(args []interface{}) error { CardMod.AddCard(CardInfo.ExId) CardMod.DelExCard(CardInfo) FriendMod.DelCardInfo(req.Id) + player.AddLog(CardInfo.BUid, friend.LOG_TYPE_CARD_EX_SUCCESS_1, fmt.Sprintf("%d_%d", CardInfo.CardId, CardInfo.ExId)) CardInfo.Status = card.STATUS_CARD_EX_3 CardInfo.EndTime = 0 player.PlayMod.save() @@ -3265,8 +3211,10 @@ func ReqGetFriendCard(args []interface{}) error { } FriendMod.DelCardInfo(req.Id) CardMod.AddCard(CardInfo.CardId) + if CardInfo.ExId != 0 { + player.AddLog(CardInfo.BUid, friend.LOG_TYPE_CARD_EX_SUCCESS_2, fmt.Sprintf("%d_%d", CardInfo.ExId, CardInfo.CardId)) + } player.PlayMod.save() - // player.PushClientRes(CardMod.BackData()) player.PushClientRes(&msg.ResGetFriendCard{ Code: msg.RES_CODE_SUCCESS, }) @@ -3763,3 +3711,77 @@ func ReqMasterCard(args []interface{}) error { player.PushClientRes(CardMod.NotifyCard()) return nil } + +func ReqSetFacebookUrl(args []interface{}) error { + _, player, buf := ParseArgs(args) + req := &msg.ReqSetFacebookUrl{} + proto.Unmarshal(buf, req) + BaseMod := player.PlayMod.getBaseMod() + BaseMod.SetFacebookUrl(req.Url) + player.PlayMod.save() + player.PushClientRes(&msg.ResSetFacebookUrl{ + Code: msg.RES_CODE_SUCCESS, + }) + return nil +} + +func ReqInviteFriendData(args []interface{}) error { + _, player, _ := ParseArgs(args) + InviteMod := player.PlayMod.getInviteMod() + player.PushClientRes(InviteMod.BackData()) + return nil +} + +func ReqSelfInvited(args []interface{}) error { + _, player, buf := ParseArgs(args) + req := &msg.ReqSelfInvited{} + proto.Unmarshal(buf, req) + G_GameLogicPtr.FriendMgrSend(&MsqMod.Msg{ + Type: MsqMod.HANDLE_TYPE_INVITE_FRIEND, + From: int(player.M_DwUin), + To: int(req.InviterId), + }) + player.PushClientRes(&msg.ResSelfInvited{ + ResultCode: 1, + }) + return nil +} + +func ReqGetInviteReward(args []interface{}) error { + _, player, buf := ParseArgs(args) + req := &msg.ReqGetInviteReward{} + proto.Unmarshal(buf, req) + InviteMod := player.PlayMod.getInviteMod() + Items, err := InviteMod.GetReward() + if err != nil { + log.Debug("ReqGetInviteReward err :%v", err) + return err + } + err = player.HandleItem(Items, "invite") + if err != nil { + log.Debug("ReqGetInviteReward err :%v", err) + return err + } + player.PlayMod.save() + player.PushClientRes(&msg.ResGetInviteReward{ + ResultCode: 1, + }) + return nil +} + +func ReqAutoAddInviteFriend(args []interface{}) error { + _, player, buf := ParseArgs(args) + + req := &msg.ReqAutoAddInviteFriend{} + proto.Unmarshal(buf, req) + FriendMod := player.PlayMod.getFriendMod() + FriendMod.AddFriend(int(req.Id)) + player.PlayMod.save() + player.PushClientRes(&msg.ResAutoAddInviteFriend{ + ResultCode: 1, + }) + G_GameLogicPtr.FriendMgrSend(&MsqMod.Msg{ + Type: MsqMod.HANDLE_TYPE_INVITE_ADD_FRIEND, + }) + return nil +} diff --git a/src/server/game/ServerMod.go b/src/server/game/ServerMod.go index fe4c50b2..b1bde534 100644 --- a/src/server/game/ServerMod.go +++ b/src/server/game/ServerMod.go @@ -135,6 +135,7 @@ func (s *ServerMod) SaveData() { if err != nil { log.Debug("SaveData Marshal failed,Mod Key: %s err:%v", s.key, err) } + log.Debug("SaveData Marshal success,Mod Key: %s", s.key) err = db.SaveServerData(&DbData) if err != nil { log.Debug("SaveData sql exec ,Mod Key: %s err:%v", s.key, err) diff --git a/src/server/game/mod/base/Base.go b/src/server/game/mod/base/Base.go index ddc228ac..98dcaba4 100644 --- a/src/server/game/mod/base/Base.go +++ b/src/server/game/mod/base/Base.go @@ -11,10 +11,11 @@ const ( ) type Base struct { - EnergyMul int - IsFirstBuy bool - EnergyBuy int - NickName string + EnergyMul int + IsFirstBuy bool + EnergyBuy int + NickName string + FacebookUrl string } func (b *Base) InitData() { @@ -23,6 +24,14 @@ func (b *Base) InitData() { // b.EnergyBuy = 0 } +func (b *Base) GetNickName() string { + return b.NickName +} + +func (b *Base) GetFacebookUrl() string { + return b.FacebookUrl +} + func (b *Base) GetEnergyMul() int { return b.EnergyMul } @@ -39,6 +48,10 @@ func (b *Base) GetIsFirstBuy() bool { return b.IsFirstBuy } +func (b *Base) SetFacebookUrl(Url string) { + b.FacebookUrl = Url +} + func (b *Base) BuyEnergy(Energy int) []*item.Item { if !b.IsFirstBuy { b.IsFirstBuy = true diff --git a/src/server/game/mod/friend/Friend.go b/src/server/game/mod/friend/Friend.go index 0d150fb5..4e450ec1 100644 --- a/src/server/game/mod/friend/Friend.go +++ b/src/server/game/mod/friend/Friend.go @@ -3,7 +3,6 @@ package friend import ( "server/GoUtil" "server/game/mod/card" - "server/game/mod/msg" ) type FriendMod struct { @@ -11,11 +10,21 @@ type FriendMod struct { Apply map[int]struct{} // 请求列表 Card map[string]*card.CardInfo // 收到的申请交换 Log []*LogInfo // 日志 + AutoId int } const ( - LOG_TYPE_ADD = 1 - LOG_TYPE_DEL = 2 + LOG_TYPE_FRIEND_APPLY = 1 // 收到申请好友 + LOG_TYPE_FRIEND_BECOME = 2 // 成为好友 + LOG_TYPE_CARD_EX_SEND = 3 // 发起卡牌交换申请 + LOG_TYPE_CARD_SEND = 4 // 赠送卡牌 + LOG_TYPE_CARD_GIVE = 5 // 请求卡牌 + LOG_TYPE_CARD_SELECT_GET = 6 // 选择卡牌交换 + LOG_TYPE_CARD_ACCEPT_GIVE = 7 // 接受卡牌 + LOG_TYPE_CARD_EX_GET = 8 // 收到卡牌交换申请 + LOG_TYPE_CARD_SELECT_SEND = 9 // 选择卡牌交换 + LOG_TYPE_CARD_EX_SUCCESS_1 = 10 // 卡牌交换成功 + LOG_TYPE_CARD_EX_SUCCESS_2 = 11 // 卡牌交换成功 ) const ( @@ -26,9 +35,11 @@ const ( ) type LogInfo struct { - Uid int - Type int - Time int64 + Id int + Uid int + Type int + Time int64 + Param string } func (f *FriendMod) InitData() { @@ -46,7 +57,6 @@ func (f *FriendMod) InitData() { func (f *FriendMod) AddFriend(id int) { f.FriendList[id] = struct{}{} delete(f.Apply, id) - f.Log = append(f.Log, &LogInfo{Uid: id, Type: LOG_TYPE_ADD, Time: GoUtil.Now()}) } func (f *FriendMod) GetCardInfo(Id string) *card.CardInfo { @@ -67,7 +77,6 @@ func (f *FriendMod) DelCardInfo(Id string) { func (f *FriendMod) DelFriend(id int) { delete(f.FriendList, id) - f.Log = append(f.Log, &LogInfo{Uid: id, Type: LOG_TYPE_ADD, Time: GoUtil.Now()}) } func (f *FriendMod) CheckFriend(Uid int) bool { @@ -79,31 +88,28 @@ func (f *FriendMod) RefuseApply(id int) { delete(f.Apply, id) } -func (f *FriendMod) HandleMsg(m *msg.Msg) { - switch m.Type { - case msg.HANDLE_TYPE_APPLY: - f.Apply[m.From] = struct{}{} - case msg.HADNLE_TYPE_AGREE: - f.AddFriend(m.From) - delete(f.Apply, m.From) - case msg.HANDLE_TYPE_DEL: - delete(f.FriendList, m.From) - case msg.HANDLE_TYPE_REQ_CARD: - CardInfo := m.Extra.(*card.CardInfo) - f.SetCardInfo(CardInfo) - } -} - func (f *FriendMod) CheckApply(id int) bool { _, ok := f.Apply[id] return ok } -func (f *FriendMod) AddFriendApply(UId int) { - f.Apply[UId] = struct{}{} +func (f *FriendMod) AddFriendApply(Uid int) { + f.Apply[Uid] = struct{}{} } func (f *FriendMod) AgreeApply(UId int) { f.AddFriend(UId) delete(f.Apply, UId) } + +func (f *FriendMod) AddLog(Uid, Type int, Param string) int { + f.AutoId++ + f.Log = append(f.Log, &LogInfo{ + Id: f.AutoId, + Uid: Uid, + Type: Type, + Time: GoUtil.Now(), + Param: Param, + }) + return f.AutoId +} diff --git a/src/server/game/mod/invite/invite.go b/src/server/game/mod/invite/invite.go new file mode 100644 index 00000000..bbe62354 --- /dev/null +++ b/src/server/game/mod/invite/invite.go @@ -0,0 +1,50 @@ +package invite + +import ( + "fmt" + "server/GoUtil" + inviteCfg "server/conf/invite" + "server/game/mod/item" + "server/msg" +) + +type InviteMod struct { + InviteList map[int]struct{} // 邀请列表 + GetIndex int +} + +func (i *InviteMod) InitData() { + if i.InviteList == nil { + i.InviteList = make(map[int]struct{}) + } +} + +func (i *InviteMod) AddInvite(id int) { + i.InviteList[id] = struct{}{} +} + +func (i *InviteMod) GetReward() ([]*item.Item, error) { + i.GetIndex++ + Need, Reward := inviteCfg.GetInviteReward(i.GetIndex) + if Need == 0 { + return nil, fmt.Errorf("invite reward not found") + } + if len(i.InviteList) < Need { + return nil, fmt.Errorf("invite not enough") + } + return Reward, nil +} + +func (i *InviteMod) BackData() *msg.ResInviteFriendData { + return &msg.ResInviteFriendData{ + IdLists: GoUtil.MapIntToSlice(i.InviteList), + GetIndex: int32(i.GetIndex), + } +} + +func (i *InviteMod) NotifySuccess() *msg.NotifyInvitedSuccess { + return &msg.NotifyInvitedSuccess{ + ResultCode: 1, + IdLists: GoUtil.MapIntToSlice(i.InviteList), + } +} diff --git a/src/server/game/mod/limitedTimeEvent/LimitedTimeEvent.go b/src/server/game/mod/limitedTimeEvent/LimitedTimeEvent.go index 62ed4748..76737739 100644 --- a/src/server/game/mod/limitedTimeEvent/LimitedTimeEvent.go +++ b/src/server/game/mod/limitedTimeEvent/LimitedTimeEvent.go @@ -48,6 +48,9 @@ func (l *LimitedTimeEventMod) InitData() { if l.Triggered == nil { l.Triggered = make(map[int]struct{}) } + if l.ProgressReward == nil { + l.ProgressReward = make(map[int]int) + } } // 判断限时事件是否存在 @@ -203,6 +206,9 @@ func (l *LimitedTimeEventMod) GetFastProduceReward(Energy int) ([]*item.Item, er // 增加进度 func (l *LimitedTimeEventMod) AddProgress(Lv int) { + if Lv < 4 { + return + } l.Progress++ ProgressMax := limitedTimeEventCfg.GetProgressMax() if l.Progress >= ProgressMax { diff --git a/src/server/game/mod/msg/Msg.go b/src/server/game/mod/msg/Msg.go index 16807204..2c69828b 100644 --- a/src/server/game/mod/msg/Msg.go +++ b/src/server/game/mod/msg/Msg.go @@ -34,6 +34,9 @@ const ( HANDLE_TYPE_REFUSE_EX_CARD = 11 //A拒绝置换卡牌 HANDLE_TYPE_SEND_CARD = 15 //赠送卡牌 + + HANDLE_TYPE_INVITE_FRIEND = 16 //邀请好友 + HANDLE_TYPE_INVITE_ADD_FRIEND = 17 //自动添加好友 // 榜单操作 HANDLE_TYPE_RANK = 101 //榜单操作 HANDLE_TYPE_RANK_INFO = 102 //榜单信息 diff --git a/src/server/go.mod b/src/server/go.mod index fc2508b0..54641615 100644 --- a/src/server/go.mod +++ b/src/server/go.mod @@ -16,9 +16,12 @@ require ( require ( filippo.io/edwards25519 v1.1.0 // indirect + github.com/ThinkingDataAnalytics/go-sdk v1.7.0 // indirect + github.com/ThinkingDataAnalytics/go-sdk/v2 v2.0.3 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect github.com/google/go-cmp v0.6.0 // indirect + github.com/google/uuid v1.3.1 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v2 v2.4.0 // indirect ) diff --git a/src/server/go.sum b/src/server/go.sum index aa251831..3b019f4e 100644 --- a/src/server/go.sum +++ b/src/server/go.sum @@ -1,5 +1,9 @@ filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= +github.com/ThinkingDataAnalytics/go-sdk v1.7.0 h1:UN1zj5pr4JRipSfaKDKfHpS7pRTACECh3Ta5mmR5SCE= +github.com/ThinkingDataAnalytics/go-sdk v1.7.0/go.mod h1:LBEHgQysXYqY0aewUoWCMocxK5UM3kTQa7F6tcm7ZJ0= +github.com/ThinkingDataAnalytics/go-sdk/v2 v2.0.3 h1:+2h2cOKzZgP8DmtuvkmUhOs5WfyseFTc0KLNR3EU2eA= +github.com/ThinkingDataAnalytics/go-sdk/v2 v2.0.3/go.mod h1:uhiHUKG8fMwf4Ou3186EBBagFrBdAsAA5GHiLMWQN2A= github.com/bsm/ginkgo/v2 v2.12.0 h1:Ny8MWAHyOepLGlLKYmXG4IEkioBysk6GpaRTLC8zwWs= github.com/bsm/ginkgo/v2 v2.12.0/go.mod h1:SwYbGRRDovPVboqFv0tPTcG1sN61LM1Z4ARdbAV9g4c= github.com/bsm/gomega v1.27.10 h1:yeMWxP2pV2fG3FgAODIY8EiRE3dy0aeFYt4l7wh6yKA= @@ -12,6 +16,9 @@ github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpv github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= +github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= diff --git a/src/server/msg/Gameapi.pb.go b/src/server/msg/Gameapi.pb.go index 932be204..0db2684f 100644 --- a/src/server/msg/Gameapi.pb.go +++ b/src/server/msg/Gameapi.pb.go @@ -228,7 +228,7 @@ func (x UseItemResponse_CODE) Number() protoreflect.EnumNumber { // Deprecated: Use UseItemResponse_CODE.Descriptor instead. func (UseItemResponse_CODE) EnumDescriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{379, 0} + return file_Gameapi_proto_rawDescGZIP(), []int{370, 0} } type ClientReq struct { @@ -17047,96 +17047,6 @@ func (x *ResAutoFBAddFriend) GetResultCode() int32 { return 0 } -type ReqAutoAddInviteFriend struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Ids []string `protobuf:"bytes,1,rep,name=Ids,proto3" json:"Ids,omitempty"` -} - -func (x *ReqAutoAddInviteFriend) Reset() { - *x = ReqAutoAddInviteFriend{} - mi := &file_Gameapi_proto_msgTypes[279] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ReqAutoAddInviteFriend) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ReqAutoAddInviteFriend) ProtoMessage() {} - -func (x *ReqAutoAddInviteFriend) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[279] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ReqAutoAddInviteFriend.ProtoReflect.Descriptor instead. -func (*ReqAutoAddInviteFriend) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{279} -} - -func (x *ReqAutoAddInviteFriend) GetIds() []string { - if x != nil { - return x.Ids - } - return nil -} - -type ResAutoAddInviteFriend struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ResultCode int32 `protobuf:"varint,1,opt,name=ResultCode,proto3" json:"ResultCode,omitempty"` -} - -func (x *ResAutoAddInviteFriend) Reset() { - *x = ResAutoAddInviteFriend{} - mi := &file_Gameapi_proto_msgTypes[280] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ResAutoAddInviteFriend) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ResAutoAddInviteFriend) ProtoMessage() {} - -func (x *ResAutoAddInviteFriend) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[280] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ResAutoAddInviteFriend.ProtoReflect.Descriptor instead. -func (*ResAutoAddInviteFriend) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{280} -} - -func (x *ResAutoAddInviteFriend) GetResultCode() int32 { - if x != nil { - return x.ResultCode - } - return 0 -} - type NotifySuccessInviteAddFriend struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -17147,7 +17057,7 @@ type NotifySuccessInviteAddFriend struct { func (x *NotifySuccessInviteAddFriend) Reset() { *x = NotifySuccessInviteAddFriend{} - mi := &file_Gameapi_proto_msgTypes[281] + mi := &file_Gameapi_proto_msgTypes[279] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17159,7 +17069,7 @@ func (x *NotifySuccessInviteAddFriend) String() string { func (*NotifySuccessInviteAddFriend) ProtoMessage() {} func (x *NotifySuccessInviteAddFriend) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[281] + mi := &file_Gameapi_proto_msgTypes[279] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17172,7 +17082,7 @@ func (x *NotifySuccessInviteAddFriend) ProtoReflect() protoreflect.Message { // Deprecated: Use NotifySuccessInviteAddFriend.ProtoReflect.Descriptor instead. func (*NotifySuccessInviteAddFriend) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{281} + return file_Gameapi_proto_rawDescGZIP(), []int{279} } func (x *NotifySuccessInviteAddFriend) GetData() *FriendInfo { @@ -17192,7 +17102,7 @@ type NotifySuccessFBAddFriend struct { func (x *NotifySuccessFBAddFriend) Reset() { *x = NotifySuccessFBAddFriend{} - mi := &file_Gameapi_proto_msgTypes[282] + mi := &file_Gameapi_proto_msgTypes[280] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17204,7 +17114,7 @@ func (x *NotifySuccessFBAddFriend) String() string { func (*NotifySuccessFBAddFriend) ProtoMessage() {} func (x *NotifySuccessFBAddFriend) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[282] + mi := &file_Gameapi_proto_msgTypes[280] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17217,7 +17127,7 @@ func (x *NotifySuccessFBAddFriend) ProtoReflect() protoreflect.Message { // Deprecated: Use NotifySuccessFBAddFriend.ProtoReflect.Descriptor instead. func (*NotifySuccessFBAddFriend) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{282} + return file_Gameapi_proto_rawDescGZIP(), []int{280} } func (x *NotifySuccessFBAddFriend) GetData() *FriendInfo { @@ -17239,7 +17149,7 @@ type ReqRecommendFriendList struct { func (x *ReqRecommendFriendList) Reset() { *x = ReqRecommendFriendList{} - mi := &file_Gameapi_proto_msgTypes[283] + mi := &file_Gameapi_proto_msgTypes[281] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17251,7 +17161,7 @@ func (x *ReqRecommendFriendList) String() string { func (*ReqRecommendFriendList) ProtoMessage() {} func (x *ReqRecommendFriendList) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[283] + mi := &file_Gameapi_proto_msgTypes[281] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17264,7 +17174,7 @@ func (x *ReqRecommendFriendList) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqRecommendFriendList.ProtoReflect.Descriptor instead. func (*ReqRecommendFriendList) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{283} + return file_Gameapi_proto_rawDescGZIP(), []int{281} } func (x *ReqRecommendFriendList) GetRecommendCnt() int32 { @@ -17292,7 +17202,7 @@ type ResRecommendFriendList struct { func (x *ResRecommendFriendList) Reset() { *x = ResRecommendFriendList{} - mi := &file_Gameapi_proto_msgTypes[284] + mi := &file_Gameapi_proto_msgTypes[282] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17304,7 +17214,7 @@ func (x *ResRecommendFriendList) String() string { func (*ResRecommendFriendList) ProtoMessage() {} func (x *ResRecommendFriendList) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[284] + mi := &file_Gameapi_proto_msgTypes[282] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17317,7 +17227,7 @@ func (x *ResRecommendFriendList) ProtoReflect() protoreflect.Message { // Deprecated: Use ResRecommendFriendList.ProtoReflect.Descriptor instead. func (*ResRecommendFriendList) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{284} + return file_Gameapi_proto_rawDescGZIP(), []int{282} } func (x *ResRecommendFriendList) GetPlayerInfos() []*FriendInfo { @@ -17327,346 +17237,6 @@ func (x *ResRecommendFriendList) GetPlayerInfos() []*FriendInfo { return nil } -// / -type ReqInviteFriendData struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - DwUin int32 `protobuf:"varint,1,opt,name=dwUin,proto3" json:"dwUin,omitempty"` -} - -func (x *ReqInviteFriendData) Reset() { - *x = ReqInviteFriendData{} - mi := &file_Gameapi_proto_msgTypes[285] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ReqInviteFriendData) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ReqInviteFriendData) ProtoMessage() {} - -func (x *ReqInviteFriendData) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[285] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ReqInviteFriendData.ProtoReflect.Descriptor instead. -func (*ReqInviteFriendData) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{285} -} - -func (x *ReqInviteFriendData) GetDwUin() int32 { - if x != nil { - return x.DwUin - } - return 0 -} - -type ResInviteFriendData struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - IdLists []int32 `protobuf:"varint,1,rep,packed,name=IdLists,proto3" json:"IdLists,omitempty"` - GetIndex int32 `protobuf:"varint,2,opt,name=GetIndex,proto3" json:"GetIndex,omitempty"` -} - -func (x *ResInviteFriendData) Reset() { - *x = ResInviteFriendData{} - mi := &file_Gameapi_proto_msgTypes[286] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ResInviteFriendData) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ResInviteFriendData) ProtoMessage() {} - -func (x *ResInviteFriendData) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[286] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ResInviteFriendData.ProtoReflect.Descriptor instead. -func (*ResInviteFriendData) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{286} -} - -func (x *ResInviteFriendData) GetIdLists() []int32 { - if x != nil { - return x.IdLists - } - return nil -} - -func (x *ResInviteFriendData) GetGetIndex() int32 { - if x != nil { - return x.GetIndex - } - return 0 -} - -type ReqSelfInvited struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - InviterId int32 `protobuf:"varint,1,opt,name=InviterId,proto3" json:"InviterId,omitempty"` -} - -func (x *ReqSelfInvited) Reset() { - *x = ReqSelfInvited{} - mi := &file_Gameapi_proto_msgTypes[287] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ReqSelfInvited) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ReqSelfInvited) ProtoMessage() {} - -func (x *ReqSelfInvited) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[287] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ReqSelfInvited.ProtoReflect.Descriptor instead. -func (*ReqSelfInvited) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{287} -} - -func (x *ReqSelfInvited) GetInviterId() int32 { - if x != nil { - return x.InviterId - } - return 0 -} - -type ResSelfInvited struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ResultCode int32 `protobuf:"varint,1,opt,name=ResultCode,proto3" json:"ResultCode,omitempty"` - IdLists []int32 `protobuf:"varint,2,rep,packed,name=IdLists,proto3" json:"IdLists,omitempty"` -} - -func (x *ResSelfInvited) Reset() { - *x = ResSelfInvited{} - mi := &file_Gameapi_proto_msgTypes[288] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ResSelfInvited) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ResSelfInvited) ProtoMessage() {} - -func (x *ResSelfInvited) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[288] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ResSelfInvited.ProtoReflect.Descriptor instead. -func (*ResSelfInvited) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{288} -} - -func (x *ResSelfInvited) GetResultCode() int32 { - if x != nil { - return x.ResultCode - } - return 0 -} - -func (x *ResSelfInvited) GetIdLists() []int32 { - if x != nil { - return x.IdLists - } - return nil -} - -type NotifyInvitedSuccess struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ResultCode int32 `protobuf:"varint,1,opt,name=ResultCode,proto3" json:"ResultCode,omitempty"` - IdLists []int32 `protobuf:"varint,2,rep,packed,name=IdLists,proto3" json:"IdLists,omitempty"` -} - -func (x *NotifyInvitedSuccess) Reset() { - *x = NotifyInvitedSuccess{} - mi := &file_Gameapi_proto_msgTypes[289] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *NotifyInvitedSuccess) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*NotifyInvitedSuccess) ProtoMessage() {} - -func (x *NotifyInvitedSuccess) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[289] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use NotifyInvitedSuccess.ProtoReflect.Descriptor instead. -func (*NotifyInvitedSuccess) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{289} -} - -func (x *NotifyInvitedSuccess) GetResultCode() int32 { - if x != nil { - return x.ResultCode - } - return 0 -} - -func (x *NotifyInvitedSuccess) GetIdLists() []int32 { - if x != nil { - return x.IdLists - } - return nil -} - -type ReqGetInviteReward struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - GetIndex int32 `protobuf:"varint,1,opt,name=GetIndex,proto3" json:"GetIndex,omitempty"` -} - -func (x *ReqGetInviteReward) Reset() { - *x = ReqGetInviteReward{} - mi := &file_Gameapi_proto_msgTypes[290] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ReqGetInviteReward) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ReqGetInviteReward) ProtoMessage() {} - -func (x *ReqGetInviteReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[290] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ReqGetInviteReward.ProtoReflect.Descriptor instead. -func (*ReqGetInviteReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{290} -} - -func (x *ReqGetInviteReward) GetGetIndex() int32 { - if x != nil { - return x.GetIndex - } - return 0 -} - -type ResGetInviteReward struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ResultCode int32 `protobuf:"varint,1,opt,name=ResultCode,proto3" json:"ResultCode,omitempty"` -} - -func (x *ResGetInviteReward) Reset() { - *x = ResGetInviteReward{} - mi := &file_Gameapi_proto_msgTypes[291] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ResGetInviteReward) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ResGetInviteReward) ProtoMessage() {} - -func (x *ResGetInviteReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[291] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ResGetInviteReward.ProtoReflect.Descriptor instead. -func (*ResGetInviteReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{291} -} - -func (x *ResGetInviteReward) GetResultCode() int32 { - if x != nil { - return x.ResultCode - } - return 0 -} - // / type ReqFriendTreasureData struct { state protoimpl.MessageState @@ -17678,7 +17248,7 @@ type ReqFriendTreasureData struct { func (x *ReqFriendTreasureData) Reset() { *x = ReqFriendTreasureData{} - mi := &file_Gameapi_proto_msgTypes[292] + mi := &file_Gameapi_proto_msgTypes[283] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17690,7 +17260,7 @@ func (x *ReqFriendTreasureData) String() string { func (*ReqFriendTreasureData) ProtoMessage() {} func (x *ReqFriendTreasureData) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[292] + mi := &file_Gameapi_proto_msgTypes[283] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17703,7 +17273,7 @@ func (x *ReqFriendTreasureData) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqFriendTreasureData.ProtoReflect.Descriptor instead. func (*ReqFriendTreasureData) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{292} + return file_Gameapi_proto_rawDescGZIP(), []int{283} } func (x *ReqFriendTreasureData) GetDwUin() int32 { @@ -17723,7 +17293,7 @@ type ResFriendTreasureData struct { func (x *ResFriendTreasureData) Reset() { *x = ResFriendTreasureData{} - mi := &file_Gameapi_proto_msgTypes[293] + mi := &file_Gameapi_proto_msgTypes[284] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17735,7 +17305,7 @@ func (x *ResFriendTreasureData) String() string { func (*ResFriendTreasureData) ProtoMessage() {} func (x *ResFriendTreasureData) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[293] + mi := &file_Gameapi_proto_msgTypes[284] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17748,7 +17318,7 @@ func (x *ResFriendTreasureData) ProtoReflect() protoreflect.Message { // Deprecated: Use ResFriendTreasureData.ProtoReflect.Descriptor instead. func (*ResFriendTreasureData) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{293} + return file_Gameapi_proto_rawDescGZIP(), []int{284} } func (x *ResFriendTreasureData) GetStar() int32 { @@ -17768,7 +17338,7 @@ type ReqUpdateFriendStar struct { func (x *ReqUpdateFriendStar) Reset() { *x = ReqUpdateFriendStar{} - mi := &file_Gameapi_proto_msgTypes[294] + mi := &file_Gameapi_proto_msgTypes[285] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17780,7 +17350,7 @@ func (x *ReqUpdateFriendStar) String() string { func (*ReqUpdateFriendStar) ProtoMessage() {} func (x *ReqUpdateFriendStar) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[294] + mi := &file_Gameapi_proto_msgTypes[285] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17793,7 +17363,7 @@ func (x *ReqUpdateFriendStar) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqUpdateFriendStar.ProtoReflect.Descriptor instead. func (*ReqUpdateFriendStar) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{294} + return file_Gameapi_proto_rawDescGZIP(), []int{285} } func (x *ReqUpdateFriendStar) GetStar() int32 { @@ -17813,7 +17383,7 @@ type ResUpdateFriendStar struct { func (x *ResUpdateFriendStar) Reset() { *x = ResUpdateFriendStar{} - mi := &file_Gameapi_proto_msgTypes[295] + mi := &file_Gameapi_proto_msgTypes[286] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17825,7 +17395,7 @@ func (x *ResUpdateFriendStar) String() string { func (*ResUpdateFriendStar) ProtoMessage() {} func (x *ResUpdateFriendStar) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[295] + mi := &file_Gameapi_proto_msgTypes[286] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17838,7 +17408,7 @@ func (x *ResUpdateFriendStar) ProtoReflect() protoreflect.Message { // Deprecated: Use ResUpdateFriendStar.ProtoReflect.Descriptor instead. func (*ResUpdateFriendStar) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{295} + return file_Gameapi_proto_rawDescGZIP(), []int{286} } func (x *ResUpdateFriendStar) GetStar() int32 { @@ -17858,7 +17428,7 @@ type NotifyFriendTreasureStar struct { func (x *NotifyFriendTreasureStar) Reset() { *x = NotifyFriendTreasureStar{} - mi := &file_Gameapi_proto_msgTypes[296] + mi := &file_Gameapi_proto_msgTypes[287] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17870,7 +17440,7 @@ func (x *NotifyFriendTreasureStar) String() string { func (*NotifyFriendTreasureStar) ProtoMessage() {} func (x *NotifyFriendTreasureStar) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[296] + mi := &file_Gameapi_proto_msgTypes[287] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17883,7 +17453,7 @@ func (x *NotifyFriendTreasureStar) ProtoReflect() protoreflect.Message { // Deprecated: Use NotifyFriendTreasureStar.ProtoReflect.Descriptor instead. func (*NotifyFriendTreasureStar) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{296} + return file_Gameapi_proto_rawDescGZIP(), []int{287} } func (x *NotifyFriendTreasureStar) GetStar() int32 { @@ -17912,7 +17482,7 @@ type ExchangeCardItem struct { func (x *ExchangeCardItem) Reset() { *x = ExchangeCardItem{} - mi := &file_Gameapi_proto_msgTypes[297] + mi := &file_Gameapi_proto_msgTypes[288] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17924,7 +17494,7 @@ func (x *ExchangeCardItem) String() string { func (*ExchangeCardItem) ProtoMessage() {} func (x *ExchangeCardItem) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[297] + mi := &file_Gameapi_proto_msgTypes[288] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17937,7 +17507,7 @@ func (x *ExchangeCardItem) ProtoReflect() protoreflect.Message { // Deprecated: Use ExchangeCardItem.ProtoReflect.Descriptor instead. func (*ExchangeCardItem) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{297} + return file_Gameapi_proto_rawDescGZIP(), []int{288} } func (x *ExchangeCardItem) GetSenderId() int32 { @@ -18013,7 +17583,7 @@ type ReqExchangeCardBoxData struct { func (x *ReqExchangeCardBoxData) Reset() { *x = ReqExchangeCardBoxData{} - mi := &file_Gameapi_proto_msgTypes[298] + mi := &file_Gameapi_proto_msgTypes[289] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18025,7 +17595,7 @@ func (x *ReqExchangeCardBoxData) String() string { func (*ReqExchangeCardBoxData) ProtoMessage() {} func (x *ReqExchangeCardBoxData) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[298] + mi := &file_Gameapi_proto_msgTypes[289] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18038,7 +17608,7 @@ func (x *ReqExchangeCardBoxData) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqExchangeCardBoxData.ProtoReflect.Descriptor instead. func (*ReqExchangeCardBoxData) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{298} + return file_Gameapi_proto_rawDescGZIP(), []int{289} } func (x *ReqExchangeCardBoxData) GetDwUin() int32 { @@ -18059,7 +17629,7 @@ type ResExchangeCardBoxData struct { func (x *ResExchangeCardBoxData) Reset() { *x = ResExchangeCardBoxData{} - mi := &file_Gameapi_proto_msgTypes[299] + mi := &file_Gameapi_proto_msgTypes[290] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18071,7 +17641,7 @@ func (x *ResExchangeCardBoxData) String() string { func (*ResExchangeCardBoxData) ProtoMessage() {} func (x *ResExchangeCardBoxData) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[299] + mi := &file_Gameapi_proto_msgTypes[290] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18084,7 +17654,7 @@ func (x *ResExchangeCardBoxData) ProtoReflect() protoreflect.Message { // Deprecated: Use ResExchangeCardBoxData.ProtoReflect.Descriptor instead. func (*ResExchangeCardBoxData) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{299} + return file_Gameapi_proto_rawDescGZIP(), []int{290} } func (x *ResExchangeCardBoxData) GetDwUin() int32 { @@ -18114,7 +17684,7 @@ type NotifyCardDailyRenew struct { func (x *NotifyCardDailyRenew) Reset() { *x = NotifyCardDailyRenew{} - mi := &file_Gameapi_proto_msgTypes[300] + mi := &file_Gameapi_proto_msgTypes[291] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18126,7 +17696,7 @@ func (x *NotifyCardDailyRenew) String() string { func (*NotifyCardDailyRenew) ProtoMessage() {} func (x *NotifyCardDailyRenew) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[300] + mi := &file_Gameapi_proto_msgTypes[291] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18139,7 +17709,7 @@ func (x *NotifyCardDailyRenew) ProtoReflect() protoreflect.Message { // Deprecated: Use NotifyCardDailyRenew.ProtoReflect.Descriptor instead. func (*NotifyCardDailyRenew) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{300} + return file_Gameapi_proto_rawDescGZIP(), []int{291} } func (x *NotifyCardDailyRenew) GetActiveID() int32 { @@ -18183,7 +17753,7 @@ type ReqDonateFriendCard struct { func (x *ReqDonateFriendCard) Reset() { *x = ReqDonateFriendCard{} - mi := &file_Gameapi_proto_msgTypes[301] + mi := &file_Gameapi_proto_msgTypes[292] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18195,7 +17765,7 @@ func (x *ReqDonateFriendCard) String() string { func (*ReqDonateFriendCard) ProtoMessage() {} func (x *ReqDonateFriendCard) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[301] + mi := &file_Gameapi_proto_msgTypes[292] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18208,7 +17778,7 @@ func (x *ReqDonateFriendCard) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqDonateFriendCard.ProtoReflect.Descriptor instead. func (*ReqDonateFriendCard) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{301} + return file_Gameapi_proto_rawDescGZIP(), []int{292} } func (x *ReqDonateFriendCard) GetSenderId() int32 { @@ -18250,7 +17820,7 @@ type ResDonateFriendCard struct { func (x *ResDonateFriendCard) Reset() { *x = ResDonateFriendCard{} - mi := &file_Gameapi_proto_msgTypes[302] + mi := &file_Gameapi_proto_msgTypes[293] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18262,7 +17832,7 @@ func (x *ResDonateFriendCard) String() string { func (*ResDonateFriendCard) ProtoMessage() {} func (x *ResDonateFriendCard) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[302] + mi := &file_Gameapi_proto_msgTypes[293] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18275,7 +17845,7 @@ func (x *ResDonateFriendCard) ProtoReflect() protoreflect.Message { // Deprecated: Use ResDonateFriendCard.ProtoReflect.Descriptor instead. func (*ResDonateFriendCard) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{302} + return file_Gameapi_proto_rawDescGZIP(), []int{293} } func (x *ResDonateFriendCard) GetMExchangeCardItem() *ExchangeCardItem { @@ -18302,7 +17872,7 @@ type NotifyDonateFriendCard struct { func (x *NotifyDonateFriendCard) Reset() { *x = NotifyDonateFriendCard{} - mi := &file_Gameapi_proto_msgTypes[303] + mi := &file_Gameapi_proto_msgTypes[294] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18314,7 +17884,7 @@ func (x *NotifyDonateFriendCard) String() string { func (*NotifyDonateFriendCard) ProtoMessage() {} func (x *NotifyDonateFriendCard) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[303] + mi := &file_Gameapi_proto_msgTypes[294] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18327,7 +17897,7 @@ func (x *NotifyDonateFriendCard) ProtoReflect() protoreflect.Message { // Deprecated: Use NotifyDonateFriendCard.ProtoReflect.Descriptor instead. func (*NotifyDonateFriendCard) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{303} + return file_Gameapi_proto_rawDescGZIP(), []int{294} } func (x *NotifyDonateFriendCard) GetMExchangeCardItem() *ExchangeCardItem { @@ -18347,7 +17917,7 @@ type ReqGetDonateCard struct { func (x *ReqGetDonateCard) Reset() { *x = ReqGetDonateCard{} - mi := &file_Gameapi_proto_msgTypes[304] + mi := &file_Gameapi_proto_msgTypes[295] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18359,7 +17929,7 @@ func (x *ReqGetDonateCard) String() string { func (*ReqGetDonateCard) ProtoMessage() {} func (x *ReqGetDonateCard) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[304] + mi := &file_Gameapi_proto_msgTypes[295] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18372,7 +17942,7 @@ func (x *ReqGetDonateCard) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqGetDonateCard.ProtoReflect.Descriptor instead. func (*ReqGetDonateCard) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{304} + return file_Gameapi_proto_rawDescGZIP(), []int{295} } func (x *ReqGetDonateCard) GetMExchangeCardItem() *ExchangeCardItem { @@ -18392,7 +17962,7 @@ type NotifyGetDonateCard struct { func (x *NotifyGetDonateCard) Reset() { *x = NotifyGetDonateCard{} - mi := &file_Gameapi_proto_msgTypes[305] + mi := &file_Gameapi_proto_msgTypes[296] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18404,7 +17974,7 @@ func (x *NotifyGetDonateCard) String() string { func (*NotifyGetDonateCard) ProtoMessage() {} func (x *NotifyGetDonateCard) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[305] + mi := &file_Gameapi_proto_msgTypes[296] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18417,7 +17987,7 @@ func (x *NotifyGetDonateCard) ProtoReflect() protoreflect.Message { // Deprecated: Use NotifyGetDonateCard.ProtoReflect.Descriptor instead. func (*NotifyGetDonateCard) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{305} + return file_Gameapi_proto_rawDescGZIP(), []int{296} } func (x *NotifyGetDonateCard) GetMExchangeCardItem() *ExchangeCardItem { @@ -18438,7 +18008,7 @@ type ResGetDonateCard struct { func (x *ResGetDonateCard) Reset() { *x = ResGetDonateCard{} - mi := &file_Gameapi_proto_msgTypes[306] + mi := &file_Gameapi_proto_msgTypes[297] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18450,7 +18020,7 @@ func (x *ResGetDonateCard) String() string { func (*ResGetDonateCard) ProtoMessage() {} func (x *ResGetDonateCard) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[306] + mi := &file_Gameapi_proto_msgTypes[297] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18463,7 +18033,7 @@ func (x *ResGetDonateCard) ProtoReflect() protoreflect.Message { // Deprecated: Use ResGetDonateCard.ProtoReflect.Descriptor instead. func (*ResGetDonateCard) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{306} + return file_Gameapi_proto_rawDescGZIP(), []int{297} } func (x *ResGetDonateCard) GetMExchangeCardItem() *ExchangeCardItem { @@ -18490,7 +18060,7 @@ type ReqRefuseExchange struct { func (x *ReqRefuseExchange) Reset() { *x = ReqRefuseExchange{} - mi := &file_Gameapi_proto_msgTypes[307] + mi := &file_Gameapi_proto_msgTypes[298] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18502,7 +18072,7 @@ func (x *ReqRefuseExchange) String() string { func (*ReqRefuseExchange) ProtoMessage() {} func (x *ReqRefuseExchange) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[307] + mi := &file_Gameapi_proto_msgTypes[298] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18515,7 +18085,7 @@ func (x *ReqRefuseExchange) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqRefuseExchange.ProtoReflect.Descriptor instead. func (*ReqRefuseExchange) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{307} + return file_Gameapi_proto_rawDescGZIP(), []int{298} } func (x *ReqRefuseExchange) GetMExchangeCardItem() *ExchangeCardItem { @@ -18537,7 +18107,7 @@ type ResRefuseExchange struct { func (x *ResRefuseExchange) Reset() { *x = ResRefuseExchange{} - mi := &file_Gameapi_proto_msgTypes[308] + mi := &file_Gameapi_proto_msgTypes[299] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18549,7 +18119,7 @@ func (x *ResRefuseExchange) String() string { func (*ResRefuseExchange) ProtoMessage() {} func (x *ResRefuseExchange) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[308] + mi := &file_Gameapi_proto_msgTypes[299] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18562,7 +18132,7 @@ func (x *ResRefuseExchange) ProtoReflect() protoreflect.Message { // Deprecated: Use ResRefuseExchange.ProtoReflect.Descriptor instead. func (*ResRefuseExchange) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{308} + return file_Gameapi_proto_rawDescGZIP(), []int{299} } func (x *ResRefuseExchange) GetMExchangeCardItem() *ExchangeCardItem { @@ -18597,7 +18167,7 @@ type NOtifyRefuseExchange struct { func (x *NOtifyRefuseExchange) Reset() { *x = NOtifyRefuseExchange{} - mi := &file_Gameapi_proto_msgTypes[309] + mi := &file_Gameapi_proto_msgTypes[300] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18609,7 +18179,7 @@ func (x *NOtifyRefuseExchange) String() string { func (*NOtifyRefuseExchange) ProtoMessage() {} func (x *NOtifyRefuseExchange) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[309] + mi := &file_Gameapi_proto_msgTypes[300] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18622,7 +18192,7 @@ func (x *NOtifyRefuseExchange) ProtoReflect() protoreflect.Message { // Deprecated: Use NOtifyRefuseExchange.ProtoReflect.Descriptor instead. func (*NOtifyRefuseExchange) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{309} + return file_Gameapi_proto_rawDescGZIP(), []int{300} } func (x *NOtifyRefuseExchange) GetMExchangeCardItem() *ExchangeCardItem { @@ -18652,7 +18222,7 @@ type ReqExchangeCard struct { func (x *ReqExchangeCard) Reset() { *x = ReqExchangeCard{} - mi := &file_Gameapi_proto_msgTypes[310] + mi := &file_Gameapi_proto_msgTypes[301] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18664,7 +18234,7 @@ func (x *ReqExchangeCard) String() string { func (*ReqExchangeCard) ProtoMessage() {} func (x *ReqExchangeCard) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[310] + mi := &file_Gameapi_proto_msgTypes[301] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18677,7 +18247,7 @@ func (x *ReqExchangeCard) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqExchangeCard.ProtoReflect.Descriptor instead. func (*ReqExchangeCard) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{310} + return file_Gameapi_proto_rawDescGZIP(), []int{301} } func (x *ReqExchangeCard) GetSenderId() int32 { @@ -18719,7 +18289,7 @@ type ResExchangeCard struct { func (x *ResExchangeCard) Reset() { *x = ResExchangeCard{} - mi := &file_Gameapi_proto_msgTypes[311] + mi := &file_Gameapi_proto_msgTypes[302] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18731,7 +18301,7 @@ func (x *ResExchangeCard) String() string { func (*ResExchangeCard) ProtoMessage() {} func (x *ResExchangeCard) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[311] + mi := &file_Gameapi_proto_msgTypes[302] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18744,7 +18314,7 @@ func (x *ResExchangeCard) ProtoReflect() protoreflect.Message { // Deprecated: Use ResExchangeCard.ProtoReflect.Descriptor instead. func (*ResExchangeCard) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{311} + return file_Gameapi_proto_rawDescGZIP(), []int{302} } func (x *ResExchangeCard) GetMExchangeCardItem() *ExchangeCardItem { @@ -18771,7 +18341,7 @@ type NotifyExchangeTimeOut struct { func (x *NotifyExchangeTimeOut) Reset() { *x = NotifyExchangeTimeOut{} - mi := &file_Gameapi_proto_msgTypes[312] + mi := &file_Gameapi_proto_msgTypes[303] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18783,7 +18353,7 @@ func (x *NotifyExchangeTimeOut) String() string { func (*NotifyExchangeTimeOut) ProtoMessage() {} func (x *NotifyExchangeTimeOut) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[312] + mi := &file_Gameapi_proto_msgTypes[303] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18796,7 +18366,7 @@ func (x *NotifyExchangeTimeOut) ProtoReflect() protoreflect.Message { // Deprecated: Use NotifyExchangeTimeOut.ProtoReflect.Descriptor instead. func (*NotifyExchangeTimeOut) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{312} + return file_Gameapi_proto_rawDescGZIP(), []int{303} } func (x *NotifyExchangeTimeOut) GetMExchangeCardItem() *ExchangeCardItem { @@ -18816,7 +18386,7 @@ type NotifyExchangeCard struct { func (x *NotifyExchangeCard) Reset() { *x = NotifyExchangeCard{} - mi := &file_Gameapi_proto_msgTypes[313] + mi := &file_Gameapi_proto_msgTypes[304] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18828,7 +18398,7 @@ func (x *NotifyExchangeCard) String() string { func (*NotifyExchangeCard) ProtoMessage() {} func (x *NotifyExchangeCard) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[313] + mi := &file_Gameapi_proto_msgTypes[304] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18841,7 +18411,7 @@ func (x *NotifyExchangeCard) ProtoReflect() protoreflect.Message { // Deprecated: Use NotifyExchangeCard.ProtoReflect.Descriptor instead. func (*NotifyExchangeCard) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{313} + return file_Gameapi_proto_rawDescGZIP(), []int{304} } func (x *NotifyExchangeCard) GetMExchangeCardItem() *ExchangeCardItem { @@ -18861,7 +18431,7 @@ type ReqReceiptCard struct { func (x *ReqReceiptCard) Reset() { *x = ReqReceiptCard{} - mi := &file_Gameapi_proto_msgTypes[314] + mi := &file_Gameapi_proto_msgTypes[305] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18873,7 +18443,7 @@ func (x *ReqReceiptCard) String() string { func (*ReqReceiptCard) ProtoMessage() {} func (x *ReqReceiptCard) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[314] + mi := &file_Gameapi_proto_msgTypes[305] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18886,7 +18456,7 @@ func (x *ReqReceiptCard) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqReceiptCard.ProtoReflect.Descriptor instead. func (*ReqReceiptCard) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{314} + return file_Gameapi_proto_rawDescGZIP(), []int{305} } func (x *ReqReceiptCard) GetMExchangeCardItem() *ExchangeCardItem { @@ -18907,7 +18477,7 @@ type ResReceiptCard struct { func (x *ResReceiptCard) Reset() { *x = ResReceiptCard{} - mi := &file_Gameapi_proto_msgTypes[315] + mi := &file_Gameapi_proto_msgTypes[306] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18919,7 +18489,7 @@ func (x *ResReceiptCard) String() string { func (*ResReceiptCard) ProtoMessage() {} func (x *ResReceiptCard) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[315] + mi := &file_Gameapi_proto_msgTypes[306] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18932,7 +18502,7 @@ func (x *ResReceiptCard) ProtoReflect() protoreflect.Message { // Deprecated: Use ResReceiptCard.ProtoReflect.Descriptor instead. func (*ResReceiptCard) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{315} + return file_Gameapi_proto_rawDescGZIP(), []int{306} } func (x *ResReceiptCard) GetMExchangeCardItem() *ExchangeCardItem { @@ -18959,7 +18529,7 @@ type NotifyReceiptCard struct { func (x *NotifyReceiptCard) Reset() { *x = NotifyReceiptCard{} - mi := &file_Gameapi_proto_msgTypes[316] + mi := &file_Gameapi_proto_msgTypes[307] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18971,7 +18541,7 @@ func (x *NotifyReceiptCard) String() string { func (*NotifyReceiptCard) ProtoMessage() {} func (x *NotifyReceiptCard) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[316] + mi := &file_Gameapi_proto_msgTypes[307] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18984,7 +18554,7 @@ func (x *NotifyReceiptCard) ProtoReflect() protoreflect.Message { // Deprecated: Use NotifyReceiptCard.ProtoReflect.Descriptor instead. func (*NotifyReceiptCard) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{316} + return file_Gameapi_proto_rawDescGZIP(), []int{307} } func (x *NotifyReceiptCard) GetMExchangeCardItem() *ExchangeCardItem { @@ -19004,7 +18574,7 @@ type ReqCompleteExchangeCard struct { func (x *ReqCompleteExchangeCard) Reset() { *x = ReqCompleteExchangeCard{} - mi := &file_Gameapi_proto_msgTypes[317] + mi := &file_Gameapi_proto_msgTypes[308] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -19016,7 +18586,7 @@ func (x *ReqCompleteExchangeCard) String() string { func (*ReqCompleteExchangeCard) ProtoMessage() {} func (x *ReqCompleteExchangeCard) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[317] + mi := &file_Gameapi_proto_msgTypes[308] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19029,7 +18599,7 @@ func (x *ReqCompleteExchangeCard) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqCompleteExchangeCard.ProtoReflect.Descriptor instead. func (*ReqCompleteExchangeCard) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{317} + return file_Gameapi_proto_rawDescGZIP(), []int{308} } func (x *ReqCompleteExchangeCard) GetMExchangeCardItem() *ExchangeCardItem { @@ -19050,7 +18620,7 @@ type ResCompleteExchangeCard struct { func (x *ResCompleteExchangeCard) Reset() { *x = ResCompleteExchangeCard{} - mi := &file_Gameapi_proto_msgTypes[318] + mi := &file_Gameapi_proto_msgTypes[309] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -19062,7 +18632,7 @@ func (x *ResCompleteExchangeCard) String() string { func (*ResCompleteExchangeCard) ProtoMessage() {} func (x *ResCompleteExchangeCard) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[318] + mi := &file_Gameapi_proto_msgTypes[309] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19075,7 +18645,7 @@ func (x *ResCompleteExchangeCard) ProtoReflect() protoreflect.Message { // Deprecated: Use ResCompleteExchangeCard.ProtoReflect.Descriptor instead. func (*ResCompleteExchangeCard) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{318} + return file_Gameapi_proto_rawDescGZIP(), []int{309} } func (x *ResCompleteExchangeCard) GetMExchangeCardItem() *ExchangeCardItem { @@ -19102,7 +18672,7 @@ type NotifyCompleteExchangeCard struct { func (x *NotifyCompleteExchangeCard) Reset() { *x = NotifyCompleteExchangeCard{} - mi := &file_Gameapi_proto_msgTypes[319] + mi := &file_Gameapi_proto_msgTypes[310] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -19114,7 +18684,7 @@ func (x *NotifyCompleteExchangeCard) String() string { func (*NotifyCompleteExchangeCard) ProtoMessage() {} func (x *NotifyCompleteExchangeCard) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[319] + mi := &file_Gameapi_proto_msgTypes[310] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19127,7 +18697,7 @@ func (x *NotifyCompleteExchangeCard) ProtoReflect() protoreflect.Message { // Deprecated: Use NotifyCompleteExchangeCard.ProtoReflect.Descriptor instead. func (*NotifyCompleteExchangeCard) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{319} + return file_Gameapi_proto_rawDescGZIP(), []int{310} } func (x *NotifyCompleteExchangeCard) GetMExchangeCardItem() *ExchangeCardItem { @@ -19147,7 +18717,7 @@ type ReqGetExchangeCard struct { func (x *ReqGetExchangeCard) Reset() { *x = ReqGetExchangeCard{} - mi := &file_Gameapi_proto_msgTypes[320] + mi := &file_Gameapi_proto_msgTypes[311] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -19159,7 +18729,7 @@ func (x *ReqGetExchangeCard) String() string { func (*ReqGetExchangeCard) ProtoMessage() {} func (x *ReqGetExchangeCard) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[320] + mi := &file_Gameapi_proto_msgTypes[311] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19172,7 +18742,7 @@ func (x *ReqGetExchangeCard) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqGetExchangeCard.ProtoReflect.Descriptor instead. func (*ReqGetExchangeCard) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{320} + return file_Gameapi_proto_rawDescGZIP(), []int{311} } func (x *ReqGetExchangeCard) GetMExchangeCardItem() *ExchangeCardItem { @@ -19192,7 +18762,7 @@ type NotifyGetExchangeCard struct { func (x *NotifyGetExchangeCard) Reset() { *x = NotifyGetExchangeCard{} - mi := &file_Gameapi_proto_msgTypes[321] + mi := &file_Gameapi_proto_msgTypes[312] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -19204,7 +18774,7 @@ func (x *NotifyGetExchangeCard) String() string { func (*NotifyGetExchangeCard) ProtoMessage() {} func (x *NotifyGetExchangeCard) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[321] + mi := &file_Gameapi_proto_msgTypes[312] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19217,7 +18787,7 @@ func (x *NotifyGetExchangeCard) ProtoReflect() protoreflect.Message { // Deprecated: Use NotifyGetExchangeCard.ProtoReflect.Descriptor instead. func (*NotifyGetExchangeCard) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{321} + return file_Gameapi_proto_rawDescGZIP(), []int{312} } func (x *NotifyGetExchangeCard) GetMExchangeCardItem() *ExchangeCardItem { @@ -19238,7 +18808,7 @@ type ResGetExchangeCard struct { func (x *ResGetExchangeCard) Reset() { *x = ResGetExchangeCard{} - mi := &file_Gameapi_proto_msgTypes[322] + mi := &file_Gameapi_proto_msgTypes[313] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -19250,7 +18820,7 @@ func (x *ResGetExchangeCard) String() string { func (*ResGetExchangeCard) ProtoMessage() {} func (x *ResGetExchangeCard) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[322] + mi := &file_Gameapi_proto_msgTypes[313] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19263,7 +18833,7 @@ func (x *ResGetExchangeCard) ProtoReflect() protoreflect.Message { // Deprecated: Use ResGetExchangeCard.ProtoReflect.Descriptor instead. func (*ResGetExchangeCard) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{322} + return file_Gameapi_proto_rawDescGZIP(), []int{313} } func (x *ResGetExchangeCard) GetMExchangeCardItem() *ExchangeCardItem { @@ -19290,7 +18860,7 @@ type NotifyDeleteGoldCardSwap struct { func (x *NotifyDeleteGoldCardSwap) Reset() { *x = NotifyDeleteGoldCardSwap{} - mi := &file_Gameapi_proto_msgTypes[323] + mi := &file_Gameapi_proto_msgTypes[314] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -19302,7 +18872,7 @@ func (x *NotifyDeleteGoldCardSwap) String() string { func (*NotifyDeleteGoldCardSwap) ProtoMessage() {} func (x *NotifyDeleteGoldCardSwap) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[323] + mi := &file_Gameapi_proto_msgTypes[314] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19315,7 +18885,7 @@ func (x *NotifyDeleteGoldCardSwap) ProtoReflect() protoreflect.Message { // Deprecated: Use NotifyDeleteGoldCardSwap.ProtoReflect.Descriptor instead. func (*NotifyDeleteGoldCardSwap) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{323} + return file_Gameapi_proto_rawDescGZIP(), []int{314} } func (x *NotifyDeleteGoldCardSwap) GetMExchangeCardItems() []*ExchangeCardItem { @@ -19335,7 +18905,7 @@ type NotifyRequestTimeOut struct { func (x *NotifyRequestTimeOut) Reset() { *x = NotifyRequestTimeOut{} - mi := &file_Gameapi_proto_msgTypes[324] + mi := &file_Gameapi_proto_msgTypes[315] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -19347,7 +18917,7 @@ func (x *NotifyRequestTimeOut) String() string { func (*NotifyRequestTimeOut) ProtoMessage() {} func (x *NotifyRequestTimeOut) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[324] + mi := &file_Gameapi_proto_msgTypes[315] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19360,7 +18930,7 @@ func (x *NotifyRequestTimeOut) ProtoReflect() protoreflect.Message { // Deprecated: Use NotifyRequestTimeOut.ProtoReflect.Descriptor instead. func (*NotifyRequestTimeOut) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{324} + return file_Gameapi_proto_rawDescGZIP(), []int{315} } func (x *NotifyRequestTimeOut) GetMExchangeCardItem() *ExchangeCardItem { @@ -19384,7 +18954,7 @@ type ReqRequestCard struct { func (x *ReqRequestCard) Reset() { *x = ReqRequestCard{} - mi := &file_Gameapi_proto_msgTypes[325] + mi := &file_Gameapi_proto_msgTypes[316] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -19396,7 +18966,7 @@ func (x *ReqRequestCard) String() string { func (*ReqRequestCard) ProtoMessage() {} func (x *ReqRequestCard) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[325] + mi := &file_Gameapi_proto_msgTypes[316] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19409,7 +18979,7 @@ func (x *ReqRequestCard) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqRequestCard.ProtoReflect.Descriptor instead. func (*ReqRequestCard) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{325} + return file_Gameapi_proto_rawDescGZIP(), []int{316} } func (x *ReqRequestCard) GetSenderId() int32 { @@ -19451,7 +19021,7 @@ type ResRequestCard struct { func (x *ResRequestCard) Reset() { *x = ResRequestCard{} - mi := &file_Gameapi_proto_msgTypes[326] + mi := &file_Gameapi_proto_msgTypes[317] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -19463,7 +19033,7 @@ func (x *ResRequestCard) String() string { func (*ResRequestCard) ProtoMessage() {} func (x *ResRequestCard) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[326] + mi := &file_Gameapi_proto_msgTypes[317] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19476,7 +19046,7 @@ func (x *ResRequestCard) ProtoReflect() protoreflect.Message { // Deprecated: Use ResRequestCard.ProtoReflect.Descriptor instead. func (*ResRequestCard) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{326} + return file_Gameapi_proto_rawDescGZIP(), []int{317} } func (x *ResRequestCard) GetExchangeCardItems() []*ExchangeCardItem { @@ -19503,7 +19073,7 @@ type NotifyRequestCard struct { func (x *NotifyRequestCard) Reset() { *x = NotifyRequestCard{} - mi := &file_Gameapi_proto_msgTypes[327] + mi := &file_Gameapi_proto_msgTypes[318] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -19515,7 +19085,7 @@ func (x *NotifyRequestCard) String() string { func (*NotifyRequestCard) ProtoMessage() {} func (x *NotifyRequestCard) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[327] + mi := &file_Gameapi_proto_msgTypes[318] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19528,7 +19098,7 @@ func (x *NotifyRequestCard) ProtoReflect() protoreflect.Message { // Deprecated: Use NotifyRequestCard.ProtoReflect.Descriptor instead. func (*NotifyRequestCard) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{327} + return file_Gameapi_proto_rawDescGZIP(), []int{318} } func (x *NotifyRequestCard) GetExchangeCardItems() *ExchangeCardItem { @@ -19548,7 +19118,7 @@ type ReqCompleteRequestCard struct { func (x *ReqCompleteRequestCard) Reset() { *x = ReqCompleteRequestCard{} - mi := &file_Gameapi_proto_msgTypes[328] + mi := &file_Gameapi_proto_msgTypes[319] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -19560,7 +19130,7 @@ func (x *ReqCompleteRequestCard) String() string { func (*ReqCompleteRequestCard) ProtoMessage() {} func (x *ReqCompleteRequestCard) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[328] + mi := &file_Gameapi_proto_msgTypes[319] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19573,7 +19143,7 @@ func (x *ReqCompleteRequestCard) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqCompleteRequestCard.ProtoReflect.Descriptor instead. func (*ReqCompleteRequestCard) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{328} + return file_Gameapi_proto_rawDescGZIP(), []int{319} } func (x *ReqCompleteRequestCard) GetExchangeCardItems() *ExchangeCardItem { @@ -19594,7 +19164,7 @@ type ResCompleteRequestCard struct { func (x *ResCompleteRequestCard) Reset() { *x = ResCompleteRequestCard{} - mi := &file_Gameapi_proto_msgTypes[329] + mi := &file_Gameapi_proto_msgTypes[320] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -19606,7 +19176,7 @@ func (x *ResCompleteRequestCard) String() string { func (*ResCompleteRequestCard) ProtoMessage() {} func (x *ResCompleteRequestCard) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[329] + mi := &file_Gameapi_proto_msgTypes[320] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19619,7 +19189,7 @@ func (x *ResCompleteRequestCard) ProtoReflect() protoreflect.Message { // Deprecated: Use ResCompleteRequestCard.ProtoReflect.Descriptor instead. func (*ResCompleteRequestCard) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{329} + return file_Gameapi_proto_rawDescGZIP(), []int{320} } func (x *ResCompleteRequestCard) GetExchangeCardItems() *ExchangeCardItem { @@ -19646,7 +19216,7 @@ type NotifyHaveFriendCompleteReq struct { func (x *NotifyHaveFriendCompleteReq) Reset() { *x = NotifyHaveFriendCompleteReq{} - mi := &file_Gameapi_proto_msgTypes[330] + mi := &file_Gameapi_proto_msgTypes[321] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -19658,7 +19228,7 @@ func (x *NotifyHaveFriendCompleteReq) String() string { func (*NotifyHaveFriendCompleteReq) ProtoMessage() {} func (x *NotifyHaveFriendCompleteReq) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[330] + mi := &file_Gameapi_proto_msgTypes[321] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19671,7 +19241,7 @@ func (x *NotifyHaveFriendCompleteReq) ProtoReflect() protoreflect.Message { // Deprecated: Use NotifyHaveFriendCompleteReq.ProtoReflect.Descriptor instead. func (*NotifyHaveFriendCompleteReq) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{330} + return file_Gameapi_proto_rawDescGZIP(), []int{321} } func (x *NotifyHaveFriendCompleteReq) GetAutoId() int32 { @@ -19691,7 +19261,7 @@ type NotifyCompleteRequestCard struct { func (x *NotifyCompleteRequestCard) Reset() { *x = NotifyCompleteRequestCard{} - mi := &file_Gameapi_proto_msgTypes[331] + mi := &file_Gameapi_proto_msgTypes[322] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -19703,7 +19273,7 @@ func (x *NotifyCompleteRequestCard) String() string { func (*NotifyCompleteRequestCard) ProtoMessage() {} func (x *NotifyCompleteRequestCard) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[331] + mi := &file_Gameapi_proto_msgTypes[322] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19716,7 +19286,7 @@ func (x *NotifyCompleteRequestCard) ProtoReflect() protoreflect.Message { // Deprecated: Use NotifyCompleteRequestCard.ProtoReflect.Descriptor instead. func (*NotifyCompleteRequestCard) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{331} + return file_Gameapi_proto_rawDescGZIP(), []int{322} } func (x *NotifyCompleteRequestCard) GetExchangeCardItems() *ExchangeCardItem { @@ -19736,7 +19306,7 @@ type ReqRefuseRequestCard struct { func (x *ReqRefuseRequestCard) Reset() { *x = ReqRefuseRequestCard{} - mi := &file_Gameapi_proto_msgTypes[332] + mi := &file_Gameapi_proto_msgTypes[323] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -19748,7 +19318,7 @@ func (x *ReqRefuseRequestCard) String() string { func (*ReqRefuseRequestCard) ProtoMessage() {} func (x *ReqRefuseRequestCard) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[332] + mi := &file_Gameapi_proto_msgTypes[323] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19761,7 +19331,7 @@ func (x *ReqRefuseRequestCard) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqRefuseRequestCard.ProtoReflect.Descriptor instead. func (*ReqRefuseRequestCard) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{332} + return file_Gameapi_proto_rawDescGZIP(), []int{323} } func (x *ReqRefuseRequestCard) GetExchangeCardItems() *ExchangeCardItem { @@ -19781,7 +19351,7 @@ type ResRefuseRequestCard struct { func (x *ResRefuseRequestCard) Reset() { *x = ResRefuseRequestCard{} - mi := &file_Gameapi_proto_msgTypes[333] + mi := &file_Gameapi_proto_msgTypes[324] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -19793,7 +19363,7 @@ func (x *ResRefuseRequestCard) String() string { func (*ResRefuseRequestCard) ProtoMessage() {} func (x *ResRefuseRequestCard) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[333] + mi := &file_Gameapi_proto_msgTypes[324] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19806,7 +19376,7 @@ func (x *ResRefuseRequestCard) ProtoReflect() protoreflect.Message { // Deprecated: Use ResRefuseRequestCard.ProtoReflect.Descriptor instead. func (*ResRefuseRequestCard) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{333} + return file_Gameapi_proto_rawDescGZIP(), []int{324} } func (x *ResRefuseRequestCard) GetExchangeCardItems() *ExchangeCardItem { @@ -19827,7 +19397,7 @@ type NotifyRefuseRequestCard struct { func (x *NotifyRefuseRequestCard) Reset() { *x = NotifyRefuseRequestCard{} - mi := &file_Gameapi_proto_msgTypes[334] + mi := &file_Gameapi_proto_msgTypes[325] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -19839,7 +19409,7 @@ func (x *NotifyRefuseRequestCard) String() string { func (*NotifyRefuseRequestCard) ProtoMessage() {} func (x *NotifyRefuseRequestCard) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[334] + mi := &file_Gameapi_proto_msgTypes[325] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19852,7 +19422,7 @@ func (x *NotifyRefuseRequestCard) ProtoReflect() protoreflect.Message { // Deprecated: Use NotifyRefuseRequestCard.ProtoReflect.Descriptor instead. func (*NotifyRefuseRequestCard) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{334} + return file_Gameapi_proto_rawDescGZIP(), []int{325} } func (x *NotifyRefuseRequestCard) GetExchangeCardItems() *ExchangeCardItem { @@ -19879,7 +19449,7 @@ type ReqGetRequestCard struct { func (x *ReqGetRequestCard) Reset() { *x = ReqGetRequestCard{} - mi := &file_Gameapi_proto_msgTypes[335] + mi := &file_Gameapi_proto_msgTypes[326] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -19891,7 +19461,7 @@ func (x *ReqGetRequestCard) String() string { func (*ReqGetRequestCard) ProtoMessage() {} func (x *ReqGetRequestCard) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[335] + mi := &file_Gameapi_proto_msgTypes[326] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19904,7 +19474,7 @@ func (x *ReqGetRequestCard) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqGetRequestCard.ProtoReflect.Descriptor instead. func (*ReqGetRequestCard) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{335} + return file_Gameapi_proto_rawDescGZIP(), []int{326} } func (x *ReqGetRequestCard) GetExchangeCardItems() *ExchangeCardItem { @@ -19925,7 +19495,7 @@ type ResGetRequestCard struct { func (x *ResGetRequestCard) Reset() { *x = ResGetRequestCard{} - mi := &file_Gameapi_proto_msgTypes[336] + mi := &file_Gameapi_proto_msgTypes[327] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -19937,7 +19507,7 @@ func (x *ResGetRequestCard) String() string { func (*ResGetRequestCard) ProtoMessage() {} func (x *ResGetRequestCard) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[336] + mi := &file_Gameapi_proto_msgTypes[327] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19950,7 +19520,7 @@ func (x *ResGetRequestCard) ProtoReflect() protoreflect.Message { // Deprecated: Use ResGetRequestCard.ProtoReflect.Descriptor instead. func (*ResGetRequestCard) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{336} + return file_Gameapi_proto_rawDescGZIP(), []int{327} } func (x *ResGetRequestCard) GetExchangeCardItems() *ExchangeCardItem { @@ -19979,7 +19549,7 @@ type ReqBindFacebookAccount struct { func (x *ReqBindFacebookAccount) Reset() { *x = ReqBindFacebookAccount{} - mi := &file_Gameapi_proto_msgTypes[337] + mi := &file_Gameapi_proto_msgTypes[328] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -19991,7 +19561,7 @@ func (x *ReqBindFacebookAccount) String() string { func (*ReqBindFacebookAccount) ProtoMessage() {} func (x *ReqBindFacebookAccount) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[337] + mi := &file_Gameapi_proto_msgTypes[328] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20004,7 +19574,7 @@ func (x *ReqBindFacebookAccount) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqBindFacebookAccount.ProtoReflect.Descriptor instead. func (*ReqBindFacebookAccount) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{337} + return file_Gameapi_proto_rawDescGZIP(), []int{328} } func (x *ReqBindFacebookAccount) GetDwUin() int32 { @@ -20033,7 +19603,7 @@ type ResBindFacebookAccount struct { func (x *ResBindFacebookAccount) Reset() { *x = ResBindFacebookAccount{} - mi := &file_Gameapi_proto_msgTypes[338] + mi := &file_Gameapi_proto_msgTypes[329] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -20045,7 +19615,7 @@ func (x *ResBindFacebookAccount) String() string { func (*ResBindFacebookAccount) ProtoMessage() {} func (x *ResBindFacebookAccount) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[338] + mi := &file_Gameapi_proto_msgTypes[329] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20058,7 +19628,7 @@ func (x *ResBindFacebookAccount) ProtoReflect() protoreflect.Message { // Deprecated: Use ResBindFacebookAccount.ProtoReflect.Descriptor instead. func (*ResBindFacebookAccount) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{338} + return file_Gameapi_proto_rawDescGZIP(), []int{329} } func (x *ResBindFacebookAccount) GetDwUin() int32 { @@ -20094,7 +19664,7 @@ type ReqOnlyBindFacebook struct { func (x *ReqOnlyBindFacebook) Reset() { *x = ReqOnlyBindFacebook{} - mi := &file_Gameapi_proto_msgTypes[339] + mi := &file_Gameapi_proto_msgTypes[330] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -20106,7 +19676,7 @@ func (x *ReqOnlyBindFacebook) String() string { func (*ReqOnlyBindFacebook) ProtoMessage() {} func (x *ReqOnlyBindFacebook) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[339] + mi := &file_Gameapi_proto_msgTypes[330] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20119,7 +19689,7 @@ func (x *ReqOnlyBindFacebook) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqOnlyBindFacebook.ProtoReflect.Descriptor instead. func (*ReqOnlyBindFacebook) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{339} + return file_Gameapi_proto_rawDescGZIP(), []int{330} } func (x *ReqOnlyBindFacebook) GetDwUin() int32 { @@ -20148,7 +19718,7 @@ type ResOnlyBindFacebook struct { func (x *ResOnlyBindFacebook) Reset() { *x = ResOnlyBindFacebook{} - mi := &file_Gameapi_proto_msgTypes[340] + mi := &file_Gameapi_proto_msgTypes[331] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -20160,7 +19730,7 @@ func (x *ResOnlyBindFacebook) String() string { func (*ResOnlyBindFacebook) ProtoMessage() {} func (x *ResOnlyBindFacebook) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[340] + mi := &file_Gameapi_proto_msgTypes[331] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20173,7 +19743,7 @@ func (x *ResOnlyBindFacebook) ProtoReflect() protoreflect.Message { // Deprecated: Use ResOnlyBindFacebook.ProtoReflect.Descriptor instead. func (*ResOnlyBindFacebook) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{340} + return file_Gameapi_proto_rawDescGZIP(), []int{331} } func (x *ResOnlyBindFacebook) GetDwUin() int32 { @@ -20209,7 +19779,7 @@ type ReqUnBindFacebook struct { func (x *ReqUnBindFacebook) Reset() { *x = ReqUnBindFacebook{} - mi := &file_Gameapi_proto_msgTypes[341] + mi := &file_Gameapi_proto_msgTypes[332] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -20221,7 +19791,7 @@ func (x *ReqUnBindFacebook) String() string { func (*ReqUnBindFacebook) ProtoMessage() {} func (x *ReqUnBindFacebook) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[341] + mi := &file_Gameapi_proto_msgTypes[332] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20234,7 +19804,7 @@ func (x *ReqUnBindFacebook) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqUnBindFacebook.ProtoReflect.Descriptor instead. func (*ReqUnBindFacebook) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{341} + return file_Gameapi_proto_rawDescGZIP(), []int{332} } func (x *ReqUnBindFacebook) GetDwUin() int32 { @@ -20262,7 +19832,7 @@ type ResUnBindFacebook struct { func (x *ResUnBindFacebook) Reset() { *x = ResUnBindFacebook{} - mi := &file_Gameapi_proto_msgTypes[342] + mi := &file_Gameapi_proto_msgTypes[333] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -20274,7 +19844,7 @@ func (x *ResUnBindFacebook) String() string { func (*ResUnBindFacebook) ProtoMessage() {} func (x *ResUnBindFacebook) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[342] + mi := &file_Gameapi_proto_msgTypes[333] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20287,7 +19857,7 @@ func (x *ResUnBindFacebook) ProtoReflect() protoreflect.Message { // Deprecated: Use ResUnBindFacebook.ProtoReflect.Descriptor instead. func (*ResUnBindFacebook) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{342} + return file_Gameapi_proto_rawDescGZIP(), []int{333} } func (x *ResUnBindFacebook) GetResultCode() int32 { @@ -20316,7 +19886,7 @@ type ReqSynGameData struct { func (x *ReqSynGameData) Reset() { *x = ReqSynGameData{} - mi := &file_Gameapi_proto_msgTypes[343] + mi := &file_Gameapi_proto_msgTypes[334] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -20328,7 +19898,7 @@ func (x *ReqSynGameData) String() string { func (*ReqSynGameData) ProtoMessage() {} func (x *ReqSynGameData) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[343] + mi := &file_Gameapi_proto_msgTypes[334] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20341,7 +19911,7 @@ func (x *ReqSynGameData) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqSynGameData.ProtoReflect.Descriptor instead. func (*ReqSynGameData) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{343} + return file_Gameapi_proto_rawDescGZIP(), []int{334} } func (x *ReqSynGameData) GetDwUin() int32 { @@ -20369,7 +19939,7 @@ type ResSynGameData struct { func (x *ResSynGameData) Reset() { *x = ResSynGameData{} - mi := &file_Gameapi_proto_msgTypes[344] + mi := &file_Gameapi_proto_msgTypes[335] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -20381,7 +19951,7 @@ func (x *ResSynGameData) String() string { func (*ResSynGameData) ProtoMessage() {} func (x *ResSynGameData) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[344] + mi := &file_Gameapi_proto_msgTypes[335] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20394,7 +19964,7 @@ func (x *ResSynGameData) ProtoReflect() protoreflect.Message { // Deprecated: Use ResSynGameData.ProtoReflect.Descriptor instead. func (*ResSynGameData) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{344} + return file_Gameapi_proto_rawDescGZIP(), []int{335} } func (x *ResSynGameData) GetDwUin() int32 { @@ -20421,7 +19991,7 @@ type ReqFriendEventData struct { func (x *ReqFriendEventData) Reset() { *x = ReqFriendEventData{} - mi := &file_Gameapi_proto_msgTypes[345] + mi := &file_Gameapi_proto_msgTypes[336] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -20433,7 +20003,7 @@ func (x *ReqFriendEventData) String() string { func (*ReqFriendEventData) ProtoMessage() {} func (x *ReqFriendEventData) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[345] + mi := &file_Gameapi_proto_msgTypes[336] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20446,7 +20016,7 @@ func (x *ReqFriendEventData) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqFriendEventData.ProtoReflect.Descriptor instead. func (*ReqFriendEventData) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{345} + return file_Gameapi_proto_rawDescGZIP(), []int{336} } func (x *ReqFriendEventData) GetDwUin() int32 { @@ -20470,7 +20040,7 @@ type FriendEventData struct { func (x *FriendEventData) Reset() { *x = FriendEventData{} - mi := &file_Gameapi_proto_msgTypes[346] + mi := &file_Gameapi_proto_msgTypes[337] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -20482,7 +20052,7 @@ func (x *FriendEventData) String() string { func (*FriendEventData) ProtoMessage() {} func (x *FriendEventData) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[346] + mi := &file_Gameapi_proto_msgTypes[337] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20495,7 +20065,7 @@ func (x *FriendEventData) ProtoReflect() protoreflect.Message { // Deprecated: Use FriendEventData.ProtoReflect.Descriptor instead. func (*FriendEventData) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{346} + return file_Gameapi_proto_rawDescGZIP(), []int{337} } func (x *FriendEventData) GetEventStartTime() int32 { @@ -20543,7 +20113,7 @@ type ResFriendEventData struct { func (x *ResFriendEventData) Reset() { *x = ResFriendEventData{} - mi := &file_Gameapi_proto_msgTypes[347] + mi := &file_Gameapi_proto_msgTypes[338] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -20555,7 +20125,7 @@ func (x *ResFriendEventData) String() string { func (*ResFriendEventData) ProtoMessage() {} func (x *ResFriendEventData) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[347] + mi := &file_Gameapi_proto_msgTypes[338] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20568,7 +20138,7 @@ func (x *ResFriendEventData) ProtoReflect() protoreflect.Message { // Deprecated: Use ResFriendEventData.ProtoReflect.Descriptor instead. func (*ResFriendEventData) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{347} + return file_Gameapi_proto_rawDescGZIP(), []int{338} } func (x *ResFriendEventData) GetMFriendEventData() []*FriendEventData { @@ -20589,7 +20159,7 @@ type NotifyNewFriendEvent struct { func (x *NotifyNewFriendEvent) Reset() { *x = NotifyNewFriendEvent{} - mi := &file_Gameapi_proto_msgTypes[348] + mi := &file_Gameapi_proto_msgTypes[339] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -20601,7 +20171,7 @@ func (x *NotifyNewFriendEvent) String() string { func (*NotifyNewFriendEvent) ProtoMessage() {} func (x *NotifyNewFriendEvent) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[348] + mi := &file_Gameapi_proto_msgTypes[339] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20614,7 +20184,7 @@ func (x *NotifyNewFriendEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use NotifyNewFriendEvent.ProtoReflect.Descriptor instead. func (*NotifyNewFriendEvent) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{348} + return file_Gameapi_proto_rawDescGZIP(), []int{339} } func (x *NotifyNewFriendEvent) GetDwUin() int32 { @@ -20642,7 +20212,7 @@ type NotifyFriendEventComplete struct { func (x *NotifyFriendEventComplete) Reset() { *x = NotifyFriendEventComplete{} - mi := &file_Gameapi_proto_msgTypes[349] + mi := &file_Gameapi_proto_msgTypes[340] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -20654,7 +20224,7 @@ func (x *NotifyFriendEventComplete) String() string { func (*NotifyFriendEventComplete) ProtoMessage() {} func (x *NotifyFriendEventComplete) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[349] + mi := &file_Gameapi_proto_msgTypes[340] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20667,7 +20237,7 @@ func (x *NotifyFriendEventComplete) ProtoReflect() protoreflect.Message { // Deprecated: Use NotifyFriendEventComplete.ProtoReflect.Descriptor instead. func (*NotifyFriendEventComplete) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{349} + return file_Gameapi_proto_rawDescGZIP(), []int{340} } func (x *NotifyFriendEventComplete) GetDwUin() int32 { @@ -20697,7 +20267,7 @@ type ReqUpdatePetProfile struct { func (x *ReqUpdatePetProfile) Reset() { *x = ReqUpdatePetProfile{} - mi := &file_Gameapi_proto_msgTypes[350] + mi := &file_Gameapi_proto_msgTypes[341] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -20709,7 +20279,7 @@ func (x *ReqUpdatePetProfile) String() string { func (*ReqUpdatePetProfile) ProtoMessage() {} func (x *ReqUpdatePetProfile) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[350] + mi := &file_Gameapi_proto_msgTypes[341] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20722,7 +20292,7 @@ func (x *ReqUpdatePetProfile) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqUpdatePetProfile.ProtoReflect.Descriptor instead. func (*ReqUpdatePetProfile) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{350} + return file_Gameapi_proto_rawDescGZIP(), []int{341} } func (x *ReqUpdatePetProfile) GetDwUin() int32 { @@ -20759,7 +20329,7 @@ type ResUpdatePetProfile struct { func (x *ResUpdatePetProfile) Reset() { *x = ResUpdatePetProfile{} - mi := &file_Gameapi_proto_msgTypes[351] + mi := &file_Gameapi_proto_msgTypes[342] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -20771,7 +20341,7 @@ func (x *ResUpdatePetProfile) String() string { func (*ResUpdatePetProfile) ProtoMessage() {} func (x *ResUpdatePetProfile) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[351] + mi := &file_Gameapi_proto_msgTypes[342] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20784,7 +20354,7 @@ func (x *ResUpdatePetProfile) ProtoReflect() protoreflect.Message { // Deprecated: Use ResUpdatePetProfile.ProtoReflect.Descriptor instead. func (*ResUpdatePetProfile) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{351} + return file_Gameapi_proto_rawDescGZIP(), []int{342} } func (x *ResUpdatePetProfile) GetDwUin() int32 { @@ -20825,7 +20395,7 @@ type ReqPlayerPetData struct { func (x *ReqPlayerPetData) Reset() { *x = ReqPlayerPetData{} - mi := &file_Gameapi_proto_msgTypes[352] + mi := &file_Gameapi_proto_msgTypes[343] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -20837,7 +20407,7 @@ func (x *ReqPlayerPetData) String() string { func (*ReqPlayerPetData) ProtoMessage() {} func (x *ReqPlayerPetData) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[352] + mi := &file_Gameapi_proto_msgTypes[343] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20850,7 +20420,7 @@ func (x *ReqPlayerPetData) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqPlayerPetData.ProtoReflect.Descriptor instead. func (*ReqPlayerPetData) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{352} + return file_Gameapi_proto_rawDescGZIP(), []int{343} } func (x *ReqPlayerPetData) GetDwUin() int32 { @@ -20875,7 +20445,7 @@ type ResPlayerPetData struct { func (x *ResPlayerPetData) Reset() { *x = ResPlayerPetData{} - mi := &file_Gameapi_proto_msgTypes[353] + mi := &file_Gameapi_proto_msgTypes[344] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -20887,7 +20457,7 @@ func (x *ResPlayerPetData) String() string { func (*ResPlayerPetData) ProtoMessage() {} func (x *ResPlayerPetData) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[353] + mi := &file_Gameapi_proto_msgTypes[344] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20900,7 +20470,7 @@ func (x *ResPlayerPetData) ProtoReflect() protoreflect.Message { // Deprecated: Use ResPlayerPetData.ProtoReflect.Descriptor instead. func (*ResPlayerPetData) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{353} + return file_Gameapi_proto_rawDescGZIP(), []int{344} } func (x *ResPlayerPetData) GetDwUin() int32 { @@ -20959,7 +20529,7 @@ type PetHomeInterActST struct { func (x *PetHomeInterActST) Reset() { *x = PetHomeInterActST{} - mi := &file_Gameapi_proto_msgTypes[354] + mi := &file_Gameapi_proto_msgTypes[345] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -20971,7 +20541,7 @@ func (x *PetHomeInterActST) String() string { func (*PetHomeInterActST) ProtoMessage() {} func (x *PetHomeInterActST) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[354] + mi := &file_Gameapi_proto_msgTypes[345] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20984,7 +20554,7 @@ func (x *PetHomeInterActST) ProtoReflect() protoreflect.Message { // Deprecated: Use PetHomeInterActST.ProtoReflect.Descriptor instead. func (*PetHomeInterActST) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{354} + return file_Gameapi_proto_rawDescGZIP(), []int{345} } func (x *PetHomeInterActST) GetDwUin() int32 { @@ -21026,7 +20596,7 @@ type ReqPetHomeData struct { func (x *ReqPetHomeData) Reset() { *x = ReqPetHomeData{} - mi := &file_Gameapi_proto_msgTypes[355] + mi := &file_Gameapi_proto_msgTypes[346] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -21038,7 +20608,7 @@ func (x *ReqPetHomeData) String() string { func (*ReqPetHomeData) ProtoMessage() {} func (x *ReqPetHomeData) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[355] + mi := &file_Gameapi_proto_msgTypes[346] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21051,7 +20621,7 @@ func (x *ReqPetHomeData) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqPetHomeData.ProtoReflect.Descriptor instead. func (*ReqPetHomeData) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{355} + return file_Gameapi_proto_rawDescGZIP(), []int{346} } func (x *ReqPetHomeData) GetDwUin() int32 { @@ -21085,7 +20655,7 @@ type ResPetHomeData struct { func (x *ResPetHomeData) Reset() { *x = ResPetHomeData{} - mi := &file_Gameapi_proto_msgTypes[356] + mi := &file_Gameapi_proto_msgTypes[347] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -21097,7 +20667,7 @@ func (x *ResPetHomeData) String() string { func (*ResPetHomeData) ProtoMessage() {} func (x *ResPetHomeData) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[356] + mi := &file_Gameapi_proto_msgTypes[347] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21110,7 +20680,7 @@ func (x *ResPetHomeData) ProtoReflect() protoreflect.Message { // Deprecated: Use ResPetHomeData.ProtoReflect.Descriptor instead. func (*ResPetHomeData) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{356} + return file_Gameapi_proto_rawDescGZIP(), []int{347} } func (x *ResPetHomeData) GetDwUin() int32 { @@ -21228,7 +20798,7 @@ type ReqUnlockDecorate struct { func (x *ReqUnlockDecorate) Reset() { *x = ReqUnlockDecorate{} - mi := &file_Gameapi_proto_msgTypes[357] + mi := &file_Gameapi_proto_msgTypes[348] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -21240,7 +20810,7 @@ func (x *ReqUnlockDecorate) String() string { func (*ReqUnlockDecorate) ProtoMessage() {} func (x *ReqUnlockDecorate) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[357] + mi := &file_Gameapi_proto_msgTypes[348] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21253,7 +20823,7 @@ func (x *ReqUnlockDecorate) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqUnlockDecorate.ProtoReflect.Descriptor instead. func (*ReqUnlockDecorate) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{357} + return file_Gameapi_proto_rawDescGZIP(), []int{348} } func (x *ReqUnlockDecorate) GetDecorateId() int32 { @@ -21273,7 +20843,7 @@ type ResUnlockDecorate struct { func (x *ResUnlockDecorate) Reset() { *x = ResUnlockDecorate{} - mi := &file_Gameapi_proto_msgTypes[358] + mi := &file_Gameapi_proto_msgTypes[349] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -21285,7 +20855,7 @@ func (x *ResUnlockDecorate) String() string { func (*ResUnlockDecorate) ProtoMessage() {} func (x *ResUnlockDecorate) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[358] + mi := &file_Gameapi_proto_msgTypes[349] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21298,7 +20868,7 @@ func (x *ResUnlockDecorate) ProtoReflect() protoreflect.Message { // Deprecated: Use ResUnlockDecorate.ProtoReflect.Descriptor instead. func (*ResUnlockDecorate) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{358} + return file_Gameapi_proto_rawDescGZIP(), []int{349} } func (x *ResUnlockDecorate) GetResultCode() int32 { @@ -21318,7 +20888,7 @@ type ReqSaveSelectDecorate struct { func (x *ReqSaveSelectDecorate) Reset() { *x = ReqSaveSelectDecorate{} - mi := &file_Gameapi_proto_msgTypes[359] + mi := &file_Gameapi_proto_msgTypes[350] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -21330,7 +20900,7 @@ func (x *ReqSaveSelectDecorate) String() string { func (*ReqSaveSelectDecorate) ProtoMessage() {} func (x *ReqSaveSelectDecorate) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[359] + mi := &file_Gameapi_proto_msgTypes[350] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21343,7 +20913,7 @@ func (x *ReqSaveSelectDecorate) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqSaveSelectDecorate.ProtoReflect.Descriptor instead. func (*ReqSaveSelectDecorate) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{359} + return file_Gameapi_proto_rawDescGZIP(), []int{350} } func (x *ReqSaveSelectDecorate) GetSelectDecorateMap() map[int32]int32 { @@ -21364,7 +20934,7 @@ type ResSaveSelectDecorate struct { func (x *ResSaveSelectDecorate) Reset() { *x = ResSaveSelectDecorate{} - mi := &file_Gameapi_proto_msgTypes[360] + mi := &file_Gameapi_proto_msgTypes[351] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -21376,7 +20946,7 @@ func (x *ResSaveSelectDecorate) String() string { func (*ResSaveSelectDecorate) ProtoMessage() {} func (x *ResSaveSelectDecorate) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[360] + mi := &file_Gameapi_proto_msgTypes[351] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21389,7 +20959,7 @@ func (x *ResSaveSelectDecorate) ProtoReflect() protoreflect.Message { // Deprecated: Use ResSaveSelectDecorate.ProtoReflect.Descriptor instead. func (*ResSaveSelectDecorate) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{360} + return file_Gameapi_proto_rawDescGZIP(), []int{351} } func (x *ResSaveSelectDecorate) GetResultCode() int32 { @@ -21416,7 +20986,7 @@ type NotifyPetGoHome struct { func (x *NotifyPetGoHome) Reset() { *x = NotifyPetGoHome{} - mi := &file_Gameapi_proto_msgTypes[361] + mi := &file_Gameapi_proto_msgTypes[352] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -21428,7 +20998,7 @@ func (x *NotifyPetGoHome) String() string { func (*NotifyPetGoHome) ProtoMessage() {} func (x *NotifyPetGoHome) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[361] + mi := &file_Gameapi_proto_msgTypes[352] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21441,7 +21011,7 @@ func (x *NotifyPetGoHome) ProtoReflect() protoreflect.Message { // Deprecated: Use NotifyPetGoHome.ProtoReflect.Descriptor instead. func (*NotifyPetGoHome) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{361} + return file_Gameapi_proto_rawDescGZIP(), []int{352} } func (x *NotifyPetGoHome) GetAtHome() int32 { @@ -21461,7 +21031,7 @@ type NotifyPetLeave struct { func (x *NotifyPetLeave) Reset() { *x = NotifyPetLeave{} - mi := &file_Gameapi_proto_msgTypes[362] + mi := &file_Gameapi_proto_msgTypes[353] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -21473,7 +21043,7 @@ func (x *NotifyPetLeave) String() string { func (*NotifyPetLeave) ProtoMessage() {} func (x *NotifyPetLeave) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[362] + mi := &file_Gameapi_proto_msgTypes[353] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21486,7 +21056,7 @@ func (x *NotifyPetLeave) ProtoReflect() protoreflect.Message { // Deprecated: Use NotifyPetLeave.ProtoReflect.Descriptor instead. func (*NotifyPetLeave) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{362} + return file_Gameapi_proto_rawDescGZIP(), []int{353} } func (x *NotifyPetLeave) GetAtHome() int32 { @@ -21507,7 +21077,7 @@ type ReqOpenOtherPetHome struct { func (x *ReqOpenOtherPetHome) Reset() { *x = ReqOpenOtherPetHome{} - mi := &file_Gameapi_proto_msgTypes[363] + mi := &file_Gameapi_proto_msgTypes[354] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -21519,7 +21089,7 @@ func (x *ReqOpenOtherPetHome) String() string { func (*ReqOpenOtherPetHome) ProtoMessage() {} func (x *ReqOpenOtherPetHome) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[363] + mi := &file_Gameapi_proto_msgTypes[354] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21532,7 +21102,7 @@ func (x *ReqOpenOtherPetHome) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqOpenOtherPetHome.ProtoReflect.Descriptor instead. func (*ReqOpenOtherPetHome) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{363} + return file_Gameapi_proto_rawDescGZIP(), []int{354} } func (x *ReqOpenOtherPetHome) GetDwUin() int32 { @@ -21558,7 +21128,7 @@ type ResOpenOtherPetHome struct { func (x *ResOpenOtherPetHome) Reset() { *x = ResOpenOtherPetHome{} - mi := &file_Gameapi_proto_msgTypes[364] + mi := &file_Gameapi_proto_msgTypes[355] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -21570,7 +21140,7 @@ func (x *ResOpenOtherPetHome) String() string { func (*ResOpenOtherPetHome) ProtoMessage() {} func (x *ResOpenOtherPetHome) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[364] + mi := &file_Gameapi_proto_msgTypes[355] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21583,7 +21153,7 @@ func (x *ResOpenOtherPetHome) ProtoReflect() protoreflect.Message { // Deprecated: Use ResOpenOtherPetHome.ProtoReflect.Descriptor instead. func (*ResOpenOtherPetHome) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{364} + return file_Gameapi_proto_rawDescGZIP(), []int{355} } func (x *ResOpenOtherPetHome) GetTargetUin() int32 { @@ -21649,7 +21219,7 @@ type ReqCompleteMiniGame struct { func (x *ReqCompleteMiniGame) Reset() { *x = ReqCompleteMiniGame{} - mi := &file_Gameapi_proto_msgTypes[365] + mi := &file_Gameapi_proto_msgTypes[356] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -21661,7 +21231,7 @@ func (x *ReqCompleteMiniGame) String() string { func (*ReqCompleteMiniGame) ProtoMessage() {} func (x *ReqCompleteMiniGame) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[365] + mi := &file_Gameapi_proto_msgTypes[356] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21674,7 +21244,7 @@ func (x *ReqCompleteMiniGame) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqCompleteMiniGame.ProtoReflect.Descriptor instead. func (*ReqCompleteMiniGame) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{365} + return file_Gameapi_proto_rawDescGZIP(), []int{356} } func (x *ReqCompleteMiniGame) GetDwUin() int32 { @@ -21721,7 +21291,7 @@ type ResCompleteMiniGame struct { func (x *ResCompleteMiniGame) Reset() { *x = ResCompleteMiniGame{} - mi := &file_Gameapi_proto_msgTypes[366] + mi := &file_Gameapi_proto_msgTypes[357] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -21733,7 +21303,7 @@ func (x *ResCompleteMiniGame) String() string { func (*ResCompleteMiniGame) ProtoMessage() {} func (x *ResCompleteMiniGame) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[366] + mi := &file_Gameapi_proto_msgTypes[357] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21746,7 +21316,7 @@ func (x *ResCompleteMiniGame) ProtoReflect() protoreflect.Message { // Deprecated: Use ResCompleteMiniGame.ProtoReflect.Descriptor instead. func (*ResCompleteMiniGame) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{366} + return file_Gameapi_proto_rawDescGZIP(), []int{357} } func (x *ResCompleteMiniGame) GetDwUin() int32 { @@ -21809,7 +21379,7 @@ type ReqOpenSelfPet struct { func (x *ReqOpenSelfPet) Reset() { *x = ReqOpenSelfPet{} - mi := &file_Gameapi_proto_msgTypes[367] + mi := &file_Gameapi_proto_msgTypes[358] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -21821,7 +21391,7 @@ func (x *ReqOpenSelfPet) String() string { func (*ReqOpenSelfPet) ProtoMessage() {} func (x *ReqOpenSelfPet) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[367] + mi := &file_Gameapi_proto_msgTypes[358] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21834,7 +21404,7 @@ func (x *ReqOpenSelfPet) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqOpenSelfPet.ProtoReflect.Descriptor instead. func (*ReqOpenSelfPet) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{367} + return file_Gameapi_proto_rawDescGZIP(), []int{358} } func (x *ReqOpenSelfPet) GetDwUin() int32 { @@ -21855,7 +21425,7 @@ type ResOpenSelfPet struct { func (x *ResOpenSelfPet) Reset() { *x = ResOpenSelfPet{} - mi := &file_Gameapi_proto_msgTypes[368] + mi := &file_Gameapi_proto_msgTypes[359] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -21867,7 +21437,7 @@ func (x *ResOpenSelfPet) String() string { func (*ResOpenSelfPet) ProtoMessage() {} func (x *ResOpenSelfPet) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[368] + mi := &file_Gameapi_proto_msgTypes[359] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21880,7 +21450,7 @@ func (x *ResOpenSelfPet) ProtoReflect() protoreflect.Message { // Deprecated: Use ResOpenSelfPet.ProtoReflect.Descriptor instead. func (*ResOpenSelfPet) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{368} + return file_Gameapi_proto_rawDescGZIP(), []int{359} } func (x *ResOpenSelfPet) GetDwUin() int32 { @@ -21908,7 +21478,7 @@ type NotifyPetWorkEnd struct { func (x *NotifyPetWorkEnd) Reset() { *x = NotifyPetWorkEnd{} - mi := &file_Gameapi_proto_msgTypes[369] + mi := &file_Gameapi_proto_msgTypes[360] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -21920,7 +21490,7 @@ func (x *NotifyPetWorkEnd) String() string { func (*NotifyPetWorkEnd) ProtoMessage() {} func (x *NotifyPetWorkEnd) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[369] + mi := &file_Gameapi_proto_msgTypes[360] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21933,7 +21503,7 @@ func (x *NotifyPetWorkEnd) ProtoReflect() protoreflect.Message { // Deprecated: Use NotifyPetWorkEnd.ProtoReflect.Descriptor instead. func (*NotifyPetWorkEnd) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{369} + return file_Gameapi_proto_rawDescGZIP(), []int{360} } func (x *NotifyPetWorkEnd) GetMType() int32 { @@ -21954,7 +21524,7 @@ type ReqPetHomeInterActST struct { func (x *ReqPetHomeInterActST) Reset() { *x = ReqPetHomeInterActST{} - mi := &file_Gameapi_proto_msgTypes[370] + mi := &file_Gameapi_proto_msgTypes[361] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -21966,7 +21536,7 @@ func (x *ReqPetHomeInterActST) String() string { func (*ReqPetHomeInterActST) ProtoMessage() {} func (x *ReqPetHomeInterActST) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[370] + mi := &file_Gameapi_proto_msgTypes[361] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21979,7 +21549,7 @@ func (x *ReqPetHomeInterActST) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqPetHomeInterActST.ProtoReflect.Descriptor instead. func (*ReqPetHomeInterActST) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{370} + return file_Gameapi_proto_rawDescGZIP(), []int{361} } func (x *ReqPetHomeInterActST) GetDwUin() int32 { @@ -21999,7 +21569,7 @@ type ResPetHomeInterActST struct { func (x *ResPetHomeInterActST) Reset() { *x = ResPetHomeInterActST{} - mi := &file_Gameapi_proto_msgTypes[371] + mi := &file_Gameapi_proto_msgTypes[362] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22011,7 +21581,7 @@ func (x *ResPetHomeInterActST) String() string { func (*ResPetHomeInterActST) ProtoMessage() {} func (x *ResPetHomeInterActST) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[371] + mi := &file_Gameapi_proto_msgTypes[362] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22024,7 +21594,7 @@ func (x *ResPetHomeInterActST) ProtoReflect() protoreflect.Message { // Deprecated: Use ResPetHomeInterActST.ProtoReflect.Descriptor instead. func (*ResPetHomeInterActST) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{371} + return file_Gameapi_proto_rawDescGZIP(), []int{362} } func (x *ResPetHomeInterActST) GetMPetHomeInterActSTs() []*PetHomeInterActST { @@ -22045,7 +21615,7 @@ type ReqShiftVisitPet struct { func (x *ReqShiftVisitPet) Reset() { *x = ReqShiftVisitPet{} - mi := &file_Gameapi_proto_msgTypes[372] + mi := &file_Gameapi_proto_msgTypes[363] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22057,7 +21627,7 @@ func (x *ReqShiftVisitPet) String() string { func (*ReqShiftVisitPet) ProtoMessage() {} func (x *ReqShiftVisitPet) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[372] + mi := &file_Gameapi_proto_msgTypes[363] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22070,7 +21640,7 @@ func (x *ReqShiftVisitPet) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqShiftVisitPet.ProtoReflect.Descriptor instead. func (*ReqShiftVisitPet) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{372} + return file_Gameapi_proto_rawDescGZIP(), []int{363} } func (x *ReqShiftVisitPet) GetTargetUin() int32 { @@ -22096,7 +21666,7 @@ type ResShiftVisitPet struct { func (x *ResShiftVisitPet) Reset() { *x = ResShiftVisitPet{} - mi := &file_Gameapi_proto_msgTypes[373] + mi := &file_Gameapi_proto_msgTypes[364] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22108,7 +21678,7 @@ func (x *ResShiftVisitPet) String() string { func (*ResShiftVisitPet) ProtoMessage() {} func (x *ResShiftVisitPet) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[373] + mi := &file_Gameapi_proto_msgTypes[364] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22121,7 +21691,7 @@ func (x *ResShiftVisitPet) ProtoReflect() protoreflect.Message { // Deprecated: Use ResShiftVisitPet.ProtoReflect.Descriptor instead. func (*ResShiftVisitPet) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{373} + return file_Gameapi_proto_rawDescGZIP(), []int{364} } func (x *ResShiftVisitPet) GetTargetUin() int32 { @@ -22184,7 +21754,7 @@ type ReqCallBackPet struct { func (x *ReqCallBackPet) Reset() { *x = ReqCallBackPet{} - mi := &file_Gameapi_proto_msgTypes[374] + mi := &file_Gameapi_proto_msgTypes[365] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22196,7 +21766,7 @@ func (x *ReqCallBackPet) String() string { func (*ReqCallBackPet) ProtoMessage() {} func (x *ReqCallBackPet) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[374] + mi := &file_Gameapi_proto_msgTypes[365] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22209,7 +21779,7 @@ func (x *ReqCallBackPet) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqCallBackPet.ProtoReflect.Descriptor instead. func (*ReqCallBackPet) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{374} + return file_Gameapi_proto_rawDescGZIP(), []int{365} } func (x *ReqCallBackPet) GetDwUin() int32 { @@ -22229,7 +21799,7 @@ type ResCallBackPet struct { func (x *ResCallBackPet) Reset() { *x = ResCallBackPet{} - mi := &file_Gameapi_proto_msgTypes[375] + mi := &file_Gameapi_proto_msgTypes[366] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22241,7 +21811,7 @@ func (x *ResCallBackPet) String() string { func (*ResCallBackPet) ProtoMessage() {} func (x *ResCallBackPet) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[375] + mi := &file_Gameapi_proto_msgTypes[366] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22254,7 +21824,7 @@ func (x *ResCallBackPet) ProtoReflect() protoreflect.Message { // Deprecated: Use ResCallBackPet.ProtoReflect.Descriptor instead. func (*ResCallBackPet) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{375} + return file_Gameapi_proto_rawDescGZIP(), []int{366} } func (x *ResCallBackPet) GetResultCode() int32 { @@ -22275,7 +21845,7 @@ type IntPack struct { func (x *IntPack) Reset() { *x = IntPack{} - mi := &file_Gameapi_proto_msgTypes[376] + mi := &file_Gameapi_proto_msgTypes[367] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22287,7 +21857,7 @@ func (x *IntPack) String() string { func (*IntPack) ProtoMessage() {} func (x *IntPack) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[376] + mi := &file_Gameapi_proto_msgTypes[367] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22300,7 +21870,7 @@ func (x *IntPack) ProtoReflect() protoreflect.Message { // Deprecated: Use IntPack.ProtoReflect.Descriptor instead. func (*IntPack) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{376} + return file_Gameapi_proto_rawDescGZIP(), []int{367} } func (x *IntPack) GetNum() int32 { @@ -22321,7 +21891,7 @@ type Item struct { func (x *Item) Reset() { *x = Item{} - mi := &file_Gameapi_proto_msgTypes[377] + mi := &file_Gameapi_proto_msgTypes[368] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22333,7 +21903,7 @@ func (x *Item) String() string { func (*Item) ProtoMessage() {} func (x *Item) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[377] + mi := &file_Gameapi_proto_msgTypes[368] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22346,7 +21916,7 @@ func (x *Item) ProtoReflect() protoreflect.Message { // Deprecated: Use Item.ProtoReflect.Descriptor instead. func (*Item) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{377} + return file_Gameapi_proto_rawDescGZIP(), []int{368} } func (x *Item) GetId() int32 { @@ -22377,7 +21947,7 @@ type UseItemRequest struct { func (x *UseItemRequest) Reset() { *x = UseItemRequest{} - mi := &file_Gameapi_proto_msgTypes[378] + mi := &file_Gameapi_proto_msgTypes[369] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22389,7 +21959,7 @@ func (x *UseItemRequest) String() string { func (*UseItemRequest) ProtoMessage() {} func (x *UseItemRequest) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[378] + mi := &file_Gameapi_proto_msgTypes[369] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22402,7 +21972,7 @@ func (x *UseItemRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UseItemRequest.ProtoReflect.Descriptor instead. func (*UseItemRequest) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{378} + return file_Gameapi_proto_rawDescGZIP(), []int{369} } func (x *UseItemRequest) GetItemId() int32 { @@ -22455,7 +22025,7 @@ type UseItemResponse struct { func (x *UseItemResponse) Reset() { *x = UseItemResponse{} - mi := &file_Gameapi_proto_msgTypes[379] + mi := &file_Gameapi_proto_msgTypes[370] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22467,7 +22037,7 @@ func (x *UseItemResponse) String() string { func (*UseItemResponse) ProtoMessage() {} func (x *UseItemResponse) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[379] + mi := &file_Gameapi_proto_msgTypes[370] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22480,7 +22050,7 @@ func (x *UseItemResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UseItemResponse.ProtoReflect.Descriptor instead. func (*UseItemResponse) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{379} + return file_Gameapi_proto_rawDescGZIP(), []int{370} } func (x *UseItemResponse) GetItemId() int32 { @@ -22535,7 +22105,7 @@ type Hello struct { func (x *Hello) Reset() { *x = Hello{} - mi := &file_Gameapi_proto_msgTypes[380] + mi := &file_Gameapi_proto_msgTypes[371] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22547,7 +22117,7 @@ func (x *Hello) String() string { func (*Hello) ProtoMessage() {} func (x *Hello) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[380] + mi := &file_Gameapi_proto_msgTypes[371] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22560,7 +22130,7 @@ func (x *Hello) ProtoReflect() protoreflect.Message { // Deprecated: Use Hello.ProtoReflect.Descriptor instead. func (*Hello) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{380} + return file_Gameapi_proto_rawDescGZIP(), []int{371} } func (x *Hello) GetName() string { @@ -22581,7 +22151,7 @@ type ReqSetEnergyMul struct { func (x *ReqSetEnergyMul) Reset() { *x = ReqSetEnergyMul{} - mi := &file_Gameapi_proto_msgTypes[381] + mi := &file_Gameapi_proto_msgTypes[372] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22593,7 +22163,7 @@ func (x *ReqSetEnergyMul) String() string { func (*ReqSetEnergyMul) ProtoMessage() {} func (x *ReqSetEnergyMul) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[381] + mi := &file_Gameapi_proto_msgTypes[372] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22606,7 +22176,7 @@ func (x *ReqSetEnergyMul) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqSetEnergyMul.ProtoReflect.Descriptor instead. func (*ReqSetEnergyMul) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{381} + return file_Gameapi_proto_rawDescGZIP(), []int{372} } func (x *ReqSetEnergyMul) GetEnergyMul() int32 { @@ -22627,7 +22197,7 @@ type ResSetEnergyMul struct { func (x *ResSetEnergyMul) Reset() { *x = ResSetEnergyMul{} - mi := &file_Gameapi_proto_msgTypes[382] + mi := &file_Gameapi_proto_msgTypes[373] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22639,7 +22209,7 @@ func (x *ResSetEnergyMul) String() string { func (*ResSetEnergyMul) ProtoMessage() {} func (x *ResSetEnergyMul) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[382] + mi := &file_Gameapi_proto_msgTypes[373] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22652,7 +22222,7 @@ func (x *ResSetEnergyMul) ProtoReflect() protoreflect.Message { // Deprecated: Use ResSetEnergyMul.ProtoReflect.Descriptor instead. func (*ResSetEnergyMul) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{382} + return file_Gameapi_proto_rawDescGZIP(), []int{373} } func (x *ResSetEnergyMul) GetResultCode() RES_CODE { @@ -22681,7 +22251,7 @@ type BaseInfo struct { func (x *BaseInfo) Reset() { *x = BaseInfo{} - mi := &file_Gameapi_proto_msgTypes[383] + mi := &file_Gameapi_proto_msgTypes[374] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22693,7 +22263,7 @@ func (x *BaseInfo) String() string { func (*BaseInfo) ProtoMessage() {} func (x *BaseInfo) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[383] + mi := &file_Gameapi_proto_msgTypes[374] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22706,7 +22276,7 @@ func (x *BaseInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use BaseInfo.ProtoReflect.Descriptor instead. func (*BaseInfo) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{383} + return file_Gameapi_proto_rawDescGZIP(), []int{374} } func (x *BaseInfo) GetEnergyMul() int32 { @@ -22738,7 +22308,7 @@ type ReqUserInfo struct { func (x *ReqUserInfo) Reset() { *x = ReqUserInfo{} - mi := &file_Gameapi_proto_msgTypes[384] + mi := &file_Gameapi_proto_msgTypes[375] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22750,7 +22320,7 @@ func (x *ReqUserInfo) String() string { func (*ReqUserInfo) ProtoMessage() {} func (x *ReqUserInfo) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[384] + mi := &file_Gameapi_proto_msgTypes[375] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22763,7 +22333,7 @@ func (x *ReqUserInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqUserInfo.ProtoReflect.Descriptor instead. func (*ReqUserInfo) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{384} + return file_Gameapi_proto_rawDescGZIP(), []int{375} } type UserInfo struct { @@ -22783,7 +22353,7 @@ type UserInfo struct { func (x *UserInfo) Reset() { *x = UserInfo{} - mi := &file_Gameapi_proto_msgTypes[385] + mi := &file_Gameapi_proto_msgTypes[376] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22795,7 +22365,7 @@ func (x *UserInfo) String() string { func (*UserInfo) ProtoMessage() {} func (x *UserInfo) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[385] + mi := &file_Gameapi_proto_msgTypes[376] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22808,7 +22378,7 @@ func (x *UserInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use UserInfo.ProtoReflect.Descriptor instead. func (*UserInfo) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{385} + return file_Gameapi_proto_rawDescGZIP(), []int{376} } func (x *UserInfo) GetUid() int32 { @@ -22878,7 +22448,7 @@ type ReqSetName struct { func (x *ReqSetName) Reset() { *x = ReqSetName{} - mi := &file_Gameapi_proto_msgTypes[386] + mi := &file_Gameapi_proto_msgTypes[377] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22890,7 +22460,7 @@ func (x *ReqSetName) String() string { func (*ReqSetName) ProtoMessage() {} func (x *ReqSetName) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[386] + mi := &file_Gameapi_proto_msgTypes[377] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22903,7 +22473,7 @@ func (x *ReqSetName) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqSetName.ProtoReflect.Descriptor instead. func (*ReqSetName) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{386} + return file_Gameapi_proto_rawDescGZIP(), []int{377} } func (x *ReqSetName) GetName() string { @@ -22924,7 +22494,7 @@ type ResSetName struct { func (x *ResSetName) Reset() { *x = ResSetName{} - mi := &file_Gameapi_proto_msgTypes[387] + mi := &file_Gameapi_proto_msgTypes[378] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22936,7 +22506,7 @@ func (x *ResSetName) String() string { func (*ResSetName) ProtoMessage() {} func (x *ResSetName) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[387] + mi := &file_Gameapi_proto_msgTypes[378] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22949,7 +22519,7 @@ func (x *ResSetName) ProtoReflect() protoreflect.Message { // Deprecated: Use ResSetName.ProtoReflect.Descriptor instead. func (*ResSetName) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{387} + return file_Gameapi_proto_rawDescGZIP(), []int{378} } func (x *ResSetName) GetResultCode() RES_CODE { @@ -22977,7 +22547,7 @@ type ReqBuyEnergy struct { func (x *ReqBuyEnergy) Reset() { *x = ReqBuyEnergy{} - mi := &file_Gameapi_proto_msgTypes[388] + mi := &file_Gameapi_proto_msgTypes[379] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22989,7 +22559,7 @@ func (x *ReqBuyEnergy) String() string { func (*ReqBuyEnergy) ProtoMessage() {} func (x *ReqBuyEnergy) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[388] + mi := &file_Gameapi_proto_msgTypes[379] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23002,7 +22572,7 @@ func (x *ReqBuyEnergy) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqBuyEnergy.ProtoReflect.Descriptor instead. func (*ReqBuyEnergy) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{388} + return file_Gameapi_proto_rawDescGZIP(), []int{379} } func (x *ReqBuyEnergy) GetEnergy() int32 { @@ -23023,7 +22593,7 @@ type ResBuyEnergy struct { func (x *ResBuyEnergy) Reset() { *x = ResBuyEnergy{} - mi := &file_Gameapi_proto_msgTypes[389] + mi := &file_Gameapi_proto_msgTypes[380] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23035,7 +22605,7 @@ func (x *ResBuyEnergy) String() string { func (*ResBuyEnergy) ProtoMessage() {} func (x *ResBuyEnergy) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[389] + mi := &file_Gameapi_proto_msgTypes[380] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23048,7 +22618,7 @@ func (x *ResBuyEnergy) ProtoReflect() protoreflect.Message { // Deprecated: Use ResBuyEnergy.ProtoReflect.Descriptor instead. func (*ResBuyEnergy) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{389} + return file_Gameapi_proto_rawDescGZIP(), []int{380} } func (x *ResBuyEnergy) GetCode() RES_CODE { @@ -23075,7 +22645,7 @@ type ReqGetHandbookReward struct { func (x *ReqGetHandbookReward) Reset() { *x = ReqGetHandbookReward{} - mi := &file_Gameapi_proto_msgTypes[390] + mi := &file_Gameapi_proto_msgTypes[381] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23087,7 +22657,7 @@ func (x *ReqGetHandbookReward) String() string { func (*ReqGetHandbookReward) ProtoMessage() {} func (x *ReqGetHandbookReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[390] + mi := &file_Gameapi_proto_msgTypes[381] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23100,7 +22670,7 @@ func (x *ReqGetHandbookReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqGetHandbookReward.ProtoReflect.Descriptor instead. func (*ReqGetHandbookReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{390} + return file_Gameapi_proto_rawDescGZIP(), []int{381} } func (x *ReqGetHandbookReward) GetChessId() int32 { @@ -23121,7 +22691,7 @@ type HandbookInfo struct { func (x *HandbookInfo) Reset() { *x = HandbookInfo{} - mi := &file_Gameapi_proto_msgTypes[391] + mi := &file_Gameapi_proto_msgTypes[382] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23133,7 +22703,7 @@ func (x *HandbookInfo) String() string { func (*HandbookInfo) ProtoMessage() {} func (x *HandbookInfo) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[391] + mi := &file_Gameapi_proto_msgTypes[382] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23146,7 +22716,7 @@ func (x *HandbookInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use HandbookInfo.ProtoReflect.Descriptor instead. func (*HandbookInfo) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{391} + return file_Gameapi_proto_rawDescGZIP(), []int{382} } func (x *HandbookInfo) GetChessId() int32 { @@ -23173,7 +22743,7 @@ type Handbook struct { func (x *Handbook) Reset() { *x = Handbook{} - mi := &file_Gameapi_proto_msgTypes[392] + mi := &file_Gameapi_proto_msgTypes[383] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23185,7 +22755,7 @@ func (x *Handbook) String() string { func (*Handbook) ProtoMessage() {} func (x *Handbook) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[392] + mi := &file_Gameapi_proto_msgTypes[383] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23198,7 +22768,7 @@ func (x *Handbook) ProtoReflect() protoreflect.Message { // Deprecated: Use Handbook.ProtoReflect.Descriptor instead. func (*Handbook) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{392} + return file_Gameapi_proto_rawDescGZIP(), []int{383} } func (x *Handbook) GetHandbooks() []*HandbookInfo { @@ -23219,7 +22789,7 @@ type ResGetHandbookReward struct { func (x *ResGetHandbookReward) Reset() { *x = ResGetHandbookReward{} - mi := &file_Gameapi_proto_msgTypes[393] + mi := &file_Gameapi_proto_msgTypes[384] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23231,7 +22801,7 @@ func (x *ResGetHandbookReward) String() string { func (*ResGetHandbookReward) ProtoMessage() {} func (x *ResGetHandbookReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[393] + mi := &file_Gameapi_proto_msgTypes[384] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23244,7 +22814,7 @@ func (x *ResGetHandbookReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ResGetHandbookReward.ProtoReflect.Descriptor instead. func (*ResGetHandbookReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{393} + return file_Gameapi_proto_rawDescGZIP(), []int{384} } func (x *ResGetHandbookReward) GetCode() RES_CODE { @@ -23271,7 +22841,7 @@ type ReqRewardOrder struct { func (x *ReqRewardOrder) Reset() { *x = ReqRewardOrder{} - mi := &file_Gameapi_proto_msgTypes[394] + mi := &file_Gameapi_proto_msgTypes[385] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23283,7 +22853,7 @@ func (x *ReqRewardOrder) String() string { func (*ReqRewardOrder) ProtoMessage() {} func (x *ReqRewardOrder) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[394] + mi := &file_Gameapi_proto_msgTypes[385] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23296,7 +22866,7 @@ func (x *ReqRewardOrder) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqRewardOrder.ProtoReflect.Descriptor instead. func (*ReqRewardOrder) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{394} + return file_Gameapi_proto_rawDescGZIP(), []int{385} } func (x *ReqRewardOrder) GetOrderId() int32 { @@ -23317,7 +22887,7 @@ type ResRewardOrder struct { func (x *ResRewardOrder) Reset() { *x = ResRewardOrder{} - mi := &file_Gameapi_proto_msgTypes[395] + mi := &file_Gameapi_proto_msgTypes[386] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23329,7 +22899,7 @@ func (x *ResRewardOrder) String() string { func (*ResRewardOrder) ProtoMessage() {} func (x *ResRewardOrder) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[395] + mi := &file_Gameapi_proto_msgTypes[386] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23342,7 +22912,7 @@ func (x *ResRewardOrder) ProtoReflect() protoreflect.Message { // Deprecated: Use ResRewardOrder.ProtoReflect.Descriptor instead. func (*ResRewardOrder) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{395} + return file_Gameapi_proto_rawDescGZIP(), []int{386} } func (x *ResRewardOrder) GetCode() RES_CODE { @@ -23371,7 +22941,7 @@ type Order struct { func (x *Order) Reset() { *x = Order{} - mi := &file_Gameapi_proto_msgTypes[396] + mi := &file_Gameapi_proto_msgTypes[387] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23383,7 +22953,7 @@ func (x *Order) String() string { func (*Order) ProtoMessage() {} func (x *Order) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[396] + mi := &file_Gameapi_proto_msgTypes[387] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23396,7 +22966,7 @@ func (x *Order) ProtoReflect() protoreflect.Message { // Deprecated: Use Order.ProtoReflect.Descriptor instead. func (*Order) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{396} + return file_Gameapi_proto_rawDescGZIP(), []int{387} } func (x *Order) GetId() int32 { @@ -23430,7 +23000,7 @@ type ResOrderList struct { func (x *ResOrderList) Reset() { *x = ResOrderList{} - mi := &file_Gameapi_proto_msgTypes[397] + mi := &file_Gameapi_proto_msgTypes[388] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23442,7 +23012,7 @@ func (x *ResOrderList) String() string { func (*ResOrderList) ProtoMessage() {} func (x *ResOrderList) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[397] + mi := &file_Gameapi_proto_msgTypes[388] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23455,7 +23025,7 @@ func (x *ResOrderList) ProtoReflect() protoreflect.Message { // Deprecated: Use ResOrderList.ProtoReflect.Descriptor instead. func (*ResOrderList) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{397} + return file_Gameapi_proto_rawDescGZIP(), []int{388} } func (x *ResOrderList) GetOrderList() []*Order { @@ -23477,7 +23047,7 @@ type ResDecorateInfo struct { func (x *ResDecorateInfo) Reset() { *x = ResDecorateInfo{} - mi := &file_Gameapi_proto_msgTypes[398] + mi := &file_Gameapi_proto_msgTypes[389] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23489,7 +23059,7 @@ func (x *ResDecorateInfo) String() string { func (*ResDecorateInfo) ProtoMessage() {} func (x *ResDecorateInfo) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[398] + mi := &file_Gameapi_proto_msgTypes[389] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23502,7 +23072,7 @@ func (x *ResDecorateInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ResDecorateInfo.ProtoReflect.Descriptor instead. func (*ResDecorateInfo) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{398} + return file_Gameapi_proto_rawDescGZIP(), []int{389} } func (x *ResDecorateInfo) GetAreaId() int32 { @@ -23531,7 +23101,7 @@ type ReqDecorate struct { func (x *ReqDecorate) Reset() { *x = ReqDecorate{} - mi := &file_Gameapi_proto_msgTypes[399] + mi := &file_Gameapi_proto_msgTypes[390] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23543,7 +23113,7 @@ func (x *ReqDecorate) String() string { func (*ReqDecorate) ProtoMessage() {} func (x *ReqDecorate) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[399] + mi := &file_Gameapi_proto_msgTypes[390] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23556,7 +23126,7 @@ func (x *ReqDecorate) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqDecorate.ProtoReflect.Descriptor instead. func (*ReqDecorate) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{399} + return file_Gameapi_proto_rawDescGZIP(), []int{390} } func (x *ReqDecorate) GetAreaId() int32 { @@ -23584,7 +23154,7 @@ type ResDecorate struct { func (x *ResDecorate) Reset() { *x = ResDecorate{} - mi := &file_Gameapi_proto_msgTypes[400] + mi := &file_Gameapi_proto_msgTypes[391] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23596,7 +23166,7 @@ func (x *ResDecorate) String() string { func (*ResDecorate) ProtoMessage() {} func (x *ResDecorate) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[400] + mi := &file_Gameapi_proto_msgTypes[391] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23609,7 +23179,7 @@ func (x *ResDecorate) ProtoReflect() protoreflect.Message { // Deprecated: Use ResDecorate.ProtoReflect.Descriptor instead. func (*ResDecorate) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{400} + return file_Gameapi_proto_rawDescGZIP(), []int{391} } func (x *ResDecorate) GetCode() RES_CODE { @@ -23635,7 +23205,7 @@ type ReqDecorateAll struct { func (x *ReqDecorateAll) Reset() { *x = ReqDecorateAll{} - mi := &file_Gameapi_proto_msgTypes[401] + mi := &file_Gameapi_proto_msgTypes[392] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23647,7 +23217,7 @@ func (x *ReqDecorateAll) String() string { func (*ReqDecorateAll) ProtoMessage() {} func (x *ReqDecorateAll) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[401] + mi := &file_Gameapi_proto_msgTypes[392] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23660,7 +23230,7 @@ func (x *ReqDecorateAll) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqDecorateAll.ProtoReflect.Descriptor instead. func (*ReqDecorateAll) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{401} + return file_Gameapi_proto_rawDescGZIP(), []int{392} } type ResDecorateAll struct { @@ -23674,7 +23244,7 @@ type ResDecorateAll struct { func (x *ResDecorateAll) Reset() { *x = ResDecorateAll{} - mi := &file_Gameapi_proto_msgTypes[402] + mi := &file_Gameapi_proto_msgTypes[393] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23686,7 +23256,7 @@ func (x *ResDecorateAll) String() string { func (*ResDecorateAll) ProtoMessage() {} func (x *ResDecorateAll) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[402] + mi := &file_Gameapi_proto_msgTypes[393] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23699,7 +23269,7 @@ func (x *ResDecorateAll) ProtoReflect() protoreflect.Message { // Deprecated: Use ResDecorateAll.ProtoReflect.Descriptor instead. func (*ResDecorateAll) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{402} + return file_Gameapi_proto_rawDescGZIP(), []int{393} } func (x *ResDecorateAll) GetCode() RES_CODE { @@ -23728,7 +23298,7 @@ type ReqGmCommand struct { func (x *ReqGmCommand) Reset() { *x = ReqGmCommand{} - mi := &file_Gameapi_proto_msgTypes[403] + mi := &file_Gameapi_proto_msgTypes[394] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23740,7 +23310,7 @@ func (x *ReqGmCommand) String() string { func (*ReqGmCommand) ProtoMessage() {} func (x *ReqGmCommand) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[403] + mi := &file_Gameapi_proto_msgTypes[394] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23753,7 +23323,7 @@ func (x *ReqGmCommand) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqGmCommand.ProtoReflect.Descriptor instead. func (*ReqGmCommand) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{403} + return file_Gameapi_proto_rawDescGZIP(), []int{394} } func (x *ReqGmCommand) GetCommand() string { @@ -23782,7 +23352,7 @@ type Card struct { func (x *Card) Reset() { *x = Card{} - mi := &file_Gameapi_proto_msgTypes[404] + mi := &file_Gameapi_proto_msgTypes[395] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23794,7 +23364,7 @@ func (x *Card) String() string { func (*Card) ProtoMessage() {} func (x *Card) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[404] + mi := &file_Gameapi_proto_msgTypes[395] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23807,7 +23377,7 @@ func (x *Card) ProtoReflect() protoreflect.Message { // Deprecated: Use Card.ProtoReflect.Descriptor instead. func (*Card) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{404} + return file_Gameapi_proto_rawDescGZIP(), []int{395} } func (x *Card) GetId() int32 { @@ -23843,7 +23413,7 @@ type ResCardInfo struct { func (x *ResCardInfo) Reset() { *x = ResCardInfo{} - mi := &file_Gameapi_proto_msgTypes[405] + mi := &file_Gameapi_proto_msgTypes[396] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23855,7 +23425,7 @@ func (x *ResCardInfo) String() string { func (*ResCardInfo) ProtoMessage() {} func (x *ResCardInfo) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[405] + mi := &file_Gameapi_proto_msgTypes[396] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23868,7 +23438,7 @@ func (x *ResCardInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ResCardInfo.ProtoReflect.Descriptor instead. func (*ResCardInfo) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{405} + return file_Gameapi_proto_rawDescGZIP(), []int{396} } func (x *ResCardInfo) GetCardList() []*Card { @@ -23953,7 +23523,7 @@ type ReqMasterCard struct { func (x *ReqMasterCard) Reset() { *x = ReqMasterCard{} - mi := &file_Gameapi_proto_msgTypes[406] + mi := &file_Gameapi_proto_msgTypes[397] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23965,7 +23535,7 @@ func (x *ReqMasterCard) String() string { func (*ReqMasterCard) ProtoMessage() {} func (x *ReqMasterCard) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[406] + mi := &file_Gameapi_proto_msgTypes[397] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23978,7 +23548,7 @@ func (x *ReqMasterCard) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqMasterCard.ProtoReflect.Descriptor instead. func (*ReqMasterCard) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{406} + return file_Gameapi_proto_rawDescGZIP(), []int{397} } func (x *ReqMasterCard) GetId() int32 { @@ -24008,7 +23578,7 @@ type ResMasterCard struct { func (x *ResMasterCard) Reset() { *x = ResMasterCard{} - mi := &file_Gameapi_proto_msgTypes[407] + mi := &file_Gameapi_proto_msgTypes[398] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -24020,7 +23590,7 @@ func (x *ResMasterCard) String() string { func (*ResMasterCard) ProtoMessage() {} func (x *ResMasterCard) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[407] + mi := &file_Gameapi_proto_msgTypes[398] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24033,7 +23603,7 @@ func (x *ResMasterCard) ProtoReflect() protoreflect.Message { // Deprecated: Use ResMasterCard.ProtoReflect.Descriptor instead. func (*ResMasterCard) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{407} + return file_Gameapi_proto_rawDescGZIP(), []int{398} } func (x *ResMasterCard) GetCode() RES_CODE { @@ -24075,7 +23645,7 @@ type ReqCardCollectReward struct { func (x *ReqCardCollectReward) Reset() { *x = ReqCardCollectReward{} - mi := &file_Gameapi_proto_msgTypes[408] + mi := &file_Gameapi_proto_msgTypes[399] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -24087,7 +23657,7 @@ func (x *ReqCardCollectReward) String() string { func (*ReqCardCollectReward) ProtoMessage() {} func (x *ReqCardCollectReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[408] + mi := &file_Gameapi_proto_msgTypes[399] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24100,7 +23670,7 @@ func (x *ReqCardCollectReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqCardCollectReward.ProtoReflect.Descriptor instead. func (*ReqCardCollectReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{408} + return file_Gameapi_proto_rawDescGZIP(), []int{399} } func (x *ReqCardCollectReward) GetColor() int32 { @@ -24121,7 +23691,7 @@ type ResCardCollectReward struct { func (x *ResCardCollectReward) Reset() { *x = ResCardCollectReward{} - mi := &file_Gameapi_proto_msgTypes[409] + mi := &file_Gameapi_proto_msgTypes[400] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -24133,7 +23703,7 @@ func (x *ResCardCollectReward) String() string { func (*ResCardCollectReward) ProtoMessage() {} func (x *ResCardCollectReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[409] + mi := &file_Gameapi_proto_msgTypes[400] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24146,7 +23716,7 @@ func (x *ResCardCollectReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ResCardCollectReward.ProtoReflect.Descriptor instead. func (*ResCardCollectReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{409} + return file_Gameapi_proto_rawDescGZIP(), []int{400} } func (x *ResCardCollectReward) GetCode() RES_CODE { @@ -24174,7 +23744,7 @@ type ReqExStarReward struct { func (x *ReqExStarReward) Reset() { *x = ReqExStarReward{} - mi := &file_Gameapi_proto_msgTypes[410] + mi := &file_Gameapi_proto_msgTypes[401] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -24186,7 +23756,7 @@ func (x *ReqExStarReward) String() string { func (*ReqExStarReward) ProtoMessage() {} func (x *ReqExStarReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[410] + mi := &file_Gameapi_proto_msgTypes[401] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24199,7 +23769,7 @@ func (x *ReqExStarReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqExStarReward.ProtoReflect.Descriptor instead. func (*ReqExStarReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{410} + return file_Gameapi_proto_rawDescGZIP(), []int{401} } func (x *ReqExStarReward) GetId() int32 { @@ -24220,7 +23790,7 @@ type ResExStarReward struct { func (x *ResExStarReward) Reset() { *x = ResExStarReward{} - mi := &file_Gameapi_proto_msgTypes[411] + mi := &file_Gameapi_proto_msgTypes[402] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -24232,7 +23802,7 @@ func (x *ResExStarReward) String() string { func (*ResExStarReward) ProtoMessage() {} func (x *ResExStarReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[411] + mi := &file_Gameapi_proto_msgTypes[402] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24245,7 +23815,7 @@ func (x *ResExStarReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ResExStarReward.ProtoReflect.Descriptor instead. func (*ResExStarReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{411} + return file_Gameapi_proto_rawDescGZIP(), []int{402} } func (x *ResExStarReward) GetCode() RES_CODE { @@ -24271,7 +23841,7 @@ type ReqAllCollectReward struct { func (x *ReqAllCollectReward) Reset() { *x = ReqAllCollectReward{} - mi := &file_Gameapi_proto_msgTypes[412] + mi := &file_Gameapi_proto_msgTypes[403] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -24283,7 +23853,7 @@ func (x *ReqAllCollectReward) String() string { func (*ReqAllCollectReward) ProtoMessage() {} func (x *ReqAllCollectReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[412] + mi := &file_Gameapi_proto_msgTypes[403] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24296,7 +23866,7 @@ func (x *ReqAllCollectReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqAllCollectReward.ProtoReflect.Descriptor instead. func (*ReqAllCollectReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{412} + return file_Gameapi_proto_rawDescGZIP(), []int{403} } type ResAllCollectReward struct { @@ -24310,7 +23880,7 @@ type ResAllCollectReward struct { func (x *ResAllCollectReward) Reset() { *x = ResAllCollectReward{} - mi := &file_Gameapi_proto_msgTypes[413] + mi := &file_Gameapi_proto_msgTypes[404] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -24322,7 +23892,7 @@ func (x *ResAllCollectReward) String() string { func (*ResAllCollectReward) ProtoMessage() {} func (x *ResAllCollectReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[413] + mi := &file_Gameapi_proto_msgTypes[404] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24335,7 +23905,7 @@ func (x *ResAllCollectReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ResAllCollectReward.ProtoReflect.Descriptor instead. func (*ResAllCollectReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{413} + return file_Gameapi_proto_rawDescGZIP(), []int{404} } func (x *ResAllCollectReward) GetCode() RES_CODE { @@ -24364,7 +23934,7 @@ type ReqCardGive struct { func (x *ReqCardGive) Reset() { *x = ReqCardGive{} - mi := &file_Gameapi_proto_msgTypes[414] + mi := &file_Gameapi_proto_msgTypes[405] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -24376,7 +23946,7 @@ func (x *ReqCardGive) String() string { func (*ReqCardGive) ProtoMessage() {} func (x *ReqCardGive) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[414] + mi := &file_Gameapi_proto_msgTypes[405] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24389,7 +23959,7 @@ func (x *ReqCardGive) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqCardGive.ProtoReflect.Descriptor instead. func (*ReqCardGive) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{414} + return file_Gameapi_proto_rawDescGZIP(), []int{405} } func (x *ReqCardGive) GetUid() []int32 { @@ -24417,7 +23987,7 @@ type ResCardGive struct { func (x *ResCardGive) Reset() { *x = ResCardGive{} - mi := &file_Gameapi_proto_msgTypes[415] + mi := &file_Gameapi_proto_msgTypes[406] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -24429,7 +23999,7 @@ func (x *ResCardGive) String() string { func (*ResCardGive) ProtoMessage() {} func (x *ResCardGive) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[415] + mi := &file_Gameapi_proto_msgTypes[406] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24442,7 +24012,7 @@ func (x *ResCardGive) ProtoReflect() protoreflect.Message { // Deprecated: Use ResCardGive.ProtoReflect.Descriptor instead. func (*ResCardGive) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{415} + return file_Gameapi_proto_rawDescGZIP(), []int{406} } func (x *ResCardGive) GetCode() RES_CODE { @@ -24470,7 +24040,7 @@ type ReqAgreeCardGive struct { func (x *ReqAgreeCardGive) Reset() { *x = ReqAgreeCardGive{} - mi := &file_Gameapi_proto_msgTypes[416] + mi := &file_Gameapi_proto_msgTypes[407] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -24482,7 +24052,7 @@ func (x *ReqAgreeCardGive) String() string { func (*ReqAgreeCardGive) ProtoMessage() {} func (x *ReqAgreeCardGive) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[416] + mi := &file_Gameapi_proto_msgTypes[407] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24495,7 +24065,7 @@ func (x *ReqAgreeCardGive) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqAgreeCardGive.ProtoReflect.Descriptor instead. func (*ReqAgreeCardGive) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{416} + return file_Gameapi_proto_rawDescGZIP(), []int{407} } func (x *ReqAgreeCardGive) GetId() string { @@ -24516,7 +24086,7 @@ type ResAgreeCardGive struct { func (x *ResAgreeCardGive) Reset() { *x = ResAgreeCardGive{} - mi := &file_Gameapi_proto_msgTypes[417] + mi := &file_Gameapi_proto_msgTypes[408] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -24528,7 +24098,7 @@ func (x *ResAgreeCardGive) String() string { func (*ResAgreeCardGive) ProtoMessage() {} func (x *ResAgreeCardGive) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[417] + mi := &file_Gameapi_proto_msgTypes[408] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24541,7 +24111,7 @@ func (x *ResAgreeCardGive) ProtoReflect() protoreflect.Message { // Deprecated: Use ResAgreeCardGive.ProtoReflect.Descriptor instead. func (*ResAgreeCardGive) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{417} + return file_Gameapi_proto_rawDescGZIP(), []int{408} } func (x *ResAgreeCardGive) GetCode() RES_CODE { @@ -24569,7 +24139,7 @@ type ReqRefuseCardGive struct { func (x *ReqRefuseCardGive) Reset() { *x = ReqRefuseCardGive{} - mi := &file_Gameapi_proto_msgTypes[418] + mi := &file_Gameapi_proto_msgTypes[409] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -24581,7 +24151,7 @@ func (x *ReqRefuseCardGive) String() string { func (*ReqRefuseCardGive) ProtoMessage() {} func (x *ReqRefuseCardGive) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[418] + mi := &file_Gameapi_proto_msgTypes[409] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24594,7 +24164,7 @@ func (x *ReqRefuseCardGive) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqRefuseCardGive.ProtoReflect.Descriptor instead. func (*ReqRefuseCardGive) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{418} + return file_Gameapi_proto_rawDescGZIP(), []int{409} } func (x *ReqRefuseCardGive) GetId() string { @@ -24615,7 +24185,7 @@ type ResRefuseCardGive struct { func (x *ResRefuseCardGive) Reset() { *x = ResRefuseCardGive{} - mi := &file_Gameapi_proto_msgTypes[419] + mi := &file_Gameapi_proto_msgTypes[410] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -24627,7 +24197,7 @@ func (x *ResRefuseCardGive) String() string { func (*ResRefuseCardGive) ProtoMessage() {} func (x *ResRefuseCardGive) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[419] + mi := &file_Gameapi_proto_msgTypes[410] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24640,7 +24210,7 @@ func (x *ResRefuseCardGive) ProtoReflect() protoreflect.Message { // Deprecated: Use ResRefuseCardGive.ProtoReflect.Descriptor instead. func (*ResRefuseCardGive) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{419} + return file_Gameapi_proto_rawDescGZIP(), []int{410} } func (x *ResRefuseCardGive) GetCode() RES_CODE { @@ -24669,7 +24239,7 @@ type ReqCardSend struct { func (x *ReqCardSend) Reset() { *x = ReqCardSend{} - mi := &file_Gameapi_proto_msgTypes[420] + mi := &file_Gameapi_proto_msgTypes[411] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -24681,7 +24251,7 @@ func (x *ReqCardSend) String() string { func (*ReqCardSend) ProtoMessage() {} func (x *ReqCardSend) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[420] + mi := &file_Gameapi_proto_msgTypes[411] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24694,7 +24264,7 @@ func (x *ReqCardSend) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqCardSend.ProtoReflect.Descriptor instead. func (*ReqCardSend) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{420} + return file_Gameapi_proto_rawDescGZIP(), []int{411} } func (x *ReqCardSend) GetUid() int32 { @@ -24722,7 +24292,7 @@ type ResCardSend struct { func (x *ResCardSend) Reset() { *x = ResCardSend{} - mi := &file_Gameapi_proto_msgTypes[421] + mi := &file_Gameapi_proto_msgTypes[412] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -24734,7 +24304,7 @@ func (x *ResCardSend) String() string { func (*ResCardSend) ProtoMessage() {} func (x *ResCardSend) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[421] + mi := &file_Gameapi_proto_msgTypes[412] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24747,7 +24317,7 @@ func (x *ResCardSend) ProtoReflect() protoreflect.Message { // Deprecated: Use ResCardSend.ProtoReflect.Descriptor instead. func (*ResCardSend) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{421} + return file_Gameapi_proto_rawDescGZIP(), []int{412} } func (x *ResCardSend) GetCode() RES_CODE { @@ -24776,7 +24346,7 @@ type ReqCardExchange struct { func (x *ReqCardExchange) Reset() { *x = ReqCardExchange{} - mi := &file_Gameapi_proto_msgTypes[422] + mi := &file_Gameapi_proto_msgTypes[413] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -24788,7 +24358,7 @@ func (x *ReqCardExchange) String() string { func (*ReqCardExchange) ProtoMessage() {} func (x *ReqCardExchange) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[422] + mi := &file_Gameapi_proto_msgTypes[413] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24801,7 +24371,7 @@ func (x *ReqCardExchange) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqCardExchange.ProtoReflect.Descriptor instead. func (*ReqCardExchange) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{422} + return file_Gameapi_proto_rawDescGZIP(), []int{413} } func (x *ReqCardExchange) GetUid() int32 { @@ -24829,7 +24399,7 @@ type ResCardExchange struct { func (x *ResCardExchange) Reset() { *x = ResCardExchange{} - mi := &file_Gameapi_proto_msgTypes[423] + mi := &file_Gameapi_proto_msgTypes[414] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -24841,7 +24411,7 @@ func (x *ResCardExchange) String() string { func (*ResCardExchange) ProtoMessage() {} func (x *ResCardExchange) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[423] + mi := &file_Gameapi_proto_msgTypes[414] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24854,7 +24424,7 @@ func (x *ResCardExchange) ProtoReflect() protoreflect.Message { // Deprecated: Use ResCardExchange.ProtoReflect.Descriptor instead. func (*ResCardExchange) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{423} + return file_Gameapi_proto_rawDescGZIP(), []int{414} } func (x *ResCardExchange) GetCode() RES_CODE { @@ -24883,7 +24453,7 @@ type ReqSelectCardExchange struct { func (x *ReqSelectCardExchange) Reset() { *x = ReqSelectCardExchange{} - mi := &file_Gameapi_proto_msgTypes[424] + mi := &file_Gameapi_proto_msgTypes[415] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -24895,7 +24465,7 @@ func (x *ReqSelectCardExchange) String() string { func (*ReqSelectCardExchange) ProtoMessage() {} func (x *ReqSelectCardExchange) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[424] + mi := &file_Gameapi_proto_msgTypes[415] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24908,7 +24478,7 @@ func (x *ReqSelectCardExchange) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqSelectCardExchange.ProtoReflect.Descriptor instead. func (*ReqSelectCardExchange) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{424} + return file_Gameapi_proto_rawDescGZIP(), []int{415} } func (x *ReqSelectCardExchange) GetId() string { @@ -24936,7 +24506,7 @@ type ResSelectCardExchange struct { func (x *ResSelectCardExchange) Reset() { *x = ResSelectCardExchange{} - mi := &file_Gameapi_proto_msgTypes[425] + mi := &file_Gameapi_proto_msgTypes[416] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -24948,7 +24518,7 @@ func (x *ResSelectCardExchange) String() string { func (*ResSelectCardExchange) ProtoMessage() {} func (x *ResSelectCardExchange) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[425] + mi := &file_Gameapi_proto_msgTypes[416] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24961,7 +24531,7 @@ func (x *ResSelectCardExchange) ProtoReflect() protoreflect.Message { // Deprecated: Use ResSelectCardExchange.ProtoReflect.Descriptor instead. func (*ResSelectCardExchange) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{425} + return file_Gameapi_proto_rawDescGZIP(), []int{416} } func (x *ResSelectCardExchange) GetCode() RES_CODE { @@ -24989,7 +24559,7 @@ type ReqAgreeCardExchange struct { func (x *ReqAgreeCardExchange) Reset() { *x = ReqAgreeCardExchange{} - mi := &file_Gameapi_proto_msgTypes[426] + mi := &file_Gameapi_proto_msgTypes[417] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -25001,7 +24571,7 @@ func (x *ReqAgreeCardExchange) String() string { func (*ReqAgreeCardExchange) ProtoMessage() {} func (x *ReqAgreeCardExchange) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[426] + mi := &file_Gameapi_proto_msgTypes[417] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25014,7 +24584,7 @@ func (x *ReqAgreeCardExchange) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqAgreeCardExchange.ProtoReflect.Descriptor instead. func (*ReqAgreeCardExchange) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{426} + return file_Gameapi_proto_rawDescGZIP(), []int{417} } func (x *ReqAgreeCardExchange) GetId() string { @@ -25035,7 +24605,7 @@ type ResAgreeCardExchange struct { func (x *ResAgreeCardExchange) Reset() { *x = ResAgreeCardExchange{} - mi := &file_Gameapi_proto_msgTypes[427] + mi := &file_Gameapi_proto_msgTypes[418] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -25047,7 +24617,7 @@ func (x *ResAgreeCardExchange) String() string { func (*ResAgreeCardExchange) ProtoMessage() {} func (x *ResAgreeCardExchange) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[427] + mi := &file_Gameapi_proto_msgTypes[418] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25060,7 +24630,7 @@ func (x *ResAgreeCardExchange) ProtoReflect() protoreflect.Message { // Deprecated: Use ResAgreeCardExchange.ProtoReflect.Descriptor instead. func (*ResAgreeCardExchange) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{427} + return file_Gameapi_proto_rawDescGZIP(), []int{418} } func (x *ResAgreeCardExchange) GetCode() RES_CODE { @@ -25088,7 +24658,7 @@ type ReqRefuseCardSelect struct { func (x *ReqRefuseCardSelect) Reset() { *x = ReqRefuseCardSelect{} - mi := &file_Gameapi_proto_msgTypes[428] + mi := &file_Gameapi_proto_msgTypes[419] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -25100,7 +24670,7 @@ func (x *ReqRefuseCardSelect) String() string { func (*ReqRefuseCardSelect) ProtoMessage() {} func (x *ReqRefuseCardSelect) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[428] + mi := &file_Gameapi_proto_msgTypes[419] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25113,7 +24683,7 @@ func (x *ReqRefuseCardSelect) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqRefuseCardSelect.ProtoReflect.Descriptor instead. func (*ReqRefuseCardSelect) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{428} + return file_Gameapi_proto_rawDescGZIP(), []int{419} } func (x *ReqRefuseCardSelect) GetId() string { @@ -25134,7 +24704,7 @@ type ResRefuseCardSelect struct { func (x *ResRefuseCardSelect) Reset() { *x = ResRefuseCardSelect{} - mi := &file_Gameapi_proto_msgTypes[429] + mi := &file_Gameapi_proto_msgTypes[420] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -25146,7 +24716,7 @@ func (x *ResRefuseCardSelect) String() string { func (*ResRefuseCardSelect) ProtoMessage() {} func (x *ResRefuseCardSelect) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[429] + mi := &file_Gameapi_proto_msgTypes[420] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25159,7 +24729,7 @@ func (x *ResRefuseCardSelect) ProtoReflect() protoreflect.Message { // Deprecated: Use ResRefuseCardSelect.ProtoReflect.Descriptor instead. func (*ResRefuseCardSelect) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{429} + return file_Gameapi_proto_rawDescGZIP(), []int{420} } func (x *ResRefuseCardSelect) GetCode() RES_CODE { @@ -25187,7 +24757,7 @@ type ReqRefuseCardExchange struct { func (x *ReqRefuseCardExchange) Reset() { *x = ReqRefuseCardExchange{} - mi := &file_Gameapi_proto_msgTypes[430] + mi := &file_Gameapi_proto_msgTypes[421] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -25199,7 +24769,7 @@ func (x *ReqRefuseCardExchange) String() string { func (*ReqRefuseCardExchange) ProtoMessage() {} func (x *ReqRefuseCardExchange) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[430] + mi := &file_Gameapi_proto_msgTypes[421] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25212,7 +24782,7 @@ func (x *ReqRefuseCardExchange) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqRefuseCardExchange.ProtoReflect.Descriptor instead. func (*ReqRefuseCardExchange) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{430} + return file_Gameapi_proto_rawDescGZIP(), []int{421} } func (x *ReqRefuseCardExchange) GetId() string { @@ -25233,7 +24803,7 @@ type ResRefuseCardExchange struct { func (x *ResRefuseCardExchange) Reset() { *x = ResRefuseCardExchange{} - mi := &file_Gameapi_proto_msgTypes[431] + mi := &file_Gameapi_proto_msgTypes[422] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -25245,7 +24815,7 @@ func (x *ResRefuseCardExchange) String() string { func (*ResRefuseCardExchange) ProtoMessage() {} func (x *ResRefuseCardExchange) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[431] + mi := &file_Gameapi_proto_msgTypes[422] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25258,7 +24828,7 @@ func (x *ResRefuseCardExchange) ProtoReflect() protoreflect.Message { // Deprecated: Use ResRefuseCardExchange.ProtoReflect.Descriptor instead. func (*ResRefuseCardExchange) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{431} + return file_Gameapi_proto_rawDescGZIP(), []int{422} } func (x *ResRefuseCardExchange) GetCode() RES_CODE { @@ -25286,7 +24856,7 @@ type ReqGetFriendCard struct { func (x *ReqGetFriendCard) Reset() { *x = ReqGetFriendCard{} - mi := &file_Gameapi_proto_msgTypes[432] + mi := &file_Gameapi_proto_msgTypes[423] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -25298,7 +24868,7 @@ func (x *ReqGetFriendCard) String() string { func (*ReqGetFriendCard) ProtoMessage() {} func (x *ReqGetFriendCard) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[432] + mi := &file_Gameapi_proto_msgTypes[423] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25311,7 +24881,7 @@ func (x *ReqGetFriendCard) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqGetFriendCard.ProtoReflect.Descriptor instead. func (*ReqGetFriendCard) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{432} + return file_Gameapi_proto_rawDescGZIP(), []int{423} } func (x *ReqGetFriendCard) GetId() string { @@ -25332,7 +24902,7 @@ type ResGetFriendCard struct { func (x *ResGetFriendCard) Reset() { *x = ResGetFriendCard{} - mi := &file_Gameapi_proto_msgTypes[433] + mi := &file_Gameapi_proto_msgTypes[424] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -25344,7 +24914,7 @@ func (x *ResGetFriendCard) String() string { func (*ResGetFriendCard) ProtoMessage() {} func (x *ResGetFriendCard) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[433] + mi := &file_Gameapi_proto_msgTypes[424] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25357,7 +24927,7 @@ func (x *ResGetFriendCard) ProtoReflect() protoreflect.Message { // Deprecated: Use ResGetFriendCard.ProtoReflect.Descriptor instead. func (*ResGetFriendCard) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{433} + return file_Gameapi_proto_rawDescGZIP(), []int{424} } func (x *ResGetFriendCard) GetCode() RES_CODE { @@ -25385,7 +24955,7 @@ type ReqGuideReward struct { func (x *ReqGuideReward) Reset() { *x = ReqGuideReward{} - mi := &file_Gameapi_proto_msgTypes[434] + mi := &file_Gameapi_proto_msgTypes[425] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -25397,7 +24967,7 @@ func (x *ReqGuideReward) String() string { func (*ReqGuideReward) ProtoMessage() {} func (x *ReqGuideReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[434] + mi := &file_Gameapi_proto_msgTypes[425] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25410,7 +24980,7 @@ func (x *ReqGuideReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqGuideReward.ProtoReflect.Descriptor instead. func (*ReqGuideReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{434} + return file_Gameapi_proto_rawDescGZIP(), []int{425} } func (x *ReqGuideReward) GetId() int32 { @@ -25431,7 +25001,7 @@ type ResGuideReward struct { func (x *ResGuideReward) Reset() { *x = ResGuideReward{} - mi := &file_Gameapi_proto_msgTypes[435] + mi := &file_Gameapi_proto_msgTypes[426] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -25443,7 +25013,7 @@ func (x *ResGuideReward) String() string { func (*ResGuideReward) ProtoMessage() {} func (x *ResGuideReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[435] + mi := &file_Gameapi_proto_msgTypes[426] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25456,7 +25026,7 @@ func (x *ResGuideReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ResGuideReward.ProtoReflect.Descriptor instead. func (*ResGuideReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{435} + return file_Gameapi_proto_rawDescGZIP(), []int{426} } func (x *ResGuideReward) GetCode() RES_CODE { @@ -25483,7 +25053,7 @@ type ResGuildInfo struct { func (x *ResGuildInfo) Reset() { *x = ResGuildInfo{} - mi := &file_Gameapi_proto_msgTypes[436] + mi := &file_Gameapi_proto_msgTypes[427] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -25495,7 +25065,7 @@ func (x *ResGuildInfo) String() string { func (*ResGuildInfo) ProtoMessage() {} func (x *ResGuildInfo) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[436] + mi := &file_Gameapi_proto_msgTypes[427] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25508,7 +25078,7 @@ func (x *ResGuildInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ResGuildInfo.ProtoReflect.Descriptor instead. func (*ResGuildInfo) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{436} + return file_Gameapi_proto_rawDescGZIP(), []int{427} } func (x *ResGuildInfo) GetReward() map[int32]int32 { @@ -25531,7 +25101,7 @@ type ResItemPop struct { func (x *ResItemPop) Reset() { *x = ResItemPop{} - mi := &file_Gameapi_proto_msgTypes[437] + mi := &file_Gameapi_proto_msgTypes[428] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -25543,7 +25113,7 @@ func (x *ResItemPop) String() string { func (*ResItemPop) ProtoMessage() {} func (x *ResItemPop) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[437] + mi := &file_Gameapi_proto_msgTypes[428] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25556,7 +25126,7 @@ func (x *ResItemPop) ProtoReflect() protoreflect.Message { // Deprecated: Use ResItemPop.ProtoReflect.Descriptor instead. func (*ResItemPop) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{437} + return file_Gameapi_proto_rawDescGZIP(), []int{428} } func (x *ResItemPop) GetId() int32 { @@ -25598,7 +25168,7 @@ type ItemInfo struct { func (x *ItemInfo) Reset() { *x = ItemInfo{} - mi := &file_Gameapi_proto_msgTypes[438] + mi := &file_Gameapi_proto_msgTypes[429] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -25610,7 +25180,7 @@ func (x *ItemInfo) String() string { func (*ItemInfo) ProtoMessage() {} func (x *ItemInfo) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[438] + mi := &file_Gameapi_proto_msgTypes[429] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25623,7 +25193,7 @@ func (x *ItemInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ItemInfo.ProtoReflect.Descriptor instead. func (*ItemInfo) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{438} + return file_Gameapi_proto_rawDescGZIP(), []int{429} } func (x *ItemInfo) GetId() int32 { @@ -25651,7 +25221,7 @@ type CardPack struct { func (x *CardPack) Reset() { *x = CardPack{} - mi := &file_Gameapi_proto_msgTypes[439] + mi := &file_Gameapi_proto_msgTypes[430] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -25663,7 +25233,7 @@ func (x *CardPack) String() string { func (*CardPack) ProtoMessage() {} func (x *CardPack) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[439] + mi := &file_Gameapi_proto_msgTypes[430] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25676,7 +25246,7 @@ func (x *CardPack) ProtoReflect() protoreflect.Message { // Deprecated: Use CardPack.ProtoReflect.Descriptor instead. func (*CardPack) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{439} + return file_Gameapi_proto_rawDescGZIP(), []int{430} } func (x *CardPack) GetId() int32 { @@ -25707,7 +25277,7 @@ type ResDailyTask struct { func (x *ResDailyTask) Reset() { *x = ResDailyTask{} - mi := &file_Gameapi_proto_msgTypes[440] + mi := &file_Gameapi_proto_msgTypes[431] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -25719,7 +25289,7 @@ func (x *ResDailyTask) String() string { func (*ResDailyTask) ProtoMessage() {} func (x *ResDailyTask) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[440] + mi := &file_Gameapi_proto_msgTypes[431] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25732,7 +25302,7 @@ func (x *ResDailyTask) ProtoReflect() protoreflect.Message { // Deprecated: Use ResDailyTask.ProtoReflect.Descriptor instead. func (*ResDailyTask) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{440} + return file_Gameapi_proto_rawDescGZIP(), []int{431} } func (x *ResDailyTask) GetWeekReward() map[int32]*DailyWeek { @@ -25782,7 +25352,7 @@ type DailyWeek struct { func (x *DailyWeek) Reset() { *x = DailyWeek{} - mi := &file_Gameapi_proto_msgTypes[441] + mi := &file_Gameapi_proto_msgTypes[432] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -25794,7 +25364,7 @@ func (x *DailyWeek) String() string { func (*DailyWeek) ProtoMessage() {} func (x *DailyWeek) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[441] + mi := &file_Gameapi_proto_msgTypes[432] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25807,7 +25377,7 @@ func (x *DailyWeek) ProtoReflect() protoreflect.Message { // Deprecated: Use DailyWeek.ProtoReflect.Descriptor instead. func (*DailyWeek) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{441} + return file_Gameapi_proto_rawDescGZIP(), []int{432} } func (x *DailyWeek) GetItems() []*ItemInfo { @@ -25844,7 +25414,7 @@ type DailyTask struct { func (x *DailyTask) Reset() { *x = DailyTask{} - mi := &file_Gameapi_proto_msgTypes[442] + mi := &file_Gameapi_proto_msgTypes[433] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -25856,7 +25426,7 @@ func (x *DailyTask) String() string { func (*DailyTask) ProtoMessage() {} func (x *DailyTask) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[442] + mi := &file_Gameapi_proto_msgTypes[433] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25869,7 +25439,7 @@ func (x *DailyTask) ProtoReflect() protoreflect.Message { // Deprecated: Use DailyTask.ProtoReflect.Descriptor instead. func (*DailyTask) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{442} + return file_Gameapi_proto_rawDescGZIP(), []int{433} } func (x *DailyTask) GetStatus() int32 { @@ -25914,7 +25484,7 @@ type QuestProgress struct { func (x *QuestProgress) Reset() { *x = QuestProgress{} - mi := &file_Gameapi_proto_msgTypes[443] + mi := &file_Gameapi_proto_msgTypes[434] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -25926,7 +25496,7 @@ func (x *QuestProgress) String() string { func (*QuestProgress) ProtoMessage() {} func (x *QuestProgress) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[443] + mi := &file_Gameapi_proto_msgTypes[434] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25939,7 +25509,7 @@ func (x *QuestProgress) ProtoReflect() protoreflect.Message { // Deprecated: Use QuestProgress.ProtoReflect.Descriptor instead. func (*QuestProgress) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{443} + return file_Gameapi_proto_rawDescGZIP(), []int{434} } func (x *QuestProgress) GetLabel() string { @@ -25988,7 +25558,7 @@ type ReqGetDailyTaskReward struct { func (x *ReqGetDailyTaskReward) Reset() { *x = ReqGetDailyTaskReward{} - mi := &file_Gameapi_proto_msgTypes[444] + mi := &file_Gameapi_proto_msgTypes[435] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26000,7 +25570,7 @@ func (x *ReqGetDailyTaskReward) String() string { func (*ReqGetDailyTaskReward) ProtoMessage() {} func (x *ReqGetDailyTaskReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[444] + mi := &file_Gameapi_proto_msgTypes[435] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26013,7 +25583,7 @@ func (x *ReqGetDailyTaskReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqGetDailyTaskReward.ProtoReflect.Descriptor instead. func (*ReqGetDailyTaskReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{444} + return file_Gameapi_proto_rawDescGZIP(), []int{435} } func (x *ReqGetDailyTaskReward) GetId() int32 { @@ -26034,7 +25604,7 @@ type ResGetDailyTaskReward struct { func (x *ResGetDailyTaskReward) Reset() { *x = ResGetDailyTaskReward{} - mi := &file_Gameapi_proto_msgTypes[445] + mi := &file_Gameapi_proto_msgTypes[436] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26046,7 +25616,7 @@ func (x *ResGetDailyTaskReward) String() string { func (*ResGetDailyTaskReward) ProtoMessage() {} func (x *ResGetDailyTaskReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[445] + mi := &file_Gameapi_proto_msgTypes[436] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26059,7 +25629,7 @@ func (x *ResGetDailyTaskReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ResGetDailyTaskReward.ProtoReflect.Descriptor instead. func (*ResGetDailyTaskReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{445} + return file_Gameapi_proto_rawDescGZIP(), []int{436} } func (x *ResGetDailyTaskReward) GetCode() RES_CODE { @@ -26087,7 +25657,7 @@ type ReqGetDailyWeekReward struct { func (x *ReqGetDailyWeekReward) Reset() { *x = ReqGetDailyWeekReward{} - mi := &file_Gameapi_proto_msgTypes[446] + mi := &file_Gameapi_proto_msgTypes[437] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26099,7 +25669,7 @@ func (x *ReqGetDailyWeekReward) String() string { func (*ReqGetDailyWeekReward) ProtoMessage() {} func (x *ReqGetDailyWeekReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[446] + mi := &file_Gameapi_proto_msgTypes[437] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26112,7 +25682,7 @@ func (x *ReqGetDailyWeekReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqGetDailyWeekReward.ProtoReflect.Descriptor instead. func (*ReqGetDailyWeekReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{446} + return file_Gameapi_proto_rawDescGZIP(), []int{437} } func (x *ReqGetDailyWeekReward) GetId() int32 { @@ -26133,7 +25703,7 @@ type ResGetDailyWeekReward struct { func (x *ResGetDailyWeekReward) Reset() { *x = ResGetDailyWeekReward{} - mi := &file_Gameapi_proto_msgTypes[447] + mi := &file_Gameapi_proto_msgTypes[438] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26145,7 +25715,7 @@ func (x *ResGetDailyWeekReward) String() string { func (*ResGetDailyWeekReward) ProtoMessage() {} func (x *ResGetDailyWeekReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[447] + mi := &file_Gameapi_proto_msgTypes[438] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26158,7 +25728,7 @@ func (x *ResGetDailyWeekReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ResGetDailyWeekReward.ProtoReflect.Descriptor instead. func (*ResGetDailyWeekReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{447} + return file_Gameapi_proto_rawDescGZIP(), []int{438} } func (x *ResGetDailyWeekReward) GetCode() RES_CODE { @@ -26186,7 +25756,7 @@ type ResFaceInfo struct { func (x *ResFaceInfo) Reset() { *x = ResFaceInfo{} - mi := &file_Gameapi_proto_msgTypes[448] + mi := &file_Gameapi_proto_msgTypes[439] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26198,7 +25768,7 @@ func (x *ResFaceInfo) String() string { func (*ResFaceInfo) ProtoMessage() {} func (x *ResFaceInfo) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[448] + mi := &file_Gameapi_proto_msgTypes[439] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26211,7 +25781,7 @@ func (x *ResFaceInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ResFaceInfo.ProtoReflect.Descriptor instead. func (*ResFaceInfo) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{448} + return file_Gameapi_proto_rawDescGZIP(), []int{439} } func (x *ResFaceInfo) GetFaceList() []*FaceInfo { @@ -26239,7 +25809,7 @@ type FaceInfo struct { func (x *FaceInfo) Reset() { *x = FaceInfo{} - mi := &file_Gameapi_proto_msgTypes[449] + mi := &file_Gameapi_proto_msgTypes[440] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26251,7 +25821,7 @@ func (x *FaceInfo) String() string { func (*FaceInfo) ProtoMessage() {} func (x *FaceInfo) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[449] + mi := &file_Gameapi_proto_msgTypes[440] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26264,7 +25834,7 @@ func (x *FaceInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use FaceInfo.ProtoReflect.Descriptor instead. func (*FaceInfo) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{449} + return file_Gameapi_proto_rawDescGZIP(), []int{440} } func (x *FaceInfo) GetId() int32 { @@ -26291,7 +25861,7 @@ type ReqSetFace struct { func (x *ReqSetFace) Reset() { *x = ReqSetFace{} - mi := &file_Gameapi_proto_msgTypes[450] + mi := &file_Gameapi_proto_msgTypes[441] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26303,7 +25873,7 @@ func (x *ReqSetFace) String() string { func (*ReqSetFace) ProtoMessage() {} func (x *ReqSetFace) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[450] + mi := &file_Gameapi_proto_msgTypes[441] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26316,7 +25886,7 @@ func (x *ReqSetFace) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqSetFace.ProtoReflect.Descriptor instead. func (*ReqSetFace) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{450} + return file_Gameapi_proto_rawDescGZIP(), []int{441} } func (x *ReqSetFace) GetFace() int32 { @@ -26337,7 +25907,7 @@ type ResSetFace struct { func (x *ResSetFace) Reset() { *x = ResSetFace{} - mi := &file_Gameapi_proto_msgTypes[451] + mi := &file_Gameapi_proto_msgTypes[442] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26349,7 +25919,7 @@ func (x *ResSetFace) String() string { func (*ResSetFace) ProtoMessage() {} func (x *ResSetFace) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[451] + mi := &file_Gameapi_proto_msgTypes[442] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26362,7 +25932,7 @@ func (x *ResSetFace) ProtoReflect() protoreflect.Message { // Deprecated: Use ResSetFace.ProtoReflect.Descriptor instead. func (*ResSetFace) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{451} + return file_Gameapi_proto_rawDescGZIP(), []int{442} } func (x *ResSetFace) GetCode() RES_CODE { @@ -26390,7 +25960,7 @@ type ResAvatarInfo struct { func (x *ResAvatarInfo) Reset() { *x = ResAvatarInfo{} - mi := &file_Gameapi_proto_msgTypes[452] + mi := &file_Gameapi_proto_msgTypes[443] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26402,7 +25972,7 @@ func (x *ResAvatarInfo) String() string { func (*ResAvatarInfo) ProtoMessage() {} func (x *ResAvatarInfo) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[452] + mi := &file_Gameapi_proto_msgTypes[443] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26415,7 +25985,7 @@ func (x *ResAvatarInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ResAvatarInfo.ProtoReflect.Descriptor instead. func (*ResAvatarInfo) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{452} + return file_Gameapi_proto_rawDescGZIP(), []int{443} } func (x *ResAvatarInfo) GetAvatarList() []*AvatarInfo { @@ -26443,7 +26013,7 @@ type AvatarInfo struct { func (x *AvatarInfo) Reset() { *x = AvatarInfo{} - mi := &file_Gameapi_proto_msgTypes[453] + mi := &file_Gameapi_proto_msgTypes[444] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26455,7 +26025,7 @@ func (x *AvatarInfo) String() string { func (*AvatarInfo) ProtoMessage() {} func (x *AvatarInfo) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[453] + mi := &file_Gameapi_proto_msgTypes[444] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26468,7 +26038,7 @@ func (x *AvatarInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use AvatarInfo.ProtoReflect.Descriptor instead. func (*AvatarInfo) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{453} + return file_Gameapi_proto_rawDescGZIP(), []int{444} } func (x *AvatarInfo) GetId() int32 { @@ -26495,7 +26065,7 @@ type ReqSetAvatar struct { func (x *ReqSetAvatar) Reset() { *x = ReqSetAvatar{} - mi := &file_Gameapi_proto_msgTypes[454] + mi := &file_Gameapi_proto_msgTypes[445] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26507,7 +26077,7 @@ func (x *ReqSetAvatar) String() string { func (*ReqSetAvatar) ProtoMessage() {} func (x *ReqSetAvatar) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[454] + mi := &file_Gameapi_proto_msgTypes[445] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26520,7 +26090,7 @@ func (x *ReqSetAvatar) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqSetAvatar.ProtoReflect.Descriptor instead. func (*ReqSetAvatar) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{454} + return file_Gameapi_proto_rawDescGZIP(), []int{445} } func (x *ReqSetAvatar) GetAvatar() int32 { @@ -26541,7 +26111,7 @@ type ResSetAvatar struct { func (x *ResSetAvatar) Reset() { *x = ResSetAvatar{} - mi := &file_Gameapi_proto_msgTypes[455] + mi := &file_Gameapi_proto_msgTypes[446] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26553,7 +26123,7 @@ func (x *ResSetAvatar) String() string { func (*ResSetAvatar) ProtoMessage() {} func (x *ResSetAvatar) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[455] + mi := &file_Gameapi_proto_msgTypes[446] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26566,7 +26136,7 @@ func (x *ResSetAvatar) ProtoReflect() protoreflect.Message { // Deprecated: Use ResSetAvatar.ProtoReflect.Descriptor instead. func (*ResSetAvatar) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{455} + return file_Gameapi_proto_rawDescGZIP(), []int{446} } func (x *ResSetAvatar) GetCode() RES_CODE { @@ -26597,7 +26167,7 @@ type ResSevenLogin struct { func (x *ResSevenLogin) Reset() { *x = ResSevenLogin{} - mi := &file_Gameapi_proto_msgTypes[456] + mi := &file_Gameapi_proto_msgTypes[447] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26609,7 +26179,7 @@ func (x *ResSevenLogin) String() string { func (*ResSevenLogin) ProtoMessage() {} func (x *ResSevenLogin) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[456] + mi := &file_Gameapi_proto_msgTypes[447] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26622,7 +26192,7 @@ func (x *ResSevenLogin) ProtoReflect() protoreflect.Message { // Deprecated: Use ResSevenLogin.ProtoReflect.Descriptor instead. func (*ResSevenLogin) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{456} + return file_Gameapi_proto_rawDescGZIP(), []int{447} } func (x *ResSevenLogin) GetWeekReward() []*SevenLoginReward { @@ -26667,7 +26237,7 @@ type SevenLoginReward struct { func (x *SevenLoginReward) Reset() { *x = SevenLoginReward{} - mi := &file_Gameapi_proto_msgTypes[457] + mi := &file_Gameapi_proto_msgTypes[448] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26679,7 +26249,7 @@ func (x *SevenLoginReward) String() string { func (*SevenLoginReward) ProtoMessage() {} func (x *SevenLoginReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[457] + mi := &file_Gameapi_proto_msgTypes[448] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26692,7 +26262,7 @@ func (x *SevenLoginReward) ProtoReflect() protoreflect.Message { // Deprecated: Use SevenLoginReward.ProtoReflect.Descriptor instead. func (*SevenLoginReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{457} + return file_Gameapi_proto_rawDescGZIP(), []int{448} } func (x *SevenLoginReward) GetItem1() []*ItemInfo { @@ -26741,7 +26311,7 @@ type ReqGetSevenLoginReward struct { func (x *ReqGetSevenLoginReward) Reset() { *x = ReqGetSevenLoginReward{} - mi := &file_Gameapi_proto_msgTypes[458] + mi := &file_Gameapi_proto_msgTypes[449] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26753,7 +26323,7 @@ func (x *ReqGetSevenLoginReward) String() string { func (*ReqGetSevenLoginReward) ProtoMessage() {} func (x *ReqGetSevenLoginReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[458] + mi := &file_Gameapi_proto_msgTypes[449] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26766,7 +26336,7 @@ func (x *ReqGetSevenLoginReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqGetSevenLoginReward.ProtoReflect.Descriptor instead. func (*ReqGetSevenLoginReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{458} + return file_Gameapi_proto_rawDescGZIP(), []int{449} } func (x *ReqGetSevenLoginReward) GetId() int32 { @@ -26787,7 +26357,7 @@ type ResGetSevenLoginReward struct { func (x *ResGetSevenLoginReward) Reset() { *x = ResGetSevenLoginReward{} - mi := &file_Gameapi_proto_msgTypes[459] + mi := &file_Gameapi_proto_msgTypes[450] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26799,7 +26369,7 @@ func (x *ResGetSevenLoginReward) String() string { func (*ResGetSevenLoginReward) ProtoMessage() {} func (x *ResGetSevenLoginReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[459] + mi := &file_Gameapi_proto_msgTypes[450] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26812,7 +26382,7 @@ func (x *ResGetSevenLoginReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ResGetSevenLoginReward.ProtoReflect.Descriptor instead. func (*ResGetSevenLoginReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{459} + return file_Gameapi_proto_rawDescGZIP(), []int{450} } func (x *ResGetSevenLoginReward) GetCode() RES_CODE { @@ -26840,7 +26410,7 @@ type ReqGetMonthLoginReward struct { func (x *ReqGetMonthLoginReward) Reset() { *x = ReqGetMonthLoginReward{} - mi := &file_Gameapi_proto_msgTypes[460] + mi := &file_Gameapi_proto_msgTypes[451] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26852,7 +26422,7 @@ func (x *ReqGetMonthLoginReward) String() string { func (*ReqGetMonthLoginReward) ProtoMessage() {} func (x *ReqGetMonthLoginReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[460] + mi := &file_Gameapi_proto_msgTypes[451] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26865,7 +26435,7 @@ func (x *ReqGetMonthLoginReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqGetMonthLoginReward.ProtoReflect.Descriptor instead. func (*ReqGetMonthLoginReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{460} + return file_Gameapi_proto_rawDescGZIP(), []int{451} } func (x *ReqGetMonthLoginReward) GetId() int32 { @@ -26886,7 +26456,7 @@ type ResGetMonthLoginReward struct { func (x *ResGetMonthLoginReward) Reset() { *x = ResGetMonthLoginReward{} - mi := &file_Gameapi_proto_msgTypes[461] + mi := &file_Gameapi_proto_msgTypes[452] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26898,7 +26468,7 @@ func (x *ResGetMonthLoginReward) String() string { func (*ResGetMonthLoginReward) ProtoMessage() {} func (x *ResGetMonthLoginReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[461] + mi := &file_Gameapi_proto_msgTypes[452] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26911,7 +26481,7 @@ func (x *ResGetMonthLoginReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ResGetMonthLoginReward.ProtoReflect.Descriptor instead. func (*ResGetMonthLoginReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{461} + return file_Gameapi_proto_rawDescGZIP(), []int{452} } func (x *ResGetMonthLoginReward) GetCode() RES_CODE { @@ -26939,7 +26509,7 @@ type ResAcitive struct { func (x *ResAcitive) Reset() { *x = ResAcitive{} - mi := &file_Gameapi_proto_msgTypes[462] + mi := &file_Gameapi_proto_msgTypes[453] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26951,7 +26521,7 @@ func (x *ResAcitive) String() string { func (*ResAcitive) ProtoMessage() {} func (x *ResAcitive) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[462] + mi := &file_Gameapi_proto_msgTypes[453] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26964,7 +26534,7 @@ func (x *ResAcitive) ProtoReflect() protoreflect.Message { // Deprecated: Use ResAcitive.ProtoReflect.Descriptor instead. func (*ResAcitive) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{462} + return file_Gameapi_proto_rawDescGZIP(), []int{453} } func (x *ResAcitive) GetActiveList() []*ActiveInfo { @@ -26989,7 +26559,7 @@ type ActiveInfo struct { func (x *ActiveInfo) Reset() { *x = ActiveInfo{} - mi := &file_Gameapi_proto_msgTypes[463] + mi := &file_Gameapi_proto_msgTypes[454] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27001,7 +26571,7 @@ func (x *ActiveInfo) String() string { func (*ActiveInfo) ProtoMessage() {} func (x *ActiveInfo) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[463] + mi := &file_Gameapi_proto_msgTypes[454] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27014,7 +26584,7 @@ func (x *ActiveInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ActiveInfo.ProtoReflect.Descriptor instead. func (*ActiveInfo) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{463} + return file_Gameapi_proto_rawDescGZIP(), []int{454} } func (x *ActiveInfo) GetId() int32 { @@ -27068,7 +26638,7 @@ type ReqLimitEvent struct { func (x *ReqLimitEvent) Reset() { *x = ReqLimitEvent{} - mi := &file_Gameapi_proto_msgTypes[464] + mi := &file_Gameapi_proto_msgTypes[455] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27080,7 +26650,7 @@ func (x *ReqLimitEvent) String() string { func (*ReqLimitEvent) ProtoMessage() {} func (x *ReqLimitEvent) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[464] + mi := &file_Gameapi_proto_msgTypes[455] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27093,7 +26663,7 @@ func (x *ReqLimitEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqLimitEvent.ProtoReflect.Descriptor instead. func (*ReqLimitEvent) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{464} + return file_Gameapi_proto_rawDescGZIP(), []int{455} } type ResLimitEvent struct { @@ -27106,7 +26676,7 @@ type ResLimitEvent struct { func (x *ResLimitEvent) Reset() { *x = ResLimitEvent{} - mi := &file_Gameapi_proto_msgTypes[465] + mi := &file_Gameapi_proto_msgTypes[456] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27118,7 +26688,7 @@ func (x *ResLimitEvent) String() string { func (*ResLimitEvent) ProtoMessage() {} func (x *ResLimitEvent) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[465] + mi := &file_Gameapi_proto_msgTypes[456] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27131,7 +26701,7 @@ func (x *ResLimitEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use ResLimitEvent.ProtoReflect.Descriptor instead. func (*ResLimitEvent) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{465} + return file_Gameapi_proto_rawDescGZIP(), []int{456} } func (x *ResLimitEvent) GetLimitEventList() map[int32]*LimitEvent { @@ -27152,7 +26722,7 @@ type ResLimitEventProgress struct { func (x *ResLimitEventProgress) Reset() { *x = ResLimitEventProgress{} - mi := &file_Gameapi_proto_msgTypes[466] + mi := &file_Gameapi_proto_msgTypes[457] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27164,7 +26734,7 @@ func (x *ResLimitEventProgress) String() string { func (*ResLimitEventProgress) ProtoMessage() {} func (x *ResLimitEventProgress) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[466] + mi := &file_Gameapi_proto_msgTypes[457] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27177,7 +26747,7 @@ func (x *ResLimitEventProgress) ProtoReflect() protoreflect.Message { // Deprecated: Use ResLimitEventProgress.ProtoReflect.Descriptor instead. func (*ResLimitEventProgress) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{466} + return file_Gameapi_proto_rawDescGZIP(), []int{457} } func (x *ResLimitEventProgress) GetProgress() int32 { @@ -27204,7 +26774,7 @@ type ReqLimitEventReward struct { func (x *ReqLimitEventReward) Reset() { *x = ReqLimitEventReward{} - mi := &file_Gameapi_proto_msgTypes[467] + mi := &file_Gameapi_proto_msgTypes[458] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27216,7 +26786,7 @@ func (x *ReqLimitEventReward) String() string { func (*ReqLimitEventReward) ProtoMessage() {} func (x *ReqLimitEventReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[467] + mi := &file_Gameapi_proto_msgTypes[458] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27229,7 +26799,7 @@ func (x *ReqLimitEventReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqLimitEventReward.ProtoReflect.Descriptor instead. func (*ReqLimitEventReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{467} + return file_Gameapi_proto_rawDescGZIP(), []int{458} } func (x *ReqLimitEventReward) GetId() int32 { @@ -27250,7 +26820,7 @@ type ResLimitEventReward struct { func (x *ResLimitEventReward) Reset() { *x = ResLimitEventReward{} - mi := &file_Gameapi_proto_msgTypes[468] + mi := &file_Gameapi_proto_msgTypes[459] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27262,7 +26832,7 @@ func (x *ResLimitEventReward) String() string { func (*ResLimitEventReward) ProtoMessage() {} func (x *ResLimitEventReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[468] + mi := &file_Gameapi_proto_msgTypes[459] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27275,7 +26845,7 @@ func (x *ResLimitEventReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ResLimitEventReward.ProtoReflect.Descriptor instead. func (*ResLimitEventReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{468} + return file_Gameapi_proto_rawDescGZIP(), []int{459} } func (x *ResLimitEventReward) GetCode() RES_CODE { @@ -27303,7 +26873,7 @@ type LimitEvent struct { func (x *LimitEvent) Reset() { *x = LimitEvent{} - mi := &file_Gameapi_proto_msgTypes[469] + mi := &file_Gameapi_proto_msgTypes[460] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27315,7 +26885,7 @@ func (x *LimitEvent) String() string { func (*LimitEvent) ProtoMessage() {} func (x *LimitEvent) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[469] + mi := &file_Gameapi_proto_msgTypes[460] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27328,7 +26898,7 @@ func (x *LimitEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use LimitEvent.ProtoReflect.Descriptor instead. func (*LimitEvent) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{469} + return file_Gameapi_proto_rawDescGZIP(), []int{460} } func (x *LimitEvent) GetEndTime() int32 { @@ -27358,7 +26928,7 @@ type LimitEventNotify struct { func (x *LimitEventNotify) Reset() { *x = LimitEventNotify{} - mi := &file_Gameapi_proto_msgTypes[470] + mi := &file_Gameapi_proto_msgTypes[461] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27370,7 +26940,7 @@ func (x *LimitEventNotify) String() string { func (*LimitEventNotify) ProtoMessage() {} func (x *LimitEventNotify) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[470] + mi := &file_Gameapi_proto_msgTypes[461] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27383,7 +26953,7 @@ func (x *LimitEventNotify) ProtoReflect() protoreflect.Message { // Deprecated: Use LimitEventNotify.ProtoReflect.Descriptor instead. func (*LimitEventNotify) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{470} + return file_Gameapi_proto_rawDescGZIP(), []int{461} } func (x *LimitEventNotify) GetId() int32 { @@ -27422,7 +26992,7 @@ type ReqLimitSenceReward struct { func (x *ReqLimitSenceReward) Reset() { *x = ReqLimitSenceReward{} - mi := &file_Gameapi_proto_msgTypes[471] + mi := &file_Gameapi_proto_msgTypes[462] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27434,7 +27004,7 @@ func (x *ReqLimitSenceReward) String() string { func (*ReqLimitSenceReward) ProtoMessage() {} func (x *ReqLimitSenceReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[471] + mi := &file_Gameapi_proto_msgTypes[462] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27447,7 +27017,7 @@ func (x *ReqLimitSenceReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqLimitSenceReward.ProtoReflect.Descriptor instead. func (*ReqLimitSenceReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{471} + return file_Gameapi_proto_rawDescGZIP(), []int{462} } type ResLimitSenceReward struct { @@ -27461,7 +27031,7 @@ type ResLimitSenceReward struct { func (x *ResLimitSenceReward) Reset() { *x = ResLimitSenceReward{} - mi := &file_Gameapi_proto_msgTypes[472] + mi := &file_Gameapi_proto_msgTypes[463] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27473,7 +27043,7 @@ func (x *ResLimitSenceReward) String() string { func (*ResLimitSenceReward) ProtoMessage() {} func (x *ResLimitSenceReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[472] + mi := &file_Gameapi_proto_msgTypes[463] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27486,7 +27056,7 @@ func (x *ResLimitSenceReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ResLimitSenceReward.ProtoReflect.Descriptor instead. func (*ResLimitSenceReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{472} + return file_Gameapi_proto_rawDescGZIP(), []int{463} } func (x *ResLimitSenceReward) GetCode() RES_CODE { @@ -27513,7 +27083,7 @@ type ResChessRainReward struct { func (x *ResChessRainReward) Reset() { *x = ResChessRainReward{} - mi := &file_Gameapi_proto_msgTypes[473] + mi := &file_Gameapi_proto_msgTypes[464] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27525,7 +27095,7 @@ func (x *ResChessRainReward) String() string { func (*ResChessRainReward) ProtoMessage() {} func (x *ResChessRainReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[473] + mi := &file_Gameapi_proto_msgTypes[464] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27538,7 +27108,7 @@ func (x *ResChessRainReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ResChessRainReward.ProtoReflect.Descriptor instead. func (*ResChessRainReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{473} + return file_Gameapi_proto_rawDescGZIP(), []int{464} } func (x *ResChessRainReward) GetChest() int32 { @@ -27559,7 +27129,7 @@ type ReqFastProduceReward struct { func (x *ReqFastProduceReward) Reset() { *x = ReqFastProduceReward{} - mi := &file_Gameapi_proto_msgTypes[474] + mi := &file_Gameapi_proto_msgTypes[465] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27571,7 +27141,7 @@ func (x *ReqFastProduceReward) String() string { func (*ReqFastProduceReward) ProtoMessage() {} func (x *ReqFastProduceReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[474] + mi := &file_Gameapi_proto_msgTypes[465] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27584,7 +27154,7 @@ func (x *ReqFastProduceReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqFastProduceReward.ProtoReflect.Descriptor instead. func (*ReqFastProduceReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{474} + return file_Gameapi_proto_rawDescGZIP(), []int{465} } func (x *ReqFastProduceReward) GetEnergy() int32 { @@ -27605,7 +27175,7 @@ type ResFastProduceReward struct { func (x *ResFastProduceReward) Reset() { *x = ResFastProduceReward{} - mi := &file_Gameapi_proto_msgTypes[475] + mi := &file_Gameapi_proto_msgTypes[466] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27617,7 +27187,7 @@ func (x *ResFastProduceReward) String() string { func (*ResFastProduceReward) ProtoMessage() {} func (x *ResFastProduceReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[475] + mi := &file_Gameapi_proto_msgTypes[466] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27630,7 +27200,7 @@ func (x *ResFastProduceReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ResFastProduceReward.ProtoReflect.Descriptor instead. func (*ResFastProduceReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{475} + return file_Gameapi_proto_rawDescGZIP(), []int{466} } func (x *ResFastProduceReward) GetCode() RES_CODE { @@ -27658,7 +27228,7 @@ type ReqSearchPlayer struct { func (x *ReqSearchPlayer) Reset() { *x = ReqSearchPlayer{} - mi := &file_Gameapi_proto_msgTypes[476] + mi := &file_Gameapi_proto_msgTypes[467] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27670,7 +27240,7 @@ func (x *ReqSearchPlayer) String() string { func (*ReqSearchPlayer) ProtoMessage() {} func (x *ReqSearchPlayer) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[476] + mi := &file_Gameapi_proto_msgTypes[467] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27683,7 +27253,7 @@ func (x *ReqSearchPlayer) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqSearchPlayer.ProtoReflect.Descriptor instead. func (*ReqSearchPlayer) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{476} + return file_Gameapi_proto_rawDescGZIP(), []int{467} } func (x *ReqSearchPlayer) GetUid() string { @@ -27704,7 +27274,7 @@ type ResSearchPlayer struct { func (x *ResSearchPlayer) Reset() { *x = ResSearchPlayer{} - mi := &file_Gameapi_proto_msgTypes[477] + mi := &file_Gameapi_proto_msgTypes[468] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27716,7 +27286,7 @@ func (x *ResSearchPlayer) String() string { func (*ResSearchPlayer) ProtoMessage() {} func (x *ResSearchPlayer) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[477] + mi := &file_Gameapi_proto_msgTypes[468] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27729,7 +27299,7 @@ func (x *ResSearchPlayer) ProtoReflect() protoreflect.Message { // Deprecated: Use ResSearchPlayer.ProtoReflect.Descriptor instead. func (*ResSearchPlayer) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{477} + return file_Gameapi_proto_rawDescGZIP(), []int{468} } func (x *ResSearchPlayer) GetCode() int32 { @@ -27764,7 +27334,7 @@ type ResPlayerSimple struct { func (x *ResPlayerSimple) Reset() { *x = ResPlayerSimple{} - mi := &file_Gameapi_proto_msgTypes[478] + mi := &file_Gameapi_proto_msgTypes[469] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27776,7 +27346,7 @@ func (x *ResPlayerSimple) String() string { func (*ResPlayerSimple) ProtoMessage() {} func (x *ResPlayerSimple) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[478] + mi := &file_Gameapi_proto_msgTypes[469] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27789,7 +27359,7 @@ func (x *ResPlayerSimple) ProtoReflect() protoreflect.Message { // Deprecated: Use ResPlayerSimple.ProtoReflect.Descriptor instead. func (*ResPlayerSimple) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{478} + return file_Gameapi_proto_rawDescGZIP(), []int{469} } func (x *ResPlayerSimple) GetUid() int32 { @@ -27870,7 +27440,7 @@ type ResPlayerRank struct { func (x *ResPlayerRank) Reset() { *x = ResPlayerRank{} - mi := &file_Gameapi_proto_msgTypes[479] + mi := &file_Gameapi_proto_msgTypes[470] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27882,7 +27452,7 @@ func (x *ResPlayerRank) String() string { func (*ResPlayerRank) ProtoMessage() {} func (x *ResPlayerRank) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[479] + mi := &file_Gameapi_proto_msgTypes[470] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27895,7 +27465,7 @@ func (x *ResPlayerRank) ProtoReflect() protoreflect.Message { // Deprecated: Use ResPlayerRank.ProtoReflect.Descriptor instead. func (*ResPlayerRank) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{479} + return file_Gameapi_proto_rawDescGZIP(), []int{470} } func (x *ResPlayerRank) GetUid() int32 { @@ -27945,18 +27515,16 @@ type ResFriendLog struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Uid int32 `protobuf:"varint,1,opt,name=Uid,proto3" json:"Uid,omitempty"` - Name string `protobuf:"bytes,2,opt,name=Name,proto3" json:"Name,omitempty"` - Face int32 `protobuf:"varint,3,opt,name=Face,proto3" json:"Face,omitempty"` - Avatar int32 `protobuf:"varint,4,opt,name=Avatar,proto3" json:"Avatar,omitempty"` - Level int32 `protobuf:"varint,5,opt,name=Level,proto3" json:"Level,omitempty"` - Type int32 `protobuf:"varint,6,opt,name=Type,proto3" json:"Type,omitempty"` - Time int32 `protobuf:"varint,7,opt,name=Time,proto3" json:"Time,omitempty"` + Player *ResPlayerSimple `protobuf:"bytes,1,opt,name=Player,proto3" json:"Player,omitempty"` + Type int32 `protobuf:"varint,2,opt,name=Type,proto3" json:"Type,omitempty"` + Time int32 `protobuf:"varint,3,opt,name=Time,proto3" json:"Time,omitempty"` + Param string `protobuf:"bytes,4,opt,name=Param,proto3" json:"Param,omitempty"` + Id int32 `protobuf:"varint,5,opt,name=Id,proto3" json:"Id,omitempty"` } func (x *ResFriendLog) Reset() { *x = ResFriendLog{} - mi := &file_Gameapi_proto_msgTypes[480] + mi := &file_Gameapi_proto_msgTypes[471] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27968,7 +27536,7 @@ func (x *ResFriendLog) String() string { func (*ResFriendLog) ProtoMessage() {} func (x *ResFriendLog) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[480] + mi := &file_Gameapi_proto_msgTypes[471] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27981,42 +27549,14 @@ func (x *ResFriendLog) ProtoReflect() protoreflect.Message { // Deprecated: Use ResFriendLog.ProtoReflect.Descriptor instead. func (*ResFriendLog) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{480} + return file_Gameapi_proto_rawDescGZIP(), []int{471} } -func (x *ResFriendLog) GetUid() int32 { +func (x *ResFriendLog) GetPlayer() *ResPlayerSimple { if x != nil { - return x.Uid + return x.Player } - return 0 -} - -func (x *ResFriendLog) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *ResFriendLog) GetFace() int32 { - if x != nil { - return x.Face - } - return 0 -} - -func (x *ResFriendLog) GetAvatar() int32 { - if x != nil { - return x.Avatar - } - return 0 -} - -func (x *ResFriendLog) GetLevel() int32 { - if x != nil { - return x.Level - } - return 0 + return nil } func (x *ResFriendLog) GetType() int32 { @@ -28033,6 +27573,65 @@ func (x *ResFriendLog) GetTime() int32 { return 0 } +func (x *ResFriendLog) GetParam() string { + if x != nil { + return x.Param + } + return "" +} + +func (x *ResFriendLog) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +type NotifyFriendLog struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Info *ResFriendLog `protobuf:"bytes,1,opt,name=info,proto3" json:"info,omitempty"` +} + +func (x *NotifyFriendLog) Reset() { + *x = NotifyFriendLog{} + mi := &file_Gameapi_proto_msgTypes[472] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NotifyFriendLog) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NotifyFriendLog) ProtoMessage() {} + +func (x *NotifyFriendLog) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[472] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NotifyFriendLog.ProtoReflect.Descriptor instead. +func (*NotifyFriendLog) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{472} +} + +func (x *NotifyFriendLog) GetInfo() *ResFriendLog { + if x != nil { + return x.Info + } + return nil +} + type NotifyFriendCard struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -28043,7 +27642,7 @@ type NotifyFriendCard struct { func (x *NotifyFriendCard) Reset() { *x = NotifyFriendCard{} - mi := &file_Gameapi_proto_msgTypes[481] + mi := &file_Gameapi_proto_msgTypes[473] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28055,7 +27654,7 @@ func (x *NotifyFriendCard) String() string { func (*NotifyFriendCard) ProtoMessage() {} func (x *NotifyFriendCard) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[481] + mi := &file_Gameapi_proto_msgTypes[473] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28068,7 +27667,7 @@ func (x *NotifyFriendCard) ProtoReflect() protoreflect.Message { // Deprecated: Use NotifyFriendCard.ProtoReflect.Descriptor instead. func (*NotifyFriendCard) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{481} + return file_Gameapi_proto_rawDescGZIP(), []int{473} } func (x *NotifyFriendCard) GetInfo() *ResFriendCard { @@ -28098,7 +27697,7 @@ type ResFriendCard struct { func (x *ResFriendCard) Reset() { *x = ResFriendCard{} - mi := &file_Gameapi_proto_msgTypes[482] + mi := &file_Gameapi_proto_msgTypes[474] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28110,7 +27709,7 @@ func (x *ResFriendCard) String() string { func (*ResFriendCard) ProtoMessage() {} func (x *ResFriendCard) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[482] + mi := &file_Gameapi_proto_msgTypes[474] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28123,7 +27722,7 @@ func (x *ResFriendCard) ProtoReflect() protoreflect.Message { // Deprecated: Use ResFriendCard.ProtoReflect.Descriptor instead. func (*ResFriendCard) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{482} + return file_Gameapi_proto_rawDescGZIP(), []int{474} } func (x *ResFriendCard) GetUid() int32 { @@ -28214,7 +27813,7 @@ type ReqKv struct { func (x *ReqKv) Reset() { *x = ReqKv{} - mi := &file_Gameapi_proto_msgTypes[483] + mi := &file_Gameapi_proto_msgTypes[475] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28226,7 +27825,7 @@ func (x *ReqKv) String() string { func (*ReqKv) ProtoMessage() {} func (x *ReqKv) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[483] + mi := &file_Gameapi_proto_msgTypes[475] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28239,7 +27838,7 @@ func (x *ReqKv) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqKv.ProtoReflect.Descriptor instead. func (*ReqKv) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{483} + return file_Gameapi_proto_rawDescGZIP(), []int{475} } func (x *ReqKv) GetKey() int32 { @@ -28266,7 +27865,7 @@ type ResKv struct { func (x *ResKv) Reset() { *x = ResKv{} - mi := &file_Gameapi_proto_msgTypes[484] + mi := &file_Gameapi_proto_msgTypes[476] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28278,7 +27877,7 @@ func (x *ResKv) String() string { func (*ResKv) ProtoMessage() {} func (x *ResKv) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[484] + mi := &file_Gameapi_proto_msgTypes[476] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28291,7 +27890,7 @@ func (x *ResKv) ProtoReflect() protoreflect.Message { // Deprecated: Use ResKv.ProtoReflect.Descriptor instead. func (*ResKv) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{484} + return file_Gameapi_proto_rawDescGZIP(), []int{476} } func (x *ResKv) GetKv() map[int32]string { @@ -28310,7 +27909,7 @@ type ReqFriendRecommend struct { func (x *ReqFriendRecommend) Reset() { *x = ReqFriendRecommend{} - mi := &file_Gameapi_proto_msgTypes[485] + mi := &file_Gameapi_proto_msgTypes[477] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28322,7 +27921,7 @@ func (x *ReqFriendRecommend) String() string { func (*ReqFriendRecommend) ProtoMessage() {} func (x *ReqFriendRecommend) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[485] + mi := &file_Gameapi_proto_msgTypes[477] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28335,7 +27934,7 @@ func (x *ReqFriendRecommend) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqFriendRecommend.ProtoReflect.Descriptor instead. func (*ReqFriendRecommend) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{485} + return file_Gameapi_proto_rawDescGZIP(), []int{477} } type ResFriendRecommend struct { @@ -28348,7 +27947,7 @@ type ResFriendRecommend struct { func (x *ResFriendRecommend) Reset() { *x = ResFriendRecommend{} - mi := &file_Gameapi_proto_msgTypes[486] + mi := &file_Gameapi_proto_msgTypes[478] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28360,7 +27959,7 @@ func (x *ResFriendRecommend) String() string { func (*ResFriendRecommend) ProtoMessage() {} func (x *ResFriendRecommend) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[486] + mi := &file_Gameapi_proto_msgTypes[478] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28373,7 +27972,7 @@ func (x *ResFriendRecommend) ProtoReflect() protoreflect.Message { // Deprecated: Use ResFriendRecommend.ProtoReflect.Descriptor instead. func (*ResFriendRecommend) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{486} + return file_Gameapi_proto_rawDescGZIP(), []int{478} } func (x *ResFriendRecommend) GetList() []*ResPlayerSimple { @@ -28394,7 +27993,7 @@ type ReqFriendIgnore struct { func (x *ReqFriendIgnore) Reset() { *x = ReqFriendIgnore{} - mi := &file_Gameapi_proto_msgTypes[487] + mi := &file_Gameapi_proto_msgTypes[479] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28406,7 +28005,7 @@ func (x *ReqFriendIgnore) String() string { func (*ReqFriendIgnore) ProtoMessage() {} func (x *ReqFriendIgnore) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[487] + mi := &file_Gameapi_proto_msgTypes[479] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28419,7 +28018,7 @@ func (x *ReqFriendIgnore) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqFriendIgnore.ProtoReflect.Descriptor instead. func (*ReqFriendIgnore) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{487} + return file_Gameapi_proto_rawDescGZIP(), []int{479} } func (x *ReqFriendIgnore) GetUid() int32 { @@ -28440,7 +28039,7 @@ type ResFriendIgnore struct { func (x *ResFriendIgnore) Reset() { *x = ResFriendIgnore{} - mi := &file_Gameapi_proto_msgTypes[488] + mi := &file_Gameapi_proto_msgTypes[480] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28452,7 +28051,7 @@ func (x *ResFriendIgnore) String() string { func (*ResFriendIgnore) ProtoMessage() {} func (x *ResFriendIgnore) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[488] + mi := &file_Gameapi_proto_msgTypes[480] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28465,7 +28064,7 @@ func (x *ResFriendIgnore) ProtoReflect() protoreflect.Message { // Deprecated: Use ResFriendIgnore.ProtoReflect.Descriptor instead. func (*ResFriendIgnore) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{488} + return file_Gameapi_proto_rawDescGZIP(), []int{480} } func (x *ResFriendIgnore) GetCode() RES_CODE { @@ -28491,7 +28090,7 @@ type ReqFriendList struct { func (x *ReqFriendList) Reset() { *x = ReqFriendList{} - mi := &file_Gameapi_proto_msgTypes[489] + mi := &file_Gameapi_proto_msgTypes[481] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28503,7 +28102,7 @@ func (x *ReqFriendList) String() string { func (*ReqFriendList) ProtoMessage() {} func (x *ReqFriendList) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[489] + mi := &file_Gameapi_proto_msgTypes[481] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28516,7 +28115,7 @@ func (x *ReqFriendList) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqFriendList.ProtoReflect.Descriptor instead. func (*ReqFriendList) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{489} + return file_Gameapi_proto_rawDescGZIP(), []int{481} } type ResFriendList struct { @@ -28529,7 +28128,7 @@ type ResFriendList struct { func (x *ResFriendList) Reset() { *x = ResFriendList{} - mi := &file_Gameapi_proto_msgTypes[490] + mi := &file_Gameapi_proto_msgTypes[482] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28541,7 +28140,7 @@ func (x *ResFriendList) String() string { func (*ResFriendList) ProtoMessage() {} func (x *ResFriendList) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[490] + mi := &file_Gameapi_proto_msgTypes[482] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28554,7 +28153,7 @@ func (x *ResFriendList) ProtoReflect() protoreflect.Message { // Deprecated: Use ResFriendList.ProtoReflect.Descriptor instead. func (*ResFriendList) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{490} + return file_Gameapi_proto_rawDescGZIP(), []int{482} } func (x *ResFriendList) GetFriendList() []*ResPlayerSimple { @@ -28564,6 +28163,7 @@ func (x *ResFriendList) GetFriendList() []*ResPlayerSimple { return nil } +// 好友申请列表 type ReqFriendApply struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -28572,7 +28172,7 @@ type ReqFriendApply struct { func (x *ReqFriendApply) Reset() { *x = ReqFriendApply{} - mi := &file_Gameapi_proto_msgTypes[491] + mi := &file_Gameapi_proto_msgTypes[483] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28584,7 +28184,7 @@ func (x *ReqFriendApply) String() string { func (*ReqFriendApply) ProtoMessage() {} func (x *ReqFriendApply) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[491] + mi := &file_Gameapi_proto_msgTypes[483] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28597,7 +28197,7 @@ func (x *ReqFriendApply) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqFriendApply.ProtoReflect.Descriptor instead. func (*ReqFriendApply) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{491} + return file_Gameapi_proto_rawDescGZIP(), []int{483} } type ResFriendApply struct { @@ -28610,7 +28210,7 @@ type ResFriendApply struct { func (x *ResFriendApply) Reset() { *x = ResFriendApply{} - mi := &file_Gameapi_proto_msgTypes[492] + mi := &file_Gameapi_proto_msgTypes[484] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28622,7 +28222,7 @@ func (x *ResFriendApply) String() string { func (*ResFriendApply) ProtoMessage() {} func (x *ResFriendApply) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[492] + mi := &file_Gameapi_proto_msgTypes[484] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28635,7 +28235,7 @@ func (x *ResFriendApply) ProtoReflect() protoreflect.Message { // Deprecated: Use ResFriendApply.ProtoReflect.Descriptor instead. func (*ResFriendApply) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{492} + return file_Gameapi_proto_rawDescGZIP(), []int{484} } func (x *ResFriendApply) GetApplyList() []*ResPlayerSimple { @@ -28645,6 +28245,7 @@ func (x *ResFriendApply) GetApplyList() []*ResPlayerSimple { return nil } +// 好友卡牌交换列表 type ReqFriendCardMsg struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -28653,7 +28254,7 @@ type ReqFriendCardMsg struct { func (x *ReqFriendCardMsg) Reset() { *x = ReqFriendCardMsg{} - mi := &file_Gameapi_proto_msgTypes[493] + mi := &file_Gameapi_proto_msgTypes[485] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28665,7 +28266,7 @@ func (x *ReqFriendCardMsg) String() string { func (*ReqFriendCardMsg) ProtoMessage() {} func (x *ReqFriendCardMsg) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[493] + mi := &file_Gameapi_proto_msgTypes[485] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28678,7 +28279,7 @@ func (x *ReqFriendCardMsg) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqFriendCardMsg.ProtoReflect.Descriptor instead. func (*ReqFriendCardMsg) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{493} + return file_Gameapi_proto_rawDescGZIP(), []int{485} } type ResFriendCardMsg struct { @@ -28691,7 +28292,7 @@ type ResFriendCardMsg struct { func (x *ResFriendCardMsg) Reset() { *x = ResFriendCardMsg{} - mi := &file_Gameapi_proto_msgTypes[494] + mi := &file_Gameapi_proto_msgTypes[486] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28703,7 +28304,7 @@ func (x *ResFriendCardMsg) String() string { func (*ResFriendCardMsg) ProtoMessage() {} func (x *ResFriendCardMsg) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[494] + mi := &file_Gameapi_proto_msgTypes[486] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28716,7 +28317,7 @@ func (x *ResFriendCardMsg) ProtoReflect() protoreflect.Message { // Deprecated: Use ResFriendCardMsg.ProtoReflect.Descriptor instead. func (*ResFriendCardMsg) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{494} + return file_Gameapi_proto_rawDescGZIP(), []int{486} } func (x *ResFriendCardMsg) GetMsgList() []*ResFriendCard { @@ -28726,6 +28327,7 @@ func (x *ResFriendCardMsg) GetMsgList() []*ResFriendCard { return nil } +// 好友时间线 type ReqFriendTimeLine struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -28734,7 +28336,7 @@ type ReqFriendTimeLine struct { func (x *ReqFriendTimeLine) Reset() { *x = ReqFriendTimeLine{} - mi := &file_Gameapi_proto_msgTypes[495] + mi := &file_Gameapi_proto_msgTypes[487] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28746,7 +28348,7 @@ func (x *ReqFriendTimeLine) String() string { func (*ReqFriendTimeLine) ProtoMessage() {} func (x *ReqFriendTimeLine) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[495] + mi := &file_Gameapi_proto_msgTypes[487] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28759,7 +28361,7 @@ func (x *ReqFriendTimeLine) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqFriendTimeLine.ProtoReflect.Descriptor instead. func (*ReqFriendTimeLine) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{495} + return file_Gameapi_proto_rawDescGZIP(), []int{487} } type ResFriendTimeLine struct { @@ -28772,7 +28374,7 @@ type ResFriendTimeLine struct { func (x *ResFriendTimeLine) Reset() { *x = ResFriendTimeLine{} - mi := &file_Gameapi_proto_msgTypes[496] + mi := &file_Gameapi_proto_msgTypes[488] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28784,7 +28386,7 @@ func (x *ResFriendTimeLine) String() string { func (*ResFriendTimeLine) ProtoMessage() {} func (x *ResFriendTimeLine) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[496] + mi := &file_Gameapi_proto_msgTypes[488] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28797,7 +28399,7 @@ func (x *ResFriendTimeLine) ProtoReflect() protoreflect.Message { // Deprecated: Use ResFriendTimeLine.ProtoReflect.Descriptor instead. func (*ResFriendTimeLine) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{496} + return file_Gameapi_proto_rawDescGZIP(), []int{488} } func (x *ResFriendTimeLine) GetLog() []*ResFriendLog { @@ -28818,7 +28420,7 @@ type ResFriendApplyNotify struct { func (x *ResFriendApplyNotify) Reset() { *x = ResFriendApplyNotify{} - mi := &file_Gameapi_proto_msgTypes[497] + mi := &file_Gameapi_proto_msgTypes[489] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28830,7 +28432,7 @@ func (x *ResFriendApplyNotify) String() string { func (*ResFriendApplyNotify) ProtoMessage() {} func (x *ResFriendApplyNotify) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[497] + mi := &file_Gameapi_proto_msgTypes[489] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28843,7 +28445,7 @@ func (x *ResFriendApplyNotify) ProtoReflect() protoreflect.Message { // Deprecated: Use ResFriendApplyNotify.ProtoReflect.Descriptor instead. func (*ResFriendApplyNotify) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{497} + return file_Gameapi_proto_rawDescGZIP(), []int{489} } func (x *ResFriendApplyNotify) GetPlayer() *ResPlayerSimple { @@ -28871,7 +28473,7 @@ type ReqApplyFriend struct { func (x *ReqApplyFriend) Reset() { *x = ReqApplyFriend{} - mi := &file_Gameapi_proto_msgTypes[498] + mi := &file_Gameapi_proto_msgTypes[490] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28883,7 +28485,7 @@ func (x *ReqApplyFriend) String() string { func (*ReqApplyFriend) ProtoMessage() {} func (x *ReqApplyFriend) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[498] + mi := &file_Gameapi_proto_msgTypes[490] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28896,7 +28498,7 @@ func (x *ReqApplyFriend) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqApplyFriend.ProtoReflect.Descriptor instead. func (*ReqApplyFriend) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{498} + return file_Gameapi_proto_rawDescGZIP(), []int{490} } func (x *ReqApplyFriend) GetUid() int32 { @@ -28917,7 +28519,7 @@ type ResApplyFriend struct { func (x *ResApplyFriend) Reset() { *x = ResApplyFriend{} - mi := &file_Gameapi_proto_msgTypes[499] + mi := &file_Gameapi_proto_msgTypes[491] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28929,7 +28531,7 @@ func (x *ResApplyFriend) String() string { func (*ResApplyFriend) ProtoMessage() {} func (x *ResApplyFriend) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[499] + mi := &file_Gameapi_proto_msgTypes[491] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28942,7 +28544,7 @@ func (x *ResApplyFriend) ProtoReflect() protoreflect.Message { // Deprecated: Use ResApplyFriend.ProtoReflect.Descriptor instead. func (*ResApplyFriend) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{499} + return file_Gameapi_proto_rawDescGZIP(), []int{491} } func (x *ResApplyFriend) GetCode() RES_CODE { @@ -28970,7 +28572,7 @@ type ReqAgreeFriend struct { func (x *ReqAgreeFriend) Reset() { *x = ReqAgreeFriend{} - mi := &file_Gameapi_proto_msgTypes[500] + mi := &file_Gameapi_proto_msgTypes[492] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28982,7 +28584,7 @@ func (x *ReqAgreeFriend) String() string { func (*ReqAgreeFriend) ProtoMessage() {} func (x *ReqAgreeFriend) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[500] + mi := &file_Gameapi_proto_msgTypes[492] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28995,7 +28597,7 @@ func (x *ReqAgreeFriend) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqAgreeFriend.ProtoReflect.Descriptor instead. func (*ReqAgreeFriend) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{500} + return file_Gameapi_proto_rawDescGZIP(), []int{492} } func (x *ReqAgreeFriend) GetUid() int32 { @@ -29018,7 +28620,7 @@ type ResAgreeFriend struct { func (x *ResAgreeFriend) Reset() { *x = ResAgreeFriend{} - mi := &file_Gameapi_proto_msgTypes[501] + mi := &file_Gameapi_proto_msgTypes[493] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29030,7 +28632,7 @@ func (x *ResAgreeFriend) String() string { func (*ResAgreeFriend) ProtoMessage() {} func (x *ResAgreeFriend) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[501] + mi := &file_Gameapi_proto_msgTypes[493] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29043,7 +28645,7 @@ func (x *ResAgreeFriend) ProtoReflect() protoreflect.Message { // Deprecated: Use ResAgreeFriend.ProtoReflect.Descriptor instead. func (*ResAgreeFriend) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{501} + return file_Gameapi_proto_rawDescGZIP(), []int{493} } func (x *ResAgreeFriend) GetCode() RES_CODE { @@ -29085,7 +28687,7 @@ type ReqRefuseFriend struct { func (x *ReqRefuseFriend) Reset() { *x = ReqRefuseFriend{} - mi := &file_Gameapi_proto_msgTypes[502] + mi := &file_Gameapi_proto_msgTypes[494] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29097,7 +28699,7 @@ func (x *ReqRefuseFriend) String() string { func (*ReqRefuseFriend) ProtoMessage() {} func (x *ReqRefuseFriend) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[502] + mi := &file_Gameapi_proto_msgTypes[494] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29110,7 +28712,7 @@ func (x *ReqRefuseFriend) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqRefuseFriend.ProtoReflect.Descriptor instead. func (*ReqRefuseFriend) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{502} + return file_Gameapi_proto_rawDescGZIP(), []int{494} } func (x *ReqRefuseFriend) GetUid() int32 { @@ -29132,7 +28734,7 @@ type ResRefuseFriend struct { func (x *ResRefuseFriend) Reset() { *x = ResRefuseFriend{} - mi := &file_Gameapi_proto_msgTypes[503] + mi := &file_Gameapi_proto_msgTypes[495] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29144,7 +28746,7 @@ func (x *ResRefuseFriend) String() string { func (*ResRefuseFriend) ProtoMessage() {} func (x *ResRefuseFriend) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[503] + mi := &file_Gameapi_proto_msgTypes[495] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29157,7 +28759,7 @@ func (x *ResRefuseFriend) ProtoReflect() protoreflect.Message { // Deprecated: Use ResRefuseFriend.ProtoReflect.Descriptor instead. func (*ResRefuseFriend) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{503} + return file_Gameapi_proto_rawDescGZIP(), []int{495} } func (x *ResRefuseFriend) GetCode() RES_CODE { @@ -29192,7 +28794,7 @@ type ReqDelFriend struct { func (x *ReqDelFriend) Reset() { *x = ReqDelFriend{} - mi := &file_Gameapi_proto_msgTypes[504] + mi := &file_Gameapi_proto_msgTypes[496] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29204,7 +28806,7 @@ func (x *ReqDelFriend) String() string { func (*ReqDelFriend) ProtoMessage() {} func (x *ReqDelFriend) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[504] + mi := &file_Gameapi_proto_msgTypes[496] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29217,7 +28819,7 @@ func (x *ReqDelFriend) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqDelFriend.ProtoReflect.Descriptor instead. func (*ReqDelFriend) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{504} + return file_Gameapi_proto_rawDescGZIP(), []int{496} } func (x *ReqDelFriend) GetUid() int32 { @@ -29239,7 +28841,7 @@ type ResDelFriend struct { func (x *ResDelFriend) Reset() { *x = ResDelFriend{} - mi := &file_Gameapi_proto_msgTypes[505] + mi := &file_Gameapi_proto_msgTypes[497] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29251,7 +28853,7 @@ func (x *ResDelFriend) String() string { func (*ResDelFriend) ProtoMessage() {} func (x *ResDelFriend) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[505] + mi := &file_Gameapi_proto_msgTypes[497] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29264,7 +28866,7 @@ func (x *ResDelFriend) ProtoReflect() protoreflect.Message { // Deprecated: Use ResDelFriend.ProtoReflect.Descriptor instead. func (*ResDelFriend) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{505} + return file_Gameapi_proto_rawDescGZIP(), []int{497} } func (x *ResDelFriend) GetCode() RES_CODE { @@ -29299,7 +28901,7 @@ type ReqRank struct { func (x *ReqRank) Reset() { *x = ReqRank{} - mi := &file_Gameapi_proto_msgTypes[506] + mi := &file_Gameapi_proto_msgTypes[498] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29311,7 +28913,7 @@ func (x *ReqRank) String() string { func (*ReqRank) ProtoMessage() {} func (x *ReqRank) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[506] + mi := &file_Gameapi_proto_msgTypes[498] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29324,7 +28926,7 @@ func (x *ReqRank) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqRank.ProtoReflect.Descriptor instead. func (*ReqRank) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{506} + return file_Gameapi_proto_rawDescGZIP(), []int{498} } func (x *ReqRank) GetType() int32 { @@ -29345,7 +28947,7 @@ type ResRank struct { func (x *ResRank) Reset() { *x = ResRank{} - mi := &file_Gameapi_proto_msgTypes[507] + mi := &file_Gameapi_proto_msgTypes[499] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29357,7 +28959,7 @@ func (x *ResRank) String() string { func (*ResRank) ProtoMessage() {} func (x *ResRank) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[507] + mi := &file_Gameapi_proto_msgTypes[499] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29370,7 +28972,7 @@ func (x *ResRank) ProtoReflect() protoreflect.Message { // Deprecated: Use ResRank.ProtoReflect.Descriptor instead. func (*ResRank) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{507} + return file_Gameapi_proto_rawDescGZIP(), []int{499} } func (x *ResRank) GetType() int32 { @@ -29396,7 +28998,7 @@ type ReqMailList struct { func (x *ReqMailList) Reset() { *x = ReqMailList{} - mi := &file_Gameapi_proto_msgTypes[508] + mi := &file_Gameapi_proto_msgTypes[500] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29408,7 +29010,7 @@ func (x *ReqMailList) String() string { func (*ReqMailList) ProtoMessage() {} func (x *ReqMailList) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[508] + mi := &file_Gameapi_proto_msgTypes[500] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29421,7 +29023,7 @@ func (x *ReqMailList) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqMailList.ProtoReflect.Descriptor instead. func (*ReqMailList) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{508} + return file_Gameapi_proto_rawDescGZIP(), []int{500} } type ResMailList struct { @@ -29434,7 +29036,7 @@ type ResMailList struct { func (x *ResMailList) Reset() { *x = ResMailList{} - mi := &file_Gameapi_proto_msgTypes[509] + mi := &file_Gameapi_proto_msgTypes[501] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29446,7 +29048,7 @@ func (x *ResMailList) String() string { func (*ResMailList) ProtoMessage() {} func (x *ResMailList) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[509] + mi := &file_Gameapi_proto_msgTypes[501] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29459,7 +29061,7 @@ func (x *ResMailList) ProtoReflect() protoreflect.Message { // Deprecated: Use ResMailList.ProtoReflect.Descriptor instead. func (*ResMailList) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{509} + return file_Gameapi_proto_rawDescGZIP(), []int{501} } func (x *ResMailList) GetMailList() map[int32]*MailInfo { @@ -29483,7 +29085,7 @@ type MailInfo struct { func (x *MailInfo) Reset() { *x = MailInfo{} - mi := &file_Gameapi_proto_msgTypes[510] + mi := &file_Gameapi_proto_msgTypes[502] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29495,7 +29097,7 @@ func (x *MailInfo) String() string { func (*MailInfo) ProtoMessage() {} func (x *MailInfo) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[510] + mi := &file_Gameapi_proto_msgTypes[502] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29508,7 +29110,7 @@ func (x *MailInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use MailInfo.ProtoReflect.Descriptor instead. func (*MailInfo) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{510} + return file_Gameapi_proto_rawDescGZIP(), []int{502} } func (x *MailInfo) GetTitle() string { @@ -29557,7 +29159,7 @@ type ReqReadMail struct { func (x *ReqReadMail) Reset() { *x = ReqReadMail{} - mi := &file_Gameapi_proto_msgTypes[511] + mi := &file_Gameapi_proto_msgTypes[503] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29569,7 +29171,7 @@ func (x *ReqReadMail) String() string { func (*ReqReadMail) ProtoMessage() {} func (x *ReqReadMail) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[511] + mi := &file_Gameapi_proto_msgTypes[503] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29582,7 +29184,7 @@ func (x *ReqReadMail) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqReadMail.ProtoReflect.Descriptor instead. func (*ReqReadMail) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{511} + return file_Gameapi_proto_rawDescGZIP(), []int{503} } func (x *ReqReadMail) GetId() int32 { @@ -29603,7 +29205,7 @@ type ResReadMail struct { func (x *ResReadMail) Reset() { *x = ResReadMail{} - mi := &file_Gameapi_proto_msgTypes[512] + mi := &file_Gameapi_proto_msgTypes[504] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29615,7 +29217,7 @@ func (x *ResReadMail) String() string { func (*ResReadMail) ProtoMessage() {} func (x *ResReadMail) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[512] + mi := &file_Gameapi_proto_msgTypes[504] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29628,7 +29230,7 @@ func (x *ResReadMail) ProtoReflect() protoreflect.Message { // Deprecated: Use ResReadMail.ProtoReflect.Descriptor instead. func (*ResReadMail) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{512} + return file_Gameapi_proto_rawDescGZIP(), []int{504} } func (x *ResReadMail) GetCode() RES_CODE { @@ -29656,7 +29258,7 @@ type ReqGetMailReward struct { func (x *ReqGetMailReward) Reset() { *x = ReqGetMailReward{} - mi := &file_Gameapi_proto_msgTypes[513] + mi := &file_Gameapi_proto_msgTypes[505] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29668,7 +29270,7 @@ func (x *ReqGetMailReward) String() string { func (*ReqGetMailReward) ProtoMessage() {} func (x *ReqGetMailReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[513] + mi := &file_Gameapi_proto_msgTypes[505] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29681,7 +29283,7 @@ func (x *ReqGetMailReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqGetMailReward.ProtoReflect.Descriptor instead. func (*ReqGetMailReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{513} + return file_Gameapi_proto_rawDescGZIP(), []int{505} } func (x *ReqGetMailReward) GetId() int32 { @@ -29702,7 +29304,7 @@ type ResGetMailReward struct { func (x *ResGetMailReward) Reset() { *x = ResGetMailReward{} - mi := &file_Gameapi_proto_msgTypes[514] + mi := &file_Gameapi_proto_msgTypes[506] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29714,7 +29316,7 @@ func (x *ResGetMailReward) String() string { func (*ResGetMailReward) ProtoMessage() {} func (x *ResGetMailReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[514] + mi := &file_Gameapi_proto_msgTypes[506] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29727,7 +29329,7 @@ func (x *ResGetMailReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ResGetMailReward.ProtoReflect.Descriptor instead. func (*ResGetMailReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{514} + return file_Gameapi_proto_rawDescGZIP(), []int{506} } func (x *ResGetMailReward) GetCode() RES_CODE { @@ -29755,7 +29357,7 @@ type ReqDeleteMail struct { func (x *ReqDeleteMail) Reset() { *x = ReqDeleteMail{} - mi := &file_Gameapi_proto_msgTypes[515] + mi := &file_Gameapi_proto_msgTypes[507] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29767,7 +29369,7 @@ func (x *ReqDeleteMail) String() string { func (*ReqDeleteMail) ProtoMessage() {} func (x *ReqDeleteMail) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[515] + mi := &file_Gameapi_proto_msgTypes[507] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29780,7 +29382,7 @@ func (x *ReqDeleteMail) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqDeleteMail.ProtoReflect.Descriptor instead. func (*ReqDeleteMail) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{515} + return file_Gameapi_proto_rawDescGZIP(), []int{507} } func (x *ReqDeleteMail) GetId() int32 { @@ -29801,7 +29403,7 @@ type ResDeleteMail struct { func (x *ResDeleteMail) Reset() { *x = ResDeleteMail{} - mi := &file_Gameapi_proto_msgTypes[516] + mi := &file_Gameapi_proto_msgTypes[508] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29813,7 +29415,7 @@ func (x *ResDeleteMail) String() string { func (*ResDeleteMail) ProtoMessage() {} func (x *ResDeleteMail) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[516] + mi := &file_Gameapi_proto_msgTypes[508] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29826,7 +29428,7 @@ func (x *ResDeleteMail) ProtoReflect() protoreflect.Message { // Deprecated: Use ResDeleteMail.ProtoReflect.Descriptor instead. func (*ResDeleteMail) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{516} + return file_Gameapi_proto_rawDescGZIP(), []int{508} } func (x *ResDeleteMail) GetCode() RES_CODE { @@ -29860,7 +29462,7 @@ type ResCharge struct { func (x *ResCharge) Reset() { *x = ResCharge{} - mi := &file_Gameapi_proto_msgTypes[517] + mi := &file_Gameapi_proto_msgTypes[509] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29872,7 +29474,7 @@ func (x *ResCharge) String() string { func (*ResCharge) ProtoMessage() {} func (x *ResCharge) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[517] + mi := &file_Gameapi_proto_msgTypes[509] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29885,7 +29487,7 @@ func (x *ResCharge) ProtoReflect() protoreflect.Message { // Deprecated: Use ResCharge.ProtoReflect.Descriptor instead. func (*ResCharge) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{517} + return file_Gameapi_proto_rawDescGZIP(), []int{509} } func (x *ResCharge) GetCharge() float32 { @@ -29955,7 +29557,7 @@ type ResSpecialShop struct { func (x *ResSpecialShop) Reset() { *x = ResSpecialShop{} - mi := &file_Gameapi_proto_msgTypes[518] + mi := &file_Gameapi_proto_msgTypes[510] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29967,7 +29569,7 @@ func (x *ResSpecialShop) String() string { func (*ResSpecialShop) ProtoMessage() {} func (x *ResSpecialShop) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[518] + mi := &file_Gameapi_proto_msgTypes[510] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29980,7 +29582,7 @@ func (x *ResSpecialShop) ProtoReflect() protoreflect.Message { // Deprecated: Use ResSpecialShop.ProtoReflect.Descriptor instead. func (*ResSpecialShop) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{518} + return file_Gameapi_proto_rawDescGZIP(), []int{510} } func (x *ResSpecialShop) GetGrade() int32 { @@ -30009,7 +29611,7 @@ type ResChessShop struct { func (x *ResChessShop) Reset() { *x = ResChessShop{} - mi := &file_Gameapi_proto_msgTypes[519] + mi := &file_Gameapi_proto_msgTypes[511] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30021,7 +29623,7 @@ func (x *ResChessShop) String() string { func (*ResChessShop) ProtoMessage() {} func (x *ResChessShop) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[519] + mi := &file_Gameapi_proto_msgTypes[511] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30034,7 +29636,7 @@ func (x *ResChessShop) ProtoReflect() protoreflect.Message { // Deprecated: Use ResChessShop.ProtoReflect.Descriptor instead. func (*ResChessShop) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{519} + return file_Gameapi_proto_rawDescGZIP(), []int{511} } func (x *ResChessShop) GetDiamond() int32 { @@ -30066,7 +29668,7 @@ type ReqFreeShop struct { func (x *ReqFreeShop) Reset() { *x = ReqFreeShop{} - mi := &file_Gameapi_proto_msgTypes[520] + mi := &file_Gameapi_proto_msgTypes[512] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30078,7 +29680,7 @@ func (x *ReqFreeShop) String() string { func (*ReqFreeShop) ProtoMessage() {} func (x *ReqFreeShop) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[520] + mi := &file_Gameapi_proto_msgTypes[512] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30091,7 +29693,7 @@ func (x *ReqFreeShop) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqFreeShop.ProtoReflect.Descriptor instead. func (*ReqFreeShop) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{520} + return file_Gameapi_proto_rawDescGZIP(), []int{512} } type ResFreeShop struct { @@ -30105,7 +29707,7 @@ type ResFreeShop struct { func (x *ResFreeShop) Reset() { *x = ResFreeShop{} - mi := &file_Gameapi_proto_msgTypes[521] + mi := &file_Gameapi_proto_msgTypes[513] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30117,7 +29719,7 @@ func (x *ResFreeShop) String() string { func (*ResFreeShop) ProtoMessage() {} func (x *ResFreeShop) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[521] + mi := &file_Gameapi_proto_msgTypes[513] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30130,7 +29732,7 @@ func (x *ResFreeShop) ProtoReflect() protoreflect.Message { // Deprecated: Use ResFreeShop.ProtoReflect.Descriptor instead. func (*ResFreeShop) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{521} + return file_Gameapi_proto_rawDescGZIP(), []int{513} } func (x *ResFreeShop) GetCode() RES_CODE { @@ -30158,7 +29760,7 @@ type ReqBuyChessShop struct { func (x *ReqBuyChessShop) Reset() { *x = ReqBuyChessShop{} - mi := &file_Gameapi_proto_msgTypes[522] + mi := &file_Gameapi_proto_msgTypes[514] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30170,7 +29772,7 @@ func (x *ReqBuyChessShop) String() string { func (*ReqBuyChessShop) ProtoMessage() {} func (x *ReqBuyChessShop) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[522] + mi := &file_Gameapi_proto_msgTypes[514] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30183,7 +29785,7 @@ func (x *ReqBuyChessShop) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqBuyChessShop.ProtoReflect.Descriptor instead. func (*ReqBuyChessShop) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{522} + return file_Gameapi_proto_rawDescGZIP(), []int{514} } func (x *ReqBuyChessShop) GetId() int32 { @@ -30204,7 +29806,7 @@ type ResBuyChessShop struct { func (x *ResBuyChessShop) Reset() { *x = ResBuyChessShop{} - mi := &file_Gameapi_proto_msgTypes[523] + mi := &file_Gameapi_proto_msgTypes[515] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30216,7 +29818,7 @@ func (x *ResBuyChessShop) String() string { func (*ResBuyChessShop) ProtoMessage() {} func (x *ResBuyChessShop) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[523] + mi := &file_Gameapi_proto_msgTypes[515] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30229,7 +29831,7 @@ func (x *ResBuyChessShop) ProtoReflect() protoreflect.Message { // Deprecated: Use ResBuyChessShop.ProtoReflect.Descriptor instead. func (*ResBuyChessShop) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{523} + return file_Gameapi_proto_rawDescGZIP(), []int{515} } func (x *ResBuyChessShop) GetCode() RES_CODE { @@ -30255,7 +29857,7 @@ type ReqRefreshChessShop struct { func (x *ReqRefreshChessShop) Reset() { *x = ReqRefreshChessShop{} - mi := &file_Gameapi_proto_msgTypes[524] + mi := &file_Gameapi_proto_msgTypes[516] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30267,7 +29869,7 @@ func (x *ReqRefreshChessShop) String() string { func (*ReqRefreshChessShop) ProtoMessage() {} func (x *ReqRefreshChessShop) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[524] + mi := &file_Gameapi_proto_msgTypes[516] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30280,7 +29882,7 @@ func (x *ReqRefreshChessShop) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqRefreshChessShop.ProtoReflect.Descriptor instead. func (*ReqRefreshChessShop) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{524} + return file_Gameapi_proto_rawDescGZIP(), []int{516} } type ResRefreshChessShop struct { @@ -30294,7 +29896,7 @@ type ResRefreshChessShop struct { func (x *ResRefreshChessShop) Reset() { *x = ResRefreshChessShop{} - mi := &file_Gameapi_proto_msgTypes[525] + mi := &file_Gameapi_proto_msgTypes[517] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30306,7 +29908,7 @@ func (x *ResRefreshChessShop) String() string { func (*ResRefreshChessShop) ProtoMessage() {} func (x *ResRefreshChessShop) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[525] + mi := &file_Gameapi_proto_msgTypes[517] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30319,7 +29921,7 @@ func (x *ResRefreshChessShop) ProtoReflect() protoreflect.Message { // Deprecated: Use ResRefreshChessShop.ProtoReflect.Descriptor instead. func (*ResRefreshChessShop) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{525} + return file_Gameapi_proto_rawDescGZIP(), []int{517} } func (x *ResRefreshChessShop) GetCode() RES_CODE { @@ -30344,7 +29946,7 @@ type ReqEndless struct { func (x *ReqEndless) Reset() { *x = ReqEndless{} - mi := &file_Gameapi_proto_msgTypes[526] + mi := &file_Gameapi_proto_msgTypes[518] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30356,7 +29958,7 @@ func (x *ReqEndless) String() string { func (*ReqEndless) ProtoMessage() {} func (x *ReqEndless) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[526] + mi := &file_Gameapi_proto_msgTypes[518] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30369,7 +29971,7 @@ func (x *ReqEndless) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqEndless.ProtoReflect.Descriptor instead. func (*ReqEndless) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{526} + return file_Gameapi_proto_rawDescGZIP(), []int{518} } type ResEndless struct { @@ -30383,7 +29985,7 @@ type ResEndless struct { func (x *ResEndless) Reset() { *x = ResEndless{} - mi := &file_Gameapi_proto_msgTypes[527] + mi := &file_Gameapi_proto_msgTypes[519] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30395,7 +29997,7 @@ func (x *ResEndless) String() string { func (*ResEndless) ProtoMessage() {} func (x *ResEndless) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[527] + mi := &file_Gameapi_proto_msgTypes[519] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30408,7 +30010,7 @@ func (x *ResEndless) ProtoReflect() protoreflect.Message { // Deprecated: Use ResEndless.ProtoReflect.Descriptor instead. func (*ResEndless) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{527} + return file_Gameapi_proto_rawDescGZIP(), []int{519} } func (x *ResEndless) GetId() int32 { @@ -30437,7 +30039,7 @@ type ResEndlessInfo struct { func (x *ResEndlessInfo) Reset() { *x = ResEndlessInfo{} - mi := &file_Gameapi_proto_msgTypes[528] + mi := &file_Gameapi_proto_msgTypes[520] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30449,7 +30051,7 @@ func (x *ResEndlessInfo) String() string { func (*ResEndlessInfo) ProtoMessage() {} func (x *ResEndlessInfo) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[528] + mi := &file_Gameapi_proto_msgTypes[520] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30462,7 +30064,7 @@ func (x *ResEndlessInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ResEndlessInfo.ProtoReflect.Descriptor instead. func (*ResEndlessInfo) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{528} + return file_Gameapi_proto_rawDescGZIP(), []int{520} } func (x *ResEndlessInfo) GetChargeId() int32 { @@ -30494,7 +30096,7 @@ type ReqEndlessReward struct { func (x *ReqEndlessReward) Reset() { *x = ReqEndlessReward{} - mi := &file_Gameapi_proto_msgTypes[529] + mi := &file_Gameapi_proto_msgTypes[521] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30506,7 +30108,7 @@ func (x *ReqEndlessReward) String() string { func (*ReqEndlessReward) ProtoMessage() {} func (x *ReqEndlessReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[529] + mi := &file_Gameapi_proto_msgTypes[521] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30519,7 +30121,7 @@ func (x *ReqEndlessReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqEndlessReward.ProtoReflect.Descriptor instead. func (*ReqEndlessReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{529} + return file_Gameapi_proto_rawDescGZIP(), []int{521} } type ResEndlessReward struct { @@ -30533,7 +30135,7 @@ type ResEndlessReward struct { func (x *ResEndlessReward) Reset() { *x = ResEndlessReward{} - mi := &file_Gameapi_proto_msgTypes[530] + mi := &file_Gameapi_proto_msgTypes[522] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30545,7 +30147,7 @@ func (x *ResEndlessReward) String() string { func (*ResEndlessReward) ProtoMessage() {} func (x *ResEndlessReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[530] + mi := &file_Gameapi_proto_msgTypes[522] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30558,7 +30160,7 @@ func (x *ResEndlessReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ResEndlessReward.ProtoReflect.Descriptor instead. func (*ResEndlessReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{530} + return file_Gameapi_proto_rawDescGZIP(), []int{522} } func (x *ResEndlessReward) GetCode() RES_CODE { @@ -30588,7 +30190,7 @@ type ResPiggyBank struct { func (x *ResPiggyBank) Reset() { *x = ResPiggyBank{} - mi := &file_Gameapi_proto_msgTypes[531] + mi := &file_Gameapi_proto_msgTypes[523] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30600,7 +30202,7 @@ func (x *ResPiggyBank) String() string { func (*ResPiggyBank) ProtoMessage() {} func (x *ResPiggyBank) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[531] + mi := &file_Gameapi_proto_msgTypes[523] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30613,7 +30215,7 @@ func (x *ResPiggyBank) ProtoReflect() protoreflect.Message { // Deprecated: Use ResPiggyBank.ProtoReflect.Descriptor instead. func (*ResPiggyBank) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{531} + return file_Gameapi_proto_rawDescGZIP(), []int{523} } func (x *ResPiggyBank) GetType() int32 { @@ -30652,7 +30254,7 @@ type ReqPiggyBankReward struct { func (x *ReqPiggyBankReward) Reset() { *x = ReqPiggyBankReward{} - mi := &file_Gameapi_proto_msgTypes[532] + mi := &file_Gameapi_proto_msgTypes[524] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30664,7 +30266,7 @@ func (x *ReqPiggyBankReward) String() string { func (*ReqPiggyBankReward) ProtoMessage() {} func (x *ReqPiggyBankReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[532] + mi := &file_Gameapi_proto_msgTypes[524] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30677,7 +30279,7 @@ func (x *ReqPiggyBankReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqPiggyBankReward.ProtoReflect.Descriptor instead. func (*ReqPiggyBankReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{532} + return file_Gameapi_proto_rawDescGZIP(), []int{524} } type ResPiggyBankReward struct { @@ -30691,7 +30293,7 @@ type ResPiggyBankReward struct { func (x *ResPiggyBankReward) Reset() { *x = ResPiggyBankReward{} - mi := &file_Gameapi_proto_msgTypes[533] + mi := &file_Gameapi_proto_msgTypes[525] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30703,7 +30305,7 @@ func (x *ResPiggyBankReward) String() string { func (*ResPiggyBankReward) ProtoMessage() {} func (x *ResPiggyBankReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[533] + mi := &file_Gameapi_proto_msgTypes[525] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30716,7 +30318,7 @@ func (x *ResPiggyBankReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ResPiggyBankReward.ProtoReflect.Descriptor instead. func (*ResPiggyBankReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{533} + return file_Gameapi_proto_rawDescGZIP(), []int{525} } func (x *ResPiggyBankReward) GetCode() RES_CODE { @@ -30745,7 +30347,7 @@ type ReqCreateOrderSn struct { func (x *ReqCreateOrderSn) Reset() { *x = ReqCreateOrderSn{} - mi := &file_Gameapi_proto_msgTypes[534] + mi := &file_Gameapi_proto_msgTypes[526] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30757,7 +30359,7 @@ func (x *ReqCreateOrderSn) String() string { func (*ReqCreateOrderSn) ProtoMessage() {} func (x *ReqCreateOrderSn) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[534] + mi := &file_Gameapi_proto_msgTypes[526] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30770,7 +30372,7 @@ func (x *ReqCreateOrderSn) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqCreateOrderSn.ProtoReflect.Descriptor instead. func (*ReqCreateOrderSn) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{534} + return file_Gameapi_proto_rawDescGZIP(), []int{526} } func (x *ReqCreateOrderSn) GetChargeId() int32 { @@ -30804,7 +30406,7 @@ type ResCreateOrderSn struct { func (x *ResCreateOrderSn) Reset() { *x = ResCreateOrderSn{} - mi := &file_Gameapi_proto_msgTypes[535] + mi := &file_Gameapi_proto_msgTypes[527] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30816,7 +30418,7 @@ func (x *ResCreateOrderSn) String() string { func (*ResCreateOrderSn) ProtoMessage() {} func (x *ResCreateOrderSn) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[535] + mi := &file_Gameapi_proto_msgTypes[527] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30829,7 +30431,7 @@ func (x *ResCreateOrderSn) ProtoReflect() protoreflect.Message { // Deprecated: Use ResCreateOrderSn.ProtoReflect.Descriptor instead. func (*ResCreateOrderSn) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{535} + return file_Gameapi_proto_rawDescGZIP(), []int{527} } func (x *ResCreateOrderSn) GetOrderSn() string { @@ -30851,7 +30453,7 @@ type ReqShippingOrder struct { func (x *ReqShippingOrder) Reset() { *x = ReqShippingOrder{} - mi := &file_Gameapi_proto_msgTypes[536] + mi := &file_Gameapi_proto_msgTypes[528] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30863,7 +30465,7 @@ func (x *ReqShippingOrder) String() string { func (*ReqShippingOrder) ProtoMessage() {} func (x *ReqShippingOrder) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[536] + mi := &file_Gameapi_proto_msgTypes[528] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30876,7 +30478,7 @@ func (x *ReqShippingOrder) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqShippingOrder.ProtoReflect.Descriptor instead. func (*ReqShippingOrder) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{536} + return file_Gameapi_proto_rawDescGZIP(), []int{528} } func (x *ReqShippingOrder) GetOrderSn() string { @@ -30911,7 +30513,7 @@ type ResShippingOrder struct { func (x *ResShippingOrder) Reset() { *x = ResShippingOrder{} - mi := &file_Gameapi_proto_msgTypes[537] + mi := &file_Gameapi_proto_msgTypes[529] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30923,7 +30525,7 @@ func (x *ResShippingOrder) String() string { func (*ResShippingOrder) ProtoMessage() {} func (x *ResShippingOrder) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[537] + mi := &file_Gameapi_proto_msgTypes[529] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30936,7 +30538,7 @@ func (x *ResShippingOrder) ProtoReflect() protoreflect.Message { // Deprecated: Use ResShippingOrder.ProtoReflect.Descriptor instead. func (*ResShippingOrder) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{537} + return file_Gameapi_proto_rawDescGZIP(), []int{529} } func (x *ResShippingOrder) GetCode() RES_CODE { @@ -30961,7 +30563,7 @@ type ReqChampship struct { func (x *ReqChampship) Reset() { *x = ReqChampship{} - mi := &file_Gameapi_proto_msgTypes[538] + mi := &file_Gameapi_proto_msgTypes[530] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30973,7 +30575,7 @@ func (x *ReqChampship) String() string { func (*ReqChampship) ProtoMessage() {} func (x *ReqChampship) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[538] + mi := &file_Gameapi_proto_msgTypes[530] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30986,7 +30588,7 @@ func (x *ReqChampship) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqChampship.ProtoReflect.Descriptor instead. func (*ReqChampship) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{538} + return file_Gameapi_proto_rawDescGZIP(), []int{530} } type ResChampship struct { @@ -31004,7 +30606,7 @@ type ResChampship struct { func (x *ResChampship) Reset() { *x = ResChampship{} - mi := &file_Gameapi_proto_msgTypes[539] + mi := &file_Gameapi_proto_msgTypes[531] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31016,7 +30618,7 @@ func (x *ResChampship) String() string { func (*ResChampship) ProtoMessage() {} func (x *ResChampship) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[539] + mi := &file_Gameapi_proto_msgTypes[531] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31029,7 +30631,7 @@ func (x *ResChampship) ProtoReflect() protoreflect.Message { // Deprecated: Use ResChampship.ProtoReflect.Descriptor instead. func (*ResChampship) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{539} + return file_Gameapi_proto_rawDescGZIP(), []int{531} } func (x *ResChampship) GetScore() int32 { @@ -31082,7 +30684,7 @@ type ReqChampshipReward struct { func (x *ReqChampshipReward) Reset() { *x = ReqChampshipReward{} - mi := &file_Gameapi_proto_msgTypes[540] + mi := &file_Gameapi_proto_msgTypes[532] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31094,7 +30696,7 @@ func (x *ReqChampshipReward) String() string { func (*ReqChampshipReward) ProtoMessage() {} func (x *ReqChampshipReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[540] + mi := &file_Gameapi_proto_msgTypes[532] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31107,7 +30709,7 @@ func (x *ReqChampshipReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqChampshipReward.ProtoReflect.Descriptor instead. func (*ReqChampshipReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{540} + return file_Gameapi_proto_rawDescGZIP(), []int{532} } type ResChampshipReward struct { @@ -31121,7 +30723,7 @@ type ResChampshipReward struct { func (x *ResChampshipReward) Reset() { *x = ResChampshipReward{} - mi := &file_Gameapi_proto_msgTypes[541] + mi := &file_Gameapi_proto_msgTypes[533] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31133,7 +30735,7 @@ func (x *ResChampshipReward) String() string { func (*ResChampshipReward) ProtoMessage() {} func (x *ResChampshipReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[541] + mi := &file_Gameapi_proto_msgTypes[533] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31146,7 +30748,7 @@ func (x *ResChampshipReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ResChampshipReward.ProtoReflect.Descriptor instead. func (*ResChampshipReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{541} + return file_Gameapi_proto_rawDescGZIP(), []int{533} } func (x *ResChampshipReward) GetCode() RES_CODE { @@ -31171,7 +30773,7 @@ type ReqChampshipRankReward struct { func (x *ReqChampshipRankReward) Reset() { *x = ReqChampshipRankReward{} - mi := &file_Gameapi_proto_msgTypes[542] + mi := &file_Gameapi_proto_msgTypes[534] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31183,7 +30785,7 @@ func (x *ReqChampshipRankReward) String() string { func (*ReqChampshipRankReward) ProtoMessage() {} func (x *ReqChampshipRankReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[542] + mi := &file_Gameapi_proto_msgTypes[534] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31196,7 +30798,7 @@ func (x *ReqChampshipRankReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqChampshipRankReward.ProtoReflect.Descriptor instead. func (*ReqChampshipRankReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{542} + return file_Gameapi_proto_rawDescGZIP(), []int{534} } type ResChampshipRankReward struct { @@ -31210,7 +30812,7 @@ type ResChampshipRankReward struct { func (x *ResChampshipRankReward) Reset() { *x = ResChampshipRankReward{} - mi := &file_Gameapi_proto_msgTypes[543] + mi := &file_Gameapi_proto_msgTypes[535] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31222,7 +30824,7 @@ func (x *ResChampshipRankReward) String() string { func (*ResChampshipRankReward) ProtoMessage() {} func (x *ResChampshipRankReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[543] + mi := &file_Gameapi_proto_msgTypes[535] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31235,7 +30837,7 @@ func (x *ResChampshipRankReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ResChampshipRankReward.ProtoReflect.Descriptor instead. func (*ResChampshipRankReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{543} + return file_Gameapi_proto_rawDescGZIP(), []int{535} } func (x *ResChampshipRankReward) GetCode() RES_CODE { @@ -31260,7 +30862,7 @@ type ReqChampshipRank struct { func (x *ReqChampshipRank) Reset() { *x = ReqChampshipRank{} - mi := &file_Gameapi_proto_msgTypes[544] + mi := &file_Gameapi_proto_msgTypes[536] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31272,7 +30874,7 @@ func (x *ReqChampshipRank) String() string { func (*ReqChampshipRank) ProtoMessage() {} func (x *ReqChampshipRank) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[544] + mi := &file_Gameapi_proto_msgTypes[536] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31285,7 +30887,7 @@ func (x *ReqChampshipRank) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqChampshipRank.ProtoReflect.Descriptor instead. func (*ReqChampshipRank) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{544} + return file_Gameapi_proto_rawDescGZIP(), []int{536} } type ResChampshipRank struct { @@ -31300,7 +30902,7 @@ type ResChampshipRank struct { func (x *ResChampshipRank) Reset() { *x = ResChampshipRank{} - mi := &file_Gameapi_proto_msgTypes[545] + mi := &file_Gameapi_proto_msgTypes[537] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31312,7 +30914,7 @@ func (x *ResChampshipRank) String() string { func (*ResChampshipRank) ProtoMessage() {} func (x *ResChampshipRank) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[545] + mi := &file_Gameapi_proto_msgTypes[537] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31325,7 +30927,7 @@ func (x *ResChampshipRank) ProtoReflect() protoreflect.Message { // Deprecated: Use ResChampshipRank.ProtoReflect.Descriptor instead. func (*ResChampshipRank) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{545} + return file_Gameapi_proto_rawDescGZIP(), []int{537} } func (x *ResChampshipRank) GetRankList() map[int32]*ResPlayerRank { @@ -31357,7 +30959,7 @@ type ReqChampshipPreRank struct { func (x *ReqChampshipPreRank) Reset() { *x = ReqChampshipPreRank{} - mi := &file_Gameapi_proto_msgTypes[546] + mi := &file_Gameapi_proto_msgTypes[538] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31369,7 +30971,7 @@ func (x *ReqChampshipPreRank) String() string { func (*ReqChampshipPreRank) ProtoMessage() {} func (x *ReqChampshipPreRank) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[546] + mi := &file_Gameapi_proto_msgTypes[538] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31382,7 +30984,7 @@ func (x *ReqChampshipPreRank) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqChampshipPreRank.ProtoReflect.Descriptor instead. func (*ReqChampshipPreRank) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{546} + return file_Gameapi_proto_rawDescGZIP(), []int{538} } type ResChampshipPreRank struct { @@ -31397,7 +30999,7 @@ type ResChampshipPreRank struct { func (x *ResChampshipPreRank) Reset() { *x = ResChampshipPreRank{} - mi := &file_Gameapi_proto_msgTypes[547] + mi := &file_Gameapi_proto_msgTypes[539] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31409,7 +31011,7 @@ func (x *ResChampshipPreRank) String() string { func (*ResChampshipPreRank) ProtoMessage() {} func (x *ResChampshipPreRank) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[547] + mi := &file_Gameapi_proto_msgTypes[539] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31422,7 +31024,7 @@ func (x *ResChampshipPreRank) ProtoReflect() protoreflect.Message { // Deprecated: Use ResChampshipPreRank.ProtoReflect.Descriptor instead. func (*ResChampshipPreRank) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{547} + return file_Gameapi_proto_rawDescGZIP(), []int{539} } func (x *ResChampshipPreRank) GetRankList() map[int32]*ResPlayerRank { @@ -31458,7 +31060,7 @@ type ResNotifyCard struct { func (x *ResNotifyCard) Reset() { *x = ResNotifyCard{} - mi := &file_Gameapi_proto_msgTypes[548] + mi := &file_Gameapi_proto_msgTypes[540] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31470,7 +31072,7 @@ func (x *ResNotifyCard) String() string { func (*ResNotifyCard) ProtoMessage() {} func (x *ResNotifyCard) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[548] + mi := &file_Gameapi_proto_msgTypes[540] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31483,7 +31085,7 @@ func (x *ResNotifyCard) ProtoReflect() protoreflect.Message { // Deprecated: Use ResNotifyCard.ProtoReflect.Descriptor instead. func (*ResNotifyCard) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{548} + return file_Gameapi_proto_rawDescGZIP(), []int{540} } func (x *ResNotifyCard) GetCard() map[int32]int32 { @@ -31507,6 +31109,526 @@ func (x *ResNotifyCard) GetExStar() int32 { return 0 } +type ReqSetFacebookUrl struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Url string `protobuf:"bytes,1,opt,name=Url,proto3" json:"Url,omitempty"` +} + +func (x *ReqSetFacebookUrl) Reset() { + *x = ReqSetFacebookUrl{} + mi := &file_Gameapi_proto_msgTypes[541] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReqSetFacebookUrl) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReqSetFacebookUrl) ProtoMessage() {} + +func (x *ReqSetFacebookUrl) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[541] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReqSetFacebookUrl.ProtoReflect.Descriptor instead. +func (*ReqSetFacebookUrl) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{541} +} + +func (x *ReqSetFacebookUrl) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +type ResSetFacebookUrl struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Code RES_CODE `protobuf:"varint,1,opt,name=Code,proto3,enum=tutorial.RES_CODE" json:"Code,omitempty"` + Msg string `protobuf:"bytes,2,opt,name=Msg,proto3" json:"Msg,omitempty"` +} + +func (x *ResSetFacebookUrl) Reset() { + *x = ResSetFacebookUrl{} + mi := &file_Gameapi_proto_msgTypes[542] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ResSetFacebookUrl) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResSetFacebookUrl) ProtoMessage() {} + +func (x *ResSetFacebookUrl) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[542] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResSetFacebookUrl.ProtoReflect.Descriptor instead. +func (*ResSetFacebookUrl) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{542} +} + +func (x *ResSetFacebookUrl) GetCode() RES_CODE { + if x != nil { + return x.Code + } + return RES_CODE_FAIL +} + +func (x *ResSetFacebookUrl) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +// 邀请facebook好友 +type ReqInviteFriendData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DwUin int32 `protobuf:"varint,1,opt,name=dwUin,proto3" json:"dwUin,omitempty"` +} + +func (x *ReqInviteFriendData) Reset() { + *x = ReqInviteFriendData{} + mi := &file_Gameapi_proto_msgTypes[543] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReqInviteFriendData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReqInviteFriendData) ProtoMessage() {} + +func (x *ReqInviteFriendData) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[543] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReqInviteFriendData.ProtoReflect.Descriptor instead. +func (*ReqInviteFriendData) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{543} +} + +func (x *ReqInviteFriendData) GetDwUin() int32 { + if x != nil { + return x.DwUin + } + return 0 +} + +type ResInviteFriendData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + IdLists []int32 `protobuf:"varint,1,rep,packed,name=IdLists,proto3" json:"IdLists,omitempty"` + GetIndex int32 `protobuf:"varint,2,opt,name=GetIndex,proto3" json:"GetIndex,omitempty"` +} + +func (x *ResInviteFriendData) Reset() { + *x = ResInviteFriendData{} + mi := &file_Gameapi_proto_msgTypes[544] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ResInviteFriendData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResInviteFriendData) ProtoMessage() {} + +func (x *ResInviteFriendData) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[544] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResInviteFriendData.ProtoReflect.Descriptor instead. +func (*ResInviteFriendData) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{544} +} + +func (x *ResInviteFriendData) GetIdLists() []int32 { + if x != nil { + return x.IdLists + } + return nil +} + +func (x *ResInviteFriendData) GetGetIndex() int32 { + if x != nil { + return x.GetIndex + } + return 0 +} + +type ReqSelfInvited struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + InviterId int32 `protobuf:"varint,1,opt,name=InviterId,proto3" json:"InviterId,omitempty"` +} + +func (x *ReqSelfInvited) Reset() { + *x = ReqSelfInvited{} + mi := &file_Gameapi_proto_msgTypes[545] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReqSelfInvited) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReqSelfInvited) ProtoMessage() {} + +func (x *ReqSelfInvited) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[545] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReqSelfInvited.ProtoReflect.Descriptor instead. +func (*ReqSelfInvited) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{545} +} + +func (x *ReqSelfInvited) GetInviterId() int32 { + if x != nil { + return x.InviterId + } + return 0 +} + +type ResSelfInvited struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ResultCode int32 `protobuf:"varint,1,opt,name=ResultCode,proto3" json:"ResultCode,omitempty"` +} + +func (x *ResSelfInvited) Reset() { + *x = ResSelfInvited{} + mi := &file_Gameapi_proto_msgTypes[546] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ResSelfInvited) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResSelfInvited) ProtoMessage() {} + +func (x *ResSelfInvited) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[546] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResSelfInvited.ProtoReflect.Descriptor instead. +func (*ResSelfInvited) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{546} +} + +func (x *ResSelfInvited) GetResultCode() int32 { + if x != nil { + return x.ResultCode + } + return 0 +} + +type NotifyInvitedSuccess struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ResultCode int32 `protobuf:"varint,1,opt,name=ResultCode,proto3" json:"ResultCode,omitempty"` + IdLists []int32 `protobuf:"varint,2,rep,packed,name=IdLists,proto3" json:"IdLists,omitempty"` +} + +func (x *NotifyInvitedSuccess) Reset() { + *x = NotifyInvitedSuccess{} + mi := &file_Gameapi_proto_msgTypes[547] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NotifyInvitedSuccess) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NotifyInvitedSuccess) ProtoMessage() {} + +func (x *NotifyInvitedSuccess) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[547] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NotifyInvitedSuccess.ProtoReflect.Descriptor instead. +func (*NotifyInvitedSuccess) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{547} +} + +func (x *NotifyInvitedSuccess) GetResultCode() int32 { + if x != nil { + return x.ResultCode + } + return 0 +} + +func (x *NotifyInvitedSuccess) GetIdLists() []int32 { + if x != nil { + return x.IdLists + } + return nil +} + +type ReqGetInviteReward struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + GetIndex int32 `protobuf:"varint,1,opt,name=GetIndex,proto3" json:"GetIndex,omitempty"` +} + +func (x *ReqGetInviteReward) Reset() { + *x = ReqGetInviteReward{} + mi := &file_Gameapi_proto_msgTypes[548] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReqGetInviteReward) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReqGetInviteReward) ProtoMessage() {} + +func (x *ReqGetInviteReward) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[548] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReqGetInviteReward.ProtoReflect.Descriptor instead. +func (*ReqGetInviteReward) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{548} +} + +func (x *ReqGetInviteReward) GetGetIndex() int32 { + if x != nil { + return x.GetIndex + } + return 0 +} + +type ResGetInviteReward struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ResultCode int32 `protobuf:"varint,1,opt,name=ResultCode,proto3" json:"ResultCode,omitempty"` +} + +func (x *ResGetInviteReward) Reset() { + *x = ResGetInviteReward{} + mi := &file_Gameapi_proto_msgTypes[549] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ResGetInviteReward) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResGetInviteReward) ProtoMessage() {} + +func (x *ResGetInviteReward) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[549] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResGetInviteReward.ProtoReflect.Descriptor instead. +func (*ResGetInviteReward) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{549} +} + +func (x *ResGetInviteReward) GetResultCode() int32 { + if x != nil { + return x.ResultCode + } + return 0 +} + +type ReqAutoAddInviteFriend struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` +} + +func (x *ReqAutoAddInviteFriend) Reset() { + *x = ReqAutoAddInviteFriend{} + mi := &file_Gameapi_proto_msgTypes[550] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReqAutoAddInviteFriend) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReqAutoAddInviteFriend) ProtoMessage() {} + +func (x *ReqAutoAddInviteFriend) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[550] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReqAutoAddInviteFriend.ProtoReflect.Descriptor instead. +func (*ReqAutoAddInviteFriend) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{550} +} + +func (x *ReqAutoAddInviteFriend) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +type ResAutoAddInviteFriend struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ResultCode int32 `protobuf:"varint,1,opt,name=ResultCode,proto3" json:"ResultCode,omitempty"` +} + +func (x *ResAutoAddInviteFriend) Reset() { + *x = ResAutoAddInviteFriend{} + mi := &file_Gameapi_proto_msgTypes[551] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ResAutoAddInviteFriend) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResAutoAddInviteFriend) ProtoMessage() {} + +func (x *ResAutoAddInviteFriend) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[551] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResAutoAddInviteFriend.ProtoReflect.Descriptor instead. +func (*ResAutoAddInviteFriend) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{551} +} + +func (x *ResAutoAddInviteFriend) GetResultCode() int32 { + if x != nil { + return x.ResultCode + } + return 0 +} + var File_Gameapi_proto protoreflect.FileDescriptor var file_Gameapi_proto_rawDesc = []byte{ @@ -33690,540 +33812,521 @@ var file_Gameapi_proto_rawDesc = []byte{ 0x22, 0x34, 0x0a, 0x12, 0x52, 0x65, 0x73, 0x41, 0x75, 0x74, 0x6f, 0x46, 0x42, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x52, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x2a, 0x0a, 0x16, 0x52, 0x65, 0x71, 0x41, 0x75, 0x74, - 0x6f, 0x41, 0x64, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, - 0x12, 0x10, 0x0a, 0x03, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x49, - 0x64, 0x73, 0x22, 0x38, 0x0a, 0x16, 0x52, 0x65, 0x73, 0x41, 0x75, 0x74, 0x6f, 0x41, 0x64, 0x64, - 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x1e, 0x0a, 0x0a, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x48, 0x0a, 0x1c, - 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x76, - 0x69, 0x74, 0x65, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x28, 0x0a, 0x04, + 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x48, 0x0a, 0x1c, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, + 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x41, 0x64, 0x64, + 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x28, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, + 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, + 0x22, 0x44, 0x0a, 0x18, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x46, 0x42, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x28, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x44, 0x0a, 0x18, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, - 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x46, 0x42, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, - 0x6e, 0x64, 0x12, 0x28, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x14, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x46, 0x72, 0x69, 0x65, - 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x5e, 0x0a, 0x16, - 0x52, 0x65, 0x71, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x46, 0x72, 0x69, 0x65, - 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, - 0x65, 0x6e, 0x64, 0x43, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x52, 0x65, - 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x43, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x45, 0x78, - 0x63, 0x6c, 0x75, 0x64, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, - 0x0b, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x50, 0x0a, 0x16, - 0x52, 0x65, 0x73, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x46, 0x72, 0x69, 0x65, - 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x0b, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, - 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x75, - 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x0b, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x22, 0x2b, - 0x0a, 0x13, 0x52, 0x65, 0x71, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, - 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x22, 0x4b, 0x0a, 0x13, 0x52, - 0x65, 0x73, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x44, 0x61, - 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x05, 0x52, 0x07, 0x49, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x73, 0x12, 0x1a, 0x0a, 0x08, - 0x47, 0x65, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, - 0x47, 0x65, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x2e, 0x0a, 0x0e, 0x52, 0x65, 0x71, 0x53, - 0x65, 0x6c, 0x66, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x49, 0x6e, - 0x76, 0x69, 0x74, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x49, - 0x6e, 0x76, 0x69, 0x74, 0x65, 0x72, 0x49, 0x64, 0x22, 0x4a, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x53, - 0x65, 0x6c, 0x66, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x64, - 0x4c, 0x69, 0x73, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x49, 0x64, 0x4c, - 0x69, 0x73, 0x74, 0x73, 0x22, 0x50, 0x0a, 0x14, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x49, 0x6e, - 0x76, 0x69, 0x74, 0x65, 0x64, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x1e, 0x0a, 0x0a, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, - 0x49, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x49, - 0x64, 0x4c, 0x69, 0x73, 0x74, 0x73, 0x22, 0x30, 0x0a, 0x12, 0x52, 0x65, 0x71, 0x47, 0x65, 0x74, - 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, - 0x47, 0x65, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, - 0x47, 0x65, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x34, 0x0a, 0x12, 0x52, 0x65, 0x73, 0x47, - 0x65, 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1e, - 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x2d, - 0x0a, 0x15, 0x52, 0x65, 0x71, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x54, 0x72, 0x65, 0x61, 0x73, - 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x22, 0x2b, 0x0a, - 0x15, 0x52, 0x65, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x54, 0x72, 0x65, 0x61, 0x73, 0x75, - 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x74, 0x61, 0x72, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x74, 0x61, 0x72, 0x22, 0x29, 0x0a, 0x13, 0x52, 0x65, - 0x71, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x61, - 0x72, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x74, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x04, 0x53, 0x74, 0x61, 0x72, 0x22, 0x29, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x72, 0x12, 0x12, 0x0a, 0x04, - 0x53, 0x74, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x74, 0x61, 0x72, - 0x22, 0x2e, 0x0a, 0x18, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, - 0x54, 0x72, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x53, 0x74, 0x61, 0x72, 0x12, 0x12, 0x0a, 0x04, - 0x53, 0x74, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x74, 0x61, 0x72, - 0x22, 0xa6, 0x02, 0x0a, 0x10, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, - 0x64, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x49, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x49, - 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x49, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x49, 0x64, 0x12, - 0x18, 0x0a, 0x07, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x07, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x41, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0f, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x1e, 0x0a, 0x0a, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, - 0x20, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x41, 0x63, 0x74, 0x49, 0x64, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x41, 0x63, 0x74, 0x49, - 0x64, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x75, 0x74, 0x6f, 0x49, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x06, 0x41, 0x75, 0x74, 0x6f, 0x49, 0x64, 0x22, 0x2e, 0x0a, 0x16, 0x52, 0x65, 0x71, - 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x42, 0x6f, 0x78, 0x44, - 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x22, 0x78, 0x0a, 0x16, 0x52, 0x65, 0x73, - 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x42, 0x6f, 0x78, 0x44, - 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x12, 0x48, 0x0a, 0x11, 0x45, 0x78, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, - 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, - 0x52, 0x11, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, - 0x65, 0x6d, 0x73, 0x22, 0xb0, 0x01, 0x0a, 0x14, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x43, 0x61, - 0x72, 0x64, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x12, 0x1a, 0x0a, 0x08, - 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, - 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x52, 0x65, 0x6e, 0x65, - 0x77, 0x53, 0x76, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, - 0x52, 0x65, 0x6e, 0x65, 0x77, 0x53, 0x76, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x11, - 0x52, 0x65, 0x6e, 0x65, 0x77, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x69, 0x6d, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x45, 0x78, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x52, 0x65, - 0x6e, 0x65, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x85, 0x01, 0x0a, 0x13, 0x52, 0x65, 0x71, 0x44, 0x6f, - 0x6e, 0x61, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x43, 0x61, 0x72, 0x64, 0x12, 0x1a, - 0x0a, 0x08, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x08, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, - 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, - 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x61, - 0x72, 0x64, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x43, 0x61, 0x72, 0x64, - 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x49, 0x44, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x49, 0x44, 0x22, 0x7f, - 0x0a, 0x13, 0x52, 0x65, 0x73, 0x44, 0x6f, 0x6e, 0x61, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, - 0x64, 0x43, 0x61, 0x72, 0x64, 0x12, 0x48, 0x0a, 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x45, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x11, 0x6d, 0x45, + 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x5e, 0x0a, 0x16, 0x52, 0x65, 0x71, 0x52, 0x65, 0x63, + 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, + 0x12, 0x22, 0x0a, 0x0c, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x43, 0x6e, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, + 0x64, 0x43, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x4c, + 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0b, 0x45, 0x78, 0x63, 0x6c, 0x75, + 0x64, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x50, 0x0a, 0x16, 0x52, 0x65, 0x73, 0x52, 0x65, 0x63, + 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, + 0x12, 0x36, 0x0a, 0x0b, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, + 0x2e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x22, 0x2d, 0x0a, 0x15, 0x52, 0x65, 0x71, 0x46, + 0x72, 0x69, 0x65, 0x6e, 0x64, 0x54, 0x72, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, + 0x61, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x22, 0x2b, 0x0a, 0x15, 0x52, 0x65, 0x73, 0x46, 0x72, + 0x69, 0x65, 0x6e, 0x64, 0x54, 0x72, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, + 0x12, 0x12, 0x0a, 0x04, 0x53, 0x74, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, + 0x53, 0x74, 0x61, 0x72, 0x22, 0x29, 0x0a, 0x13, 0x52, 0x65, 0x71, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x53, + 0x74, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x74, 0x61, 0x72, 0x22, + 0x29, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, + 0x6e, 0x64, 0x53, 0x74, 0x61, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x74, 0x61, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x74, 0x61, 0x72, 0x22, 0x2e, 0x0a, 0x18, 0x4e, 0x6f, + 0x74, 0x69, 0x66, 0x79, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x54, 0x72, 0x65, 0x61, 0x73, 0x75, + 0x72, 0x65, 0x53, 0x74, 0x61, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x74, 0x61, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x74, 0x61, 0x72, 0x22, 0xa6, 0x02, 0x0a, 0x10, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x12, - 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, - 0x62, 0x0a, 0x16, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x44, 0x6f, 0x6e, 0x61, 0x74, 0x65, 0x46, - 0x72, 0x69, 0x65, 0x6e, 0x64, 0x43, 0x61, 0x72, 0x64, 0x12, 0x48, 0x0a, 0x11, 0x6d, 0x45, 0x78, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, - 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, - 0x52, 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, - 0x74, 0x65, 0x6d, 0x22, 0x5c, 0x0a, 0x10, 0x52, 0x65, 0x71, 0x47, 0x65, 0x74, 0x44, 0x6f, 0x6e, - 0x61, 0x74, 0x65, 0x43, 0x61, 0x72, 0x64, 0x12, 0x48, 0x0a, 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x45, 0x78, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x11, - 0x6d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, - 0x6d, 0x22, 0x5f, 0x0a, 0x13, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x47, 0x65, 0x74, 0x44, 0x6f, - 0x6e, 0x61, 0x74, 0x65, 0x43, 0x61, 0x72, 0x64, 0x12, 0x48, 0x0a, 0x11, 0x6d, 0x45, 0x78, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x45, - 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, - 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, - 0x65, 0x6d, 0x22, 0x7c, 0x0a, 0x10, 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, 0x44, 0x6f, 0x6e, 0x61, - 0x74, 0x65, 0x43, 0x61, 0x72, 0x64, 0x12, 0x48, 0x0a, 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x45, 0x78, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x11, 0x6d, - 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, - 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, - 0x22, 0x5d, 0x0a, 0x11, 0x52, 0x65, 0x71, 0x52, 0x65, 0x66, 0x75, 0x73, 0x65, 0x45, 0x78, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x48, 0x0a, 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x45, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x11, 0x6d, 0x45, - 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x22, - 0xab, 0x01, 0x0a, 0x11, 0x52, 0x65, 0x73, 0x52, 0x65, 0x66, 0x75, 0x73, 0x65, 0x45, 0x78, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x48, 0x0a, 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x45, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x11, 0x6d, 0x45, - 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x12, - 0x2c, 0x0a, 0x11, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x52, 0x65, 0x6e, 0x65, - 0x77, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, - 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x8e, 0x01, - 0x0a, 0x14, 0x4e, 0x4f, 0x74, 0x69, 0x66, 0x79, 0x52, 0x65, 0x66, 0x75, 0x73, 0x65, 0x45, 0x78, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x48, 0x0a, 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x45, 0x78, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x11, 0x6d, - 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, - 0x12, 0x2c, 0x0a, 0x11, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x52, 0x65, 0x6e, - 0x65, 0x77, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x81, - 0x01, 0x0a, 0x0f, 0x52, 0x65, 0x71, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, - 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1e, - 0x0a, 0x0a, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0a, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x49, 0x64, 0x12, 0x16, - 0x0a, 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, - 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, - 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, - 0x49, 0x44, 0x22, 0x7b, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x43, 0x61, 0x72, 0x64, 0x12, 0x48, 0x0a, 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x45, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x11, 0x6d, 0x45, - 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x12, - 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, - 0x61, 0x0a, 0x15, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x54, 0x69, 0x6d, 0x65, 0x4f, 0x75, 0x74, 0x12, 0x48, 0x0a, 0x11, 0x6d, 0x45, 0x78, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x45, - 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, - 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, - 0x65, 0x6d, 0x22, 0x5e, 0x0a, 0x12, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x45, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x12, 0x48, 0x0a, 0x11, 0x6d, 0x45, 0x78, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x45, - 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, - 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, - 0x65, 0x6d, 0x22, 0x5a, 0x0a, 0x0e, 0x52, 0x65, 0x71, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, - 0x43, 0x61, 0x72, 0x64, 0x12, 0x48, 0x0a, 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x11, 0x6d, 0x45, 0x78, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x22, 0x7a, - 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x43, 0x61, 0x72, 0x64, + 0x1a, 0x0a, 0x08, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x08, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x52, + 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, + 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x41, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, + 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x41, 0x63, 0x74, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x41, 0x63, 0x74, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x41, + 0x75, 0x74, 0x6f, 0x49, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x75, 0x74, + 0x6f, 0x49, 0x64, 0x22, 0x2e, 0x0a, 0x16, 0x52, 0x65, 0x71, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x42, 0x6f, 0x78, 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, + 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, 0x77, + 0x55, 0x69, 0x6e, 0x22, 0x78, 0x0a, 0x16, 0x52, 0x65, 0x73, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x42, 0x6f, 0x78, 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, + 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, 0x77, + 0x55, 0x69, 0x6e, 0x12, 0x48, 0x0a, 0x11, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, + 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x11, 0x45, 0x78, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22, 0xb0, 0x01, + 0x0a, 0x14, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x43, 0x61, 0x72, 0x64, 0x44, 0x61, 0x69, 0x6c, + 0x79, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x53, 0x76, 0x72, 0x54, 0x69, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x53, + 0x76, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x45, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x11, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, + 0x52, 0x65, 0x6e, 0x65, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, + 0x22, 0x85, 0x01, 0x0a, 0x13, 0x52, 0x65, 0x71, 0x44, 0x6f, 0x6e, 0x61, 0x74, 0x65, 0x46, 0x72, + 0x69, 0x65, 0x6e, 0x64, 0x43, 0x61, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x65, 0x6e, 0x64, + 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x65, 0x6e, 0x64, + 0x65, 0x72, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, + 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, + 0x65, 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, + 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, + 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x49, 0x44, 0x22, 0x7f, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x44, + 0x6f, 0x6e, 0x61, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x43, 0x61, 0x72, 0x64, 0x12, + 0x48, 0x0a, 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, + 0x49, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x75, 0x74, + 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, + 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x62, 0x0a, 0x16, 0x4e, 0x6f, 0x74, + 0x69, 0x66, 0x79, 0x44, 0x6f, 0x6e, 0x61, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x43, + 0x61, 0x72, 0x64, 0x12, 0x48, 0x0a, 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x11, 0x6d, 0x45, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x22, 0x5c, 0x0a, + 0x10, 0x52, 0x65, 0x71, 0x47, 0x65, 0x74, 0x44, 0x6f, 0x6e, 0x61, 0x74, 0x65, 0x43, 0x61, 0x72, + 0x64, 0x12, 0x48, 0x0a, 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, + 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, + 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x22, 0x5f, 0x0a, 0x13, 0x4e, + 0x6f, 0x74, 0x69, 0x66, 0x79, 0x47, 0x65, 0x74, 0x44, 0x6f, 0x6e, 0x61, 0x74, 0x65, 0x43, 0x61, + 0x72, 0x64, 0x12, 0x48, 0x0a, 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, + 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x22, 0x7c, 0x0a, 0x10, + 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, 0x44, 0x6f, 0x6e, 0x61, 0x74, 0x65, 0x43, 0x61, 0x72, 0x64, 0x12, 0x48, 0x0a, 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x5d, 0x0a, 0x11, 0x4e, 0x6f, - 0x74, 0x69, 0x66, 0x79, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x43, 0x61, 0x72, 0x64, 0x12, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x5d, 0x0a, 0x11, 0x52, 0x65, + 0x71, 0x52, 0x65, 0x66, 0x75, 0x73, 0x65, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x48, 0x0a, 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x22, 0x63, 0x0a, 0x17, 0x52, 0x65, 0x71, - 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x43, 0x61, 0x72, 0x64, 0x12, 0x48, 0x0a, 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x11, 0x6d, 0x45, 0x78, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x22, 0x83, - 0x01, 0x0a, 0x17, 0x52, 0x65, 0x73, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x78, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x12, 0x48, 0x0a, 0x11, 0x6d, 0x45, + 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x22, 0xab, 0x01, 0x0a, 0x11, 0x52, 0x65, + 0x73, 0x52, 0x65, 0x66, 0x75, 0x73, 0x65, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, + 0x48, 0x0a, 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, + 0x49, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x75, 0x74, + 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, + 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x2c, 0x0a, 0x11, 0x52, 0x65, 0x6e, + 0x65, 0x77, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x45, 0x78, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x8e, 0x01, 0x0a, 0x14, 0x4e, 0x4f, 0x74, 0x69, + 0x66, 0x79, 0x52, 0x65, 0x66, 0x75, 0x73, 0x65, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x12, 0x48, 0x0a, 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, + 0x64, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x75, + 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, + 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x2c, 0x0a, 0x11, 0x52, 0x65, + 0x6e, 0x65, 0x77, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x45, 0x78, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x81, 0x01, 0x0a, 0x0f, 0x52, 0x65, 0x71, + 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, + 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, + 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x63, 0x65, + 0x69, 0x76, 0x65, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x52, 0x65, + 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x61, 0x72, 0x64, + 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, + 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x08, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x49, 0x44, 0x22, 0x7b, 0x0a, 0x0f, + 0x52, 0x65, 0x73, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x12, + 0x48, 0x0a, 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, + 0x49, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x75, 0x74, + 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, + 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x61, 0x0a, 0x15, 0x4e, 0x6f, 0x74, + 0x69, 0x66, 0x79, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x4f, + 0x75, 0x74, 0x12, 0x48, 0x0a, 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, + 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x22, 0x5e, 0x0a, 0x12, + 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, + 0x72, 0x64, 0x12, 0x48, 0x0a, 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, + 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x22, 0x5a, 0x0a, 0x0e, + 0x52, 0x65, 0x71, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x43, 0x61, 0x72, 0x64, 0x12, 0x48, + 0x0a, 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, + 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x75, 0x74, 0x6f, + 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, + 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x22, 0x7a, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x52, + 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x43, 0x61, 0x72, 0x64, 0x12, 0x48, 0x0a, 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x43, 0x6f, 0x64, 0x65, 0x22, 0x66, 0x0a, 0x1a, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x43, 0x6f, - 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, - 0x72, 0x64, 0x12, 0x48, 0x0a, 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, - 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x22, 0x5e, 0x0a, 0x12, - 0x52, 0x65, 0x71, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, - 0x72, 0x64, 0x12, 0x48, 0x0a, 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, - 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x22, 0x61, 0x0a, 0x15, - 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x43, 0x61, 0x72, 0x64, 0x12, 0x48, 0x0a, 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x45, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x11, 0x6d, 0x45, - 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x22, - 0x7e, 0x0a, 0x12, 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x43, 0x61, 0x72, 0x64, 0x12, 0x48, 0x0a, 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x45, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x11, 0x6d, 0x45, - 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x12, - 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, - 0x66, 0x0a, 0x18, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, - 0x6f, 0x6c, 0x64, 0x43, 0x61, 0x72, 0x64, 0x53, 0x77, 0x61, 0x70, 0x12, 0x4a, 0x0a, 0x12, 0x6d, + 0x43, 0x6f, 0x64, 0x65, 0x22, 0x5d, 0x0a, 0x11, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x52, 0x65, + 0x63, 0x65, 0x69, 0x70, 0x74, 0x43, 0x61, 0x72, 0x64, 0x12, 0x48, 0x0a, 0x11, 0x6d, 0x45, 0x78, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, + 0x52, 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, + 0x74, 0x65, 0x6d, 0x22, 0x63, 0x0a, 0x17, 0x52, 0x65, 0x71, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, + 0x74, 0x65, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x12, 0x48, + 0x0a, 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, + 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x75, 0x74, 0x6f, + 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, + 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x22, 0x83, 0x01, 0x0a, 0x17, 0x52, 0x65, 0x73, + 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x43, 0x61, 0x72, 0x64, 0x12, 0x48, 0x0a, 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x11, 0x6d, 0x45, 0x78, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1e, + 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x66, + 0x0a, 0x1a, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, + 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x12, 0x48, 0x0a, 0x11, + 0x6d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, + 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, - 0x74, 0x65, 0x6d, 0x52, 0x12, 0x6d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, - 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x60, 0x0a, 0x14, 0x4e, 0x6f, 0x74, 0x69, 0x66, - 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x4f, 0x75, 0x74, 0x12, + 0x74, 0x65, 0x6d, 0x52, 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, + 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x22, 0x5e, 0x0a, 0x12, 0x52, 0x65, 0x71, 0x47, 0x65, 0x74, + 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x12, 0x48, 0x0a, 0x11, + 0x6d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, + 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, + 0x61, 0x6c, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, + 0x74, 0x65, 0x6d, 0x52, 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, + 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x22, 0x61, 0x0a, 0x15, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, + 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x12, 0x48, 0x0a, 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x22, 0x82, 0x01, 0x0a, 0x0e, 0x52, 0x65, - 0x71, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x61, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, - 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, - 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x52, 0x65, 0x63, 0x65, - 0x69, 0x76, 0x65, 0x72, 0x49, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0b, 0x52, - 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x61, - 0x72, 0x64, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x43, 0x61, 0x72, 0x64, - 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x49, 0x44, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x49, 0x44, 0x22, 0x7a, - 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x61, 0x72, 0x64, - 0x12, 0x48, 0x0a, 0x11, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, - 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x75, - 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, - 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x11, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x5d, 0x0a, 0x11, 0x4e, 0x6f, - 0x74, 0x69, 0x66, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x61, 0x72, 0x64, 0x12, - 0x48, 0x0a, 0x11, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, - 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x75, 0x74, + 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x22, 0x7e, 0x0a, 0x12, 0x52, 0x65, 0x73, + 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x12, + 0x48, 0x0a, 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, + 0x49, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, - 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x11, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x62, 0x0a, 0x16, 0x52, 0x65, 0x71, - 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, - 0x61, 0x72, 0x64, 0x12, 0x48, 0x0a, 0x11, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, - 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x11, 0x45, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x82, 0x01, - 0x0a, 0x16, 0x52, 0x65, 0x73, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x43, 0x61, 0x72, 0x64, 0x12, 0x48, 0x0a, 0x11, 0x45, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x45, - 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, - 0x11, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, - 0x6d, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, - 0x64, 0x65, 0x22, 0x35, 0x0a, 0x1b, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x48, 0x61, 0x76, 0x65, - 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, - 0x71, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x75, 0x74, 0x6f, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x06, 0x41, 0x75, 0x74, 0x6f, 0x49, 0x64, 0x22, 0x65, 0x0a, 0x19, 0x4e, 0x6f, 0x74, - 0x69, 0x66, 0x79, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x43, 0x61, 0x72, 0x64, 0x12, 0x48, 0x0a, 0x11, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x66, 0x0a, 0x18, 0x4e, 0x6f, 0x74, + 0x69, 0x66, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x6f, 0x6c, 0x64, 0x43, 0x61, 0x72, + 0x64, 0x53, 0x77, 0x61, 0x70, 0x12, 0x4a, 0x0a, 0x12, 0x6d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x45, 0x78, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x11, 0x45, - 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, - 0x22, 0x60, 0x0a, 0x14, 0x52, 0x65, 0x71, 0x52, 0x65, 0x66, 0x75, 0x73, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x43, 0x61, 0x72, 0x64, 0x12, 0x48, 0x0a, 0x11, 0x45, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x45, - 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, - 0x11, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, - 0x6d, 0x73, 0x22, 0x60, 0x0a, 0x14, 0x52, 0x65, 0x73, 0x52, 0x65, 0x66, 0x75, 0x73, 0x65, 0x52, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x12, 0x6d, + 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, + 0x73, 0x22, 0x60, 0x0a, 0x14, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x4f, 0x75, 0x74, 0x12, 0x48, 0x0a, 0x11, 0x6d, 0x45, 0x78, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, + 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, + 0x52, 0x11, 0x6d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, + 0x74, 0x65, 0x6d, 0x22, 0x82, 0x01, 0x0a, 0x0e, 0x52, 0x65, 0x71, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x43, 0x61, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, + 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, + 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x49, 0x64, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0b, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, + 0x72, 0x49, 0x64, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, + 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, + 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x49, 0x44, 0x22, 0x7a, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x61, 0x72, 0x64, 0x12, 0x48, 0x0a, 0x11, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, - 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, - 0x6d, 0x52, 0x11, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, - 0x74, 0x65, 0x6d, 0x73, 0x22, 0x8f, 0x01, 0x0a, 0x17, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x52, - 0x65, 0x66, 0x75, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x61, 0x72, 0x64, - 0x12, 0x48, 0x0a, 0x11, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, - 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x75, - 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, - 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x11, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x52, 0x65, - 0x6e, 0x65, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x5d, 0x0a, 0x11, 0x52, 0x65, 0x71, 0x47, 0x65, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x61, 0x72, 0x64, 0x12, 0x48, 0x0a, 0x11, 0x45, - 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, - 0x6c, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, - 0x65, 0x6d, 0x52, 0x11, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, - 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x7d, 0x0a, 0x11, 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x61, 0x72, 0x64, 0x12, 0x48, 0x0a, 0x11, 0x45, 0x78, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x11, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x43, 0x6f, 0x64, 0x65, 0x22, 0x54, 0x0a, 0x16, 0x52, 0x65, 0x71, 0x42, 0x69, 0x6e, 0x64, 0x46, + 0x43, 0x6f, 0x64, 0x65, 0x22, 0x5d, 0x0a, 0x11, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x61, 0x72, 0x64, 0x12, 0x48, 0x0a, 0x11, 0x45, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, + 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, + 0x52, 0x11, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, + 0x65, 0x6d, 0x73, 0x22, 0x62, 0x0a, 0x16, 0x52, 0x65, 0x71, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, + 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x61, 0x72, 0x64, 0x12, 0x48, 0x0a, + 0x11, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, + 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, + 0x69, 0x61, 0x6c, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, + 0x49, 0x74, 0x65, 0x6d, 0x52, 0x11, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, + 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x82, 0x01, 0x0a, 0x16, 0x52, 0x65, 0x73, 0x43, + 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x61, + 0x72, 0x64, 0x12, 0x48, 0x0a, 0x11, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, + 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x11, 0x45, 0x78, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x1e, 0x0a, 0x0a, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x35, 0x0a, 0x1b, + 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x48, 0x61, 0x76, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, + 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x41, + 0x75, 0x74, 0x6f, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x75, 0x74, + 0x6f, 0x49, 0x64, 0x22, 0x65, 0x0a, 0x19, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x6d, + 0x70, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x61, 0x72, 0x64, + 0x12, 0x48, 0x0a, 0x11, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, + 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x75, + 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, + 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x11, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x60, 0x0a, 0x14, 0x52, 0x65, + 0x71, 0x52, 0x65, 0x66, 0x75, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x61, + 0x72, 0x64, 0x12, 0x48, 0x0a, 0x11, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, + 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x11, 0x45, 0x78, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x60, 0x0a, 0x14, + 0x52, 0x65, 0x73, 0x52, 0x65, 0x66, 0x75, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x43, 0x61, 0x72, 0x64, 0x12, 0x48, 0x0a, 0x11, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x11, 0x45, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x8f, + 0x01, 0x0a, 0x17, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x52, 0x65, 0x66, 0x75, 0x73, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x61, 0x72, 0x64, 0x12, 0x48, 0x0a, 0x11, 0x45, 0x78, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, + 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, + 0x6d, 0x52, 0x11, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, + 0x74, 0x65, 0x6d, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, + 0x52, 0x65, 0x6e, 0x65, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, + 0x22, 0x5d, 0x0a, 0x11, 0x52, 0x65, 0x71, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x43, 0x61, 0x72, 0x64, 0x12, 0x48, 0x0a, 0x11, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x45, 0x78, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x11, 0x45, 0x78, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22, + 0x7d, 0x0a, 0x11, 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x43, 0x61, 0x72, 0x64, 0x12, 0x48, 0x0a, 0x11, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x11, 0x45, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x1e, + 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x54, + 0x0a, 0x16, 0x52, 0x65, 0x71, 0x42, 0x69, 0x6e, 0x64, 0x46, 0x61, 0x63, 0x65, 0x62, 0x6f, 0x6f, + 0x6b, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x12, 0x24, + 0x0a, 0x0d, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x49, 0x64, 0x22, 0x74, 0x0a, 0x16, 0x52, 0x65, 0x73, 0x42, 0x69, 0x6e, 0x64, 0x46, 0x61, 0x63, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x42, 0x69, 0x6e, - 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x74, 0x0a, 0x16, 0x52, 0x65, - 0x73, 0x42, 0x69, 0x6e, 0x64, 0x46, 0x61, 0x63, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x41, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, + 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x51, 0x0a, 0x13, 0x52, 0x65, + 0x71, 0x4f, 0x6e, 0x6c, 0x79, 0x42, 0x69, 0x6e, 0x64, 0x46, 0x61, 0x63, 0x65, 0x62, 0x6f, 0x6f, + 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x42, 0x69, 0x6e, 0x64, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, + 0x42, 0x69, 0x6e, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x71, 0x0a, + 0x13, 0x52, 0x65, 0x73, 0x4f, 0x6e, 0x6c, 0x79, 0x42, 0x69, 0x6e, 0x64, 0x46, 0x61, 0x63, 0x65, + 0x62, 0x6f, 0x6f, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, - 0x22, 0x51, 0x0a, 0x13, 0x52, 0x65, 0x71, 0x4f, 0x6e, 0x6c, 0x79, 0x42, 0x69, 0x6e, 0x64, 0x46, - 0x61, 0x63, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x12, 0x24, 0x0a, - 0x0d, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x49, 0x64, 0x22, 0x71, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x4f, 0x6e, 0x6c, 0x79, 0x42, 0x69, - 0x6e, 0x64, 0x46, 0x61, 0x63, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, - 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, - 0x12, 0x24, 0x0a, 0x0d, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x43, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x52, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x4f, 0x0a, 0x11, 0x52, 0x65, 0x71, 0x55, 0x6e, 0x42, - 0x69, 0x6e, 0x64, 0x46, 0x61, 0x63, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x64, + 0x22, 0x4f, 0x0a, 0x11, 0x52, 0x65, 0x71, 0x55, 0x6e, 0x42, 0x69, 0x6e, 0x64, 0x46, 0x61, 0x63, + 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x42, + 0x69, 0x6e, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0d, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, + 0x64, 0x22, 0x59, 0x0a, 0x11, 0x52, 0x65, 0x73, 0x55, 0x6e, 0x42, 0x69, 0x6e, 0x64, 0x46, 0x61, + 0x63, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x42, + 0x69, 0x6e, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x40, 0x0a, 0x0e, + 0x52, 0x65, 0x71, 0x53, 0x79, 0x6e, 0x47, 0x61, 0x6d, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, + 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, + 0x77, 0x55, 0x69, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x4e, 0x65, 0x77, 0x46, 0x42, 0x49, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x4e, 0x65, 0x77, 0x46, 0x42, 0x49, 0x64, 0x22, 0x46, + 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x53, 0x79, 0x6e, 0x47, 0x61, 0x6d, 0x65, 0x44, 0x61, 0x74, 0x61, + 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x2a, 0x0a, 0x12, 0x52, 0x65, 0x71, 0x46, 0x72, 0x69, + 0x65, 0x6e, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, + 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, 0x77, 0x55, + 0x69, 0x6e, 0x22, 0xc7, 0x01, 0x0a, 0x0f, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x26, 0x0a, 0x0e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x53, + 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1c, + 0x0a, 0x09, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x09, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x36, 0x0a, 0x0b, + 0x4d, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x46, 0x72, 0x69, + 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x4d, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x75, 0x74, 0x6f, 0x49, 0x64, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x75, 0x74, 0x6f, 0x49, 0x64, 0x22, 0x5b, 0x0a, 0x12, + 0x52, 0x65, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x44, 0x61, + 0x74, 0x61, 0x12, 0x45, 0x0a, 0x10, 0x4d, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, + 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x10, 0x4d, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x22, 0x63, 0x0a, 0x14, 0x4e, 0x6f, 0x74, + 0x69, 0x66, 0x79, 0x4e, 0x65, 0x77, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x12, 0x35, 0x0a, 0x08, 0x4e, 0x65, 0x77, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x75, 0x74, 0x6f, + 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x08, 0x4e, 0x65, 0x77, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x49, + 0x0a, 0x19, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, - 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x59, 0x0a, 0x11, 0x52, 0x65, 0x73, 0x55, 0x6e, - 0x42, 0x69, 0x6e, 0x64, 0x46, 0x61, 0x63, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x12, 0x1e, 0x0a, 0x0a, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x24, 0x0a, 0x0d, - 0x42, 0x69, 0x6e, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0d, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x49, 0x64, 0x22, 0x40, 0x0a, 0x0e, 0x52, 0x65, 0x71, 0x53, 0x79, 0x6e, 0x47, 0x61, 0x6d, 0x65, - 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x4e, 0x65, - 0x77, 0x46, 0x42, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x4e, 0x65, 0x77, - 0x46, 0x42, 0x49, 0x64, 0x22, 0x46, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x53, 0x79, 0x6e, 0x47, 0x61, - 0x6d, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, + 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x75, 0x74, 0x6f, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x06, 0x41, 0x75, 0x74, 0x6f, 0x49, 0x64, 0x22, 0x55, 0x0a, 0x13, 0x52, 0x65, 0x71, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x22, 0x75, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x65, 0x74, + 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x12, 0x12, 0x0a, + 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x28, 0x0a, 0x10, 0x52, 0x65, 0x71, 0x50, 0x6c, + 0x61, 0x79, 0x65, 0x72, 0x50, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x64, + 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, + 0x6e, 0x22, 0xca, 0x01, 0x0a, 0x10, 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, + 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x2a, 0x0a, 0x12, - 0x52, 0x65, 0x71, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x44, 0x61, - 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x22, 0xc7, 0x01, 0x0a, 0x0f, 0x46, 0x72, 0x69, - 0x65, 0x6e, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x26, 0x0a, 0x0e, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, - 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x72, - 0x61, 0x6d, 0x12, 0x36, 0x0a, 0x0b, 0x4d, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x66, - 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, - 0x61, 0x6c, 0x2e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x4d, - 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x75, - 0x74, 0x6f, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x75, 0x74, 0x6f, - 0x49, 0x64, 0x22, 0x5b, 0x0a, 0x12, 0x52, 0x65, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x45, 0x0a, 0x10, 0x4d, 0x46, 0x72, 0x69, - 0x65, 0x6e, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x46, 0x72, - 0x69, 0x65, 0x6e, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x10, 0x4d, - 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x22, - 0x63, 0x0a, 0x14, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x4e, 0x65, 0x77, 0x46, 0x72, 0x69, 0x65, - 0x6e, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x12, 0x35, 0x0a, - 0x08, 0x4e, 0x65, 0x77, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x46, 0x72, 0x69, 0x65, 0x6e, - 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x08, 0x4e, 0x65, 0x77, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x22, 0x49, 0x0a, 0x19, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x46, 0x72, - 0x69, 0x65, 0x6e, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, - 0x65, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x75, 0x74, 0x6f, 0x49, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x75, 0x74, 0x6f, 0x49, 0x64, 0x22, - 0x55, 0x0a, 0x13, 0x52, 0x65, 0x71, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x65, 0x74, 0x50, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x12, 0x12, 0x0a, 0x04, - 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x14, 0x0a, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x22, 0x75, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x50, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x14, 0x0a, + 0x49, 0x6d, 0x61, 0x67, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0a, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, + 0x49, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x63, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x09, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x63, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x50, 0x65, + 0x74, 0x4e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x50, 0x65, 0x74, 0x4e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, + 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x1e, + 0x0a, 0x0a, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x63, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x63, 0x6f, 0x6e, 0x22, 0xba, + 0x01, 0x0a, 0x11, 0x50, 0x65, 0x74, 0x48, 0x6f, 0x6d, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x41, + 0x63, 0x74, 0x53, 0x54, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x61, + 0x72, 0x67, 0x65, 0x74, 0x55, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x54, + 0x61, 0x72, 0x67, 0x65, 0x74, 0x55, 0x69, 0x6e, 0x12, 0x28, 0x0a, 0x0f, 0x49, 0x6e, 0x74, 0x65, + 0x72, 0x41, 0x63, 0x74, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0f, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x45, 0x6e, 0x64, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x47, 0x0a, 0x0c, 0x42, 0x72, 0x69, 0x65, 0x66, 0x50, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, + 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x42, 0x72, 0x69, + 0x65, 0x66, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0c, 0x42, + 0x72, 0x69, 0x65, 0x66, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x22, 0x26, 0x0a, 0x0e, 0x52, + 0x65, 0x71, 0x50, 0x65, 0x74, 0x48, 0x6f, 0x6d, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, 0x77, - 0x55, 0x69, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x1e, 0x0a, - 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x28, 0x0a, - 0x10, 0x52, 0x65, 0x71, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x65, 0x74, 0x44, 0x61, 0x74, - 0x61, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x22, 0xca, 0x01, 0x0a, 0x10, 0x52, 0x65, 0x73, 0x50, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, - 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, 0x77, 0x55, - 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x46, 0x72, 0x61, - 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x63, 0x6f, 0x6e, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x63, 0x6f, 0x6e, - 0x12, 0x20, 0x0a, 0x0b, 0x50, 0x65, 0x74, 0x4e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x50, 0x65, 0x74, 0x4e, 0x69, 0x63, 0x6b, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x46, 0x72, 0x61, 0x6d, - 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x46, - 0x72, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x63, - 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, - 0x49, 0x63, 0x6f, 0x6e, 0x22, 0xba, 0x01, 0x0a, 0x11, 0x50, 0x65, 0x74, 0x48, 0x6f, 0x6d, 0x65, - 0x49, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x53, 0x54, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, - 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, - 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x55, 0x69, 0x6e, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x09, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x55, 0x69, 0x6e, 0x12, 0x28, - 0x0a, 0x0f, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x63, - 0x74, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x47, 0x0a, 0x0c, 0x42, 0x72, 0x69, 0x65, - 0x66, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, - 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x42, 0x72, 0x69, 0x65, 0x66, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x44, - 0x61, 0x74, 0x61, 0x52, 0x0c, 0x42, 0x72, 0x69, 0x65, 0x66, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, - 0x65, 0x22, 0x26, 0x0a, 0x0e, 0x52, 0x65, 0x71, 0x50, 0x65, 0x74, 0x48, 0x6f, 0x6d, 0x65, 0x44, - 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x22, 0xa7, 0x05, 0x0a, 0x0e, 0x52, 0x65, - 0x73, 0x50, 0x65, 0x74, 0x48, 0x6f, 0x6d, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, - 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, 0x77, 0x55, - 0x69, 0x6e, 0x12, 0x28, 0x0a, 0x0f, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x45, 0x6e, - 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x49, 0x6e, 0x74, - 0x65, 0x72, 0x41, 0x63, 0x74, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, - 0x4e, 0x65, 0x73, 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4e, 0x65, - 0x73, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x6e, 0x74, - 0x73, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x4f, 0x72, 0x6e, 0x61, 0x6d, - 0x65, 0x6e, 0x74, 0x73, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x43, 0x75, 0x72, 0x49, 0x6e, 0x74, - 0x65, 0x72, 0x41, 0x63, 0x74, 0x55, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, - 0x43, 0x75, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x55, 0x69, 0x6e, 0x12, 0x26, - 0x0a, 0x0e, 0x4d, 0x69, 0x6e, 0x69, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x4d, 0x69, 0x6e, 0x69, 0x47, 0x61, 0x6d, 0x65, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x65, 0x6c, 0x66, 0x57, 0x6f, - 0x72, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x53, 0x65, - 0x6c, 0x66, 0x57, 0x6f, 0x72, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x4f, 0x74, - 0x68, 0x65, 0x72, 0x57, 0x6f, 0x72, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0d, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x57, 0x6f, 0x72, 0x6b, 0x54, 0x69, 0x6d, 0x65, - 0x12, 0x24, 0x0a, 0x0d, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x50, 0x65, 0x74, 0x4e, 0x65, 0x73, - 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x50, - 0x65, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, - 0x50, 0x65, 0x74, 0x4f, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x12, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x50, 0x65, 0x74, 0x4f, 0x72, 0x6e, - 0x61, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, - 0x50, 0x65, 0x74, 0x45, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x10, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x50, 0x65, 0x74, 0x45, 0x6d, 0x6f, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x74, 0x48, 0x6f, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x06, 0x41, 0x74, 0x48, 0x6f, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x12, 0x55, 0x6e, - 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, - 0x18, 0x0d, 0x20, 0x03, 0x28, 0x05, 0x52, 0x12, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x65, - 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x5d, 0x0a, 0x11, 0x53, 0x65, - 0x6c, 0x65, 0x63, 0x74, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x70, 0x18, - 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, - 0x2e, 0x52, 0x65, 0x73, 0x50, 0x65, 0x74, 0x48, 0x6f, 0x6d, 0x65, 0x44, 0x61, 0x74, 0x61, 0x2e, - 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x4d, 0x61, - 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x44, 0x65, - 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x4d, 0x6f, 0x6f, - 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x4d, 0x6f, 0x6f, 0x64, 0x1a, 0x44, 0x0a, - 0x16, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x4d, - 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x22, 0x33, 0x0a, 0x11, 0x52, 0x65, 0x71, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, - 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x44, 0x65, 0x63, 0x6f, - 0x72, 0x61, 0x74, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x44, 0x65, - 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x49, 0x64, 0x22, 0x33, 0x0a, 0x11, 0x52, 0x65, 0x73, 0x55, - 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, - 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0xc3, 0x01, - 0x0a, 0x15, 0x52, 0x65, 0x71, 0x53, 0x61, 0x76, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x44, - 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x12, 0x64, 0x0a, 0x11, 0x53, 0x65, 0x6c, 0x65, 0x63, - 0x74, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, + 0x55, 0x69, 0x6e, 0x22, 0xa7, 0x05, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x50, 0x65, 0x74, 0x48, 0x6f, + 0x6d, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x12, 0x28, 0x0a, 0x0f, + 0x49, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x45, + 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x4e, 0x65, 0x73, 0x74, 0x49, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4e, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x20, + 0x0a, 0x0b, 0x4f, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x49, 0x64, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0b, 0x4f, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x49, 0x64, + 0x12, 0x26, 0x0a, 0x0e, 0x43, 0x75, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x55, + 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x43, 0x75, 0x72, 0x49, 0x6e, 0x74, + 0x65, 0x72, 0x41, 0x63, 0x74, 0x55, 0x69, 0x6e, 0x12, 0x26, 0x0a, 0x0e, 0x4d, 0x69, 0x6e, 0x69, + 0x47, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0e, 0x4d, 0x69, 0x6e, 0x69, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x65, 0x6c, 0x66, 0x57, 0x6f, 0x72, 0x6b, 0x54, 0x69, 0x6d, 0x65, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x53, 0x65, 0x6c, 0x66, 0x57, 0x6f, 0x72, 0x6b, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x57, 0x6f, 0x72, + 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x4f, 0x74, 0x68, + 0x65, 0x72, 0x57, 0x6f, 0x72, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x55, 0x6e, + 0x6c, 0x6f, 0x63, 0x6b, 0x50, 0x65, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x50, 0x65, 0x74, 0x4e, 0x65, 0x73, 0x74, + 0x12, 0x2e, 0x0a, 0x12, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x50, 0x65, 0x74, 0x4f, 0x72, 0x6e, + 0x61, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x55, 0x6e, + 0x6c, 0x6f, 0x63, 0x6b, 0x50, 0x65, 0x74, 0x4f, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x6e, 0x74, 0x73, + 0x12, 0x2a, 0x0a, 0x10, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x50, 0x65, 0x74, 0x45, 0x6d, 0x6f, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x55, 0x6e, 0x6c, 0x6f, + 0x63, 0x6b, 0x50, 0x65, 0x74, 0x45, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, + 0x41, 0x74, 0x48, 0x6f, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x74, + 0x48, 0x6f, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x12, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x65, + 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x05, + 0x52, 0x12, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, + 0x4c, 0x69, 0x73, 0x74, 0x12, 0x5d, 0x0a, 0x11, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x44, 0x65, + 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x70, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x2f, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x50, 0x65, + 0x74, 0x48, 0x6f, 0x6d, 0x65, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, + 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x11, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, + 0x4d, 0x61, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x4d, 0x6f, 0x6f, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x04, 0x4d, 0x6f, 0x6f, 0x64, 0x1a, 0x44, 0x0a, 0x16, 0x53, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x33, 0x0a, + 0x11, 0x52, 0x65, 0x71, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, + 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, + 0x49, 0x64, 0x22, 0x33, 0x0a, 0x11, 0x52, 0x65, 0x73, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x44, + 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0xc3, 0x01, 0x0a, 0x15, 0x52, 0x65, 0x71, 0x53, + 0x61, 0x76, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, + 0x65, 0x12, 0x64, 0x0a, 0x11, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x44, 0x65, 0x63, 0x6f, 0x72, + 0x61, 0x74, 0x65, 0x4d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x74, + 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x71, 0x53, 0x61, 0x76, 0x65, 0x53, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x70, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x44, 0x65, 0x63, 0x6f, + 0x72, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x70, 0x1a, 0x44, 0x0a, 0x16, 0x53, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xe3, 0x01, + 0x0a, 0x15, 0x52, 0x65, 0x73, 0x53, 0x61, 0x76, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x44, + 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x64, 0x0a, 0x11, 0x53, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x70, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, - 0x71, 0x53, 0x61, 0x76, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x44, 0x65, 0x63, 0x6f, 0x72, + 0x73, 0x53, 0x61, 0x76, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x70, 0x1a, 0x44, 0x0a, @@ -34231,31 +34334,87 @@ var file_Gameapi_proto_rawDesc = []byte{ 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x22, 0xe3, 0x01, 0x0a, 0x15, 0x52, 0x65, 0x73, 0x53, 0x61, 0x76, 0x65, 0x53, - 0x65, 0x6c, 0x65, 0x63, 0x74, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, - 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x64, 0x0a, + 0x02, 0x38, 0x01, 0x22, 0x29, 0x0a, 0x0f, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x50, 0x65, 0x74, + 0x47, 0x6f, 0x48, 0x6f, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x74, 0x48, 0x6f, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x74, 0x48, 0x6f, 0x6d, 0x65, 0x22, 0x28, + 0x0a, 0x0e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x50, 0x65, 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, + 0x12, 0x16, 0x0a, 0x06, 0x41, 0x74, 0x48, 0x6f, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x06, 0x41, 0x74, 0x48, 0x6f, 0x6d, 0x65, 0x22, 0x2b, 0x0a, 0x13, 0x52, 0x65, 0x71, 0x4f, + 0x70, 0x65, 0x6e, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x50, 0x65, 0x74, 0x48, 0x6f, 0x6d, 0x65, 0x12, + 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, + 0x64, 0x77, 0x55, 0x69, 0x6e, 0x22, 0xa4, 0x03, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x4f, 0x70, 0x65, + 0x6e, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x50, 0x65, 0x74, 0x48, 0x6f, 0x6d, 0x65, 0x12, 0x1c, 0x0a, + 0x09, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x09, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x55, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x4e, + 0x65, 0x73, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4e, 0x65, 0x73, + 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x6e, 0x74, 0x73, + 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x4f, 0x72, 0x6e, 0x61, 0x6d, 0x65, + 0x6e, 0x74, 0x73, 0x49, 0x64, 0x12, 0x47, 0x0a, 0x0c, 0x42, 0x72, 0x69, 0x65, 0x66, 0x50, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x75, + 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x42, 0x72, 0x69, 0x65, 0x66, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, + 0x52, 0x0c, 0x42, 0x72, 0x69, 0x65, 0x66, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x2e, + 0x0a, 0x12, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, + 0x4c, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x12, 0x55, 0x6e, 0x6c, 0x6f, + 0x63, 0x6b, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x62, + 0x0a, 0x11, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, + 0x4d, 0x61, 0x70, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x74, 0x75, 0x74, 0x6f, + 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x4f, 0x70, 0x65, 0x6e, 0x4f, 0x74, 0x68, 0x65, + 0x72, 0x50, 0x65, 0x74, 0x48, 0x6f, 0x6d, 0x65, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x44, + 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x4d, - 0x61, 0x70, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, - 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x53, 0x61, 0x76, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, - 0x74, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, + 0x61, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x4d, 0x6f, 0x6f, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x04, 0x4d, 0x6f, 0x6f, 0x64, 0x1a, 0x44, 0x0a, 0x16, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x11, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, - 0x4d, 0x61, 0x70, 0x1a, 0x44, 0x0a, 0x16, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x44, 0x65, 0x63, - 0x6f, 0x72, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x29, 0x0a, 0x0f, 0x4e, 0x6f, 0x74, - 0x69, 0x66, 0x79, 0x50, 0x65, 0x74, 0x47, 0x6f, 0x48, 0x6f, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, - 0x41, 0x74, 0x48, 0x6f, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x74, - 0x48, 0x6f, 0x6d, 0x65, 0x22, 0x28, 0x0a, 0x0e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x50, 0x65, - 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x74, 0x48, 0x6f, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x74, 0x48, 0x6f, 0x6d, 0x65, 0x22, 0x2b, - 0x0a, 0x13, 0x52, 0x65, 0x71, 0x4f, 0x70, 0x65, 0x6e, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x50, 0x65, - 0x74, 0x48, 0x6f, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x22, 0xa4, 0x03, 0x0a, 0x13, - 0x52, 0x65, 0x73, 0x4f, 0x70, 0x65, 0x6e, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x50, 0x65, 0x74, 0x48, - 0x6f, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x55, 0x69, 0x6e, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x7b, 0x0a, 0x13, + 0x52, 0x65, 0x71, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x69, 0x6e, 0x69, 0x47, + 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x61, 0x72, + 0x67, 0x65, 0x74, 0x55, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x54, 0x61, + 0x72, 0x67, 0x65, 0x74, 0x55, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, + 0x18, 0x0a, 0x07, 0x49, 0x73, 0x54, 0x68, 0x69, 0x65, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x07, 0x49, 0x73, 0x54, 0x68, 0x69, 0x65, 0x66, 0x22, 0xdd, 0x01, 0x0a, 0x13, 0x52, 0x65, + 0x73, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x69, 0x6e, 0x69, 0x47, 0x61, 0x6d, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x61, 0x72, 0x67, 0x65, + 0x74, 0x55, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x54, 0x61, 0x72, 0x67, + 0x65, 0x74, 0x55, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x4e, 0x65, 0x73, 0x74, 0x49, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4e, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, + 0x0b, 0x4f, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0b, 0x4f, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x49, 0x64, 0x12, + 0x28, 0x0a, 0x0f, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x45, 0x6e, 0x64, 0x54, 0x69, + 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x41, + 0x63, 0x74, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, 0x22, 0x26, 0x0a, 0x0e, 0x52, 0x65, 0x71, + 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x65, 0x6c, 0x66, 0x50, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x64, + 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, + 0x6e, 0x22, 0x4a, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x65, 0x6c, 0x66, + 0x50, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x65, 0x6c, + 0x66, 0x57, 0x6f, 0x72, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0c, 0x53, 0x65, 0x6c, 0x66, 0x57, 0x6f, 0x72, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x28, 0x0a, + 0x10, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x50, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x45, 0x6e, + 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x05, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x22, 0x2c, 0x0a, 0x14, 0x52, 0x65, 0x71, 0x50, 0x65, + 0x74, 0x48, 0x6f, 0x6d, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x53, 0x54, 0x12, + 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, + 0x64, 0x77, 0x55, 0x69, 0x6e, 0x22, 0x65, 0x0a, 0x14, 0x52, 0x65, 0x73, 0x50, 0x65, 0x74, 0x48, + 0x6f, 0x6d, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x53, 0x54, 0x12, 0x4d, 0x0a, + 0x13, 0x6d, 0x50, 0x65, 0x74, 0x48, 0x6f, 0x6d, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x63, + 0x74, 0x53, 0x54, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x75, 0x74, + 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x50, 0x65, 0x74, 0x48, 0x6f, 0x6d, 0x65, 0x49, 0x6e, 0x74, + 0x65, 0x72, 0x41, 0x63, 0x74, 0x53, 0x54, 0x52, 0x13, 0x6d, 0x50, 0x65, 0x74, 0x48, 0x6f, 0x6d, + 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x53, 0x54, 0x73, 0x22, 0x30, 0x0a, 0x10, + 0x52, 0x65, 0x71, 0x53, 0x68, 0x69, 0x66, 0x74, 0x56, 0x69, 0x73, 0x69, 0x74, 0x50, 0x65, 0x74, + 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x09, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x55, 0x69, 0x6e, 0x22, 0x9e, + 0x03, 0x0a, 0x10, 0x52, 0x65, 0x73, 0x53, 0x68, 0x69, 0x66, 0x74, 0x56, 0x69, 0x73, 0x69, 0x74, + 0x50, 0x65, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x55, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x4e, 0x65, 0x73, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4e, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x72, 0x6e, @@ -34268,1037 +34427,1008 @@ var file_Gameapi_proto_rawDesc = []byte{ 0x66, 0x69, 0x6c, 0x65, 0x12, 0x2e, 0x0a, 0x12, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x12, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, - 0x4c, 0x69, 0x73, 0x74, 0x12, 0x62, 0x0a, 0x11, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x44, 0x65, + 0x4c, 0x69, 0x73, 0x74, 0x12, 0x5f, 0x0a, 0x11, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x70, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x34, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x4f, 0x70, - 0x65, 0x6e, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x50, 0x65, 0x74, 0x48, 0x6f, 0x6d, 0x65, 0x2e, 0x53, - 0x65, 0x6c, 0x65, 0x63, 0x74, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x70, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x44, 0x65, 0x63, - 0x6f, 0x72, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x4d, 0x6f, 0x6f, 0x64, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x4d, 0x6f, 0x6f, 0x64, 0x1a, 0x44, 0x0a, 0x16, - 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x4d, 0x61, - 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x22, 0x7b, 0x0a, 0x13, 0x52, 0x65, 0x71, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, - 0x65, 0x4d, 0x69, 0x6e, 0x69, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, - 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x12, - 0x1c, 0x0a, 0x09, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x55, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x09, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x55, 0x69, 0x6e, 0x12, 0x16, 0x0a, - 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x73, 0x54, 0x68, 0x69, 0x65, 0x66, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x49, 0x73, 0x54, 0x68, 0x69, 0x65, 0x66, 0x22, - 0xdd, 0x01, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x4d, - 0x69, 0x6e, 0x69, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x12, 0x1c, 0x0a, - 0x09, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x55, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x09, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x55, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x4e, - 0x65, 0x73, 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4e, 0x65, 0x73, - 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x6e, 0x74, 0x73, - 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x4f, 0x72, 0x6e, 0x61, 0x6d, 0x65, - 0x6e, 0x74, 0x73, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x63, - 0x74, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, - 0x49, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, - 0x16, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, - 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, 0x22, - 0x26, 0x0a, 0x0e, 0x52, 0x65, 0x71, 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x65, 0x6c, 0x66, 0x50, 0x65, + 0x31, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x53, 0x68, + 0x69, 0x66, 0x74, 0x56, 0x69, 0x73, 0x69, 0x74, 0x50, 0x65, 0x74, 0x2e, 0x53, 0x65, 0x6c, 0x65, + 0x63, 0x74, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x11, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, + 0x74, 0x65, 0x4d, 0x61, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x4d, 0x6f, 0x6f, 0x64, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x04, 0x4d, 0x6f, 0x6f, 0x64, 0x1a, 0x44, 0x0a, 0x16, 0x53, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x70, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, + 0x26, 0x0a, 0x0e, 0x52, 0x65, 0x71, 0x43, 0x61, 0x6c, 0x6c, 0x42, 0x61, 0x63, 0x6b, 0x50, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x22, 0x4a, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x4f, 0x70, - 0x65, 0x6e, 0x53, 0x65, 0x6c, 0x66, 0x50, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, - 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x12, - 0x22, 0x0a, 0x0c, 0x53, 0x65, 0x6c, 0x66, 0x57, 0x6f, 0x72, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x53, 0x65, 0x6c, 0x66, 0x57, 0x6f, 0x72, 0x6b, 0x54, - 0x69, 0x6d, 0x65, 0x22, 0x28, 0x0a, 0x10, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x50, 0x65, 0x74, - 0x57, 0x6f, 0x72, 0x6b, 0x45, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x54, 0x79, 0x70, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x22, 0x2c, 0x0a, - 0x14, 0x52, 0x65, 0x71, 0x50, 0x65, 0x74, 0x48, 0x6f, 0x6d, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, - 0x41, 0x63, 0x74, 0x53, 0x54, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x22, 0x65, 0x0a, 0x14, 0x52, - 0x65, 0x73, 0x50, 0x65, 0x74, 0x48, 0x6f, 0x6d, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x63, - 0x74, 0x53, 0x54, 0x12, 0x4d, 0x0a, 0x13, 0x6d, 0x50, 0x65, 0x74, 0x48, 0x6f, 0x6d, 0x65, 0x49, - 0x6e, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x53, 0x54, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1b, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x50, 0x65, 0x74, 0x48, - 0x6f, 0x6d, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x53, 0x54, 0x52, 0x13, 0x6d, - 0x50, 0x65, 0x74, 0x48, 0x6f, 0x6d, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x53, - 0x54, 0x73, 0x22, 0x30, 0x0a, 0x10, 0x52, 0x65, 0x71, 0x53, 0x68, 0x69, 0x66, 0x74, 0x56, 0x69, - 0x73, 0x69, 0x74, 0x50, 0x65, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, - 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x54, 0x61, 0x72, 0x67, 0x65, - 0x74, 0x55, 0x69, 0x6e, 0x22, 0x9e, 0x03, 0x0a, 0x10, 0x52, 0x65, 0x73, 0x53, 0x68, 0x69, 0x66, - 0x74, 0x56, 0x69, 0x73, 0x69, 0x74, 0x50, 0x65, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x61, 0x72, - 0x67, 0x65, 0x74, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x54, 0x61, - 0x72, 0x67, 0x65, 0x74, 0x55, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x4e, 0x65, 0x73, 0x74, 0x49, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4e, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, - 0x20, 0x0a, 0x0b, 0x4f, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x49, 0x64, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x4f, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x49, - 0x64, 0x12, 0x47, 0x0a, 0x0c, 0x42, 0x72, 0x69, 0x65, 0x66, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, - 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x42, 0x72, 0x69, 0x65, - 0x66, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0c, 0x42, 0x72, - 0x69, 0x65, 0x66, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x2e, 0x0a, 0x12, 0x55, 0x6e, - 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, - 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x12, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x65, - 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x5f, 0x0a, 0x11, 0x53, 0x65, - 0x6c, 0x65, 0x63, 0x74, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x70, 0x18, - 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, - 0x2e, 0x52, 0x65, 0x73, 0x53, 0x68, 0x69, 0x66, 0x74, 0x56, 0x69, 0x73, 0x69, 0x74, 0x50, 0x65, - 0x74, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, - 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x4d, - 0x6f, 0x6f, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x4d, 0x6f, 0x6f, 0x64, 0x1a, - 0x44, 0x0a, 0x16, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, - 0x65, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x22, 0x30, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x43, 0x61, + 0x6c, 0x6c, 0x42, 0x61, 0x63, 0x6b, 0x50, 0x65, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x1b, 0x0a, 0x07, 0x49, 0x6e, 0x74, + 0x50, 0x61, 0x63, 0x6b, 0x12, 0x10, 0x0a, 0x03, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x22, 0x32, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, + 0x0a, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x22, 0x88, 0x02, 0x0a, 0x0e, 0x55, + 0x73, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, + 0x06, 0x69, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x69, + 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, + 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, + 0x79, 0x12, 0x24, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x0e, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x49, 0x74, 0x65, 0x6d, + 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x27, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, + 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, + 0x6c, 0x2e, 0x49, 0x6e, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, + 0x12, 0x39, 0x0a, 0x05, 0x61, 0x74, 0x74, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x23, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x55, 0x73, 0x65, 0x49, 0x74, + 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x61, 0x74, 0x74, 0x72, 0x73, 0x1a, 0x38, 0x0a, 0x0a, 0x41, + 0x74, 0x74, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x26, 0x0a, 0x0e, 0x52, 0x65, 0x71, 0x43, 0x61, 0x6c, 0x6c, - 0x42, 0x61, 0x63, 0x6b, 0x50, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x22, 0x30, 0x0a, - 0x0e, 0x52, 0x65, 0x73, 0x43, 0x61, 0x6c, 0x6c, 0x42, 0x61, 0x63, 0x6b, 0x50, 0x65, 0x74, 0x12, - 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, - 0x1b, 0x0a, 0x07, 0x49, 0x6e, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x12, 0x10, 0x0a, 0x03, 0x6e, 0x75, - 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x22, 0x32, 0x0a, 0x04, - 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, - 0x22, 0x88, 0x02, 0x0a, 0x0e, 0x55, 0x73, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x06, 0x69, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x71, - 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x71, - 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x24, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, - 0x6c, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x27, 0x0a, - 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x74, - 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x49, 0x6e, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x52, - 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x39, 0x0a, 0x05, 0x61, 0x74, 0x74, 0x72, 0x73, 0x18, - 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, - 0x2e, 0x55, 0x73, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, - 0x41, 0x74, 0x74, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x61, 0x74, 0x74, 0x72, - 0x73, 0x1a, 0x38, 0x0a, 0x0a, 0x41, 0x74, 0x74, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xd8, 0x03, 0x0a, 0x0f, - 0x55, 0x73, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x16, 0x0a, 0x06, 0x69, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x69, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, - 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, - 0x69, 0x74, 0x79, 0x12, 0x32, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x1e, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x55, 0x73, 0x65, - 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x4f, 0x44, - 0x45, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x24, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, - 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, - 0x6c, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x27, 0x0a, - 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x74, - 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x49, 0x6e, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x52, - 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x3a, 0x0a, 0x05, 0x61, 0x74, 0x74, 0x72, 0x73, 0x18, - 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, - 0x2e, 0x55, 0x73, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x2e, 0x41, 0x74, 0x74, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x61, 0x74, 0x74, - 0x72, 0x73, 0x1a, 0x38, 0x0a, 0x0a, 0x41, 0x74, 0x74, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x97, 0x01, 0x0a, - 0x04, 0x43, 0x4f, 0x44, 0x45, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, - 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x01, 0x12, - 0x12, 0x0a, 0x0e, 0x49, 0x54, 0x45, 0x4d, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, - 0x44, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x49, 0x54, 0x45, 0x4d, 0x5f, 0x43, 0x41, 0x4e, 0x5f, - 0x4e, 0x4f, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x44, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x54, - 0x45, 0x4d, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x45, 0x4e, 0x4f, 0x55, 0x47, 0x48, 0x10, 0x04, 0x12, - 0x19, 0x0a, 0x15, 0x49, 0x54, 0x45, 0x4d, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x4e, - 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x05, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x41, - 0x52, 0x53, 0x45, 0x5f, 0x42, 0x4f, 0x4e, 0x55, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, - 0x5f, 0x45, 0x52, 0x52, 0x10, 0x06, 0x22, 0x1b, 0x0a, 0x05, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x12, - 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, - 0x61, 0x6d, 0x65, 0x22, 0x2f, 0x0a, 0x0f, 0x52, 0x65, 0x71, 0x53, 0x65, 0x74, 0x45, 0x6e, 0x65, - 0x72, 0x67, 0x79, 0x4d, 0x75, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x45, 0x6e, 0x65, 0x72, 0x67, 0x79, - 0x4d, 0x75, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x45, 0x6e, 0x65, 0x72, 0x67, - 0x79, 0x4d, 0x75, 0x6c, 0x22, 0x57, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x53, 0x65, 0x74, 0x45, 0x6e, - 0x65, 0x72, 0x67, 0x79, 0x4d, 0x75, 0x6c, 0x12, 0x32, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, - 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, - 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, - 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x66, 0x0a, - 0x08, 0x42, 0x61, 0x73, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x45, 0x6e, 0x65, - 0x72, 0x67, 0x79, 0x4d, 0x75, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x45, 0x6e, - 0x65, 0x72, 0x67, 0x79, 0x4d, 0x75, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x49, 0x73, 0x46, 0x69, 0x72, - 0x73, 0x74, 0x42, 0x75, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x49, 0x73, 0x46, - 0x69, 0x72, 0x73, 0x74, 0x42, 0x75, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x45, 0x6e, 0x65, 0x72, 0x67, - 0x79, 0x42, 0x75, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x45, 0x6e, 0x65, 0x72, - 0x67, 0x79, 0x42, 0x75, 0x79, 0x22, 0x0d, 0x0a, 0x0b, 0x52, 0x65, 0x71, 0x55, 0x73, 0x65, 0x72, - 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x82, 0x02, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, - 0x55, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x4e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x16, 0x0a, 0x06, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x46, 0x61, 0x63, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x46, 0x61, 0x63, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x44, - 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0b, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6e, 0x74, 0x12, 0x34, 0x0a, - 0x0a, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x06, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x41, 0x76, 0x61, - 0x74, 0x61, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x4c, - 0x69, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x08, 0x46, 0x61, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x18, - 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, - 0x2e, 0x46, 0x61, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x46, 0x61, 0x63, 0x65, 0x4c, - 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x05, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x22, 0x20, 0x0a, 0x0a, 0x52, 0x65, 0x71, - 0x53, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x52, 0x0a, 0x0a, 0x52, - 0x65, 0x73, 0x53, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x0a, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, - 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, - 0x45, 0x52, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, - 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, - 0x26, 0x0a, 0x0c, 0x52, 0x65, 0x71, 0x42, 0x75, 0x79, 0x45, 0x6e, 0x65, 0x72, 0x67, 0x79, 0x12, - 0x16, 0x0a, 0x06, 0x45, 0x6e, 0x65, 0x72, 0x67, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x45, 0x6e, 0x65, 0x72, 0x67, 0x79, 0x22, 0x48, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x42, 0x75, - 0x79, 0x45, 0x6e, 0x65, 0x72, 0x67, 0x79, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xd8, 0x03, 0x0a, 0x0f, 0x55, 0x73, 0x65, 0x49, 0x74, 0x65, + 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x74, 0x65, + 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x69, 0x74, 0x65, 0x6d, 0x49, + 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x32, 0x0a, + 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x74, 0x75, + 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x55, 0x73, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x63, 0x6f, 0x64, + 0x65, 0x12, 0x24, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x0e, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x49, 0x74, 0x65, 0x6d, + 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x27, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, + 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, + 0x6c, 0x2e, 0x49, 0x6e, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, + 0x12, 0x3a, 0x0a, 0x05, 0x61, 0x74, 0x74, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x24, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x55, 0x73, 0x65, 0x49, 0x74, + 0x65, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x61, 0x74, 0x74, 0x72, 0x73, 0x1a, 0x38, 0x0a, 0x0a, + 0x41, 0x74, 0x74, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x97, 0x01, 0x0a, 0x04, 0x43, 0x4f, 0x44, 0x45, 0x12, + 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, + 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x54, 0x45, + 0x4d, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x02, 0x12, 0x15, 0x0a, + 0x11, 0x49, 0x54, 0x45, 0x4d, 0x5f, 0x43, 0x41, 0x4e, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x55, 0x53, + 0x45, 0x44, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x54, 0x45, 0x4d, 0x5f, 0x4e, 0x4f, 0x54, + 0x5f, 0x45, 0x4e, 0x4f, 0x55, 0x47, 0x48, 0x10, 0x04, 0x12, 0x19, 0x0a, 0x15, 0x49, 0x54, 0x45, + 0x4d, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, + 0x4e, 0x44, 0x10, 0x05, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x41, 0x52, 0x53, 0x45, 0x5f, 0x42, 0x4f, + 0x4e, 0x55, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x45, 0x52, 0x52, 0x10, 0x06, + 0x22, 0x1b, 0x0a, 0x05, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x2f, 0x0a, + 0x0f, 0x52, 0x65, 0x71, 0x53, 0x65, 0x74, 0x45, 0x6e, 0x65, 0x72, 0x67, 0x79, 0x4d, 0x75, 0x6c, + 0x12, 0x1c, 0x0a, 0x09, 0x45, 0x6e, 0x65, 0x72, 0x67, 0x79, 0x4d, 0x75, 0x6c, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x09, 0x45, 0x6e, 0x65, 0x72, 0x67, 0x79, 0x4d, 0x75, 0x6c, 0x22, 0x57, + 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x53, 0x65, 0x74, 0x45, 0x6e, 0x65, 0x72, 0x67, 0x79, 0x4d, 0x75, + 0x6c, 0x12, 0x32, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, - 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, - 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, - 0x67, 0x22, 0x30, 0x0a, 0x14, 0x52, 0x65, 0x71, 0x47, 0x65, 0x74, 0x48, 0x61, 0x6e, 0x64, 0x62, - 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x68, 0x65, - 0x73, 0x73, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x43, 0x68, 0x65, 0x73, - 0x73, 0x49, 0x64, 0x22, 0x40, 0x0a, 0x0c, 0x48, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x6f, 0x6b, 0x49, - 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x68, 0x65, 0x73, 0x73, 0x49, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x43, 0x68, 0x65, 0x73, 0x73, 0x49, 0x64, 0x12, 0x16, 0x0a, - 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x40, 0x0a, 0x08, 0x48, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x6f, - 0x6b, 0x12, 0x34, 0x0a, 0x09, 0x48, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, - 0x48, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x6f, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x48, 0x61, - 0x6e, 0x64, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x22, 0x50, 0x0a, 0x14, 0x52, 0x65, 0x73, 0x47, 0x65, - 0x74, 0x48, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, - 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, - 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, - 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x2a, 0x0a, 0x0e, 0x52, 0x65, 0x71, - 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x4f, - 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4f, 0x72, - 0x64, 0x65, 0x72, 0x49, 0x64, 0x22, 0x4a, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x52, 0x65, 0x77, 0x61, - 0x72, 0x64, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, - 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, - 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, - 0x67, 0x22, 0x45, 0x0a, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x68, - 0x65, 0x73, 0x73, 0x49, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x43, 0x68, 0x65, - 0x73, 0x73, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3d, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x4f, - 0x72, 0x64, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2d, 0x0a, 0x09, 0x4f, 0x72, 0x64, 0x65, - 0x72, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, 0x75, - 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x09, 0x4f, 0x72, - 0x64, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x4b, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x44, 0x65, - 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x72, - 0x65, 0x61, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x72, 0x65, 0x61, - 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x4c, 0x69, 0x73, - 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0b, 0x6d, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, - 0x4c, 0x69, 0x73, 0x74, 0x22, 0x45, 0x0a, 0x0b, 0x52, 0x65, 0x71, 0x44, 0x65, 0x63, 0x6f, 0x72, - 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x72, 0x65, 0x61, 0x49, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x72, 0x65, 0x61, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x44, - 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0a, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x49, 0x64, 0x22, 0x47, 0x0a, 0x0b, 0x52, - 0x65, 0x73, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, - 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, - 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, - 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x4d, 0x73, 0x67, 0x22, 0x10, 0x0a, 0x0e, 0x52, 0x65, 0x71, 0x44, 0x65, 0x63, 0x6f, 0x72, - 0x61, 0x74, 0x65, 0x41, 0x6c, 0x6c, 0x22, 0x4a, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x44, 0x65, 0x63, - 0x6f, 0x72, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x6c, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, + 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x66, 0x0a, 0x08, 0x42, 0x61, 0x73, 0x65, 0x49, + 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x45, 0x6e, 0x65, 0x72, 0x67, 0x79, 0x4d, 0x75, 0x6c, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x45, 0x6e, 0x65, 0x72, 0x67, 0x79, 0x4d, 0x75, + 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x49, 0x73, 0x46, 0x69, 0x72, 0x73, 0x74, 0x42, 0x75, 0x79, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x49, 0x73, 0x46, 0x69, 0x72, 0x73, 0x74, 0x42, 0x75, + 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x45, 0x6e, 0x65, 0x72, 0x67, 0x79, 0x42, 0x75, 0x79, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x45, 0x6e, 0x65, 0x72, 0x67, 0x79, 0x42, 0x75, 0x79, 0x22, + 0x0d, 0x0a, 0x0b, 0x52, 0x65, 0x71, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x82, + 0x02, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x55, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x55, 0x69, 0x64, 0x12, 0x1a, 0x0a, + 0x08, 0x4e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x4e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x76, 0x61, + 0x74, 0x61, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x76, 0x61, 0x74, 0x61, + 0x72, 0x12, 0x12, 0x0a, 0x04, 0x46, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x04, 0x46, 0x61, 0x63, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, + 0x65, 0x43, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x44, 0x65, 0x63, 0x6f, + 0x72, 0x61, 0x74, 0x65, 0x43, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x0a, 0x41, 0x76, 0x61, 0x74, 0x61, + 0x72, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x75, + 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x0a, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2e, 0x0a, + 0x08, 0x46, 0x61, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x46, 0x61, 0x63, 0x65, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x46, 0x61, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, + 0x05, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x6f, + 0x67, 0x69, 0x6e, 0x22, 0x20, 0x0a, 0x0a, 0x52, 0x65, 0x71, 0x53, 0x65, 0x74, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x52, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x53, 0x65, 0x74, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, + 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x0a, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x26, 0x0a, 0x0c, 0x52, 0x65, 0x71, + 0x42, 0x75, 0x79, 0x45, 0x6e, 0x65, 0x72, 0x67, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x45, 0x6e, 0x65, + 0x72, 0x67, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x45, 0x6e, 0x65, 0x72, 0x67, + 0x79, 0x22, 0x48, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x42, 0x75, 0x79, 0x45, 0x6e, 0x65, 0x72, 0x67, + 0x79, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, + 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x30, 0x0a, 0x14, 0x52, + 0x65, 0x71, 0x47, 0x65, 0x74, 0x48, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x68, 0x65, 0x73, 0x73, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x43, 0x68, 0x65, 0x73, 0x73, 0x49, 0x64, 0x22, 0x40, 0x0a, + 0x0c, 0x48, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x6f, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, + 0x07, 0x43, 0x68, 0x65, 0x73, 0x73, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, + 0x43, 0x68, 0x65, 0x73, 0x73, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, + 0x40, 0x0a, 0x08, 0x48, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x6f, 0x6b, 0x12, 0x34, 0x0a, 0x09, 0x48, + 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, + 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x48, 0x61, 0x6e, 0x64, 0x62, 0x6f, + 0x6f, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x48, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x6f, 0x6b, + 0x73, 0x22, 0x50, 0x0a, 0x14, 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, 0x48, 0x61, 0x6e, 0x64, 0x62, + 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, + 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, + 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x4d, 0x73, 0x67, 0x22, 0x2a, 0x0a, 0x0e, 0x52, 0x65, 0x71, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x22, + 0x4a, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4f, 0x72, 0x64, 0x65, + 0x72, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, + 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x45, 0x0a, 0x05, 0x4f, + 0x72, 0x64, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x02, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x68, 0x65, 0x73, 0x73, 0x49, 0x64, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x43, 0x68, 0x65, 0x73, 0x73, 0x49, 0x64, 0x12, 0x12, + 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x22, 0x3d, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4c, 0x69, + 0x73, 0x74, 0x12, 0x2d, 0x0a, 0x09, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, + 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x09, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4c, 0x69, 0x73, + 0x74, 0x22, 0x4b, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x72, 0x65, 0x61, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x72, 0x65, 0x61, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, + 0x6d, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x05, 0x52, 0x0b, 0x6d, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x45, + 0x0a, 0x0b, 0x52, 0x65, 0x71, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x41, 0x72, 0x65, 0x61, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, + 0x72, 0x65, 0x61, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, + 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x44, 0x65, 0x63, 0x6f, 0x72, + 0x61, 0x74, 0x65, 0x49, 0x64, 0x22, 0x47, 0x0a, 0x0b, 0x52, 0x65, 0x73, 0x44, 0x65, 0x63, 0x6f, + 0x72, 0x61, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, + 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, + 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x10, + 0x0a, 0x0e, 0x52, 0x65, 0x71, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x6c, + 0x22, 0x4a, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x41, + 0x6c, 0x6c, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, + 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, + 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x3c, 0x0a, 0x0c, + 0x52, 0x65, 0x71, 0x47, 0x6d, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, + 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, + 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x22, 0x2c, 0x0a, 0x04, 0x43, 0x61, + 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, + 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xff, 0x02, 0x0a, 0x0b, 0x52, 0x65, 0x73, + 0x43, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2a, 0x0a, 0x08, 0x43, 0x61, 0x72, 0x64, + 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x74, 0x75, 0x74, + 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x43, 0x61, 0x72, 0x64, 0x52, 0x08, 0x43, 0x61, 0x72, 0x64, + 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x45, 0x78, 0x53, 0x74, 0x61, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x45, 0x78, 0x53, 0x74, 0x61, 0x72, 0x12, 0x16, 0x0a, 0x06, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x49, + 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, + 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x78, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x07, 0x45, 0x78, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, + 0x52, 0x65, 0x71, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, + 0x52, 0x65, 0x71, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x3c, 0x0a, 0x07, 0x41, 0x6c, 0x6c, 0x43, + 0x61, 0x72, 0x64, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x75, 0x74, 0x6f, + 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x43, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, + 0x2e, 0x41, 0x6c, 0x6c, 0x43, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x41, + 0x6c, 0x6c, 0x43, 0x61, 0x72, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, + 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x71, 0x55, 0x69, 0x64, 0x18, 0x09, 0x20, 0x03, 0x28, 0x05, + 0x52, 0x06, 0x52, 0x65, 0x71, 0x55, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x45, 0x78, 0x55, 0x69, + 0x64, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x45, 0x78, 0x55, 0x69, 0x64, 0x1a, 0x3a, + 0x0a, 0x0c, 0x41, 0x6c, 0x6c, 0x43, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x37, 0x0a, 0x0d, 0x52, 0x65, + 0x71, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x43, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x43, + 0x61, 0x72, 0x64, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x43, 0x61, 0x72, + 0x64, 0x49, 0x64, 0x22, 0x7d, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, + 0x43, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, + 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, + 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x1a, + 0x0a, 0x08, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x08, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x61, + 0x72, 0x64, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x43, 0x61, 0x72, 0x64, + 0x49, 0x64, 0x22, 0x2c, 0x0a, 0x14, 0x52, 0x65, 0x71, 0x43, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, + 0x6c, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x43, 0x6f, 0x6c, 0x6f, 0x72, + 0x22, 0x50, 0x0a, 0x14, 0x52, 0x65, 0x73, 0x43, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6c, 0x6c, 0x65, + 0x63, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, - 0x73, 0x67, 0x22, 0x3c, 0x0a, 0x0c, 0x52, 0x65, 0x71, 0x47, 0x6d, 0x43, 0x6f, 0x6d, 0x6d, 0x61, - 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, - 0x61, 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, - 0x22, 0x2c, 0x0a, 0x04, 0x43, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xff, - 0x02, 0x0a, 0x0b, 0x52, 0x65, 0x73, 0x43, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2a, - 0x0a, 0x08, 0x43, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x0e, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x43, 0x61, 0x72, 0x64, - 0x52, 0x08, 0x43, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x45, 0x78, - 0x53, 0x74, 0x61, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x45, 0x78, 0x53, 0x74, - 0x61, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x6f, - 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x49, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x43, - 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x78, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x45, 0x78, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x65, 0x71, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x65, 0x71, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x3c, - 0x0a, 0x07, 0x41, 0x6c, 0x6c, 0x43, 0x61, 0x72, 0x64, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x22, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x43, 0x61, - 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x6c, 0x6c, 0x43, 0x61, 0x72, 0x64, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x07, 0x41, 0x6c, 0x6c, 0x43, 0x61, 0x72, 0x64, 0x12, 0x18, 0x0a, 0x07, - 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x45, - 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x71, 0x55, 0x69, 0x64, - 0x18, 0x09, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x52, 0x65, 0x71, 0x55, 0x69, 0x64, 0x12, 0x14, - 0x0a, 0x05, 0x45, 0x78, 0x55, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x45, - 0x78, 0x55, 0x69, 0x64, 0x1a, 0x3a, 0x0a, 0x0c, 0x41, 0x6c, 0x6c, 0x43, 0x61, 0x72, 0x64, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x22, 0x37, 0x0a, 0x0d, 0x52, 0x65, 0x71, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x43, 0x61, 0x72, - 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, - 0x64, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, 0x22, 0x7d, 0x0a, 0x0d, 0x52, 0x65, 0x73, - 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x43, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, - 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, - 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, - 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x4d, 0x73, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, - 0x12, 0x16, 0x0a, 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, 0x22, 0x2c, 0x0a, 0x14, 0x52, 0x65, 0x71, 0x43, - 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, - 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x05, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x22, 0x50, 0x0a, 0x14, 0x52, 0x65, 0x73, 0x43, 0x61, 0x72, - 0x64, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, - 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, - 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, - 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x21, 0x0a, 0x0f, 0x52, 0x65, 0x71, 0x45, - 0x78, 0x53, 0x74, 0x61, 0x72, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x4b, 0x0a, 0x0f, 0x52, - 0x65, 0x73, 0x45, 0x78, 0x53, 0x74, 0x61, 0x72, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, - 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, - 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, - 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x15, 0x0a, 0x13, 0x52, 0x65, 0x71, 0x41, - 0x6c, 0x6c, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x22, - 0x4f, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x41, 0x6c, 0x6c, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, - 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, - 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, - 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, - 0x22, 0x37, 0x0a, 0x0b, 0x52, 0x65, 0x71, 0x43, 0x61, 0x72, 0x64, 0x47, 0x69, 0x76, 0x65, 0x12, - 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x03, 0x55, 0x69, - 0x64, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, 0x22, 0x47, 0x0a, 0x0b, 0x52, 0x65, 0x73, + 0x73, 0x67, 0x22, 0x21, 0x0a, 0x0f, 0x52, 0x65, 0x71, 0x45, 0x78, 0x53, 0x74, 0x61, 0x72, 0x52, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x4b, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x45, 0x78, 0x53, 0x74, + 0x61, 0x72, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, + 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, + 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, + 0x73, 0x67, 0x22, 0x15, 0x0a, 0x13, 0x52, 0x65, 0x71, 0x41, 0x6c, 0x6c, 0x43, 0x6f, 0x6c, 0x6c, + 0x65, 0x63, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x22, 0x4f, 0x0a, 0x13, 0x52, 0x65, 0x73, + 0x41, 0x6c, 0x6c, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, + 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, + 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x37, 0x0a, 0x0b, 0x52, 0x65, + 0x71, 0x43, 0x61, 0x72, 0x64, 0x47, 0x69, 0x76, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x03, 0x55, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x43, + 0x61, 0x72, 0x64, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x43, 0x61, 0x72, + 0x64, 0x49, 0x64, 0x22, 0x47, 0x0a, 0x0b, 0x52, 0x65, 0x73, 0x43, 0x61, 0x72, 0x64, 0x47, 0x69, + 0x76, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, + 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, + 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x22, 0x0a, 0x10, + 0x52, 0x65, 0x71, 0x41, 0x67, 0x72, 0x65, 0x65, 0x43, 0x61, 0x72, 0x64, 0x47, 0x69, 0x76, 0x65, + 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x64, + 0x22, 0x4c, 0x0a, 0x10, 0x52, 0x65, 0x73, 0x41, 0x67, 0x72, 0x65, 0x65, 0x43, 0x61, 0x72, 0x64, + 0x47, 0x69, 0x76, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, + 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, + 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x23, + 0x0a, 0x11, 0x52, 0x65, 0x71, 0x52, 0x65, 0x66, 0x75, 0x73, 0x65, 0x43, 0x61, 0x72, 0x64, 0x47, + 0x69, 0x76, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x49, 0x64, 0x22, 0x4d, 0x0a, 0x11, 0x52, 0x65, 0x73, 0x52, 0x65, 0x66, 0x75, 0x73, 0x65, 0x43, 0x61, 0x72, 0x64, 0x47, 0x69, 0x76, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, - 0x73, 0x67, 0x22, 0x22, 0x0a, 0x10, 0x52, 0x65, 0x71, 0x41, 0x67, 0x72, 0x65, 0x65, 0x43, 0x61, - 0x72, 0x64, 0x47, 0x69, 0x76, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x02, 0x49, 0x64, 0x22, 0x4c, 0x0a, 0x10, 0x52, 0x65, 0x73, 0x41, 0x67, 0x72, - 0x65, 0x65, 0x43, 0x61, 0x72, 0x64, 0x47, 0x69, 0x76, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, + 0x73, 0x67, 0x22, 0x37, 0x0a, 0x0b, 0x52, 0x65, 0x71, 0x43, 0x61, 0x72, 0x64, 0x53, 0x65, 0x6e, + 0x64, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, + 0x55, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, 0x22, 0x47, 0x0a, 0x0b, 0x52, + 0x65, 0x73, 0x43, 0x61, 0x72, 0x64, 0x53, 0x65, 0x6e, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x4d, 0x73, 0x67, 0x22, 0x23, 0x0a, 0x11, 0x52, 0x65, 0x71, 0x52, 0x65, 0x66, 0x75, 0x73, - 0x65, 0x43, 0x61, 0x72, 0x64, 0x47, 0x69, 0x76, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x64, 0x22, 0x4d, 0x0a, 0x11, 0x52, 0x65, 0x73, - 0x52, 0x65, 0x66, 0x75, 0x73, 0x65, 0x43, 0x61, 0x72, 0x64, 0x47, 0x69, 0x76, 0x65, 0x12, 0x26, - 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, - 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, - 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x37, 0x0a, 0x0b, 0x52, 0x65, 0x71, 0x43, - 0x61, 0x72, 0x64, 0x53, 0x65, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, + 0x03, 0x4d, 0x73, 0x67, 0x22, 0x3b, 0x0a, 0x0f, 0x52, 0x65, 0x71, 0x43, 0x61, 0x72, 0x64, 0x45, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x55, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, - 0x64, 0x22, 0x47, 0x0a, 0x0b, 0x52, 0x65, 0x73, 0x43, 0x61, 0x72, 0x64, 0x53, 0x65, 0x6e, 0x64, - 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, - 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, - 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x3b, 0x0a, 0x0f, 0x52, 0x65, - 0x71, 0x43, 0x61, 0x72, 0x64, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x10, 0x0a, - 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x55, 0x69, 0x64, 0x12, - 0x16, 0x0a, 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, 0x22, 0x4b, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x43, 0x61, - 0x72, 0x64, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, - 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, - 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, - 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x4d, 0x73, 0x67, 0x22, 0x3f, 0x0a, 0x15, 0x52, 0x65, 0x71, 0x53, 0x65, 0x6c, 0x65, 0x63, - 0x74, 0x43, 0x61, 0x72, 0x64, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x0e, 0x0a, - 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, - 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x43, - 0x61, 0x72, 0x64, 0x49, 0x64, 0x22, 0x51, 0x0a, 0x15, 0x52, 0x65, 0x73, 0x53, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x43, 0x61, 0x72, 0x64, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x26, - 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, - 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, - 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x26, 0x0a, 0x14, 0x52, 0x65, 0x71, 0x41, - 0x67, 0x72, 0x65, 0x65, 0x43, 0x61, 0x72, 0x64, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x64, - 0x22, 0x50, 0x0a, 0x14, 0x52, 0x65, 0x73, 0x41, 0x67, 0x72, 0x65, 0x65, 0x43, 0x61, 0x72, 0x64, + 0x64, 0x22, 0x4b, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x43, 0x61, 0x72, 0x64, 0x45, 0x78, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, + 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, + 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x3f, + 0x0a, 0x15, 0x52, 0x65, 0x71, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x43, 0x61, 0x72, 0x64, 0x45, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, 0x22, + 0x51, 0x0a, 0x15, 0x52, 0x65, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x43, 0x61, 0x72, 0x64, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, - 0x73, 0x67, 0x22, 0x25, 0x0a, 0x13, 0x52, 0x65, 0x71, 0x52, 0x65, 0x66, 0x75, 0x73, 0x65, 0x43, - 0x61, 0x72, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x64, 0x22, 0x4f, 0x0a, 0x13, 0x52, 0x65, 0x73, - 0x52, 0x65, 0x66, 0x75, 0x73, 0x65, 0x43, 0x61, 0x72, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, - 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, - 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x27, 0x0a, 0x15, 0x52, 0x65, - 0x71, 0x52, 0x65, 0x66, 0x75, 0x73, 0x65, 0x43, 0x61, 0x72, 0x64, 0x45, 0x78, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x02, 0x49, 0x64, 0x22, 0x51, 0x0a, 0x15, 0x52, 0x65, 0x73, 0x52, 0x65, 0x66, 0x75, 0x73, 0x65, - 0x43, 0x61, 0x72, 0x64, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x26, 0x0a, 0x04, - 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, - 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, - 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x22, 0x0a, 0x10, 0x52, 0x65, 0x71, 0x47, 0x65, 0x74, - 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x43, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x64, 0x22, 0x4c, 0x0a, 0x10, 0x52, 0x65, - 0x73, 0x47, 0x65, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x43, 0x61, 0x72, 0x64, 0x12, 0x26, - 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, - 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, - 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x20, 0x0a, 0x0e, 0x52, 0x65, 0x71, 0x47, - 0x75, 0x69, 0x64, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x4a, 0x0a, 0x0e, 0x52, 0x65, - 0x73, 0x47, 0x75, 0x69, 0x64, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, - 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, - 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, - 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x85, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x47, 0x75, - 0x69, 0x6c, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3a, 0x0a, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, - 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, - 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x2e, - 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x52, 0x65, 0x77, - 0x61, 0x72, 0x64, 0x1a, 0x39, 0x0a, 0x0b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x8e, - 0x01, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x49, 0x74, 0x65, 0x6d, 0x50, 0x6f, 0x70, 0x12, 0x0e, 0x0a, - 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x28, 0x0a, - 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, - 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x30, 0x0a, 0x09, 0x43, 0x61, 0x72, 0x64, 0x50, - 0x61, 0x63, 0x6b, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, - 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x43, 0x61, 0x72, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x52, 0x09, - 0x43, 0x61, 0x72, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x61, 0x62, - 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x4c, 0x61, 0x62, 0x6c, 0x65, 0x22, - 0x2c, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x4e, - 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x4e, 0x75, 0x6d, 0x22, 0x2e, 0x0a, - 0x08, 0x43, 0x61, 0x72, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x61, 0x72, - 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x04, 0x43, 0x61, 0x72, 0x64, 0x22, 0x8c, 0x03, - 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x46, - 0x0a, 0x0a, 0x57, 0x65, 0x65, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, - 0x73, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x2e, 0x57, 0x65, 0x65, 0x6b, 0x52, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x57, 0x65, 0x65, 0x6b, - 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x43, 0x0a, 0x09, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x54, - 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x74, 0x75, 0x74, 0x6f, - 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x54, 0x61, 0x73, - 0x6b, 0x2e, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x09, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x41, - 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x63, 0x74, - 0x69, 0x76, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x44, 0x61, 0x79, 0x45, 0x6e, 0x64, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x06, 0x44, 0x61, 0x79, 0x45, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x57, - 0x65, 0x65, 0x6b, 0x45, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x57, 0x65, - 0x65, 0x6b, 0x45, 0x6e, 0x64, 0x1a, 0x52, 0x0a, 0x0f, 0x57, 0x65, 0x65, 0x6b, 0x52, 0x65, 0x77, - 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x29, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x74, 0x75, 0x74, 0x6f, - 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x57, 0x65, 0x65, 0x6b, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x51, 0x0a, 0x0e, 0x44, 0x61, 0x69, - 0x6c, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x29, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x74, - 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x54, 0x61, 0x73, - 0x6b, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x6d, 0x0a, 0x09, - 0x44, 0x61, 0x69, 0x6c, 0x79, 0x57, 0x65, 0x65, 0x6b, 0x12, 0x28, 0x0a, 0x05, 0x49, 0x74, 0x65, - 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, - 0x69, 0x61, 0x6c, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x49, 0x74, - 0x65, 0x6d, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x4e, - 0x65, 0x65, 0x64, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0a, 0x4e, 0x65, 0x65, 0x64, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x22, 0x9a, 0x01, 0x0a, 0x09, - 0x44, 0x61, 0x69, 0x6c, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x12, 0x16, 0x0a, 0x06, 0x55, 0x6e, 0x4c, 0x6f, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x06, 0x55, 0x6e, 0x4c, 0x6f, 0x63, 0x6b, 0x12, 0x33, 0x0a, 0x08, 0x50, 0x72, 0x6f, - 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x75, - 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x51, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x67, - 0x72, 0x65, 0x73, 0x73, 0x52, 0x08, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x28, - 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, - 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x7d, 0x0a, 0x0d, 0x51, 0x75, 0x65, 0x73, - 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x61, 0x62, - 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, - 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x4e, 0x75, - 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x06, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x22, 0x27, 0x0a, 0x15, 0x52, 0x65, 0x71, 0x47, 0x65, - 0x74, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, - 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, - 0x22, 0x51, 0x0a, 0x15, 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x54, - 0x61, 0x73, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, - 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, - 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x4d, 0x73, 0x67, 0x22, 0x27, 0x0a, 0x15, 0x52, 0x65, 0x71, 0x47, 0x65, 0x74, 0x44, 0x61, 0x69, - 0x6c, 0x79, 0x57, 0x65, 0x65, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, - 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x51, 0x0a, 0x15, - 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x57, 0x65, 0x65, 0x6b, 0x52, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, - 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, - 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, - 0x53, 0x0a, 0x0b, 0x52, 0x65, 0x73, 0x46, 0x61, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2e, - 0x0a, 0x08, 0x46, 0x61, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x46, 0x61, 0x63, 0x65, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x46, 0x61, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x14, - 0x0a, 0x05, 0x53, 0x65, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, - 0x65, 0x74, 0x49, 0x64, 0x22, 0x34, 0x0a, 0x08, 0x46, 0x61, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, - 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, - 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x20, 0x0a, 0x0a, 0x52, 0x65, - 0x71, 0x53, 0x65, 0x74, 0x46, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x46, 0x61, 0x63, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x46, 0x61, 0x63, 0x65, 0x22, 0x46, 0x0a, 0x0a, - 0x52, 0x65, 0x73, 0x53, 0x65, 0x74, 0x46, 0x61, 0x63, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, + 0x73, 0x67, 0x22, 0x26, 0x0a, 0x14, 0x52, 0x65, 0x71, 0x41, 0x67, 0x72, 0x65, 0x65, 0x43, 0x61, + 0x72, 0x64, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x64, 0x22, 0x50, 0x0a, 0x14, 0x52, 0x65, + 0x73, 0x41, 0x67, 0x72, 0x65, 0x65, 0x43, 0x61, 0x72, 0x64, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, + 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, + 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x25, 0x0a, 0x13, + 0x52, 0x65, 0x71, 0x52, 0x65, 0x66, 0x75, 0x73, 0x65, 0x43, 0x61, 0x72, 0x64, 0x53, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x49, 0x64, 0x22, 0x4f, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x52, 0x65, 0x66, 0x75, 0x73, 0x65, + 0x43, 0x61, 0x72, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x4d, 0x73, 0x67, 0x22, 0x5b, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x41, 0x76, 0x61, 0x74, 0x61, - 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x34, 0x0a, 0x0a, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x4c, - 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x75, 0x74, 0x6f, - 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x0a, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x53, - 0x65, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x65, 0x74, 0x49, - 0x64, 0x22, 0x36, 0x0a, 0x0a, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, - 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, - 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x26, 0x0a, 0x0c, 0x52, 0x65, 0x71, - 0x53, 0x65, 0x74, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x76, 0x61, - 0x74, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x76, 0x61, 0x74, 0x61, - 0x72, 0x22, 0x48, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x53, 0x65, 0x74, 0x41, 0x76, 0x61, 0x74, 0x61, - 0x72, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, - 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0xb9, 0x01, 0x0a, 0x0d, - 0x52, 0x65, 0x73, 0x53, 0x65, 0x76, 0x65, 0x6e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x3a, 0x0a, - 0x0a, 0x57, 0x65, 0x65, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x53, 0x65, 0x76, - 0x65, 0x6e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x0a, 0x57, - 0x65, 0x65, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x3c, 0x0a, 0x0b, 0x4d, 0x6f, 0x6e, - 0x74, 0x68, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x53, 0x65, 0x76, 0x65, 0x6e, 0x4c, - 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x0b, 0x4d, 0x6f, 0x6e, 0x74, - 0x68, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x76, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, - 0x16, 0x0a, 0x06, 0x49, 0x73, 0x42, 0x61, 0x63, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x06, 0x49, 0x73, 0x42, 0x61, 0x63, 0x6b, 0x22, 0xb8, 0x01, 0x0a, 0x10, 0x53, 0x65, 0x76, 0x65, - 0x6e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x28, 0x0a, 0x05, - 0x49, 0x74, 0x65, 0x6d, 0x31, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x75, - 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x05, 0x49, 0x74, 0x65, 0x6d, 0x31, 0x12, 0x28, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x32, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, - 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x32, - 0x12, 0x28, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x33, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x33, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, - 0x49, 0x64, 0x22, 0x28, 0x0a, 0x16, 0x52, 0x65, 0x71, 0x47, 0x65, 0x74, 0x53, 0x65, 0x76, 0x65, - 0x6e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, - 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x52, 0x0a, 0x16, - 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, 0x53, 0x65, 0x76, 0x65, 0x6e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, + 0x03, 0x4d, 0x73, 0x67, 0x22, 0x27, 0x0a, 0x15, 0x52, 0x65, 0x71, 0x52, 0x65, 0x66, 0x75, 0x73, + 0x65, 0x43, 0x61, 0x72, 0x64, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x0e, 0x0a, + 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x64, 0x22, 0x51, 0x0a, + 0x15, 0x52, 0x65, 0x73, 0x52, 0x65, 0x66, 0x75, 0x73, 0x65, 0x43, 0x61, 0x72, 0x64, 0x45, 0x78, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, + 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, + 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, + 0x22, 0x22, 0x0a, 0x10, 0x52, 0x65, 0x71, 0x47, 0x65, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, + 0x43, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x49, 0x64, 0x22, 0x4c, 0x0a, 0x10, 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, 0x46, 0x72, + 0x69, 0x65, 0x6e, 0x64, 0x43, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, + 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, + 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, + 0x73, 0x67, 0x22, 0x20, 0x0a, 0x0e, 0x52, 0x65, 0x71, 0x47, 0x75, 0x69, 0x64, 0x65, 0x52, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x02, 0x49, 0x64, 0x22, 0x4a, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x47, 0x75, 0x69, 0x64, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, - 0x22, 0x28, 0x0a, 0x16, 0x52, 0x65, 0x71, 0x47, 0x65, 0x74, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x4c, - 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x52, 0x0a, 0x16, 0x52, 0x65, - 0x73, 0x47, 0x65, 0x74, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, - 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x22, 0x85, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x3a, 0x0a, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, + 0x47, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x1a, 0x39, 0x0a, + 0x0b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x8e, 0x01, 0x0a, 0x0a, 0x52, 0x65, 0x73, + 0x49, 0x74, 0x65, 0x6d, 0x50, 0x6f, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, + 0x6c, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, + 0x73, 0x12, 0x30, 0x0a, 0x09, 0x43, 0x61, 0x72, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, + 0x43, 0x61, 0x72, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x52, 0x09, 0x43, 0x61, 0x72, 0x64, 0x50, 0x61, + 0x63, 0x6b, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x4c, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x2c, 0x0a, 0x08, 0x49, 0x74, 0x65, + 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x03, 0x4e, 0x75, 0x6d, 0x22, 0x2e, 0x0a, 0x08, 0x43, 0x61, 0x72, 0x64, 0x50, + 0x61, 0x63, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x05, 0x52, 0x04, 0x43, 0x61, 0x72, 0x64, 0x22, 0x8c, 0x03, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x44, + 0x61, 0x69, 0x6c, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x46, 0x0a, 0x0a, 0x57, 0x65, 0x65, 0x6b, + 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, + 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x44, 0x61, 0x69, 0x6c, 0x79, + 0x54, 0x61, 0x73, 0x6b, 0x2e, 0x57, 0x65, 0x65, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x57, 0x65, 0x65, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x12, 0x43, 0x0a, 0x09, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, + 0x65, 0x73, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x2e, 0x44, 0x61, 0x69, 0x6c, + 0x79, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x44, 0x61, 0x69, 0x6c, + 0x79, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x44, 0x61, 0x79, 0x45, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x44, + 0x61, 0x79, 0x45, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x57, 0x65, 0x65, 0x6b, 0x45, 0x6e, 0x64, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x57, 0x65, 0x65, 0x6b, 0x45, 0x6e, 0x64, 0x1a, + 0x52, 0x0a, 0x0f, 0x57, 0x65, 0x65, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x29, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x44, + 0x61, 0x69, 0x6c, 0x79, 0x57, 0x65, 0x65, 0x6b, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x1a, 0x51, 0x0a, 0x0e, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x54, 0x61, 0x73, 0x6b, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x29, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, + 0x6c, 0x2e, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x6d, 0x0a, 0x09, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x57, + 0x65, 0x65, 0x6b, 0x12, 0x28, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x49, 0x74, + 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x16, 0x0a, + 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x4e, 0x65, 0x65, 0x64, 0x41, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4e, 0x65, 0x65, 0x64, 0x41, + 0x63, 0x74, 0x69, 0x76, 0x65, 0x22, 0x9a, 0x01, 0x0a, 0x09, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x54, + 0x61, 0x73, 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x55, + 0x6e, 0x4c, 0x6f, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x55, 0x6e, 0x4c, + 0x6f, 0x63, 0x6b, 0x12, 0x33, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, + 0x2e, 0x51, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x08, + 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x28, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, + 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, + 0x61, 0x6c, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x49, 0x74, 0x65, + 0x6d, 0x73, 0x22, 0x7d, 0x0a, 0x0d, 0x51, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, + 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x54, + 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x61, 0x72, + 0x67, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x22, 0x27, 0x0a, 0x15, 0x52, 0x65, 0x71, 0x47, 0x65, 0x74, 0x44, 0x61, 0x69, 0x6c, 0x79, + 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x51, 0x0a, 0x15, 0x52, 0x65, + 0x73, 0x47, 0x65, 0x74, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, + 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, + 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x27, 0x0a, + 0x15, 0x52, 0x65, 0x71, 0x47, 0x65, 0x74, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x57, 0x65, 0x65, 0x6b, + 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x51, 0x0a, 0x15, 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, + 0x44, 0x61, 0x69, 0x6c, 0x79, 0x57, 0x65, 0x65, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, + 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, + 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, + 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x53, 0x0a, 0x0b, 0x52, 0x65, 0x73, + 0x46, 0x61, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2e, 0x0a, 0x08, 0x46, 0x61, 0x63, 0x65, + 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, + 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x46, 0x61, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, + 0x46, 0x61, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x65, 0x74, 0x49, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x65, 0x74, 0x49, 0x64, 0x22, 0x34, + 0x0a, 0x08, 0x46, 0x61, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, + 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x45, 0x6e, 0x64, + 0x54, 0x69, 0x6d, 0x65, 0x22, 0x20, 0x0a, 0x0a, 0x52, 0x65, 0x71, 0x53, 0x65, 0x74, 0x46, 0x61, + 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x46, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x04, 0x46, 0x61, 0x63, 0x65, 0x22, 0x46, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x53, 0x65, 0x74, + 0x46, 0x61, 0x63, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, - 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x42, - 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x41, 0x63, 0x69, 0x74, 0x69, 0x76, 0x65, 0x12, 0x34, 0x0a, 0x0a, - 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x14, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x41, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4c, 0x69, - 0x73, 0x74, 0x22, 0x96, 0x01, 0x0a, 0x0a, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, - 0x64, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, - 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, - 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x22, 0x0f, 0x0a, 0x0d, 0x52, - 0x65, 0x71, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x22, 0xbd, 0x01, 0x0a, - 0x0d, 0x52, 0x65, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x53, - 0x0a, 0x0e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, - 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, - 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x0e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c, - 0x69, 0x73, 0x74, 0x1a, 0x57, 0x0a, 0x13, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2a, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x75, - 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xd3, 0x01, 0x0a, - 0x15, 0x52, 0x65, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x50, 0x72, - 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, - 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, - 0x73, 0x73, 0x12, 0x5b, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, - 0x77, 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x74, 0x75, 0x74, - 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x2e, 0x50, 0x72, 0x6f, 0x67, - 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x0e, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x1a, - 0x41, 0x0a, 0x13, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x77, 0x61, 0x72, - 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x22, 0x25, 0x0a, 0x13, 0x52, 0x65, 0x71, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x4f, 0x0a, 0x13, 0x52, 0x65, 0x73, - 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x5b, + 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x34, 0x0a, 0x0a, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x41, + 0x76, 0x61, 0x74, 0x61, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x41, 0x76, 0x61, 0x74, 0x61, + 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x65, 0x74, 0x49, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x65, 0x74, 0x49, 0x64, 0x22, 0x36, 0x0a, 0x0a, 0x41, + 0x76, 0x61, 0x74, 0x61, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x64, + 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x45, 0x6e, 0x64, 0x54, + 0x69, 0x6d, 0x65, 0x22, 0x26, 0x0a, 0x0c, 0x52, 0x65, 0x71, 0x53, 0x65, 0x74, 0x41, 0x76, 0x61, + 0x74, 0x61, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x22, 0x48, 0x0a, 0x0c, 0x52, + 0x65, 0x73, 0x53, 0x65, 0x74, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x26, 0x0a, 0x04, 0x43, + 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, + 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, + 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0xb9, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x53, 0x65, 0x76, + 0x65, 0x6e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x3a, 0x0a, 0x0a, 0x57, 0x65, 0x65, 0x6b, 0x52, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x75, + 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x53, 0x65, 0x76, 0x65, 0x6e, 0x4c, 0x6f, 0x67, 0x69, + 0x6e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x0a, 0x57, 0x65, 0x65, 0x6b, 0x52, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x12, 0x3c, 0x0a, 0x0b, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x52, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, + 0x69, 0x61, 0x6c, 0x2e, 0x53, 0x65, 0x76, 0x65, 0x6e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x52, 0x0b, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x52, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x06, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x73, 0x42, + 0x61, 0x63, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x49, 0x73, 0x42, 0x61, 0x63, + 0x6b, 0x22, 0xb8, 0x01, 0x0a, 0x10, 0x53, 0x65, 0x76, 0x65, 0x6e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, + 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x28, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x31, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, + 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x31, + 0x12, 0x28, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x32, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x32, 0x12, 0x28, 0x0a, 0x05, 0x49, 0x74, + 0x65, 0x6d, 0x33, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, + 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x49, + 0x74, 0x65, 0x6d, 0x33, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0e, 0x0a, 0x02, + 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x28, 0x0a, 0x16, + 0x52, 0x65, 0x71, 0x47, 0x65, 0x74, 0x53, 0x65, 0x76, 0x65, 0x6e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, + 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x52, 0x0a, 0x16, 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, + 0x53, 0x65, 0x76, 0x65, 0x6e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x36, 0x0a, 0x0a, 0x4c, 0x69, - 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, - 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, - 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x43, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, - 0x43, 0x64, 0x22, 0x60, 0x0a, 0x10, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, - 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x45, 0x6e, 0x64, - 0x54, 0x69, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x43, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x02, 0x43, 0x64, 0x22, 0x15, 0x0a, 0x13, 0x52, 0x65, 0x71, 0x4c, 0x69, 0x6d, 0x69, 0x74, - 0x53, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x22, 0x4f, 0x0a, 0x13, 0x52, - 0x65, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x53, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x77, 0x61, - 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, - 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, - 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x2a, 0x0a, 0x12, - 0x52, 0x65, 0x73, 0x43, 0x68, 0x65, 0x73, 0x73, 0x52, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x77, 0x61, - 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x68, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x05, 0x43, 0x68, 0x65, 0x73, 0x74, 0x22, 0x2e, 0x0a, 0x14, 0x52, 0x65, 0x71, 0x46, - 0x61, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, - 0x12, 0x16, 0x0a, 0x06, 0x45, 0x6e, 0x65, 0x72, 0x67, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x06, 0x45, 0x6e, 0x65, 0x72, 0x67, 0x79, 0x22, 0x50, 0x0a, 0x14, 0x52, 0x65, 0x73, 0x46, - 0x61, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, - 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, - 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, - 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x23, 0x0a, 0x0f, 0x52, 0x65, - 0x71, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x10, 0x0a, - 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x69, 0x64, 0x22, - 0x54, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x2d, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, - 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, - 0x04, 0x4c, 0x69, 0x73, 0x74, 0x22, 0xe3, 0x01, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x28, 0x0a, 0x16, 0x52, 0x65, + 0x71, 0x47, 0x65, 0x74, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x02, 0x49, 0x64, 0x22, 0x52, 0x0a, 0x16, 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, 0x4d, 0x6f, + 0x6e, 0x74, 0x68, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, + 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, + 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, + 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x42, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x41, + 0x63, 0x69, 0x74, 0x69, 0x76, 0x65, 0x12, 0x34, 0x0a, 0x0a, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x75, 0x74, + 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x0a, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x96, 0x01, 0x0a, + 0x0a, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x54, + 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x1c, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, + 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, + 0x14, 0x0a, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x54, 0x69, 0x74, 0x6c, 0x65, 0x22, 0x0f, 0x0a, 0x0d, 0x52, 0x65, 0x71, 0x4c, 0x69, 0x6d, 0x69, + 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x22, 0xbd, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x53, 0x0a, 0x0e, 0x4c, 0x69, 0x6d, 0x69, + 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x2b, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x4c, + 0x69, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x4c, + 0x69, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x1a, 0x57, 0x0a, + 0x13, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, + 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xd3, 0x01, 0x0a, 0x15, 0x52, 0x65, 0x73, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, + 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x08, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x5b, 0x0a, 0x0e, + 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, + 0x52, 0x65, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, + 0x67, 0x72, 0x65, 0x73, 0x73, 0x2e, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x50, 0x72, 0x6f, 0x67, 0x72, + 0x65, 0x73, 0x73, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x1a, 0x41, 0x0a, 0x13, 0x50, 0x72, 0x6f, + 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x25, 0x0a, 0x13, + 0x52, 0x65, 0x71, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x02, 0x49, 0x64, 0x22, 0x4f, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, + 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, + 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, + 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x4d, 0x73, 0x67, 0x22, 0x36, 0x0a, 0x0a, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, + 0x43, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x43, 0x64, 0x22, 0x60, 0x0a, 0x10, + 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, + 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, + 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x0e, + 0x0a, 0x02, 0x43, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x43, 0x64, 0x22, 0x15, + 0x0a, 0x13, 0x52, 0x65, 0x71, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x53, 0x65, 0x6e, 0x63, 0x65, 0x52, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x22, 0x4f, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x4c, 0x69, 0x6d, 0x69, + 0x74, 0x53, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, + 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, + 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, + 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x2a, 0x0a, 0x12, 0x52, 0x65, 0x73, 0x43, 0x68, 0x65, + 0x73, 0x73, 0x52, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, + 0x43, 0x68, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x43, 0x68, 0x65, + 0x73, 0x74, 0x22, 0x2e, 0x0a, 0x14, 0x52, 0x65, 0x71, 0x46, 0x61, 0x73, 0x74, 0x50, 0x72, 0x6f, + 0x64, 0x75, 0x63, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x45, 0x6e, + 0x65, 0x72, 0x67, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x45, 0x6e, 0x65, 0x72, + 0x67, 0x79, 0x22, 0x50, 0x0a, 0x14, 0x52, 0x65, 0x73, 0x46, 0x61, 0x73, 0x74, 0x50, 0x72, 0x6f, + 0x64, 0x75, 0x63, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, + 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, + 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, + 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x4d, 0x73, 0x67, 0x22, 0x23, 0x0a, 0x0f, 0x52, 0x65, 0x71, 0x53, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x69, 0x64, 0x22, 0x54, 0x0a, 0x0f, 0x52, 0x65, 0x73, + 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, + 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, + 0x12, 0x2d, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x22, + 0xe3, 0x01, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x69, 0x6d, + 0x70, 0x6c, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x03, 0x55, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x46, 0x61, 0x63, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x46, 0x61, 0x63, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, + 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x44, + 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x44, + 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x6f, 0x67, 0x69, 0x6e, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x1a, 0x0a, + 0x08, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x6f, 0x75, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x08, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x6f, 0x75, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x61, 0x63, + 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x46, 0x61, 0x63, + 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x22, 0x8d, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x55, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, + 0x04, 0x46, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x46, 0x61, 0x63, + 0x65, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x06, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, + 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, + 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, + 0x73, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x8f, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x46, 0x72, 0x69, + 0x65, 0x6e, 0x64, 0x4c, 0x6f, 0x67, 0x12, 0x31, 0x0a, 0x06, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, + 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x69, 0x6d, 0x70, 0x6c, + 0x65, 0x52, 0x06, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, + 0x04, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x69, 0x6d, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x3d, 0x0a, 0x0f, 0x4e, 0x6f, 0x74, 0x69, 0x66, + 0x79, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x4c, 0x6f, 0x67, 0x12, 0x2a, 0x0a, 0x04, 0x69, 0x6e, + 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, + 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x4c, 0x6f, 0x67, + 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x22, 0x3f, 0x0a, 0x10, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, + 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x43, 0x61, 0x72, 0x64, 0x12, 0x2b, 0x0a, 0x04, 0x49, 0x6e, + 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, + 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x43, 0x61, 0x72, + 0x64, 0x52, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xfb, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x46, + 0x72, 0x69, 0x65, 0x6e, 0x64, 0x43, 0x61, 0x72, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x55, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x46, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x46, 0x61, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, - 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x08, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, - 0x05, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x6f, - 0x67, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x6f, 0x75, 0x74, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x6f, 0x75, 0x74, 0x12, - 0x1a, 0x0a, 0x08, 0x46, 0x61, 0x63, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x46, 0x61, 0x63, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x22, 0x8d, 0x01, 0x0a, 0x0d, - 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x10, 0x0a, - 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x55, 0x69, 0x64, 0x12, - 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x46, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x04, 0x46, 0x61, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x76, 0x61, 0x74, 0x61, - 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, - 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, - 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x9e, 0x01, 0x0a, 0x0c, - 0x52, 0x65, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x4c, 0x6f, 0x67, 0x12, 0x10, 0x0a, 0x03, - 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x55, 0x69, 0x64, 0x12, 0x12, - 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x46, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x04, 0x46, 0x61, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x14, - 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x69, 0x6d, 0x65, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x3f, 0x0a, 0x10, - 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x43, 0x61, 0x72, 0x64, - 0x12, 0x2b, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, - 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x46, 0x72, 0x69, - 0x65, 0x6e, 0x64, 0x43, 0x61, 0x72, 0x64, 0x52, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xfb, 0x01, - 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x43, 0x61, 0x72, 0x64, 0x12, - 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x55, 0x69, - 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x46, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x04, 0x46, 0x61, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x76, 0x61, - 0x74, 0x61, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x76, 0x61, 0x74, 0x61, - 0x72, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x54, - 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x12, - 0x16, 0x0a, 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x45, 0x78, 0x43, 0x61, 0x72, - 0x64, 0x49, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x45, 0x78, 0x43, 0x61, 0x72, - 0x64, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, - 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x64, 0x22, 0x2f, 0x0a, 0x05, 0x52, - 0x65, 0x71, 0x4b, 0x76, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x67, 0x0a, 0x05, - 0x52, 0x65, 0x73, 0x4b, 0x76, 0x12, 0x27, 0x0a, 0x02, 0x6b, 0x76, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, - 0x4b, 0x76, 0x2e, 0x4b, 0x76, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x02, 0x6b, 0x76, 0x1a, 0x35, - 0x0a, 0x07, 0x4b, 0x76, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x14, 0x0a, 0x12, 0x52, 0x65, 0x71, 0x46, 0x72, 0x69, 0x65, - 0x6e, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x22, 0x43, 0x0a, 0x12, 0x52, - 0x65, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, - 0x64, 0x12, 0x2d, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x50, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, - 0x22, 0x23, 0x0a, 0x0f, 0x52, 0x65, 0x71, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x67, 0x6e, - 0x6f, 0x72, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x03, 0x55, 0x69, 0x64, 0x22, 0x4b, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x46, 0x72, 0x69, 0x65, - 0x6e, 0x64, 0x49, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, - 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, - 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, - 0x73, 0x67, 0x22, 0x0f, 0x0a, 0x0d, 0x52, 0x65, 0x71, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x4c, - 0x69, 0x73, 0x74, 0x22, 0x4a, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, - 0x4c, 0x69, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x4c, 0x69, - 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, - 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x69, 0x6d, - 0x70, 0x6c, 0x65, 0x52, 0x0a, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x22, - 0x10, 0x0a, 0x0e, 0x52, 0x65, 0x71, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, - 0x79, 0x22, 0x49, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, 0x70, - 0x70, 0x6c, 0x79, 0x12, 0x37, 0x0a, 0x09, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x4c, 0x69, 0x73, 0x74, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, - 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x69, 0x6d, 0x70, 0x6c, - 0x65, 0x52, 0x09, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x12, 0x0a, 0x10, - 0x52, 0x65, 0x71, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x43, 0x61, 0x72, 0x64, 0x4d, 0x73, 0x67, - 0x22, 0x45, 0x0a, 0x10, 0x52, 0x65, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x43, 0x61, 0x72, - 0x64, 0x4d, 0x73, 0x67, 0x12, 0x31, 0x0a, 0x07, 0x4d, 0x73, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, - 0x2e, 0x52, 0x65, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x43, 0x61, 0x72, 0x64, 0x52, 0x07, - 0x4d, 0x73, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x13, 0x0a, 0x11, 0x52, 0x65, 0x71, 0x46, 0x72, - 0x69, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x4c, 0x69, 0x6e, 0x65, 0x22, 0x3d, 0x0a, 0x11, - 0x52, 0x65, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x4c, 0x69, 0x6e, - 0x65, 0x12, 0x28, 0x0a, 0x03, 0x4c, 0x6f, 0x67, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, - 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x46, 0x72, 0x69, - 0x65, 0x6e, 0x64, 0x4c, 0x6f, 0x67, 0x52, 0x03, 0x4c, 0x6f, 0x67, 0x22, 0x5d, 0x0a, 0x14, 0x52, - 0x65, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x4e, 0x6f, 0x74, - 0x69, 0x66, 0x79, 0x12, 0x31, 0x0a, 0x06, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, - 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x06, - 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x22, 0x22, 0x0a, 0x0e, 0x52, 0x65, - 0x71, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, - 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x55, 0x69, 0x64, 0x22, 0x4a, - 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, - 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, - 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, - 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x22, 0x0a, 0x0e, 0x52, 0x65, - 0x71, 0x41, 0x67, 0x72, 0x65, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, - 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x55, 0x69, 0x64, 0x22, 0x8f, - 0x01, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x41, 0x67, 0x72, 0x65, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, - 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, - 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x55, - 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x55, 0x69, 0x64, 0x12, 0x31, 0x0a, - 0x06, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, - 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x06, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, - 0x22, 0x23, 0x0a, 0x0f, 0x52, 0x65, 0x71, 0x52, 0x65, 0x66, 0x75, 0x73, 0x65, 0x46, 0x72, 0x69, - 0x65, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x03, 0x55, 0x69, 0x64, 0x22, 0x5d, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x52, 0x65, 0x66, 0x75, - 0x73, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, - 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, - 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, - 0x73, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x03, 0x55, 0x69, 0x64, 0x22, 0x20, 0x0a, 0x0c, 0x52, 0x65, 0x71, 0x44, 0x65, 0x6c, 0x46, 0x72, - 0x69, 0x65, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x03, 0x55, 0x69, 0x64, 0x22, 0x5a, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x44, 0x65, 0x6c, - 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, - 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, - 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, - 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x55, - 0x69, 0x64, 0x22, 0x1d, 0x0a, 0x07, 0x52, 0x65, 0x71, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x12, 0x0a, - 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, - 0x65, 0x22, 0xb2, 0x01, 0x0a, 0x07, 0x52, 0x65, 0x73, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x12, 0x0a, - 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x3b, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, - 0x65, 0x73, 0x52, 0x61, 0x6e, 0x6b, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x1a, 0x56, - 0x0a, 0x0d, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x19, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x50, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x0d, 0x0a, 0x0b, 0x52, 0x65, 0x71, 0x4d, 0x61, 0x69, - 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x9f, 0x01, 0x0a, 0x0b, 0x52, 0x65, 0x73, 0x4d, 0x61, 0x69, - 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x08, 0x4d, 0x61, 0x69, 0x6c, 0x4c, 0x69, 0x73, - 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, - 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x4d, 0x61, 0x69, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x2e, 0x4d, - 0x61, 0x69, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x4d, 0x61, - 0x69, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x1a, 0x4f, 0x0a, 0x0d, 0x4d, 0x61, 0x69, 0x6c, 0x4c, 0x69, - 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x28, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, - 0x69, 0x61, 0x6c, 0x2e, 0x4d, 0x61, 0x69, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x90, 0x01, 0x0a, 0x08, 0x4d, 0x61, 0x69, 0x6c, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x6f, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, 0x6f, 0x6e, - 0x74, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x12, 0x28, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x1d, 0x0a, 0x0b, 0x52, 0x65, - 0x71, 0x52, 0x65, 0x61, 0x64, 0x4d, 0x61, 0x69, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x47, 0x0a, 0x0b, 0x52, 0x65, 0x73, - 0x52, 0x65, 0x61, 0x64, 0x4d, 0x61, 0x69, 0x6c, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, - 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, - 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, - 0x73, 0x67, 0x22, 0x22, 0x0a, 0x10, 0x52, 0x65, 0x71, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x69, 0x6c, - 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x4c, 0x0a, 0x10, 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, - 0x4d, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, - 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, - 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, - 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x4d, 0x73, 0x67, 0x22, 0x1f, 0x0a, 0x0d, 0x52, 0x65, 0x71, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x4d, 0x61, 0x69, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x49, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x4d, 0x61, 0x69, 0x6c, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, - 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, - 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, - 0x22, 0xa1, 0x04, 0x0a, 0x09, 0x52, 0x65, 0x73, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, - 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, - 0x46, 0x69, 0x72, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x46, 0x69, 0x72, - 0x73, 0x74, 0x12, 0x46, 0x0a, 0x0b, 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 0x53, 0x68, 0x6f, - 0x70, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, - 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x2e, 0x53, 0x70, 0x65, - 0x63, 0x69, 0x61, 0x6c, 0x53, 0x68, 0x6f, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x53, - 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 0x53, 0x68, 0x6f, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, - 0x65, 0x65, 0x53, 0x68, 0x6f, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, - 0x65, 0x65, 0x53, 0x68, 0x6f, 0x70, 0x12, 0x40, 0x0a, 0x09, 0x43, 0x68, 0x65, 0x73, 0x73, 0x53, - 0x68, 0x6f, 0x70, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x75, 0x74, 0x6f, - 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x2e, 0x43, - 0x68, 0x65, 0x73, 0x73, 0x53, 0x68, 0x6f, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x43, - 0x68, 0x65, 0x73, 0x73, 0x53, 0x68, 0x6f, 0x70, 0x12, 0x31, 0x0a, 0x04, 0x47, 0x69, 0x66, 0x74, - 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, - 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x2e, 0x47, 0x69, 0x66, 0x74, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x47, 0x69, 0x66, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x41, - 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x41, 0x64, 0x1a, 0x58, 0x0a, 0x10, 0x53, - 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 0x53, 0x68, 0x6f, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x18, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x53, - 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 0x53, 0x68, 0x6f, 0x70, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x54, 0x0a, 0x0e, 0x43, 0x68, 0x65, 0x73, 0x73, 0x53, 0x68, - 0x6f, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, - 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x43, 0x68, 0x65, 0x73, 0x73, 0x53, 0x68, 0x6f, 0x70, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x37, 0x0a, 0x09, 0x47, - 0x69, 0x66, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3c, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x53, 0x70, 0x65, 0x63, 0x69, - 0x61, 0x6c, 0x53, 0x68, 0x6f, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x22, 0x58, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x43, 0x68, 0x65, 0x73, 0x73, 0x53, 0x68, - 0x6f, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x07, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x68, 0x65, 0x73, 0x73, 0x49, 0x64, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x07, 0x43, 0x68, 0x65, 0x73, 0x73, 0x49, 0x64, 0x22, 0x0d, 0x0a, 0x0b, - 0x52, 0x65, 0x71, 0x46, 0x72, 0x65, 0x65, 0x53, 0x68, 0x6f, 0x70, 0x22, 0x47, 0x0a, 0x0b, 0x52, - 0x65, 0x73, 0x46, 0x72, 0x65, 0x65, 0x53, 0x68, 0x6f, 0x70, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, - 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, - 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, - 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x4d, 0x73, 0x67, 0x22, 0x21, 0x0a, 0x0f, 0x52, 0x65, 0x71, 0x42, 0x75, 0x79, 0x43, 0x68, - 0x65, 0x73, 0x73, 0x53, 0x68, 0x6f, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x4b, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x42, 0x75, - 0x79, 0x43, 0x68, 0x65, 0x73, 0x73, 0x53, 0x68, 0x6f, 0x70, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, - 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, - 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, - 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x4d, 0x73, 0x67, 0x22, 0x15, 0x0a, 0x13, 0x52, 0x65, 0x71, 0x52, 0x65, 0x66, 0x72, 0x65, - 0x73, 0x68, 0x43, 0x68, 0x65, 0x73, 0x73, 0x53, 0x68, 0x6f, 0x70, 0x22, 0x4f, 0x0a, 0x13, 0x52, - 0x65, 0x73, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x43, 0x68, 0x65, 0x73, 0x73, 0x53, 0x68, - 0x6f, 0x70, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x61, 0x72, + 0x64, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, + 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x45, 0x78, 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x08, 0x45, 0x78, 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, 0x12, 0x16, 0x0a, + 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x02, 0x49, 0x64, 0x22, 0x2f, 0x0a, 0x05, 0x52, 0x65, 0x71, 0x4b, 0x76, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x67, 0x0a, 0x05, 0x52, 0x65, 0x73, 0x4b, 0x76, 0x12, + 0x27, 0x0a, 0x02, 0x6b, 0x76, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x75, + 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x4b, 0x76, 0x2e, 0x4b, 0x76, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x02, 0x6b, 0x76, 0x1a, 0x35, 0x0a, 0x07, 0x4b, 0x76, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, + 0x14, 0x0a, 0x12, 0x52, 0x65, 0x71, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x63, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x22, 0x43, 0x0a, 0x12, 0x52, 0x65, 0x73, 0x46, 0x72, 0x69, 0x65, + 0x6e, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x12, 0x2d, 0x0a, 0x04, 0x4c, + 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x75, 0x74, 0x6f, + 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x69, + 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x23, 0x0a, 0x0f, 0x52, 0x65, + 0x71, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x12, 0x10, 0x0a, + 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x55, 0x69, 0x64, 0x22, + 0x4b, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x67, 0x6e, 0x6f, + 0x72, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, - 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x0c, 0x0a, 0x0a, - 0x52, 0x65, 0x71, 0x45, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x22, 0xbf, 0x01, 0x0a, 0x0a, 0x52, - 0x65, 0x73, 0x45, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x47, 0x0a, 0x0b, 0x45, 0x6e, 0x64, - 0x6c, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, - 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x45, 0x6e, 0x64, - 0x6c, 0x65, 0x73, 0x73, 0x2e, 0x45, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x45, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x4c, 0x69, - 0x73, 0x74, 0x1a, 0x58, 0x0a, 0x10, 0x45, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, - 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, - 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x45, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x6a, 0x0a, 0x0e, - 0x52, 0x65, 0x73, 0x45, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, - 0x0a, 0x08, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x08, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, - 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x28, - 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, - 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x12, 0x0a, 0x10, 0x52, 0x65, 0x71, 0x45, - 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x22, 0x4c, 0x0a, 0x10, - 0x52, 0x65, 0x73, 0x45, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x0f, 0x0a, 0x0d, + 0x52, 0x65, 0x71, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x4a, 0x0a, + 0x0d, 0x52, 0x65, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x39, + 0x0a, 0x0a, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, + 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x0a, 0x46, + 0x72, 0x69, 0x65, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x10, 0x0a, 0x0e, 0x52, 0x65, 0x71, + 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x22, 0x49, 0x0a, 0x0e, 0x52, + 0x65, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x12, 0x37, 0x0a, + 0x09, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x50, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x09, 0x41, 0x70, 0x70, + 0x6c, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x12, 0x0a, 0x10, 0x52, 0x65, 0x71, 0x46, 0x72, 0x69, + 0x65, 0x6e, 0x64, 0x43, 0x61, 0x72, 0x64, 0x4d, 0x73, 0x67, 0x22, 0x45, 0x0a, 0x10, 0x52, 0x65, + 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x43, 0x61, 0x72, 0x64, 0x4d, 0x73, 0x67, 0x12, 0x31, + 0x0a, 0x07, 0x4d, 0x73, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x17, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x46, 0x72, + 0x69, 0x65, 0x6e, 0x64, 0x43, 0x61, 0x72, 0x64, 0x52, 0x07, 0x4d, 0x73, 0x67, 0x4c, 0x69, 0x73, + 0x74, 0x22, 0x13, 0x0a, 0x11, 0x52, 0x65, 0x71, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x54, 0x69, + 0x6d, 0x65, 0x4c, 0x69, 0x6e, 0x65, 0x22, 0x3d, 0x0a, 0x11, 0x52, 0x65, 0x73, 0x46, 0x72, 0x69, + 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x28, 0x0a, 0x03, 0x4c, + 0x6f, 0x67, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, + 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x4c, 0x6f, 0x67, + 0x52, 0x03, 0x4c, 0x6f, 0x67, 0x22, 0x5d, 0x0a, 0x14, 0x52, 0x65, 0x73, 0x46, 0x72, 0x69, 0x65, + 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x12, 0x31, 0x0a, + 0x06, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x06, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, + 0x54, 0x79, 0x70, 0x65, 0x22, 0x22, 0x0a, 0x0e, 0x52, 0x65, 0x71, 0x41, 0x70, 0x70, 0x6c, 0x79, + 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x03, 0x55, 0x69, 0x64, 0x22, 0x4a, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x41, + 0x70, 0x70, 0x6c, 0x79, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, + 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, + 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, + 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x4d, 0x73, 0x67, 0x22, 0x22, 0x0a, 0x0e, 0x52, 0x65, 0x71, 0x41, 0x67, 0x72, 0x65, 0x65, + 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x03, 0x55, 0x69, 0x64, 0x22, 0x8f, 0x01, 0x0a, 0x0e, 0x52, 0x65, 0x73, + 0x41, 0x67, 0x72, 0x65, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, + 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, + 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, + 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x03, 0x55, 0x69, 0x64, 0x12, 0x31, 0x0a, 0x06, 0x50, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, + 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x69, 0x6d, 0x70, + 0x6c, 0x65, 0x52, 0x06, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x22, 0x23, 0x0a, 0x0f, 0x52, 0x65, + 0x71, 0x52, 0x65, 0x66, 0x75, 0x73, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x10, 0x0a, + 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x55, 0x69, 0x64, 0x22, + 0x5d, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x52, 0x65, 0x66, 0x75, 0x73, 0x65, 0x46, 0x72, 0x69, 0x65, + 0x6e, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, + 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, + 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x10, 0x0a, 0x03, + 0x55, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x55, 0x69, 0x64, 0x22, 0x20, + 0x0a, 0x0c, 0x52, 0x65, 0x71, 0x44, 0x65, 0x6c, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x10, + 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x55, 0x69, 0x64, + 0x22, 0x5a, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x6c, 0x0a, 0x0c, 0x52, 0x65, - 0x73, 0x50, 0x69, 0x67, 0x67, 0x79, 0x42, 0x61, 0x6e, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, - 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, - 0x0a, 0x07, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x07, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x18, - 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x14, 0x0a, 0x12, 0x52, 0x65, 0x71, 0x50, - 0x69, 0x67, 0x67, 0x79, 0x42, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x22, 0x4e, - 0x0a, 0x12, 0x52, 0x65, 0x73, 0x50, 0x69, 0x67, 0x67, 0x79, 0x42, 0x61, 0x6e, 0x6b, 0x52, 0x65, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x55, 0x69, 0x64, 0x22, 0x1d, 0x0a, 0x07, + 0x52, 0x65, 0x71, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x22, 0xb2, 0x01, 0x0a, 0x07, + 0x52, 0x65, 0x73, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3b, 0x0a, 0x08, 0x52, + 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, + 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x52, 0x61, 0x6e, 0x6b, + 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, + 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x1a, 0x56, 0x0a, 0x0d, 0x52, 0x61, 0x6e, 0x6b, + 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2f, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x75, 0x74, + 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, + 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x22, 0x0d, 0x0a, 0x0b, 0x52, 0x65, 0x71, 0x4d, 0x61, 0x69, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x22, + 0x9f, 0x01, 0x0a, 0x0b, 0x52, 0x65, 0x73, 0x4d, 0x61, 0x69, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x12, + 0x3f, 0x0a, 0x08, 0x4d, 0x61, 0x69, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, + 0x4d, 0x61, 0x69, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x2e, 0x4d, 0x61, 0x69, 0x6c, 0x4c, 0x69, 0x73, + 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x4d, 0x61, 0x69, 0x6c, 0x4c, 0x69, 0x73, 0x74, + 0x1a, 0x4f, 0x0a, 0x0d, 0x4d, 0x61, 0x69, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x28, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x4d, 0x61, + 0x69, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x22, 0x90, 0x01, 0x0a, 0x08, 0x4d, 0x61, 0x69, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, + 0x0a, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, + 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x28, 0x0a, 0x05, 0x49, 0x74, + 0x65, 0x6d, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, + 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x49, + 0x74, 0x65, 0x6d, 0x73, 0x22, 0x1d, 0x0a, 0x0b, 0x52, 0x65, 0x71, 0x52, 0x65, 0x61, 0x64, 0x4d, + 0x61, 0x69, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x02, 0x49, 0x64, 0x22, 0x47, 0x0a, 0x0b, 0x52, 0x65, 0x73, 0x52, 0x65, 0x61, 0x64, 0x4d, 0x61, + 0x69, 0x6c, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, + 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, + 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x22, 0x0a, 0x10, + 0x52, 0x65, 0x71, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, + 0x22, 0x4c, 0x0a, 0x10, 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, - 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x64, - 0x0a, 0x10, 0x52, 0x65, 0x71, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, - 0x53, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x49, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x49, 0x64, 0x12, 0x1a, - 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x68, - 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x68, 0x61, - 0x6e, 0x6e, 0x65, 0x6c, 0x22, 0x2c, 0x0a, 0x10, 0x52, 0x65, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x72, 0x64, 0x65, - 0x72, 0x53, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, - 0x53, 0x6e, 0x22, 0x64, 0x0a, 0x10, 0x52, 0x65, 0x71, 0x53, 0x68, 0x69, 0x70, 0x70, 0x69, 0x6e, - 0x67, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, - 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x6e, - 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x61, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x6e, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x50, 0x61, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x6e, - 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x4c, 0x0a, 0x10, 0x52, 0x65, 0x73, 0x53, - 0x68, 0x69, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x26, 0x0a, 0x04, + 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x1f, + 0x0a, 0x0d, 0x52, 0x65, 0x71, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x61, 0x69, 0x6c, 0x12, + 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, + 0x49, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x61, 0x69, 0x6c, + 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, + 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, + 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0xa1, 0x04, 0x0a, 0x09, 0x52, + 0x65, 0x73, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x68, 0x61, 0x72, + 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x05, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x46, 0x69, 0x72, 0x73, 0x74, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x46, 0x69, 0x72, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x0b, + 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 0x53, 0x68, 0x6f, 0x70, 0x18, 0x04, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, + 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x2e, 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 0x53, 0x68, + 0x6f, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, + 0x53, 0x68, 0x6f, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x53, 0x68, 0x6f, 0x70, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, 0x53, 0x68, 0x6f, 0x70, + 0x12, 0x40, 0x0a, 0x09, 0x43, 0x68, 0x65, 0x73, 0x73, 0x53, 0x68, 0x6f, 0x70, 0x18, 0x06, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, + 0x65, 0x73, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x2e, 0x43, 0x68, 0x65, 0x73, 0x73, 0x53, 0x68, + 0x6f, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x43, 0x68, 0x65, 0x73, 0x73, 0x53, 0x68, + 0x6f, 0x70, 0x12, 0x31, 0x0a, 0x04, 0x47, 0x69, 0x66, 0x74, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1d, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x43, + 0x68, 0x61, 0x72, 0x67, 0x65, 0x2e, 0x47, 0x69, 0x66, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x04, 0x47, 0x69, 0x66, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x41, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x02, 0x41, 0x64, 0x1a, 0x58, 0x0a, 0x10, 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, + 0x53, 0x68, 0x6f, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x75, 0x74, + 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, + 0x53, 0x68, 0x6f, 0x70, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, + 0x54, 0x0a, 0x0e, 0x43, 0x68, 0x65, 0x73, 0x73, 0x53, 0x68, 0x6f, 0x70, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, + 0x73, 0x43, 0x68, 0x65, 0x73, 0x73, 0x53, 0x68, 0x6f, 0x70, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x37, 0x0a, 0x09, 0x47, 0x69, 0x66, 0x74, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3c, + 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 0x53, 0x68, 0x6f, 0x70, + 0x12, 0x14, 0x0a, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x58, 0x0a, 0x0c, + 0x52, 0x65, 0x73, 0x43, 0x68, 0x65, 0x73, 0x73, 0x53, 0x68, 0x6f, 0x70, 0x12, 0x18, 0x0a, 0x07, + 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x44, + 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, + 0x43, 0x68, 0x65, 0x73, 0x73, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x43, + 0x68, 0x65, 0x73, 0x73, 0x49, 0x64, 0x22, 0x0d, 0x0a, 0x0b, 0x52, 0x65, 0x71, 0x46, 0x72, 0x65, + 0x65, 0x53, 0x68, 0x6f, 0x70, 0x22, 0x47, 0x0a, 0x0b, 0x52, 0x65, 0x73, 0x46, 0x72, 0x65, 0x65, + 0x53, 0x68, 0x6f, 0x70, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, + 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, + 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x21, + 0x0a, 0x0f, 0x52, 0x65, 0x71, 0x42, 0x75, 0x79, 0x43, 0x68, 0x65, 0x73, 0x73, 0x53, 0x68, 0x6f, + 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, + 0x64, 0x22, 0x4b, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x42, 0x75, 0x79, 0x43, 0x68, 0x65, 0x73, 0x73, + 0x53, 0x68, 0x6f, 0x70, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, + 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, + 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x15, + 0x0a, 0x13, 0x52, 0x65, 0x71, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x43, 0x68, 0x65, 0x73, + 0x73, 0x53, 0x68, 0x6f, 0x70, 0x22, 0x4f, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x52, 0x65, 0x66, 0x72, + 0x65, 0x73, 0x68, 0x43, 0x68, 0x65, 0x73, 0x73, 0x53, 0x68, 0x6f, 0x70, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x0e, 0x0a, 0x0c, 0x52, 0x65, 0x71, 0x43, 0x68, 0x61, - 0x6d, 0x70, 0x73, 0x68, 0x69, 0x70, 0x22, 0xa2, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x43, 0x68, - 0x61, 0x6d, 0x70, 0x73, 0x68, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x16, 0x0a, - 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, - 0x16, 0x0a, 0x06, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x61, 0x6e, 0x6b, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x1e, 0x0a, 0x0a, 0x52, - 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0a, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x22, 0x14, 0x0a, 0x12, 0x52, - 0x65, 0x71, 0x43, 0x68, 0x61, 0x6d, 0x70, 0x73, 0x68, 0x69, 0x70, 0x52, 0x65, 0x77, 0x61, 0x72, - 0x64, 0x22, 0x4e, 0x0a, 0x12, 0x52, 0x65, 0x73, 0x43, 0x68, 0x61, 0x6d, 0x70, 0x73, 0x68, 0x69, - 0x70, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, - 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, - 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, - 0x67, 0x22, 0x18, 0x0a, 0x16, 0x52, 0x65, 0x71, 0x43, 0x68, 0x61, 0x6d, 0x70, 0x73, 0x68, 0x69, - 0x70, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x22, 0x52, 0x0a, 0x16, 0x52, - 0x65, 0x73, 0x43, 0x68, 0x61, 0x6d, 0x70, 0x73, 0x68, 0x69, 0x70, 0x52, 0x61, 0x6e, 0x6b, 0x52, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, - 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, - 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, - 0x12, 0x0a, 0x10, 0x52, 0x65, 0x71, 0x43, 0x68, 0x61, 0x6d, 0x70, 0x73, 0x68, 0x69, 0x70, 0x52, - 0x61, 0x6e, 0x6b, 0x22, 0xe0, 0x01, 0x0a, 0x10, 0x52, 0x65, 0x73, 0x43, 0x68, 0x61, 0x6d, 0x70, - 0x73, 0x68, 0x69, 0x70, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x44, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, - 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x75, 0x74, - 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x43, 0x68, 0x61, 0x6d, 0x70, 0x73, 0x68, - 0x69, 0x70, 0x52, 0x61, 0x6e, 0x6b, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, - 0x0a, 0x06, 0x4d, 0x79, 0x52, 0x61, 0x6e, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, - 0x4d, 0x79, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x79, 0x53, 0x63, 0x6f, 0x72, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x07, 0x4d, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, - 0x1a, 0x54, 0x0a, 0x0d, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 0x2d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, - 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x15, 0x0a, 0x13, 0x52, 0x65, 0x71, 0x43, 0x68, 0x61, - 0x6d, 0x70, 0x73, 0x68, 0x69, 0x70, 0x50, 0x72, 0x65, 0x52, 0x61, 0x6e, 0x6b, 0x22, 0xe6, 0x01, - 0x0a, 0x13, 0x52, 0x65, 0x73, 0x43, 0x68, 0x61, 0x6d, 0x70, 0x73, 0x68, 0x69, 0x70, 0x50, 0x72, - 0x65, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x47, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, - 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, - 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x43, 0x68, 0x61, 0x6d, 0x70, 0x73, 0x68, 0x69, 0x70, 0x50, - 0x72, 0x65, 0x52, 0x61, 0x6e, 0x6b, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, - 0x0a, 0x06, 0x4d, 0x79, 0x52, 0x61, 0x6e, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, - 0x4d, 0x79, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x79, 0x53, 0x63, 0x6f, 0x72, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x07, 0x4d, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, - 0x1a, 0x54, 0x0a, 0x0d, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 0x2d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, - 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x8f, 0x02, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x4e, 0x6f, - 0x74, 0x69, 0x66, 0x79, 0x43, 0x61, 0x72, 0x64, 0x12, 0x35, 0x0a, 0x04, 0x43, 0x61, 0x72, 0x64, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, - 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x43, 0x61, 0x72, 0x64, 0x2e, - 0x43, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x43, 0x61, 0x72, 0x64, 0x12, - 0x3b, 0x0a, 0x06, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x23, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x4e, 0x6f, - 0x74, 0x69, 0x66, 0x79, 0x43, 0x61, 0x72, 0x64, 0x2e, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, - 0x45, 0x78, 0x53, 0x74, 0x61, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x45, 0x78, - 0x53, 0x74, 0x61, 0x72, 0x1a, 0x37, 0x0a, 0x09, 0x43, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x39, 0x0a, - 0x0b, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x2a, 0x42, 0x0a, 0x0b, 0x48, 0x41, 0x4e, 0x44, - 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x44, 0x44, 0x10, 0x00, - 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x4f, 0x4d, 0x50, 0x4f, 0x53, 0x45, 0x10, 0x01, 0x12, 0x07, 0x0a, - 0x03, 0x42, 0x55, 0x59, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x45, 0x4c, 0x4c, 0x10, 0x03, - 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x10, 0x04, 0x2a, 0x21, 0x0a, 0x08, - 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x41, 0x49, 0x4c, - 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x01, 0x2a, - 0x2e, 0x0a, 0x09, 0x49, 0x54, 0x45, 0x4d, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x12, 0x0a, 0x0a, 0x06, - 0x45, 0x4e, 0x45, 0x52, 0x47, 0x59, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x54, 0x41, 0x52, - 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x49, 0x41, 0x4d, 0x4f, 0x4e, 0x44, 0x10, 0x02, 0x42, - 0x08, 0x5a, 0x06, 0x2e, 0x2e, 0x2f, 0x6d, 0x73, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, + 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x0c, 0x0a, 0x0a, 0x52, 0x65, 0x71, 0x45, 0x6e, 0x64, + 0x6c, 0x65, 0x73, 0x73, 0x22, 0xbf, 0x01, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x45, 0x6e, 0x64, 0x6c, + 0x65, 0x73, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x02, 0x49, 0x64, 0x12, 0x47, 0x0a, 0x0b, 0x45, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x4c, 0x69, + 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, + 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x45, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x2e, 0x45, + 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x0b, 0x45, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x1a, 0x58, 0x0a, 0x10, + 0x45, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, + 0x45, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x6a, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x45, 0x6e, 0x64, + 0x6c, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x68, 0x61, 0x72, + 0x67, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x68, 0x61, 0x72, + 0x67, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x28, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, + 0x61, 0x6c, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x49, 0x74, 0x65, + 0x6d, 0x73, 0x22, 0x12, 0x0a, 0x10, 0x52, 0x65, 0x71, 0x45, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x73, + 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x22, 0x4c, 0x0a, 0x10, 0x52, 0x65, 0x73, 0x45, 0x6e, 0x64, + 0x6c, 0x65, 0x73, 0x73, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, + 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, + 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, + 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x4d, 0x73, 0x67, 0x22, 0x6c, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x50, 0x69, 0x67, 0x67, 0x79, + 0x42, 0x61, 0x6e, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x44, 0x69, 0x61, 0x6d, + 0x6f, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x44, 0x69, 0x61, 0x6d, 0x6f, + 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, + 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, + 0x6d, 0x65, 0x22, 0x14, 0x0a, 0x12, 0x52, 0x65, 0x71, 0x50, 0x69, 0x67, 0x67, 0x79, 0x42, 0x61, + 0x6e, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x22, 0x4e, 0x0a, 0x12, 0x52, 0x65, 0x73, 0x50, + 0x69, 0x67, 0x67, 0x79, 0x42, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, + 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, + 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, + 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x64, 0x0a, 0x10, 0x52, 0x65, 0x71, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x6e, 0x12, 0x1a, 0x0a, 0x08, + 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, + 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, + 0x46, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, + 0x46, 0x6f, 0x72, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x22, 0x2c, + 0x0a, 0x10, 0x52, 0x65, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, + 0x53, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x6e, 0x22, 0x64, 0x0a, 0x10, + 0x52, 0x65, 0x71, 0x53, 0x68, 0x69, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x4f, 0x72, 0x64, 0x65, 0x72, + 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x61, + 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x50, 0x61, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x22, 0x4c, 0x0a, 0x10, 0x52, 0x65, 0x73, 0x53, 0x68, 0x69, 0x70, 0x70, 0x69, 0x6e, + 0x67, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, + 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, + 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, + 0x22, 0x0e, 0x0a, 0x0c, 0x52, 0x65, 0x71, 0x43, 0x68, 0x61, 0x6d, 0x70, 0x73, 0x68, 0x69, 0x70, + 0x22, 0xa2, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x43, 0x68, 0x61, 0x6d, 0x70, 0x73, 0x68, 0x69, + 0x70, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, + 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x65, 0x72, + 0x69, 0x6f, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x50, 0x65, 0x72, 0x69, 0x6f, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x61, 0x6e, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x04, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x52, 0x61, 0x6e, 0x6b, 0x52, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x22, 0x14, 0x0a, 0x12, 0x52, 0x65, 0x71, 0x43, 0x68, 0x61, 0x6d, + 0x70, 0x73, 0x68, 0x69, 0x70, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x22, 0x4e, 0x0a, 0x12, 0x52, + 0x65, 0x73, 0x43, 0x68, 0x61, 0x6d, 0x70, 0x73, 0x68, 0x69, 0x70, 0x52, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, + 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x18, 0x0a, 0x16, 0x52, + 0x65, 0x71, 0x43, 0x68, 0x61, 0x6d, 0x70, 0x73, 0x68, 0x69, 0x70, 0x52, 0x61, 0x6e, 0x6b, 0x52, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x22, 0x52, 0x0a, 0x16, 0x52, 0x65, 0x73, 0x43, 0x68, 0x61, 0x6d, + 0x70, 0x73, 0x68, 0x69, 0x70, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, + 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, + 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, + 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x12, 0x0a, 0x10, 0x52, 0x65, 0x71, + 0x43, 0x68, 0x61, 0x6d, 0x70, 0x73, 0x68, 0x69, 0x70, 0x52, 0x61, 0x6e, 0x6b, 0x22, 0xe0, 0x01, + 0x0a, 0x10, 0x52, 0x65, 0x73, 0x43, 0x68, 0x61, 0x6d, 0x70, 0x73, 0x68, 0x69, 0x70, 0x52, 0x61, + 0x6e, 0x6b, 0x12, 0x44, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, + 0x52, 0x65, 0x73, 0x43, 0x68, 0x61, 0x6d, 0x70, 0x73, 0x68, 0x69, 0x70, 0x52, 0x61, 0x6e, 0x6b, + 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, + 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x4d, 0x79, 0x52, 0x61, + 0x6e, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4d, 0x79, 0x52, 0x61, 0x6e, 0x6b, + 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x02, 0x52, 0x07, 0x4d, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x1a, 0x54, 0x0a, 0x0d, 0x52, 0x61, + 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2d, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, + 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x22, 0x15, 0x0a, 0x13, 0x52, 0x65, 0x71, 0x43, 0x68, 0x61, 0x6d, 0x70, 0x73, 0x68, 0x69, 0x70, + 0x50, 0x72, 0x65, 0x52, 0x61, 0x6e, 0x6b, 0x22, 0xe6, 0x01, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x43, + 0x68, 0x61, 0x6d, 0x70, 0x73, 0x68, 0x69, 0x70, 0x50, 0x72, 0x65, 0x52, 0x61, 0x6e, 0x6b, 0x12, + 0x47, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, + 0x43, 0x68, 0x61, 0x6d, 0x70, 0x73, 0x68, 0x69, 0x70, 0x50, 0x72, 0x65, 0x52, 0x61, 0x6e, 0x6b, + 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, + 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x4d, 0x79, 0x52, 0x61, + 0x6e, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4d, 0x79, 0x52, 0x61, 0x6e, 0x6b, + 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x02, 0x52, 0x07, 0x4d, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x1a, 0x54, 0x0a, 0x0d, 0x52, 0x61, + 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2d, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, + 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x22, 0x8f, 0x02, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x43, 0x61, + 0x72, 0x64, 0x12, 0x35, 0x0a, 0x04, 0x43, 0x61, 0x72, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x21, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x4e, + 0x6f, 0x74, 0x69, 0x66, 0x79, 0x43, 0x61, 0x72, 0x64, 0x2e, 0x43, 0x61, 0x72, 0x64, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x04, 0x43, 0x61, 0x72, 0x64, 0x12, 0x3b, 0x0a, 0x06, 0x4d, 0x61, 0x73, + 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x75, 0x74, 0x6f, + 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x43, 0x61, + 0x72, 0x64, 0x2e, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, + 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x45, 0x78, 0x53, 0x74, 0x61, 0x72, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x45, 0x78, 0x53, 0x74, 0x61, 0x72, 0x1a, 0x37, + 0x0a, 0x09, 0x43, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x4d, 0x61, 0x73, 0x74, 0x65, + 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x22, 0x25, 0x0a, 0x11, 0x52, 0x65, 0x71, 0x53, 0x65, 0x74, 0x46, 0x61, 0x63, 0x65, + 0x62, 0x6f, 0x6f, 0x6b, 0x55, 0x72, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x72, 0x6c, 0x22, 0x4d, 0x0a, 0x11, 0x52, 0x65, 0x73, + 0x53, 0x65, 0x74, 0x46, 0x61, 0x63, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x55, 0x72, 0x6c, 0x12, 0x26, + 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, + 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, + 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x2b, 0x0a, 0x13, 0x52, 0x65, 0x71, 0x49, + 0x6e, 0x76, 0x69, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, + 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, + 0x64, 0x77, 0x55, 0x69, 0x6e, 0x22, 0x4b, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x49, 0x6e, 0x76, 0x69, + 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, + 0x49, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x49, + 0x64, 0x4c, 0x69, 0x73, 0x74, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x64, + 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x64, + 0x65, 0x78, 0x22, 0x2e, 0x0a, 0x0e, 0x52, 0x65, 0x71, 0x53, 0x65, 0x6c, 0x66, 0x49, 0x6e, 0x76, + 0x69, 0x74, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x72, 0x49, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x72, + 0x49, 0x64, 0x22, 0x30, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x53, 0x65, 0x6c, 0x66, 0x49, 0x6e, 0x76, + 0x69, 0x74, 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, + 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x43, 0x6f, 0x64, 0x65, 0x22, 0x50, 0x0a, 0x14, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x49, 0x6e, + 0x76, 0x69, 0x74, 0x65, 0x64, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x1e, 0x0a, 0x0a, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x49, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x49, + 0x64, 0x4c, 0x69, 0x73, 0x74, 0x73, 0x22, 0x30, 0x0a, 0x12, 0x52, 0x65, 0x71, 0x47, 0x65, 0x74, + 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, + 0x47, 0x65, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, + 0x47, 0x65, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x34, 0x0a, 0x12, 0x52, 0x65, 0x73, 0x47, + 0x65, 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1e, + 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x28, + 0x0a, 0x16, 0x52, 0x65, 0x71, 0x41, 0x75, 0x74, 0x6f, 0x41, 0x64, 0x64, 0x49, 0x6e, 0x76, 0x69, + 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x22, 0x38, 0x0a, 0x16, 0x52, 0x65, 0x73, 0x41, + 0x75, 0x74, 0x6f, 0x41, 0x64, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, + 0x6e, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, + 0x64, 0x65, 0x2a, 0x42, 0x0a, 0x0b, 0x48, 0x41, 0x4e, 0x44, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x44, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x4f, + 0x4d, 0x50, 0x4f, 0x53, 0x45, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x42, 0x55, 0x59, 0x10, 0x02, + 0x12, 0x08, 0x0a, 0x04, 0x53, 0x45, 0x4c, 0x4c, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x45, + 0x4d, 0x4f, 0x56, 0x45, 0x10, 0x04, 0x2a, 0x21, 0x0a, 0x08, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, + 0x44, 0x45, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x41, 0x49, 0x4c, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, + 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x01, 0x2a, 0x2e, 0x0a, 0x09, 0x49, 0x54, 0x45, + 0x4d, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x4e, 0x45, 0x52, 0x47, 0x59, + 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x54, 0x41, 0x52, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, + 0x44, 0x49, 0x41, 0x4d, 0x4f, 0x4e, 0x44, 0x10, 0x02, 0x42, 0x08, 0x5a, 0x06, 0x2e, 0x2e, 0x2f, + 0x6d, 0x73, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -35314,7 +35444,7 @@ func file_Gameapi_proto_rawDescGZIP() []byte { } var file_Gameapi_proto_enumTypes = make([]protoimpl.EnumInfo, 4) -var file_Gameapi_proto_msgTypes = make([]protoimpl.MessageInfo, 616) +var file_Gameapi_proto_msgTypes = make([]protoimpl.MessageInfo, 619) var file_Gameapi_proto_goTypes = []any{ (HANDLE_TYPE)(0), // 0: tutorial.HANDLE_TYPE (RES_CODE)(0), // 1: tutorial.RES_CODE @@ -35599,410 +35729,413 @@ var file_Gameapi_proto_goTypes = []any{ (*ResDeleteFriend)(nil), // 280: tutorial.ResDeleteFriend (*ReqAutoFBAddFriend)(nil), // 281: tutorial.ReqAutoFBAddFriend (*ResAutoFBAddFriend)(nil), // 282: tutorial.ResAutoFBAddFriend - (*ReqAutoAddInviteFriend)(nil), // 283: tutorial.ReqAutoAddInviteFriend - (*ResAutoAddInviteFriend)(nil), // 284: tutorial.ResAutoAddInviteFriend - (*NotifySuccessInviteAddFriend)(nil), // 285: tutorial.NotifySuccessInviteAddFriend - (*NotifySuccessFBAddFriend)(nil), // 286: tutorial.NotifySuccessFBAddFriend - (*ReqRecommendFriendList)(nil), // 287: tutorial.ReqRecommendFriendList - (*ResRecommendFriendList)(nil), // 288: tutorial.ResRecommendFriendList - (*ReqInviteFriendData)(nil), // 289: tutorial.ReqInviteFriendData - (*ResInviteFriendData)(nil), // 290: tutorial.ResInviteFriendData - (*ReqSelfInvited)(nil), // 291: tutorial.ReqSelfInvited - (*ResSelfInvited)(nil), // 292: tutorial.ResSelfInvited - (*NotifyInvitedSuccess)(nil), // 293: tutorial.NotifyInvitedSuccess - (*ReqGetInviteReward)(nil), // 294: tutorial.ReqGetInviteReward - (*ResGetInviteReward)(nil), // 295: tutorial.ResGetInviteReward - (*ReqFriendTreasureData)(nil), // 296: tutorial.ReqFriendTreasureData - (*ResFriendTreasureData)(nil), // 297: tutorial.ResFriendTreasureData - (*ReqUpdateFriendStar)(nil), // 298: tutorial.ReqUpdateFriendStar - (*ResUpdateFriendStar)(nil), // 299: tutorial.ResUpdateFriendStar - (*NotifyFriendTreasureStar)(nil), // 300: tutorial.NotifyFriendTreasureStar - (*ExchangeCardItem)(nil), // 301: tutorial.ExchangeCardItem - (*ReqExchangeCardBoxData)(nil), // 302: tutorial.ReqExchangeCardBoxData - (*ResExchangeCardBoxData)(nil), // 303: tutorial.ResExchangeCardBoxData - (*NotifyCardDailyRenew)(nil), // 304: tutorial.NotifyCardDailyRenew - (*ReqDonateFriendCard)(nil), // 305: tutorial.ReqDonateFriendCard - (*ResDonateFriendCard)(nil), // 306: tutorial.ResDonateFriendCard - (*NotifyDonateFriendCard)(nil), // 307: tutorial.NotifyDonateFriendCard - (*ReqGetDonateCard)(nil), // 308: tutorial.ReqGetDonateCard - (*NotifyGetDonateCard)(nil), // 309: tutorial.NotifyGetDonateCard - (*ResGetDonateCard)(nil), // 310: tutorial.ResGetDonateCard - (*ReqRefuseExchange)(nil), // 311: tutorial.ReqRefuseExchange - (*ResRefuseExchange)(nil), // 312: tutorial.ResRefuseExchange - (*NOtifyRefuseExchange)(nil), // 313: tutorial.NOtifyRefuseExchange - (*ReqExchangeCard)(nil), // 314: tutorial.ReqExchangeCard - (*ResExchangeCard)(nil), // 315: tutorial.ResExchangeCard - (*NotifyExchangeTimeOut)(nil), // 316: tutorial.NotifyExchangeTimeOut - (*NotifyExchangeCard)(nil), // 317: tutorial.NotifyExchangeCard - (*ReqReceiptCard)(nil), // 318: tutorial.ReqReceiptCard - (*ResReceiptCard)(nil), // 319: tutorial.ResReceiptCard - (*NotifyReceiptCard)(nil), // 320: tutorial.NotifyReceiptCard - (*ReqCompleteExchangeCard)(nil), // 321: tutorial.ReqCompleteExchangeCard - (*ResCompleteExchangeCard)(nil), // 322: tutorial.ResCompleteExchangeCard - (*NotifyCompleteExchangeCard)(nil), // 323: tutorial.NotifyCompleteExchangeCard - (*ReqGetExchangeCard)(nil), // 324: tutorial.ReqGetExchangeCard - (*NotifyGetExchangeCard)(nil), // 325: tutorial.NotifyGetExchangeCard - (*ResGetExchangeCard)(nil), // 326: tutorial.ResGetExchangeCard - (*NotifyDeleteGoldCardSwap)(nil), // 327: tutorial.NotifyDeleteGoldCardSwap - (*NotifyRequestTimeOut)(nil), // 328: tutorial.NotifyRequestTimeOut - (*ReqRequestCard)(nil), // 329: tutorial.ReqRequestCard - (*ResRequestCard)(nil), // 330: tutorial.ResRequestCard - (*NotifyRequestCard)(nil), // 331: tutorial.NotifyRequestCard - (*ReqCompleteRequestCard)(nil), // 332: tutorial.ReqCompleteRequestCard - (*ResCompleteRequestCard)(nil), // 333: tutorial.ResCompleteRequestCard - (*NotifyHaveFriendCompleteReq)(nil), // 334: tutorial.NotifyHaveFriendCompleteReq - (*NotifyCompleteRequestCard)(nil), // 335: tutorial.NotifyCompleteRequestCard - (*ReqRefuseRequestCard)(nil), // 336: tutorial.ReqRefuseRequestCard - (*ResRefuseRequestCard)(nil), // 337: tutorial.ResRefuseRequestCard - (*NotifyRefuseRequestCard)(nil), // 338: tutorial.NotifyRefuseRequestCard - (*ReqGetRequestCard)(nil), // 339: tutorial.ReqGetRequestCard - (*ResGetRequestCard)(nil), // 340: tutorial.ResGetRequestCard - (*ReqBindFacebookAccount)(nil), // 341: tutorial.ReqBindFacebookAccount - (*ResBindFacebookAccount)(nil), // 342: tutorial.ResBindFacebookAccount - (*ReqOnlyBindFacebook)(nil), // 343: tutorial.ReqOnlyBindFacebook - (*ResOnlyBindFacebook)(nil), // 344: tutorial.ResOnlyBindFacebook - (*ReqUnBindFacebook)(nil), // 345: tutorial.ReqUnBindFacebook - (*ResUnBindFacebook)(nil), // 346: tutorial.ResUnBindFacebook - (*ReqSynGameData)(nil), // 347: tutorial.ReqSynGameData - (*ResSynGameData)(nil), // 348: tutorial.ResSynGameData - (*ReqFriendEventData)(nil), // 349: tutorial.ReqFriendEventData - (*FriendEventData)(nil), // 350: tutorial.FriendEventData - (*ResFriendEventData)(nil), // 351: tutorial.ResFriendEventData - (*NotifyNewFriendEvent)(nil), // 352: tutorial.NotifyNewFriendEvent - (*NotifyFriendEventComplete)(nil), // 353: tutorial.NotifyFriendEventComplete - (*ReqUpdatePetProfile)(nil), // 354: tutorial.ReqUpdatePetProfile - (*ResUpdatePetProfile)(nil), // 355: tutorial.ResUpdatePetProfile - (*ReqPlayerPetData)(nil), // 356: tutorial.ReqPlayerPetData - (*ResPlayerPetData)(nil), // 357: tutorial.ResPlayerPetData - (*PetHomeInterActST)(nil), // 358: tutorial.PetHomeInterActST - (*ReqPetHomeData)(nil), // 359: tutorial.ReqPetHomeData - (*ResPetHomeData)(nil), // 360: tutorial.ResPetHomeData - (*ReqUnlockDecorate)(nil), // 361: tutorial.ReqUnlockDecorate - (*ResUnlockDecorate)(nil), // 362: tutorial.ResUnlockDecorate - (*ReqSaveSelectDecorate)(nil), // 363: tutorial.ReqSaveSelectDecorate - (*ResSaveSelectDecorate)(nil), // 364: tutorial.ResSaveSelectDecorate - (*NotifyPetGoHome)(nil), // 365: tutorial.NotifyPetGoHome - (*NotifyPetLeave)(nil), // 366: tutorial.NotifyPetLeave - (*ReqOpenOtherPetHome)(nil), // 367: tutorial.ReqOpenOtherPetHome - (*ResOpenOtherPetHome)(nil), // 368: tutorial.ResOpenOtherPetHome - (*ReqCompleteMiniGame)(nil), // 369: tutorial.ReqCompleteMiniGame - (*ResCompleteMiniGame)(nil), // 370: tutorial.ResCompleteMiniGame - (*ReqOpenSelfPet)(nil), // 371: tutorial.ReqOpenSelfPet - (*ResOpenSelfPet)(nil), // 372: tutorial.ResOpenSelfPet - (*NotifyPetWorkEnd)(nil), // 373: tutorial.NotifyPetWorkEnd - (*ReqPetHomeInterActST)(nil), // 374: tutorial.ReqPetHomeInterActST - (*ResPetHomeInterActST)(nil), // 375: tutorial.ResPetHomeInterActST - (*ReqShiftVisitPet)(nil), // 376: tutorial.ReqShiftVisitPet - (*ResShiftVisitPet)(nil), // 377: tutorial.ResShiftVisitPet - (*ReqCallBackPet)(nil), // 378: tutorial.ReqCallBackPet - (*ResCallBackPet)(nil), // 379: tutorial.ResCallBackPet - (*IntPack)(nil), // 380: tutorial.IntPack - (*Item)(nil), // 381: tutorial.Item - (*UseItemRequest)(nil), // 382: tutorial.UseItemRequest - (*UseItemResponse)(nil), // 383: tutorial.UseItemResponse - (*Hello)(nil), // 384: tutorial.Hello - (*ReqSetEnergyMul)(nil), // 385: tutorial.ReqSetEnergyMul - (*ResSetEnergyMul)(nil), // 386: tutorial.ResSetEnergyMul - (*BaseInfo)(nil), // 387: tutorial.BaseInfo - (*ReqUserInfo)(nil), // 388: tutorial.ReqUserInfo - (*UserInfo)(nil), // 389: tutorial.UserInfo - (*ReqSetName)(nil), // 390: tutorial.ReqSetName - (*ResSetName)(nil), // 391: tutorial.ResSetName - (*ReqBuyEnergy)(nil), // 392: tutorial.ReqBuyEnergy - (*ResBuyEnergy)(nil), // 393: tutorial.ResBuyEnergy - (*ReqGetHandbookReward)(nil), // 394: tutorial.ReqGetHandbookReward - (*HandbookInfo)(nil), // 395: tutorial.HandbookInfo - (*Handbook)(nil), // 396: tutorial.Handbook - (*ResGetHandbookReward)(nil), // 397: tutorial.ResGetHandbookReward - (*ReqRewardOrder)(nil), // 398: tutorial.ReqRewardOrder - (*ResRewardOrder)(nil), // 399: tutorial.ResRewardOrder - (*Order)(nil), // 400: tutorial.Order - (*ResOrderList)(nil), // 401: tutorial.ResOrderList - (*ResDecorateInfo)(nil), // 402: tutorial.ResDecorateInfo - (*ReqDecorate)(nil), // 403: tutorial.ReqDecorate - (*ResDecorate)(nil), // 404: tutorial.ResDecorate - (*ReqDecorateAll)(nil), // 405: tutorial.ReqDecorateAll - (*ResDecorateAll)(nil), // 406: tutorial.ResDecorateAll - (*ReqGmCommand)(nil), // 407: tutorial.ReqGmCommand - (*Card)(nil), // 408: tutorial.Card - (*ResCardInfo)(nil), // 409: tutorial.ResCardInfo - (*ReqMasterCard)(nil), // 410: tutorial.ReqMasterCard - (*ResMasterCard)(nil), // 411: tutorial.ResMasterCard - (*ReqCardCollectReward)(nil), // 412: tutorial.ReqCardCollectReward - (*ResCardCollectReward)(nil), // 413: tutorial.ResCardCollectReward - (*ReqExStarReward)(nil), // 414: tutorial.ReqExStarReward - (*ResExStarReward)(nil), // 415: tutorial.ResExStarReward - (*ReqAllCollectReward)(nil), // 416: tutorial.ReqAllCollectReward - (*ResAllCollectReward)(nil), // 417: tutorial.ResAllCollectReward - (*ReqCardGive)(nil), // 418: tutorial.ReqCardGive - (*ResCardGive)(nil), // 419: tutorial.ResCardGive - (*ReqAgreeCardGive)(nil), // 420: tutorial.ReqAgreeCardGive - (*ResAgreeCardGive)(nil), // 421: tutorial.ResAgreeCardGive - (*ReqRefuseCardGive)(nil), // 422: tutorial.ReqRefuseCardGive - (*ResRefuseCardGive)(nil), // 423: tutorial.ResRefuseCardGive - (*ReqCardSend)(nil), // 424: tutorial.ReqCardSend - (*ResCardSend)(nil), // 425: tutorial.ResCardSend - (*ReqCardExchange)(nil), // 426: tutorial.ReqCardExchange - (*ResCardExchange)(nil), // 427: tutorial.ResCardExchange - (*ReqSelectCardExchange)(nil), // 428: tutorial.ReqSelectCardExchange - (*ResSelectCardExchange)(nil), // 429: tutorial.ResSelectCardExchange - (*ReqAgreeCardExchange)(nil), // 430: tutorial.ReqAgreeCardExchange - (*ResAgreeCardExchange)(nil), // 431: tutorial.ResAgreeCardExchange - (*ReqRefuseCardSelect)(nil), // 432: tutorial.ReqRefuseCardSelect - (*ResRefuseCardSelect)(nil), // 433: tutorial.ResRefuseCardSelect - (*ReqRefuseCardExchange)(nil), // 434: tutorial.ReqRefuseCardExchange - (*ResRefuseCardExchange)(nil), // 435: tutorial.ResRefuseCardExchange - (*ReqGetFriendCard)(nil), // 436: tutorial.ReqGetFriendCard - (*ResGetFriendCard)(nil), // 437: tutorial.ResGetFriendCard - (*ReqGuideReward)(nil), // 438: tutorial.ReqGuideReward - (*ResGuideReward)(nil), // 439: tutorial.ResGuideReward - (*ResGuildInfo)(nil), // 440: tutorial.ResGuildInfo - (*ResItemPop)(nil), // 441: tutorial.ResItemPop - (*ItemInfo)(nil), // 442: tutorial.ItemInfo - (*CardPack)(nil), // 443: tutorial.CardPack - (*ResDailyTask)(nil), // 444: tutorial.ResDailyTask - (*DailyWeek)(nil), // 445: tutorial.DailyWeek - (*DailyTask)(nil), // 446: tutorial.DailyTask - (*QuestProgress)(nil), // 447: tutorial.QuestProgress - (*ReqGetDailyTaskReward)(nil), // 448: tutorial.ReqGetDailyTaskReward - (*ResGetDailyTaskReward)(nil), // 449: tutorial.ResGetDailyTaskReward - (*ReqGetDailyWeekReward)(nil), // 450: tutorial.ReqGetDailyWeekReward - (*ResGetDailyWeekReward)(nil), // 451: tutorial.ResGetDailyWeekReward - (*ResFaceInfo)(nil), // 452: tutorial.ResFaceInfo - (*FaceInfo)(nil), // 453: tutorial.FaceInfo - (*ReqSetFace)(nil), // 454: tutorial.ReqSetFace - (*ResSetFace)(nil), // 455: tutorial.ResSetFace - (*ResAvatarInfo)(nil), // 456: tutorial.ResAvatarInfo - (*AvatarInfo)(nil), // 457: tutorial.AvatarInfo - (*ReqSetAvatar)(nil), // 458: tutorial.ReqSetAvatar - (*ResSetAvatar)(nil), // 459: tutorial.ResSetAvatar - (*ResSevenLogin)(nil), // 460: tutorial.ResSevenLogin - (*SevenLoginReward)(nil), // 461: tutorial.SevenLoginReward - (*ReqGetSevenLoginReward)(nil), // 462: tutorial.ReqGetSevenLoginReward - (*ResGetSevenLoginReward)(nil), // 463: tutorial.ResGetSevenLoginReward - (*ReqGetMonthLoginReward)(nil), // 464: tutorial.ReqGetMonthLoginReward - (*ResGetMonthLoginReward)(nil), // 465: tutorial.ResGetMonthLoginReward - (*ResAcitive)(nil), // 466: tutorial.ResAcitive - (*ActiveInfo)(nil), // 467: tutorial.ActiveInfo - (*ReqLimitEvent)(nil), // 468: tutorial.ReqLimitEvent - (*ResLimitEvent)(nil), // 469: tutorial.ResLimitEvent - (*ResLimitEventProgress)(nil), // 470: tutorial.ResLimitEventProgress - (*ReqLimitEventReward)(nil), // 471: tutorial.ReqLimitEventReward - (*ResLimitEventReward)(nil), // 472: tutorial.ResLimitEventReward - (*LimitEvent)(nil), // 473: tutorial.LimitEvent - (*LimitEventNotify)(nil), // 474: tutorial.LimitEventNotify - (*ReqLimitSenceReward)(nil), // 475: tutorial.ReqLimitSenceReward - (*ResLimitSenceReward)(nil), // 476: tutorial.ResLimitSenceReward - (*ResChessRainReward)(nil), // 477: tutorial.ResChessRainReward - (*ReqFastProduceReward)(nil), // 478: tutorial.ReqFastProduceReward - (*ResFastProduceReward)(nil), // 479: tutorial.ResFastProduceReward - (*ReqSearchPlayer)(nil), // 480: tutorial.ReqSearchPlayer - (*ResSearchPlayer)(nil), // 481: tutorial.ResSearchPlayer - (*ResPlayerSimple)(nil), // 482: tutorial.ResPlayerSimple - (*ResPlayerRank)(nil), // 483: tutorial.ResPlayerRank - (*ResFriendLog)(nil), // 484: tutorial.ResFriendLog - (*NotifyFriendCard)(nil), // 485: tutorial.NotifyFriendCard - (*ResFriendCard)(nil), // 486: tutorial.ResFriendCard - (*ReqKv)(nil), // 487: tutorial.ReqKv - (*ResKv)(nil), // 488: tutorial.ResKv - (*ReqFriendRecommend)(nil), // 489: tutorial.ReqFriendRecommend - (*ResFriendRecommend)(nil), // 490: tutorial.ResFriendRecommend - (*ReqFriendIgnore)(nil), // 491: tutorial.ReqFriendIgnore - (*ResFriendIgnore)(nil), // 492: tutorial.ResFriendIgnore - (*ReqFriendList)(nil), // 493: tutorial.ReqFriendList - (*ResFriendList)(nil), // 494: tutorial.ResFriendList - (*ReqFriendApply)(nil), // 495: tutorial.ReqFriendApply - (*ResFriendApply)(nil), // 496: tutorial.ResFriendApply - (*ReqFriendCardMsg)(nil), // 497: tutorial.ReqFriendCardMsg - (*ResFriendCardMsg)(nil), // 498: tutorial.ResFriendCardMsg - (*ReqFriendTimeLine)(nil), // 499: tutorial.ReqFriendTimeLine - (*ResFriendTimeLine)(nil), // 500: tutorial.ResFriendTimeLine - (*ResFriendApplyNotify)(nil), // 501: tutorial.ResFriendApplyNotify - (*ReqApplyFriend)(nil), // 502: tutorial.ReqApplyFriend - (*ResApplyFriend)(nil), // 503: tutorial.ResApplyFriend - (*ReqAgreeFriend)(nil), // 504: tutorial.ReqAgreeFriend - (*ResAgreeFriend)(nil), // 505: tutorial.ResAgreeFriend - (*ReqRefuseFriend)(nil), // 506: tutorial.ReqRefuseFriend - (*ResRefuseFriend)(nil), // 507: tutorial.ResRefuseFriend - (*ReqDelFriend)(nil), // 508: tutorial.ReqDelFriend - (*ResDelFriend)(nil), // 509: tutorial.ResDelFriend - (*ReqRank)(nil), // 510: tutorial.ReqRank - (*ResRank)(nil), // 511: tutorial.ResRank - (*ReqMailList)(nil), // 512: tutorial.ReqMailList - (*ResMailList)(nil), // 513: tutorial.ResMailList - (*MailInfo)(nil), // 514: tutorial.MailInfo - (*ReqReadMail)(nil), // 515: tutorial.ReqReadMail - (*ResReadMail)(nil), // 516: tutorial.ResReadMail - (*ReqGetMailReward)(nil), // 517: tutorial.ReqGetMailReward - (*ResGetMailReward)(nil), // 518: tutorial.ResGetMailReward - (*ReqDeleteMail)(nil), // 519: tutorial.ReqDeleteMail - (*ResDeleteMail)(nil), // 520: tutorial.ResDeleteMail - (*ResCharge)(nil), // 521: tutorial.ResCharge - (*ResSpecialShop)(nil), // 522: tutorial.ResSpecialShop - (*ResChessShop)(nil), // 523: tutorial.ResChessShop - (*ReqFreeShop)(nil), // 524: tutorial.ReqFreeShop - (*ResFreeShop)(nil), // 525: tutorial.ResFreeShop - (*ReqBuyChessShop)(nil), // 526: tutorial.ReqBuyChessShop - (*ResBuyChessShop)(nil), // 527: tutorial.ResBuyChessShop - (*ReqRefreshChessShop)(nil), // 528: tutorial.ReqRefreshChessShop - (*ResRefreshChessShop)(nil), // 529: tutorial.ResRefreshChessShop - (*ReqEndless)(nil), // 530: tutorial.ReqEndless - (*ResEndless)(nil), // 531: tutorial.ResEndless - (*ResEndlessInfo)(nil), // 532: tutorial.ResEndlessInfo - (*ReqEndlessReward)(nil), // 533: tutorial.ReqEndlessReward - (*ResEndlessReward)(nil), // 534: tutorial.ResEndlessReward - (*ResPiggyBank)(nil), // 535: tutorial.ResPiggyBank - (*ReqPiggyBankReward)(nil), // 536: tutorial.ReqPiggyBankReward - (*ResPiggyBankReward)(nil), // 537: tutorial.ResPiggyBankReward - (*ReqCreateOrderSn)(nil), // 538: tutorial.ReqCreateOrderSn - (*ResCreateOrderSn)(nil), // 539: tutorial.ResCreateOrderSn - (*ReqShippingOrder)(nil), // 540: tutorial.ReqShippingOrder - (*ResShippingOrder)(nil), // 541: tutorial.ResShippingOrder - (*ReqChampship)(nil), // 542: tutorial.ReqChampship - (*ResChampship)(nil), // 543: tutorial.ResChampship - (*ReqChampshipReward)(nil), // 544: tutorial.ReqChampshipReward - (*ResChampshipReward)(nil), // 545: tutorial.ResChampshipReward - (*ReqChampshipRankReward)(nil), // 546: tutorial.ReqChampshipRankReward - (*ResChampshipRankReward)(nil), // 547: tutorial.ResChampshipRankReward - (*ReqChampshipRank)(nil), // 548: tutorial.ReqChampshipRank - (*ResChampshipRank)(nil), // 549: tutorial.ResChampshipRank - (*ReqChampshipPreRank)(nil), // 550: tutorial.ReqChampshipPreRank - (*ResChampshipPreRank)(nil), // 551: tutorial.ResChampshipPreRank - (*ResNotifyCard)(nil), // 552: tutorial.ResNotifyCard - nil, // 553: tutorial.UpdateBaseItemInfo.MUpdateItemEntry - nil, // 554: tutorial.ResPlayerEmitUnlockData.MEmitUnlockDataEntry - nil, // 555: tutorial.NotifyDailyRenewEmitUnlock.MEmitUnlockDataEntry - nil, // 556: tutorial.UpdatePlayerEmitUnlockData.MEmitUnlockDataEntry - nil, // 557: tutorial.ResPlayerPackData.MPackDataEntry - nil, // 558: tutorial.UpdatePlayerPackData.MPackDataEntry - nil, // 559: tutorial.ResPlayerChessData.MChessDataEntry - nil, // 560: tutorial.UpdatePlayerChessData.MChessDataEntry - nil, // 561: tutorial.ReqGetChessFromBuff.MChessDataEntry - nil, // 562: tutorial.ReqChessEx.MChessDataEntry - nil, // 563: tutorial.ReqPutChessInBag.MChessDataEntry - nil, // 564: tutorial.ReqTakeChessOutBag.MChessDataEntry - nil, // 565: tutorial.ResPlayerGiftData.MGiftDataEntry - nil, // 566: tutorial.UpdatePlayerGiftData.MGiftDataEntry - nil, // 567: tutorial.ResPlayerOrderData.MOrderDataEntry - nil, // 568: tutorial.UpdatePlayerOrderData.MOrderDataEntry - nil, // 569: tutorial.ResChessColorData.MChessColorDataEntry - nil, // 570: tutorial.UpdateChessColorData.MChessColorDataEntry - nil, // 571: tutorial.ResEmitMergeMap.MEmitMergeDataEntry - nil, // 572: tutorial.UpdateEmitMergeMap.MEmitMergeDataEntry - nil, // 573: tutorial.ResEmitCountMap.MEmitCountDataEntry - nil, // 574: tutorial.UpdateEmitCountMap.MEmitCountDataEntry - nil, // 575: tutorial.ResEmitCDStartData.MEmitCDDataEntry - nil, // 576: tutorial.NotifyInitEmitCDTimeData.MEmitCDDataEntry - nil, // 577: tutorial.NotifyEmitCDTimeEndData.MEmitCDDataEntry - nil, // 578: tutorial.ResDecorateData.MDecorateDataEntry - nil, // 579: tutorial.UpdateDecorateData.MDecorateDataEntry - nil, // 580: tutorial.ResShopData.MShopTimeBuyDataEntry - nil, // 581: tutorial.ResShopData.MShopSaleBuyDataEntry - nil, // 582: tutorial.ResShopData.MPackBuyDataEntry - nil, // 583: tutorial.ResShopData.MSpecialOfferBuyDataEntry - nil, // 584: tutorial.ResShopData.MUISpecialOfferBuyDataEntry - nil, // 585: tutorial.ResShopData.MFreePackBuyDataEntry - nil, // 586: tutorial.ResShopData.MDiamondFirstBuyDataEntry - nil, // 587: tutorial.NotifyShopStatusChange.MShopTimeBuyDataEntry - nil, // 588: tutorial.ResShopBuy.MShopTimeBuyDataEntry - nil, // 589: tutorial.ReqRenewItemBuyCnt.MShopDataEntry - nil, // 590: tutorial.ResRenewItemBuyCnt.MShopTimeBuyDataEntry - nil, // 591: tutorial.ResKeyValueData.KeyValuesEntry - nil, // 592: tutorial.UpdateKeyValueData.KeyValuesEntry - nil, // 593: tutorial.ResAdPackData.PackDataEntry - nil, // 594: tutorial.NotifyAdPackData.PackDataEntry - nil, // 595: tutorial.ResWatchAdPack.PackDataEntry - nil, // 596: tutorial.ResPetHomeData.SelectDecorateMapEntry - nil, // 597: tutorial.ReqSaveSelectDecorate.SelectDecorateMapEntry - nil, // 598: tutorial.ResSaveSelectDecorate.SelectDecorateMapEntry - nil, // 599: tutorial.ResOpenOtherPetHome.SelectDecorateMapEntry - nil, // 600: tutorial.ResShiftVisitPet.SelectDecorateMapEntry - nil, // 601: tutorial.UseItemRequest.AttrsEntry - nil, // 602: tutorial.UseItemResponse.AttrsEntry - nil, // 603: tutorial.ResCardInfo.AllCardEntry - nil, // 604: tutorial.ResGuildInfo.RewardEntry - nil, // 605: tutorial.ResDailyTask.WeekRewardEntry - nil, // 606: tutorial.ResDailyTask.DailyTaskEntry - nil, // 607: tutorial.ResLimitEvent.LimitEventListEntry - nil, // 608: tutorial.ResLimitEventProgress.ProgressRewardEntry - nil, // 609: tutorial.ResKv.KvEntry - nil, // 610: tutorial.ResRank.RankListEntry - nil, // 611: tutorial.ResMailList.MailListEntry - nil, // 612: tutorial.ResCharge.SpecialShopEntry - nil, // 613: tutorial.ResCharge.ChessShopEntry - nil, // 614: tutorial.ResCharge.GiftEntry - nil, // 615: tutorial.ResEndless.EndlessListEntry - nil, // 616: tutorial.ResChampshipRank.RankListEntry - nil, // 617: tutorial.ResChampshipPreRank.RankListEntry - nil, // 618: tutorial.ResNotifyCard.CardEntry - nil, // 619: tutorial.ResNotifyCard.MasterEntry + (*NotifySuccessInviteAddFriend)(nil), // 283: tutorial.NotifySuccessInviteAddFriend + (*NotifySuccessFBAddFriend)(nil), // 284: tutorial.NotifySuccessFBAddFriend + (*ReqRecommendFriendList)(nil), // 285: tutorial.ReqRecommendFriendList + (*ResRecommendFriendList)(nil), // 286: tutorial.ResRecommendFriendList + (*ReqFriendTreasureData)(nil), // 287: tutorial.ReqFriendTreasureData + (*ResFriendTreasureData)(nil), // 288: tutorial.ResFriendTreasureData + (*ReqUpdateFriendStar)(nil), // 289: tutorial.ReqUpdateFriendStar + (*ResUpdateFriendStar)(nil), // 290: tutorial.ResUpdateFriendStar + (*NotifyFriendTreasureStar)(nil), // 291: tutorial.NotifyFriendTreasureStar + (*ExchangeCardItem)(nil), // 292: tutorial.ExchangeCardItem + (*ReqExchangeCardBoxData)(nil), // 293: tutorial.ReqExchangeCardBoxData + (*ResExchangeCardBoxData)(nil), // 294: tutorial.ResExchangeCardBoxData + (*NotifyCardDailyRenew)(nil), // 295: tutorial.NotifyCardDailyRenew + (*ReqDonateFriendCard)(nil), // 296: tutorial.ReqDonateFriendCard + (*ResDonateFriendCard)(nil), // 297: tutorial.ResDonateFriendCard + (*NotifyDonateFriendCard)(nil), // 298: tutorial.NotifyDonateFriendCard + (*ReqGetDonateCard)(nil), // 299: tutorial.ReqGetDonateCard + (*NotifyGetDonateCard)(nil), // 300: tutorial.NotifyGetDonateCard + (*ResGetDonateCard)(nil), // 301: tutorial.ResGetDonateCard + (*ReqRefuseExchange)(nil), // 302: tutorial.ReqRefuseExchange + (*ResRefuseExchange)(nil), // 303: tutorial.ResRefuseExchange + (*NOtifyRefuseExchange)(nil), // 304: tutorial.NOtifyRefuseExchange + (*ReqExchangeCard)(nil), // 305: tutorial.ReqExchangeCard + (*ResExchangeCard)(nil), // 306: tutorial.ResExchangeCard + (*NotifyExchangeTimeOut)(nil), // 307: tutorial.NotifyExchangeTimeOut + (*NotifyExchangeCard)(nil), // 308: tutorial.NotifyExchangeCard + (*ReqReceiptCard)(nil), // 309: tutorial.ReqReceiptCard + (*ResReceiptCard)(nil), // 310: tutorial.ResReceiptCard + (*NotifyReceiptCard)(nil), // 311: tutorial.NotifyReceiptCard + (*ReqCompleteExchangeCard)(nil), // 312: tutorial.ReqCompleteExchangeCard + (*ResCompleteExchangeCard)(nil), // 313: tutorial.ResCompleteExchangeCard + (*NotifyCompleteExchangeCard)(nil), // 314: tutorial.NotifyCompleteExchangeCard + (*ReqGetExchangeCard)(nil), // 315: tutorial.ReqGetExchangeCard + (*NotifyGetExchangeCard)(nil), // 316: tutorial.NotifyGetExchangeCard + (*ResGetExchangeCard)(nil), // 317: tutorial.ResGetExchangeCard + (*NotifyDeleteGoldCardSwap)(nil), // 318: tutorial.NotifyDeleteGoldCardSwap + (*NotifyRequestTimeOut)(nil), // 319: tutorial.NotifyRequestTimeOut + (*ReqRequestCard)(nil), // 320: tutorial.ReqRequestCard + (*ResRequestCard)(nil), // 321: tutorial.ResRequestCard + (*NotifyRequestCard)(nil), // 322: tutorial.NotifyRequestCard + (*ReqCompleteRequestCard)(nil), // 323: tutorial.ReqCompleteRequestCard + (*ResCompleteRequestCard)(nil), // 324: tutorial.ResCompleteRequestCard + (*NotifyHaveFriendCompleteReq)(nil), // 325: tutorial.NotifyHaveFriendCompleteReq + (*NotifyCompleteRequestCard)(nil), // 326: tutorial.NotifyCompleteRequestCard + (*ReqRefuseRequestCard)(nil), // 327: tutorial.ReqRefuseRequestCard + (*ResRefuseRequestCard)(nil), // 328: tutorial.ResRefuseRequestCard + (*NotifyRefuseRequestCard)(nil), // 329: tutorial.NotifyRefuseRequestCard + (*ReqGetRequestCard)(nil), // 330: tutorial.ReqGetRequestCard + (*ResGetRequestCard)(nil), // 331: tutorial.ResGetRequestCard + (*ReqBindFacebookAccount)(nil), // 332: tutorial.ReqBindFacebookAccount + (*ResBindFacebookAccount)(nil), // 333: tutorial.ResBindFacebookAccount + (*ReqOnlyBindFacebook)(nil), // 334: tutorial.ReqOnlyBindFacebook + (*ResOnlyBindFacebook)(nil), // 335: tutorial.ResOnlyBindFacebook + (*ReqUnBindFacebook)(nil), // 336: tutorial.ReqUnBindFacebook + (*ResUnBindFacebook)(nil), // 337: tutorial.ResUnBindFacebook + (*ReqSynGameData)(nil), // 338: tutorial.ReqSynGameData + (*ResSynGameData)(nil), // 339: tutorial.ResSynGameData + (*ReqFriendEventData)(nil), // 340: tutorial.ReqFriendEventData + (*FriendEventData)(nil), // 341: tutorial.FriendEventData + (*ResFriendEventData)(nil), // 342: tutorial.ResFriendEventData + (*NotifyNewFriendEvent)(nil), // 343: tutorial.NotifyNewFriendEvent + (*NotifyFriendEventComplete)(nil), // 344: tutorial.NotifyFriendEventComplete + (*ReqUpdatePetProfile)(nil), // 345: tutorial.ReqUpdatePetProfile + (*ResUpdatePetProfile)(nil), // 346: tutorial.ResUpdatePetProfile + (*ReqPlayerPetData)(nil), // 347: tutorial.ReqPlayerPetData + (*ResPlayerPetData)(nil), // 348: tutorial.ResPlayerPetData + (*PetHomeInterActST)(nil), // 349: tutorial.PetHomeInterActST + (*ReqPetHomeData)(nil), // 350: tutorial.ReqPetHomeData + (*ResPetHomeData)(nil), // 351: tutorial.ResPetHomeData + (*ReqUnlockDecorate)(nil), // 352: tutorial.ReqUnlockDecorate + (*ResUnlockDecorate)(nil), // 353: tutorial.ResUnlockDecorate + (*ReqSaveSelectDecorate)(nil), // 354: tutorial.ReqSaveSelectDecorate + (*ResSaveSelectDecorate)(nil), // 355: tutorial.ResSaveSelectDecorate + (*NotifyPetGoHome)(nil), // 356: tutorial.NotifyPetGoHome + (*NotifyPetLeave)(nil), // 357: tutorial.NotifyPetLeave + (*ReqOpenOtherPetHome)(nil), // 358: tutorial.ReqOpenOtherPetHome + (*ResOpenOtherPetHome)(nil), // 359: tutorial.ResOpenOtherPetHome + (*ReqCompleteMiniGame)(nil), // 360: tutorial.ReqCompleteMiniGame + (*ResCompleteMiniGame)(nil), // 361: tutorial.ResCompleteMiniGame + (*ReqOpenSelfPet)(nil), // 362: tutorial.ReqOpenSelfPet + (*ResOpenSelfPet)(nil), // 363: tutorial.ResOpenSelfPet + (*NotifyPetWorkEnd)(nil), // 364: tutorial.NotifyPetWorkEnd + (*ReqPetHomeInterActST)(nil), // 365: tutorial.ReqPetHomeInterActST + (*ResPetHomeInterActST)(nil), // 366: tutorial.ResPetHomeInterActST + (*ReqShiftVisitPet)(nil), // 367: tutorial.ReqShiftVisitPet + (*ResShiftVisitPet)(nil), // 368: tutorial.ResShiftVisitPet + (*ReqCallBackPet)(nil), // 369: tutorial.ReqCallBackPet + (*ResCallBackPet)(nil), // 370: tutorial.ResCallBackPet + (*IntPack)(nil), // 371: tutorial.IntPack + (*Item)(nil), // 372: tutorial.Item + (*UseItemRequest)(nil), // 373: tutorial.UseItemRequest + (*UseItemResponse)(nil), // 374: tutorial.UseItemResponse + (*Hello)(nil), // 375: tutorial.Hello + (*ReqSetEnergyMul)(nil), // 376: tutorial.ReqSetEnergyMul + (*ResSetEnergyMul)(nil), // 377: tutorial.ResSetEnergyMul + (*BaseInfo)(nil), // 378: tutorial.BaseInfo + (*ReqUserInfo)(nil), // 379: tutorial.ReqUserInfo + (*UserInfo)(nil), // 380: tutorial.UserInfo + (*ReqSetName)(nil), // 381: tutorial.ReqSetName + (*ResSetName)(nil), // 382: tutorial.ResSetName + (*ReqBuyEnergy)(nil), // 383: tutorial.ReqBuyEnergy + (*ResBuyEnergy)(nil), // 384: tutorial.ResBuyEnergy + (*ReqGetHandbookReward)(nil), // 385: tutorial.ReqGetHandbookReward + (*HandbookInfo)(nil), // 386: tutorial.HandbookInfo + (*Handbook)(nil), // 387: tutorial.Handbook + (*ResGetHandbookReward)(nil), // 388: tutorial.ResGetHandbookReward + (*ReqRewardOrder)(nil), // 389: tutorial.ReqRewardOrder + (*ResRewardOrder)(nil), // 390: tutorial.ResRewardOrder + (*Order)(nil), // 391: tutorial.Order + (*ResOrderList)(nil), // 392: tutorial.ResOrderList + (*ResDecorateInfo)(nil), // 393: tutorial.ResDecorateInfo + (*ReqDecorate)(nil), // 394: tutorial.ReqDecorate + (*ResDecorate)(nil), // 395: tutorial.ResDecorate + (*ReqDecorateAll)(nil), // 396: tutorial.ReqDecorateAll + (*ResDecorateAll)(nil), // 397: tutorial.ResDecorateAll + (*ReqGmCommand)(nil), // 398: tutorial.ReqGmCommand + (*Card)(nil), // 399: tutorial.Card + (*ResCardInfo)(nil), // 400: tutorial.ResCardInfo + (*ReqMasterCard)(nil), // 401: tutorial.ReqMasterCard + (*ResMasterCard)(nil), // 402: tutorial.ResMasterCard + (*ReqCardCollectReward)(nil), // 403: tutorial.ReqCardCollectReward + (*ResCardCollectReward)(nil), // 404: tutorial.ResCardCollectReward + (*ReqExStarReward)(nil), // 405: tutorial.ReqExStarReward + (*ResExStarReward)(nil), // 406: tutorial.ResExStarReward + (*ReqAllCollectReward)(nil), // 407: tutorial.ReqAllCollectReward + (*ResAllCollectReward)(nil), // 408: tutorial.ResAllCollectReward + (*ReqCardGive)(nil), // 409: tutorial.ReqCardGive + (*ResCardGive)(nil), // 410: tutorial.ResCardGive + (*ReqAgreeCardGive)(nil), // 411: tutorial.ReqAgreeCardGive + (*ResAgreeCardGive)(nil), // 412: tutorial.ResAgreeCardGive + (*ReqRefuseCardGive)(nil), // 413: tutorial.ReqRefuseCardGive + (*ResRefuseCardGive)(nil), // 414: tutorial.ResRefuseCardGive + (*ReqCardSend)(nil), // 415: tutorial.ReqCardSend + (*ResCardSend)(nil), // 416: tutorial.ResCardSend + (*ReqCardExchange)(nil), // 417: tutorial.ReqCardExchange + (*ResCardExchange)(nil), // 418: tutorial.ResCardExchange + (*ReqSelectCardExchange)(nil), // 419: tutorial.ReqSelectCardExchange + (*ResSelectCardExchange)(nil), // 420: tutorial.ResSelectCardExchange + (*ReqAgreeCardExchange)(nil), // 421: tutorial.ReqAgreeCardExchange + (*ResAgreeCardExchange)(nil), // 422: tutorial.ResAgreeCardExchange + (*ReqRefuseCardSelect)(nil), // 423: tutorial.ReqRefuseCardSelect + (*ResRefuseCardSelect)(nil), // 424: tutorial.ResRefuseCardSelect + (*ReqRefuseCardExchange)(nil), // 425: tutorial.ReqRefuseCardExchange + (*ResRefuseCardExchange)(nil), // 426: tutorial.ResRefuseCardExchange + (*ReqGetFriendCard)(nil), // 427: tutorial.ReqGetFriendCard + (*ResGetFriendCard)(nil), // 428: tutorial.ResGetFriendCard + (*ReqGuideReward)(nil), // 429: tutorial.ReqGuideReward + (*ResGuideReward)(nil), // 430: tutorial.ResGuideReward + (*ResGuildInfo)(nil), // 431: tutorial.ResGuildInfo + (*ResItemPop)(nil), // 432: tutorial.ResItemPop + (*ItemInfo)(nil), // 433: tutorial.ItemInfo + (*CardPack)(nil), // 434: tutorial.CardPack + (*ResDailyTask)(nil), // 435: tutorial.ResDailyTask + (*DailyWeek)(nil), // 436: tutorial.DailyWeek + (*DailyTask)(nil), // 437: tutorial.DailyTask + (*QuestProgress)(nil), // 438: tutorial.QuestProgress + (*ReqGetDailyTaskReward)(nil), // 439: tutorial.ReqGetDailyTaskReward + (*ResGetDailyTaskReward)(nil), // 440: tutorial.ResGetDailyTaskReward + (*ReqGetDailyWeekReward)(nil), // 441: tutorial.ReqGetDailyWeekReward + (*ResGetDailyWeekReward)(nil), // 442: tutorial.ResGetDailyWeekReward + (*ResFaceInfo)(nil), // 443: tutorial.ResFaceInfo + (*FaceInfo)(nil), // 444: tutorial.FaceInfo + (*ReqSetFace)(nil), // 445: tutorial.ReqSetFace + (*ResSetFace)(nil), // 446: tutorial.ResSetFace + (*ResAvatarInfo)(nil), // 447: tutorial.ResAvatarInfo + (*AvatarInfo)(nil), // 448: tutorial.AvatarInfo + (*ReqSetAvatar)(nil), // 449: tutorial.ReqSetAvatar + (*ResSetAvatar)(nil), // 450: tutorial.ResSetAvatar + (*ResSevenLogin)(nil), // 451: tutorial.ResSevenLogin + (*SevenLoginReward)(nil), // 452: tutorial.SevenLoginReward + (*ReqGetSevenLoginReward)(nil), // 453: tutorial.ReqGetSevenLoginReward + (*ResGetSevenLoginReward)(nil), // 454: tutorial.ResGetSevenLoginReward + (*ReqGetMonthLoginReward)(nil), // 455: tutorial.ReqGetMonthLoginReward + (*ResGetMonthLoginReward)(nil), // 456: tutorial.ResGetMonthLoginReward + (*ResAcitive)(nil), // 457: tutorial.ResAcitive + (*ActiveInfo)(nil), // 458: tutorial.ActiveInfo + (*ReqLimitEvent)(nil), // 459: tutorial.ReqLimitEvent + (*ResLimitEvent)(nil), // 460: tutorial.ResLimitEvent + (*ResLimitEventProgress)(nil), // 461: tutorial.ResLimitEventProgress + (*ReqLimitEventReward)(nil), // 462: tutorial.ReqLimitEventReward + (*ResLimitEventReward)(nil), // 463: tutorial.ResLimitEventReward + (*LimitEvent)(nil), // 464: tutorial.LimitEvent + (*LimitEventNotify)(nil), // 465: tutorial.LimitEventNotify + (*ReqLimitSenceReward)(nil), // 466: tutorial.ReqLimitSenceReward + (*ResLimitSenceReward)(nil), // 467: tutorial.ResLimitSenceReward + (*ResChessRainReward)(nil), // 468: tutorial.ResChessRainReward + (*ReqFastProduceReward)(nil), // 469: tutorial.ReqFastProduceReward + (*ResFastProduceReward)(nil), // 470: tutorial.ResFastProduceReward + (*ReqSearchPlayer)(nil), // 471: tutorial.ReqSearchPlayer + (*ResSearchPlayer)(nil), // 472: tutorial.ResSearchPlayer + (*ResPlayerSimple)(nil), // 473: tutorial.ResPlayerSimple + (*ResPlayerRank)(nil), // 474: tutorial.ResPlayerRank + (*ResFriendLog)(nil), // 475: tutorial.ResFriendLog + (*NotifyFriendLog)(nil), // 476: tutorial.NotifyFriendLog + (*NotifyFriendCard)(nil), // 477: tutorial.NotifyFriendCard + (*ResFriendCard)(nil), // 478: tutorial.ResFriendCard + (*ReqKv)(nil), // 479: tutorial.ReqKv + (*ResKv)(nil), // 480: tutorial.ResKv + (*ReqFriendRecommend)(nil), // 481: tutorial.ReqFriendRecommend + (*ResFriendRecommend)(nil), // 482: tutorial.ResFriendRecommend + (*ReqFriendIgnore)(nil), // 483: tutorial.ReqFriendIgnore + (*ResFriendIgnore)(nil), // 484: tutorial.ResFriendIgnore + (*ReqFriendList)(nil), // 485: tutorial.ReqFriendList + (*ResFriendList)(nil), // 486: tutorial.ResFriendList + (*ReqFriendApply)(nil), // 487: tutorial.ReqFriendApply + (*ResFriendApply)(nil), // 488: tutorial.ResFriendApply + (*ReqFriendCardMsg)(nil), // 489: tutorial.ReqFriendCardMsg + (*ResFriendCardMsg)(nil), // 490: tutorial.ResFriendCardMsg + (*ReqFriendTimeLine)(nil), // 491: tutorial.ReqFriendTimeLine + (*ResFriendTimeLine)(nil), // 492: tutorial.ResFriendTimeLine + (*ResFriendApplyNotify)(nil), // 493: tutorial.ResFriendApplyNotify + (*ReqApplyFriend)(nil), // 494: tutorial.ReqApplyFriend + (*ResApplyFriend)(nil), // 495: tutorial.ResApplyFriend + (*ReqAgreeFriend)(nil), // 496: tutorial.ReqAgreeFriend + (*ResAgreeFriend)(nil), // 497: tutorial.ResAgreeFriend + (*ReqRefuseFriend)(nil), // 498: tutorial.ReqRefuseFriend + (*ResRefuseFriend)(nil), // 499: tutorial.ResRefuseFriend + (*ReqDelFriend)(nil), // 500: tutorial.ReqDelFriend + (*ResDelFriend)(nil), // 501: tutorial.ResDelFriend + (*ReqRank)(nil), // 502: tutorial.ReqRank + (*ResRank)(nil), // 503: tutorial.ResRank + (*ReqMailList)(nil), // 504: tutorial.ReqMailList + (*ResMailList)(nil), // 505: tutorial.ResMailList + (*MailInfo)(nil), // 506: tutorial.MailInfo + (*ReqReadMail)(nil), // 507: tutorial.ReqReadMail + (*ResReadMail)(nil), // 508: tutorial.ResReadMail + (*ReqGetMailReward)(nil), // 509: tutorial.ReqGetMailReward + (*ResGetMailReward)(nil), // 510: tutorial.ResGetMailReward + (*ReqDeleteMail)(nil), // 511: tutorial.ReqDeleteMail + (*ResDeleteMail)(nil), // 512: tutorial.ResDeleteMail + (*ResCharge)(nil), // 513: tutorial.ResCharge + (*ResSpecialShop)(nil), // 514: tutorial.ResSpecialShop + (*ResChessShop)(nil), // 515: tutorial.ResChessShop + (*ReqFreeShop)(nil), // 516: tutorial.ReqFreeShop + (*ResFreeShop)(nil), // 517: tutorial.ResFreeShop + (*ReqBuyChessShop)(nil), // 518: tutorial.ReqBuyChessShop + (*ResBuyChessShop)(nil), // 519: tutorial.ResBuyChessShop + (*ReqRefreshChessShop)(nil), // 520: tutorial.ReqRefreshChessShop + (*ResRefreshChessShop)(nil), // 521: tutorial.ResRefreshChessShop + (*ReqEndless)(nil), // 522: tutorial.ReqEndless + (*ResEndless)(nil), // 523: tutorial.ResEndless + (*ResEndlessInfo)(nil), // 524: tutorial.ResEndlessInfo + (*ReqEndlessReward)(nil), // 525: tutorial.ReqEndlessReward + (*ResEndlessReward)(nil), // 526: tutorial.ResEndlessReward + (*ResPiggyBank)(nil), // 527: tutorial.ResPiggyBank + (*ReqPiggyBankReward)(nil), // 528: tutorial.ReqPiggyBankReward + (*ResPiggyBankReward)(nil), // 529: tutorial.ResPiggyBankReward + (*ReqCreateOrderSn)(nil), // 530: tutorial.ReqCreateOrderSn + (*ResCreateOrderSn)(nil), // 531: tutorial.ResCreateOrderSn + (*ReqShippingOrder)(nil), // 532: tutorial.ReqShippingOrder + (*ResShippingOrder)(nil), // 533: tutorial.ResShippingOrder + (*ReqChampship)(nil), // 534: tutorial.ReqChampship + (*ResChampship)(nil), // 535: tutorial.ResChampship + (*ReqChampshipReward)(nil), // 536: tutorial.ReqChampshipReward + (*ResChampshipReward)(nil), // 537: tutorial.ResChampshipReward + (*ReqChampshipRankReward)(nil), // 538: tutorial.ReqChampshipRankReward + (*ResChampshipRankReward)(nil), // 539: tutorial.ResChampshipRankReward + (*ReqChampshipRank)(nil), // 540: tutorial.ReqChampshipRank + (*ResChampshipRank)(nil), // 541: tutorial.ResChampshipRank + (*ReqChampshipPreRank)(nil), // 542: tutorial.ReqChampshipPreRank + (*ResChampshipPreRank)(nil), // 543: tutorial.ResChampshipPreRank + (*ResNotifyCard)(nil), // 544: tutorial.ResNotifyCard + (*ReqSetFacebookUrl)(nil), // 545: tutorial.ReqSetFacebookUrl + (*ResSetFacebookUrl)(nil), // 546: tutorial.ResSetFacebookUrl + (*ReqInviteFriendData)(nil), // 547: tutorial.ReqInviteFriendData + (*ResInviteFriendData)(nil), // 548: tutorial.ResInviteFriendData + (*ReqSelfInvited)(nil), // 549: tutorial.ReqSelfInvited + (*ResSelfInvited)(nil), // 550: tutorial.ResSelfInvited + (*NotifyInvitedSuccess)(nil), // 551: tutorial.NotifyInvitedSuccess + (*ReqGetInviteReward)(nil), // 552: tutorial.ReqGetInviteReward + (*ResGetInviteReward)(nil), // 553: tutorial.ResGetInviteReward + (*ReqAutoAddInviteFriend)(nil), // 554: tutorial.ReqAutoAddInviteFriend + (*ResAutoAddInviteFriend)(nil), // 555: tutorial.ResAutoAddInviteFriend + nil, // 556: tutorial.UpdateBaseItemInfo.MUpdateItemEntry + nil, // 557: tutorial.ResPlayerEmitUnlockData.MEmitUnlockDataEntry + nil, // 558: tutorial.NotifyDailyRenewEmitUnlock.MEmitUnlockDataEntry + nil, // 559: tutorial.UpdatePlayerEmitUnlockData.MEmitUnlockDataEntry + nil, // 560: tutorial.ResPlayerPackData.MPackDataEntry + nil, // 561: tutorial.UpdatePlayerPackData.MPackDataEntry + nil, // 562: tutorial.ResPlayerChessData.MChessDataEntry + nil, // 563: tutorial.UpdatePlayerChessData.MChessDataEntry + nil, // 564: tutorial.ReqGetChessFromBuff.MChessDataEntry + nil, // 565: tutorial.ReqChessEx.MChessDataEntry + nil, // 566: tutorial.ReqPutChessInBag.MChessDataEntry + nil, // 567: tutorial.ReqTakeChessOutBag.MChessDataEntry + nil, // 568: tutorial.ResPlayerGiftData.MGiftDataEntry + nil, // 569: tutorial.UpdatePlayerGiftData.MGiftDataEntry + nil, // 570: tutorial.ResPlayerOrderData.MOrderDataEntry + nil, // 571: tutorial.UpdatePlayerOrderData.MOrderDataEntry + nil, // 572: tutorial.ResChessColorData.MChessColorDataEntry + nil, // 573: tutorial.UpdateChessColorData.MChessColorDataEntry + nil, // 574: tutorial.ResEmitMergeMap.MEmitMergeDataEntry + nil, // 575: tutorial.UpdateEmitMergeMap.MEmitMergeDataEntry + nil, // 576: tutorial.ResEmitCountMap.MEmitCountDataEntry + nil, // 577: tutorial.UpdateEmitCountMap.MEmitCountDataEntry + nil, // 578: tutorial.ResEmitCDStartData.MEmitCDDataEntry + nil, // 579: tutorial.NotifyInitEmitCDTimeData.MEmitCDDataEntry + nil, // 580: tutorial.NotifyEmitCDTimeEndData.MEmitCDDataEntry + nil, // 581: tutorial.ResDecorateData.MDecorateDataEntry + nil, // 582: tutorial.UpdateDecorateData.MDecorateDataEntry + nil, // 583: tutorial.ResShopData.MShopTimeBuyDataEntry + nil, // 584: tutorial.ResShopData.MShopSaleBuyDataEntry + nil, // 585: tutorial.ResShopData.MPackBuyDataEntry + nil, // 586: tutorial.ResShopData.MSpecialOfferBuyDataEntry + nil, // 587: tutorial.ResShopData.MUISpecialOfferBuyDataEntry + nil, // 588: tutorial.ResShopData.MFreePackBuyDataEntry + nil, // 589: tutorial.ResShopData.MDiamondFirstBuyDataEntry + nil, // 590: tutorial.NotifyShopStatusChange.MShopTimeBuyDataEntry + nil, // 591: tutorial.ResShopBuy.MShopTimeBuyDataEntry + nil, // 592: tutorial.ReqRenewItemBuyCnt.MShopDataEntry + nil, // 593: tutorial.ResRenewItemBuyCnt.MShopTimeBuyDataEntry + nil, // 594: tutorial.ResKeyValueData.KeyValuesEntry + nil, // 595: tutorial.UpdateKeyValueData.KeyValuesEntry + nil, // 596: tutorial.ResAdPackData.PackDataEntry + nil, // 597: tutorial.NotifyAdPackData.PackDataEntry + nil, // 598: tutorial.ResWatchAdPack.PackDataEntry + nil, // 599: tutorial.ResPetHomeData.SelectDecorateMapEntry + nil, // 600: tutorial.ReqSaveSelectDecorate.SelectDecorateMapEntry + nil, // 601: tutorial.ResSaveSelectDecorate.SelectDecorateMapEntry + nil, // 602: tutorial.ResOpenOtherPetHome.SelectDecorateMapEntry + nil, // 603: tutorial.ResShiftVisitPet.SelectDecorateMapEntry + nil, // 604: tutorial.UseItemRequest.AttrsEntry + nil, // 605: tutorial.UseItemResponse.AttrsEntry + nil, // 606: tutorial.ResCardInfo.AllCardEntry + nil, // 607: tutorial.ResGuildInfo.RewardEntry + nil, // 608: tutorial.ResDailyTask.WeekRewardEntry + nil, // 609: tutorial.ResDailyTask.DailyTaskEntry + nil, // 610: tutorial.ResLimitEvent.LimitEventListEntry + nil, // 611: tutorial.ResLimitEventProgress.ProgressRewardEntry + nil, // 612: tutorial.ResKv.KvEntry + nil, // 613: tutorial.ResRank.RankListEntry + nil, // 614: tutorial.ResMailList.MailListEntry + nil, // 615: tutorial.ResCharge.SpecialShopEntry + nil, // 616: tutorial.ResCharge.ChessShopEntry + nil, // 617: tutorial.ResCharge.GiftEntry + nil, // 618: tutorial.ResEndless.EndlessListEntry + nil, // 619: tutorial.ResChampshipRank.RankListEntry + nil, // 620: tutorial.ResChampshipPreRank.RankListEntry + nil, // 621: tutorial.ResNotifyCard.CardEntry + nil, // 622: tutorial.ResNotifyCard.MasterEntry } var file_Gameapi_proto_depIdxs = []int32{ - 553, // 0: tutorial.UpdateBaseItemInfo.mUpdateItem:type_name -> tutorial.UpdateBaseItemInfo.MUpdateItemEntry - 554, // 1: tutorial.ResPlayerEmitUnlockData.mEmitUnlockData:type_name -> tutorial.ResPlayerEmitUnlockData.MEmitUnlockDataEntry - 555, // 2: tutorial.NotifyDailyRenewEmitUnlock.mEmitUnlockData:type_name -> tutorial.NotifyDailyRenewEmitUnlock.MEmitUnlockDataEntry - 556, // 3: tutorial.UpdatePlayerEmitUnlockData.mEmitUnlockData:type_name -> tutorial.UpdatePlayerEmitUnlockData.MEmitUnlockDataEntry - 557, // 4: tutorial.ResPlayerPackData.mPackData:type_name -> tutorial.ResPlayerPackData.MPackDataEntry - 558, // 5: tutorial.UpdatePlayerPackData.mPackData:type_name -> tutorial.UpdatePlayerPackData.MPackDataEntry - 559, // 6: tutorial.ResPlayerChessData.mChessData:type_name -> tutorial.ResPlayerChessData.MChessDataEntry + 556, // 0: tutorial.UpdateBaseItemInfo.mUpdateItem:type_name -> tutorial.UpdateBaseItemInfo.MUpdateItemEntry + 557, // 1: tutorial.ResPlayerEmitUnlockData.mEmitUnlockData:type_name -> tutorial.ResPlayerEmitUnlockData.MEmitUnlockDataEntry + 558, // 2: tutorial.NotifyDailyRenewEmitUnlock.mEmitUnlockData:type_name -> tutorial.NotifyDailyRenewEmitUnlock.MEmitUnlockDataEntry + 559, // 3: tutorial.UpdatePlayerEmitUnlockData.mEmitUnlockData:type_name -> tutorial.UpdatePlayerEmitUnlockData.MEmitUnlockDataEntry + 560, // 4: tutorial.ResPlayerPackData.mPackData:type_name -> tutorial.ResPlayerPackData.MPackDataEntry + 561, // 5: tutorial.UpdatePlayerPackData.mPackData:type_name -> tutorial.UpdatePlayerPackData.MPackDataEntry + 562, // 6: tutorial.ResPlayerChessData.mChessData:type_name -> tutorial.ResPlayerChessData.MChessDataEntry 37, // 7: tutorial.ResPlayerChessInfo.ChessBag:type_name -> tutorial.ChessBag 0, // 8: tutorial.ChessHandle.type:type_name -> tutorial.HANDLE_TYPE - 560, // 9: tutorial.UpdatePlayerChessData.mChessData:type_name -> tutorial.UpdatePlayerChessData.MChessDataEntry + 563, // 9: tutorial.UpdatePlayerChessData.mChessData:type_name -> tutorial.UpdatePlayerChessData.MChessDataEntry 30, // 10: tutorial.UpdatePlayerChessData.mChessHandle:type_name -> tutorial.ChessHandle 1, // 11: tutorial.ResUpdatePlayerChessData.code:type_name -> tutorial.RES_CODE - 561, // 12: tutorial.ReqGetChessFromBuff.mChessData:type_name -> tutorial.ReqGetChessFromBuff.MChessDataEntry + 564, // 12: tutorial.ReqGetChessFromBuff.mChessData:type_name -> tutorial.ReqGetChessFromBuff.MChessDataEntry 1, // 13: tutorial.ResGetChessFromBuff.code:type_name -> tutorial.RES_CODE - 562, // 14: tutorial.ReqChessEx.mChessData:type_name -> tutorial.ReqChessEx.MChessDataEntry + 565, // 14: tutorial.ReqChessEx.mChessData:type_name -> tutorial.ReqChessEx.MChessDataEntry 1, // 15: tutorial.ResChessEx.code:type_name -> tutorial.RES_CODE 38, // 16: tutorial.ChessBag.ChessBagGrids:type_name -> tutorial.ChessBagGrid - 563, // 17: tutorial.ReqPutChessInBag.mChessData:type_name -> tutorial.ReqPutChessInBag.MChessDataEntry + 566, // 17: tutorial.ReqPutChessInBag.mChessData:type_name -> tutorial.ReqPutChessInBag.MChessDataEntry 1, // 18: tutorial.ResPutChessInBag.code:type_name -> tutorial.RES_CODE - 564, // 19: tutorial.ReqTakeChessOutBag.mChessData:type_name -> tutorial.ReqTakeChessOutBag.MChessDataEntry + 567, // 19: tutorial.ReqTakeChessOutBag.mChessData:type_name -> tutorial.ReqTakeChessOutBag.MChessDataEntry 1, // 20: tutorial.ResTakeChessOutBag.code:type_name -> tutorial.RES_CODE 1, // 21: tutorial.ResBuyChessBagGrid.code:type_name -> tutorial.RES_CODE - 565, // 22: tutorial.ResPlayerGiftData.mGiftData:type_name -> tutorial.ResPlayerGiftData.MGiftDataEntry - 566, // 23: tutorial.UpdatePlayerGiftData.mGiftData:type_name -> tutorial.UpdatePlayerGiftData.MGiftDataEntry - 567, // 24: tutorial.ResPlayerOrderData.mOrderData:type_name -> tutorial.ResPlayerOrderData.MOrderDataEntry - 568, // 25: tutorial.UpdatePlayerOrderData.mOrderData:type_name -> tutorial.UpdatePlayerOrderData.MOrderDataEntry - 569, // 26: tutorial.ResChessColorData.mChessColorData:type_name -> tutorial.ResChessColorData.MChessColorDataEntry - 570, // 27: tutorial.UpdateChessColorData.mChessColorData:type_name -> tutorial.UpdateChessColorData.MChessColorDataEntry - 571, // 28: tutorial.ResEmitMergeMap.mEmitMergeData:type_name -> tutorial.ResEmitMergeMap.MEmitMergeDataEntry - 572, // 29: tutorial.UpdateEmitMergeMap.mEmitMergeData:type_name -> tutorial.UpdateEmitMergeMap.MEmitMergeDataEntry - 573, // 30: tutorial.ResEmitCountMap.mEmitCountData:type_name -> tutorial.ResEmitCountMap.MEmitCountDataEntry - 574, // 31: tutorial.UpdateEmitCountMap.mEmitCountData:type_name -> tutorial.UpdateEmitCountMap.MEmitCountDataEntry - 575, // 32: tutorial.ResEmitCDStartData.mEmitCDData:type_name -> tutorial.ResEmitCDStartData.MEmitCDDataEntry - 576, // 33: tutorial.NotifyInitEmitCDTimeData.mEmitCDData:type_name -> tutorial.NotifyInitEmitCDTimeData.MEmitCDDataEntry - 577, // 34: tutorial.NotifyEmitCDTimeEndData.mEmitCDData:type_name -> tutorial.NotifyEmitCDTimeEndData.MEmitCDDataEntry - 578, // 35: tutorial.ResDecorateData.mDecorateData:type_name -> tutorial.ResDecorateData.MDecorateDataEntry - 579, // 36: tutorial.UpdateDecorateData.mDecorateData:type_name -> tutorial.UpdateDecorateData.MDecorateDataEntry - 580, // 37: tutorial.ResShopData.mShopTimeBuyData:type_name -> tutorial.ResShopData.MShopTimeBuyDataEntry - 581, // 38: tutorial.ResShopData.mShopSaleBuyData:type_name -> tutorial.ResShopData.MShopSaleBuyDataEntry - 582, // 39: tutorial.ResShopData.mPackBuyData:type_name -> tutorial.ResShopData.MPackBuyDataEntry - 583, // 40: tutorial.ResShopData.mSpecialOfferBuyData:type_name -> tutorial.ResShopData.MSpecialOfferBuyDataEntry - 584, // 41: tutorial.ResShopData.mUISpecialOfferBuyData:type_name -> tutorial.ResShopData.MUISpecialOfferBuyDataEntry - 585, // 42: tutorial.ResShopData.mFreePackBuyData:type_name -> tutorial.ResShopData.MFreePackBuyDataEntry - 586, // 43: tutorial.ResShopData.mDiamondFirstBuyData:type_name -> tutorial.ResShopData.MDiamondFirstBuyDataEntry - 587, // 44: tutorial.NotifyShopStatusChange.mShopTimeBuyData:type_name -> tutorial.NotifyShopStatusChange.MShopTimeBuyDataEntry - 588, // 45: tutorial.ResShopBuy.mShopTimeBuyData:type_name -> tutorial.ResShopBuy.MShopTimeBuyDataEntry - 589, // 46: tutorial.ReqRenewItemBuyCnt.mShopData:type_name -> tutorial.ReqRenewItemBuyCnt.MShopDataEntry - 590, // 47: tutorial.ResRenewItemBuyCnt.mShopTimeBuyData:type_name -> tutorial.ResRenewItemBuyCnt.MShopTimeBuyDataEntry + 568, // 22: tutorial.ResPlayerGiftData.mGiftData:type_name -> tutorial.ResPlayerGiftData.MGiftDataEntry + 569, // 23: tutorial.UpdatePlayerGiftData.mGiftData:type_name -> tutorial.UpdatePlayerGiftData.MGiftDataEntry + 570, // 24: tutorial.ResPlayerOrderData.mOrderData:type_name -> tutorial.ResPlayerOrderData.MOrderDataEntry + 571, // 25: tutorial.UpdatePlayerOrderData.mOrderData:type_name -> tutorial.UpdatePlayerOrderData.MOrderDataEntry + 572, // 26: tutorial.ResChessColorData.mChessColorData:type_name -> tutorial.ResChessColorData.MChessColorDataEntry + 573, // 27: tutorial.UpdateChessColorData.mChessColorData:type_name -> tutorial.UpdateChessColorData.MChessColorDataEntry + 574, // 28: tutorial.ResEmitMergeMap.mEmitMergeData:type_name -> tutorial.ResEmitMergeMap.MEmitMergeDataEntry + 575, // 29: tutorial.UpdateEmitMergeMap.mEmitMergeData:type_name -> tutorial.UpdateEmitMergeMap.MEmitMergeDataEntry + 576, // 30: tutorial.ResEmitCountMap.mEmitCountData:type_name -> tutorial.ResEmitCountMap.MEmitCountDataEntry + 577, // 31: tutorial.UpdateEmitCountMap.mEmitCountData:type_name -> tutorial.UpdateEmitCountMap.MEmitCountDataEntry + 578, // 32: tutorial.ResEmitCDStartData.mEmitCDData:type_name -> tutorial.ResEmitCDStartData.MEmitCDDataEntry + 579, // 33: tutorial.NotifyInitEmitCDTimeData.mEmitCDData:type_name -> tutorial.NotifyInitEmitCDTimeData.MEmitCDDataEntry + 580, // 34: tutorial.NotifyEmitCDTimeEndData.mEmitCDData:type_name -> tutorial.NotifyEmitCDTimeEndData.MEmitCDDataEntry + 581, // 35: tutorial.ResDecorateData.mDecorateData:type_name -> tutorial.ResDecorateData.MDecorateDataEntry + 582, // 36: tutorial.UpdateDecorateData.mDecorateData:type_name -> tutorial.UpdateDecorateData.MDecorateDataEntry + 583, // 37: tutorial.ResShopData.mShopTimeBuyData:type_name -> tutorial.ResShopData.MShopTimeBuyDataEntry + 584, // 38: tutorial.ResShopData.mShopSaleBuyData:type_name -> tutorial.ResShopData.MShopSaleBuyDataEntry + 585, // 39: tutorial.ResShopData.mPackBuyData:type_name -> tutorial.ResShopData.MPackBuyDataEntry + 586, // 40: tutorial.ResShopData.mSpecialOfferBuyData:type_name -> tutorial.ResShopData.MSpecialOfferBuyDataEntry + 587, // 41: tutorial.ResShopData.mUISpecialOfferBuyData:type_name -> tutorial.ResShopData.MUISpecialOfferBuyDataEntry + 588, // 42: tutorial.ResShopData.mFreePackBuyData:type_name -> tutorial.ResShopData.MFreePackBuyDataEntry + 589, // 43: tutorial.ResShopData.mDiamondFirstBuyData:type_name -> tutorial.ResShopData.MDiamondFirstBuyDataEntry + 590, // 44: tutorial.NotifyShopStatusChange.mShopTimeBuyData:type_name -> tutorial.NotifyShopStatusChange.MShopTimeBuyDataEntry + 591, // 45: tutorial.ResShopBuy.mShopTimeBuyData:type_name -> tutorial.ResShopBuy.MShopTimeBuyDataEntry + 592, // 46: tutorial.ReqRenewItemBuyCnt.mShopData:type_name -> tutorial.ReqRenewItemBuyCnt.MShopDataEntry + 593, // 47: tutorial.ResRenewItemBuyCnt.mShopTimeBuyData:type_name -> tutorial.ResRenewItemBuyCnt.MShopTimeBuyDataEntry 89, // 48: tutorial.ResBriefEmailData.mEmailList:type_name -> tutorial.BriefEmailStruct 89, // 49: tutorial.NotifyNewBriefEmailData.mEmailList:type_name -> tutorial.BriefEmailStruct 99, // 50: tutorial.NotifyLimitedTimeActiveData.mActiveList:type_name -> tutorial.LimitedTimeActiveStruct 100, // 51: tutorial.NotifyLimitedTimeActiveEnd.mActiveList:type_name -> tutorial.LimitedTimeEndStruct 154, // 52: tutorial.CategoryIllustratedData.Items:type_name -> tutorial.SingleIllustratedItem 155, // 53: tutorial.ResIllustratedInfo.Datas:type_name -> tutorial.CategoryIllustratedData - 591, // 54: tutorial.ResKeyValueData.KeyValues:type_name -> tutorial.ResKeyValueData.KeyValuesEntry - 592, // 55: tutorial.UpdateKeyValueData.KeyValues:type_name -> tutorial.UpdateKeyValueData.KeyValuesEntry + 594, // 54: tutorial.ResKeyValueData.KeyValues:type_name -> tutorial.ResKeyValueData.KeyValuesEntry + 595, // 55: tutorial.UpdateKeyValueData.KeyValues:type_name -> tutorial.UpdateKeyValueData.KeyValuesEntry 203, // 56: tutorial.ResChampshipData.GroupRankDataList:type_name -> tutorial.ChampshipsPlayerInfo 203, // 57: tutorial.NotifyNewChampshipRank.GroupRankDataList:type_name -> tutorial.ChampshipsPlayerInfo 203, // 58: tutorial.NotifyUpdateChampshipRank.GroupRankDataList:type_name -> tutorial.ChampshipsPlayerInfo 203, // 59: tutorial.ResChampshipAddScore.GroupRankDataList:type_name -> tutorial.ChampshipsPlayerInfo 203, // 60: tutorial.ResChampshipAddTime.GroupRankDataList:type_name -> tutorial.ChampshipsPlayerInfo 217, // 61: tutorial.ResPlayerPayData.PlayerPayData:type_name -> tutorial.PlayerPayItem - 593, // 62: tutorial.ResAdPackData.PackData:type_name -> tutorial.ResAdPackData.PackDataEntry - 594, // 63: tutorial.NotifyAdPackData.PackData:type_name -> tutorial.NotifyAdPackData.PackDataEntry - 595, // 64: tutorial.ResWatchAdPack.PackData:type_name -> tutorial.ResWatchAdPack.PackDataEntry + 596, // 62: tutorial.ResAdPackData.PackData:type_name -> tutorial.ResAdPackData.PackDataEntry + 597, // 63: tutorial.NotifyAdPackData.PackData:type_name -> tutorial.NotifyAdPackData.PackDataEntry + 598, // 64: tutorial.ResWatchAdPack.PackData:type_name -> tutorial.ResWatchAdPack.PackDataEntry 262, // 65: tutorial.ResFriendData.FriendInfos:type_name -> tutorial.FriendInfo 262, // 66: tutorial.AddFriendData.Finfo:type_name -> tutorial.FriendInfo 262, // 67: tutorial.ResWillPlayerDetail.PlayerInfos:type_name -> tutorial.FriendInfo @@ -36013,71 +36146,71 @@ var file_Gameapi_proto_depIdxs = []int32{ 262, // 72: tutorial.NotifySuccessInviteAddFriend.data:type_name -> tutorial.FriendInfo 262, // 73: tutorial.NotifySuccessFBAddFriend.data:type_name -> tutorial.FriendInfo 262, // 74: tutorial.ResRecommendFriendList.PlayerInfos:type_name -> tutorial.FriendInfo - 301, // 75: tutorial.ResExchangeCardBoxData.ExchangeCardItems:type_name -> tutorial.ExchangeCardItem - 301, // 76: tutorial.ResDonateFriendCard.mExchangeCardItem:type_name -> tutorial.ExchangeCardItem - 301, // 77: tutorial.NotifyDonateFriendCard.mExchangeCardItem:type_name -> tutorial.ExchangeCardItem - 301, // 78: tutorial.ReqGetDonateCard.mExchangeCardItem:type_name -> tutorial.ExchangeCardItem - 301, // 79: tutorial.NotifyGetDonateCard.mExchangeCardItem:type_name -> tutorial.ExchangeCardItem - 301, // 80: tutorial.ResGetDonateCard.mExchangeCardItem:type_name -> tutorial.ExchangeCardItem - 301, // 81: tutorial.ReqRefuseExchange.mExchangeCardItem:type_name -> tutorial.ExchangeCardItem - 301, // 82: tutorial.ResRefuseExchange.mExchangeCardItem:type_name -> tutorial.ExchangeCardItem - 301, // 83: tutorial.NOtifyRefuseExchange.mExchangeCardItem:type_name -> tutorial.ExchangeCardItem - 301, // 84: tutorial.ResExchangeCard.mExchangeCardItem:type_name -> tutorial.ExchangeCardItem - 301, // 85: tutorial.NotifyExchangeTimeOut.mExchangeCardItem:type_name -> tutorial.ExchangeCardItem - 301, // 86: tutorial.NotifyExchangeCard.mExchangeCardItem:type_name -> tutorial.ExchangeCardItem - 301, // 87: tutorial.ReqReceiptCard.mExchangeCardItem:type_name -> tutorial.ExchangeCardItem - 301, // 88: tutorial.ResReceiptCard.mExchangeCardItem:type_name -> tutorial.ExchangeCardItem - 301, // 89: tutorial.NotifyReceiptCard.mExchangeCardItem:type_name -> tutorial.ExchangeCardItem - 301, // 90: tutorial.ReqCompleteExchangeCard.mExchangeCardItem:type_name -> tutorial.ExchangeCardItem - 301, // 91: tutorial.ResCompleteExchangeCard.mExchangeCardItem:type_name -> tutorial.ExchangeCardItem - 301, // 92: tutorial.NotifyCompleteExchangeCard.mExchangeCardItem:type_name -> tutorial.ExchangeCardItem - 301, // 93: tutorial.ReqGetExchangeCard.mExchangeCardItem:type_name -> tutorial.ExchangeCardItem - 301, // 94: tutorial.NotifyGetExchangeCard.mExchangeCardItem:type_name -> tutorial.ExchangeCardItem - 301, // 95: tutorial.ResGetExchangeCard.mExchangeCardItem:type_name -> tutorial.ExchangeCardItem - 301, // 96: tutorial.NotifyDeleteGoldCardSwap.mExchangeCardItems:type_name -> tutorial.ExchangeCardItem - 301, // 97: tutorial.NotifyRequestTimeOut.mExchangeCardItem:type_name -> tutorial.ExchangeCardItem - 301, // 98: tutorial.ResRequestCard.ExchangeCardItems:type_name -> tutorial.ExchangeCardItem - 301, // 99: tutorial.NotifyRequestCard.ExchangeCardItems:type_name -> tutorial.ExchangeCardItem - 301, // 100: tutorial.ReqCompleteRequestCard.ExchangeCardItems:type_name -> tutorial.ExchangeCardItem - 301, // 101: tutorial.ResCompleteRequestCard.ExchangeCardItems:type_name -> tutorial.ExchangeCardItem - 301, // 102: tutorial.NotifyCompleteRequestCard.ExchangeCardItems:type_name -> tutorial.ExchangeCardItem - 301, // 103: tutorial.ReqRefuseRequestCard.ExchangeCardItems:type_name -> tutorial.ExchangeCardItem - 301, // 104: tutorial.ResRefuseRequestCard.ExchangeCardItems:type_name -> tutorial.ExchangeCardItem - 301, // 105: tutorial.NotifyRefuseRequestCard.ExchangeCardItems:type_name -> tutorial.ExchangeCardItem - 301, // 106: tutorial.ReqGetRequestCard.ExchangeCardItems:type_name -> tutorial.ExchangeCardItem - 301, // 107: tutorial.ResGetRequestCard.ExchangeCardItems:type_name -> tutorial.ExchangeCardItem + 292, // 75: tutorial.ResExchangeCardBoxData.ExchangeCardItems:type_name -> tutorial.ExchangeCardItem + 292, // 76: tutorial.ResDonateFriendCard.mExchangeCardItem:type_name -> tutorial.ExchangeCardItem + 292, // 77: tutorial.NotifyDonateFriendCard.mExchangeCardItem:type_name -> tutorial.ExchangeCardItem + 292, // 78: tutorial.ReqGetDonateCard.mExchangeCardItem:type_name -> tutorial.ExchangeCardItem + 292, // 79: tutorial.NotifyGetDonateCard.mExchangeCardItem:type_name -> tutorial.ExchangeCardItem + 292, // 80: tutorial.ResGetDonateCard.mExchangeCardItem:type_name -> tutorial.ExchangeCardItem + 292, // 81: tutorial.ReqRefuseExchange.mExchangeCardItem:type_name -> tutorial.ExchangeCardItem + 292, // 82: tutorial.ResRefuseExchange.mExchangeCardItem:type_name -> tutorial.ExchangeCardItem + 292, // 83: tutorial.NOtifyRefuseExchange.mExchangeCardItem:type_name -> tutorial.ExchangeCardItem + 292, // 84: tutorial.ResExchangeCard.mExchangeCardItem:type_name -> tutorial.ExchangeCardItem + 292, // 85: tutorial.NotifyExchangeTimeOut.mExchangeCardItem:type_name -> tutorial.ExchangeCardItem + 292, // 86: tutorial.NotifyExchangeCard.mExchangeCardItem:type_name -> tutorial.ExchangeCardItem + 292, // 87: tutorial.ReqReceiptCard.mExchangeCardItem:type_name -> tutorial.ExchangeCardItem + 292, // 88: tutorial.ResReceiptCard.mExchangeCardItem:type_name -> tutorial.ExchangeCardItem + 292, // 89: tutorial.NotifyReceiptCard.mExchangeCardItem:type_name -> tutorial.ExchangeCardItem + 292, // 90: tutorial.ReqCompleteExchangeCard.mExchangeCardItem:type_name -> tutorial.ExchangeCardItem + 292, // 91: tutorial.ResCompleteExchangeCard.mExchangeCardItem:type_name -> tutorial.ExchangeCardItem + 292, // 92: tutorial.NotifyCompleteExchangeCard.mExchangeCardItem:type_name -> tutorial.ExchangeCardItem + 292, // 93: tutorial.ReqGetExchangeCard.mExchangeCardItem:type_name -> tutorial.ExchangeCardItem + 292, // 94: tutorial.NotifyGetExchangeCard.mExchangeCardItem:type_name -> tutorial.ExchangeCardItem + 292, // 95: tutorial.ResGetExchangeCard.mExchangeCardItem:type_name -> tutorial.ExchangeCardItem + 292, // 96: tutorial.NotifyDeleteGoldCardSwap.mExchangeCardItems:type_name -> tutorial.ExchangeCardItem + 292, // 97: tutorial.NotifyRequestTimeOut.mExchangeCardItem:type_name -> tutorial.ExchangeCardItem + 292, // 98: tutorial.ResRequestCard.ExchangeCardItems:type_name -> tutorial.ExchangeCardItem + 292, // 99: tutorial.NotifyRequestCard.ExchangeCardItems:type_name -> tutorial.ExchangeCardItem + 292, // 100: tutorial.ReqCompleteRequestCard.ExchangeCardItems:type_name -> tutorial.ExchangeCardItem + 292, // 101: tutorial.ResCompleteRequestCard.ExchangeCardItems:type_name -> tutorial.ExchangeCardItem + 292, // 102: tutorial.NotifyCompleteRequestCard.ExchangeCardItems:type_name -> tutorial.ExchangeCardItem + 292, // 103: tutorial.ReqRefuseRequestCard.ExchangeCardItems:type_name -> tutorial.ExchangeCardItem + 292, // 104: tutorial.ResRefuseRequestCard.ExchangeCardItems:type_name -> tutorial.ExchangeCardItem + 292, // 105: tutorial.NotifyRefuseRequestCard.ExchangeCardItems:type_name -> tutorial.ExchangeCardItem + 292, // 106: tutorial.ReqGetRequestCard.ExchangeCardItems:type_name -> tutorial.ExchangeCardItem + 292, // 107: tutorial.ResGetRequestCard.ExchangeCardItems:type_name -> tutorial.ExchangeCardItem 262, // 108: tutorial.FriendEventData.MFriendInfo:type_name -> tutorial.FriendInfo - 350, // 109: tutorial.ResFriendEventData.MFriendEventData:type_name -> tutorial.FriendEventData - 350, // 110: tutorial.NotifyNewFriendEvent.NewEvent:type_name -> tutorial.FriendEventData + 341, // 109: tutorial.ResFriendEventData.MFriendEventData:type_name -> tutorial.FriendEventData + 341, // 110: tutorial.NotifyNewFriendEvent.NewEvent:type_name -> tutorial.FriendEventData 257, // 111: tutorial.PetHomeInterActST.BriefProfile:type_name -> tutorial.ResPlayerBriefProfileData - 596, // 112: tutorial.ResPetHomeData.SelectDecorateMap:type_name -> tutorial.ResPetHomeData.SelectDecorateMapEntry - 597, // 113: tutorial.ReqSaveSelectDecorate.SelectDecorateMap:type_name -> tutorial.ReqSaveSelectDecorate.SelectDecorateMapEntry - 598, // 114: tutorial.ResSaveSelectDecorate.SelectDecorateMap:type_name -> tutorial.ResSaveSelectDecorate.SelectDecorateMapEntry + 599, // 112: tutorial.ResPetHomeData.SelectDecorateMap:type_name -> tutorial.ResPetHomeData.SelectDecorateMapEntry + 600, // 113: tutorial.ReqSaveSelectDecorate.SelectDecorateMap:type_name -> tutorial.ReqSaveSelectDecorate.SelectDecorateMapEntry + 601, // 114: tutorial.ResSaveSelectDecorate.SelectDecorateMap:type_name -> tutorial.ResSaveSelectDecorate.SelectDecorateMapEntry 257, // 115: tutorial.ResOpenOtherPetHome.BriefProfile:type_name -> tutorial.ResPlayerBriefProfileData - 599, // 116: tutorial.ResOpenOtherPetHome.SelectDecorateMap:type_name -> tutorial.ResOpenOtherPetHome.SelectDecorateMapEntry - 358, // 117: tutorial.ResPetHomeInterActST.mPetHomeInterActSTs:type_name -> tutorial.PetHomeInterActST + 602, // 116: tutorial.ResOpenOtherPetHome.SelectDecorateMap:type_name -> tutorial.ResOpenOtherPetHome.SelectDecorateMapEntry + 349, // 117: tutorial.ResPetHomeInterActST.mPetHomeInterActSTs:type_name -> tutorial.PetHomeInterActST 257, // 118: tutorial.ResShiftVisitPet.BriefProfile:type_name -> tutorial.ResPlayerBriefProfileData - 600, // 119: tutorial.ResShiftVisitPet.SelectDecorateMap:type_name -> tutorial.ResShiftVisitPet.SelectDecorateMapEntry - 381, // 120: tutorial.UseItemRequest.items:type_name -> tutorial.Item - 380, // 121: tutorial.UseItemRequest.price:type_name -> tutorial.IntPack - 601, // 122: tutorial.UseItemRequest.attrs:type_name -> tutorial.UseItemRequest.AttrsEntry + 603, // 119: tutorial.ResShiftVisitPet.SelectDecorateMap:type_name -> tutorial.ResShiftVisitPet.SelectDecorateMapEntry + 372, // 120: tutorial.UseItemRequest.items:type_name -> tutorial.Item + 371, // 121: tutorial.UseItemRequest.price:type_name -> tutorial.IntPack + 604, // 122: tutorial.UseItemRequest.attrs:type_name -> tutorial.UseItemRequest.AttrsEntry 3, // 123: tutorial.UseItemResponse.code:type_name -> tutorial.UseItemResponse.CODE - 381, // 124: tutorial.UseItemResponse.items:type_name -> tutorial.Item - 380, // 125: tutorial.UseItemResponse.price:type_name -> tutorial.IntPack - 602, // 126: tutorial.UseItemResponse.attrs:type_name -> tutorial.UseItemResponse.AttrsEntry + 372, // 124: tutorial.UseItemResponse.items:type_name -> tutorial.Item + 371, // 125: tutorial.UseItemResponse.price:type_name -> tutorial.IntPack + 605, // 126: tutorial.UseItemResponse.attrs:type_name -> tutorial.UseItemResponse.AttrsEntry 1, // 127: tutorial.ResSetEnergyMul.ResultCode:type_name -> tutorial.RES_CODE - 457, // 128: tutorial.UserInfo.AvatarList:type_name -> tutorial.AvatarInfo - 453, // 129: tutorial.UserInfo.FaceList:type_name -> tutorial.FaceInfo + 448, // 128: tutorial.UserInfo.AvatarList:type_name -> tutorial.AvatarInfo + 444, // 129: tutorial.UserInfo.FaceList:type_name -> tutorial.FaceInfo 1, // 130: tutorial.ResSetName.ResultCode:type_name -> tutorial.RES_CODE 1, // 131: tutorial.ResBuyEnergy.Code:type_name -> tutorial.RES_CODE - 395, // 132: tutorial.Handbook.Handbooks:type_name -> tutorial.HandbookInfo + 386, // 132: tutorial.Handbook.Handbooks:type_name -> tutorial.HandbookInfo 1, // 133: tutorial.ResGetHandbookReward.Code:type_name -> tutorial.RES_CODE 1, // 134: tutorial.ResRewardOrder.Code:type_name -> tutorial.RES_CODE - 400, // 135: tutorial.ResOrderList.OrderList:type_name -> tutorial.Order + 391, // 135: tutorial.ResOrderList.OrderList:type_name -> tutorial.Order 1, // 136: tutorial.ResDecorate.Code:type_name -> tutorial.RES_CODE 1, // 137: tutorial.ResDecorateAll.Code:type_name -> tutorial.RES_CODE - 408, // 138: tutorial.ResCardInfo.CardList:type_name -> tutorial.Card - 603, // 139: tutorial.ResCardInfo.AllCard:type_name -> tutorial.ResCardInfo.AllCardEntry + 399, // 138: tutorial.ResCardInfo.CardList:type_name -> tutorial.Card + 606, // 139: tutorial.ResCardInfo.AllCard:type_name -> tutorial.ResCardInfo.AllCardEntry 1, // 140: tutorial.ResMasterCard.Code:type_name -> tutorial.RES_CODE 1, // 141: tutorial.ResCardCollectReward.Code:type_name -> tutorial.RES_CODE 1, // 142: tutorial.ResExStarReward.Code:type_name -> tutorial.RES_CODE @@ -36093,86 +36226,89 @@ var file_Gameapi_proto_depIdxs = []int32{ 1, // 152: tutorial.ResRefuseCardExchange.Code:type_name -> tutorial.RES_CODE 1, // 153: tutorial.ResGetFriendCard.Code:type_name -> tutorial.RES_CODE 1, // 154: tutorial.ResGuideReward.Code:type_name -> tutorial.RES_CODE - 604, // 155: tutorial.ResGuildInfo.Reward:type_name -> tutorial.ResGuildInfo.RewardEntry - 442, // 156: tutorial.ResItemPop.Items:type_name -> tutorial.ItemInfo - 443, // 157: tutorial.ResItemPop.CardPacks:type_name -> tutorial.CardPack - 605, // 158: tutorial.ResDailyTask.WeekReward:type_name -> tutorial.ResDailyTask.WeekRewardEntry - 606, // 159: tutorial.ResDailyTask.DailyTask:type_name -> tutorial.ResDailyTask.DailyTaskEntry - 442, // 160: tutorial.DailyWeek.Items:type_name -> tutorial.ItemInfo - 447, // 161: tutorial.DailyTask.Progress:type_name -> tutorial.QuestProgress - 442, // 162: tutorial.DailyTask.Items:type_name -> tutorial.ItemInfo + 607, // 155: tutorial.ResGuildInfo.Reward:type_name -> tutorial.ResGuildInfo.RewardEntry + 433, // 156: tutorial.ResItemPop.Items:type_name -> tutorial.ItemInfo + 434, // 157: tutorial.ResItemPop.CardPacks:type_name -> tutorial.CardPack + 608, // 158: tutorial.ResDailyTask.WeekReward:type_name -> tutorial.ResDailyTask.WeekRewardEntry + 609, // 159: tutorial.ResDailyTask.DailyTask:type_name -> tutorial.ResDailyTask.DailyTaskEntry + 433, // 160: tutorial.DailyWeek.Items:type_name -> tutorial.ItemInfo + 438, // 161: tutorial.DailyTask.Progress:type_name -> tutorial.QuestProgress + 433, // 162: tutorial.DailyTask.Items:type_name -> tutorial.ItemInfo 1, // 163: tutorial.ResGetDailyTaskReward.Code:type_name -> tutorial.RES_CODE 1, // 164: tutorial.ResGetDailyWeekReward.Code:type_name -> tutorial.RES_CODE - 453, // 165: tutorial.ResFaceInfo.FaceList:type_name -> tutorial.FaceInfo + 444, // 165: tutorial.ResFaceInfo.FaceList:type_name -> tutorial.FaceInfo 1, // 166: tutorial.ResSetFace.Code:type_name -> tutorial.RES_CODE - 457, // 167: tutorial.ResAvatarInfo.AvatarList:type_name -> tutorial.AvatarInfo + 448, // 167: tutorial.ResAvatarInfo.AvatarList:type_name -> tutorial.AvatarInfo 1, // 168: tutorial.ResSetAvatar.Code:type_name -> tutorial.RES_CODE - 461, // 169: tutorial.ResSevenLogin.WeekReward:type_name -> tutorial.SevenLoginReward - 461, // 170: tutorial.ResSevenLogin.MonthReward:type_name -> tutorial.SevenLoginReward - 442, // 171: tutorial.SevenLoginReward.Item1:type_name -> tutorial.ItemInfo - 442, // 172: tutorial.SevenLoginReward.Item2:type_name -> tutorial.ItemInfo - 442, // 173: tutorial.SevenLoginReward.Item3:type_name -> tutorial.ItemInfo + 452, // 169: tutorial.ResSevenLogin.WeekReward:type_name -> tutorial.SevenLoginReward + 452, // 170: tutorial.ResSevenLogin.MonthReward:type_name -> tutorial.SevenLoginReward + 433, // 171: tutorial.SevenLoginReward.Item1:type_name -> tutorial.ItemInfo + 433, // 172: tutorial.SevenLoginReward.Item2:type_name -> tutorial.ItemInfo + 433, // 173: tutorial.SevenLoginReward.Item3:type_name -> tutorial.ItemInfo 1, // 174: tutorial.ResGetSevenLoginReward.Code:type_name -> tutorial.RES_CODE 1, // 175: tutorial.ResGetMonthLoginReward.Code:type_name -> tutorial.RES_CODE - 467, // 176: tutorial.ResAcitive.ActiveList:type_name -> tutorial.ActiveInfo - 607, // 177: tutorial.ResLimitEvent.LimitEventList:type_name -> tutorial.ResLimitEvent.LimitEventListEntry - 608, // 178: tutorial.ResLimitEventProgress.ProgressReward:type_name -> tutorial.ResLimitEventProgress.ProgressRewardEntry + 458, // 176: tutorial.ResAcitive.ActiveList:type_name -> tutorial.ActiveInfo + 610, // 177: tutorial.ResLimitEvent.LimitEventList:type_name -> tutorial.ResLimitEvent.LimitEventListEntry + 611, // 178: tutorial.ResLimitEventProgress.ProgressReward:type_name -> tutorial.ResLimitEventProgress.ProgressRewardEntry 1, // 179: tutorial.ResLimitEventReward.Code:type_name -> tutorial.RES_CODE 1, // 180: tutorial.ResLimitSenceReward.Code:type_name -> tutorial.RES_CODE 1, // 181: tutorial.ResFastProduceReward.Code:type_name -> tutorial.RES_CODE - 482, // 182: tutorial.ResSearchPlayer.List:type_name -> tutorial.ResPlayerSimple - 486, // 183: tutorial.NotifyFriendCard.Info:type_name -> tutorial.ResFriendCard - 609, // 184: tutorial.ResKv.kv:type_name -> tutorial.ResKv.KvEntry - 482, // 185: tutorial.ResFriendRecommend.List:type_name -> tutorial.ResPlayerSimple - 1, // 186: tutorial.ResFriendIgnore.Code:type_name -> tutorial.RES_CODE - 482, // 187: tutorial.ResFriendList.FriendList:type_name -> tutorial.ResPlayerSimple - 482, // 188: tutorial.ResFriendApply.ApplyList:type_name -> tutorial.ResPlayerSimple - 486, // 189: tutorial.ResFriendCardMsg.MsgList:type_name -> tutorial.ResFriendCard - 484, // 190: tutorial.ResFriendTimeLine.Log:type_name -> tutorial.ResFriendLog - 482, // 191: tutorial.ResFriendApplyNotify.Player:type_name -> tutorial.ResPlayerSimple - 1, // 192: tutorial.ResApplyFriend.Code:type_name -> tutorial.RES_CODE - 1, // 193: tutorial.ResAgreeFriend.Code:type_name -> tutorial.RES_CODE - 482, // 194: tutorial.ResAgreeFriend.Player:type_name -> tutorial.ResPlayerSimple - 1, // 195: tutorial.ResRefuseFriend.Code:type_name -> tutorial.RES_CODE - 1, // 196: tutorial.ResDelFriend.Code:type_name -> tutorial.RES_CODE - 610, // 197: tutorial.ResRank.RankList:type_name -> tutorial.ResRank.RankListEntry - 611, // 198: tutorial.ResMailList.MailList:type_name -> tutorial.ResMailList.MailListEntry - 442, // 199: tutorial.MailInfo.Items:type_name -> tutorial.ItemInfo - 1, // 200: tutorial.ResReadMail.Code:type_name -> tutorial.RES_CODE - 1, // 201: tutorial.ResGetMailReward.Code:type_name -> tutorial.RES_CODE - 1, // 202: tutorial.ResDeleteMail.Code:type_name -> tutorial.RES_CODE - 612, // 203: tutorial.ResCharge.SpecialShop:type_name -> tutorial.ResCharge.SpecialShopEntry - 613, // 204: tutorial.ResCharge.ChessShop:type_name -> tutorial.ResCharge.ChessShopEntry - 614, // 205: tutorial.ResCharge.Gift:type_name -> tutorial.ResCharge.GiftEntry - 1, // 206: tutorial.ResFreeShop.Code:type_name -> tutorial.RES_CODE - 1, // 207: tutorial.ResBuyChessShop.Code:type_name -> tutorial.RES_CODE - 1, // 208: tutorial.ResRefreshChessShop.Code:type_name -> tutorial.RES_CODE - 615, // 209: tutorial.ResEndless.EndlessList:type_name -> tutorial.ResEndless.EndlessListEntry - 442, // 210: tutorial.ResEndlessInfo.Items:type_name -> tutorial.ItemInfo - 1, // 211: tutorial.ResEndlessReward.Code:type_name -> tutorial.RES_CODE - 1, // 212: tutorial.ResPiggyBankReward.Code:type_name -> tutorial.RES_CODE - 1, // 213: tutorial.ResShippingOrder.Code:type_name -> tutorial.RES_CODE - 1, // 214: tutorial.ResChampshipReward.Code:type_name -> tutorial.RES_CODE - 1, // 215: tutorial.ResChampshipRankReward.Code:type_name -> tutorial.RES_CODE - 616, // 216: tutorial.ResChampshipRank.RankList:type_name -> tutorial.ResChampshipRank.RankListEntry - 617, // 217: tutorial.ResChampshipPreRank.RankList:type_name -> tutorial.ResChampshipPreRank.RankListEntry - 618, // 218: tutorial.ResNotifyCard.Card:type_name -> tutorial.ResNotifyCard.CardEntry - 619, // 219: tutorial.ResNotifyCard.Master:type_name -> tutorial.ResNotifyCard.MasterEntry - 445, // 220: tutorial.ResDailyTask.WeekRewardEntry.value:type_name -> tutorial.DailyWeek - 446, // 221: tutorial.ResDailyTask.DailyTaskEntry.value:type_name -> tutorial.DailyTask - 473, // 222: tutorial.ResLimitEvent.LimitEventListEntry.value:type_name -> tutorial.LimitEvent - 482, // 223: tutorial.ResRank.RankListEntry.value:type_name -> tutorial.ResPlayerSimple - 514, // 224: tutorial.ResMailList.MailListEntry.value:type_name -> tutorial.MailInfo - 522, // 225: tutorial.ResCharge.SpecialShopEntry.value:type_name -> tutorial.ResSpecialShop - 523, // 226: tutorial.ResCharge.ChessShopEntry.value:type_name -> tutorial.ResChessShop - 532, // 227: tutorial.ResEndless.EndlessListEntry.value:type_name -> tutorial.ResEndlessInfo - 483, // 228: tutorial.ResChampshipRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank - 483, // 229: tutorial.ResChampshipPreRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank - 230, // [230:230] is the sub-list for method output_type - 230, // [230:230] is the sub-list for method input_type - 230, // [230:230] is the sub-list for extension type_name - 230, // [230:230] is the sub-list for extension extendee - 0, // [0:230] is the sub-list for field type_name + 473, // 182: tutorial.ResSearchPlayer.List:type_name -> tutorial.ResPlayerSimple + 473, // 183: tutorial.ResFriendLog.Player:type_name -> tutorial.ResPlayerSimple + 475, // 184: tutorial.NotifyFriendLog.info:type_name -> tutorial.ResFriendLog + 478, // 185: tutorial.NotifyFriendCard.Info:type_name -> tutorial.ResFriendCard + 612, // 186: tutorial.ResKv.kv:type_name -> tutorial.ResKv.KvEntry + 473, // 187: tutorial.ResFriendRecommend.List:type_name -> tutorial.ResPlayerSimple + 1, // 188: tutorial.ResFriendIgnore.Code:type_name -> tutorial.RES_CODE + 473, // 189: tutorial.ResFriendList.FriendList:type_name -> tutorial.ResPlayerSimple + 473, // 190: tutorial.ResFriendApply.ApplyList:type_name -> tutorial.ResPlayerSimple + 478, // 191: tutorial.ResFriendCardMsg.MsgList:type_name -> tutorial.ResFriendCard + 475, // 192: tutorial.ResFriendTimeLine.Log:type_name -> tutorial.ResFriendLog + 473, // 193: tutorial.ResFriendApplyNotify.Player:type_name -> tutorial.ResPlayerSimple + 1, // 194: tutorial.ResApplyFriend.Code:type_name -> tutorial.RES_CODE + 1, // 195: tutorial.ResAgreeFriend.Code:type_name -> tutorial.RES_CODE + 473, // 196: tutorial.ResAgreeFriend.Player:type_name -> tutorial.ResPlayerSimple + 1, // 197: tutorial.ResRefuseFriend.Code:type_name -> tutorial.RES_CODE + 1, // 198: tutorial.ResDelFriend.Code:type_name -> tutorial.RES_CODE + 613, // 199: tutorial.ResRank.RankList:type_name -> tutorial.ResRank.RankListEntry + 614, // 200: tutorial.ResMailList.MailList:type_name -> tutorial.ResMailList.MailListEntry + 433, // 201: tutorial.MailInfo.Items:type_name -> tutorial.ItemInfo + 1, // 202: tutorial.ResReadMail.Code:type_name -> tutorial.RES_CODE + 1, // 203: tutorial.ResGetMailReward.Code:type_name -> tutorial.RES_CODE + 1, // 204: tutorial.ResDeleteMail.Code:type_name -> tutorial.RES_CODE + 615, // 205: tutorial.ResCharge.SpecialShop:type_name -> tutorial.ResCharge.SpecialShopEntry + 616, // 206: tutorial.ResCharge.ChessShop:type_name -> tutorial.ResCharge.ChessShopEntry + 617, // 207: tutorial.ResCharge.Gift:type_name -> tutorial.ResCharge.GiftEntry + 1, // 208: tutorial.ResFreeShop.Code:type_name -> tutorial.RES_CODE + 1, // 209: tutorial.ResBuyChessShop.Code:type_name -> tutorial.RES_CODE + 1, // 210: tutorial.ResRefreshChessShop.Code:type_name -> tutorial.RES_CODE + 618, // 211: tutorial.ResEndless.EndlessList:type_name -> tutorial.ResEndless.EndlessListEntry + 433, // 212: tutorial.ResEndlessInfo.Items:type_name -> tutorial.ItemInfo + 1, // 213: tutorial.ResEndlessReward.Code:type_name -> tutorial.RES_CODE + 1, // 214: tutorial.ResPiggyBankReward.Code:type_name -> tutorial.RES_CODE + 1, // 215: tutorial.ResShippingOrder.Code:type_name -> tutorial.RES_CODE + 1, // 216: tutorial.ResChampshipReward.Code:type_name -> tutorial.RES_CODE + 1, // 217: tutorial.ResChampshipRankReward.Code:type_name -> tutorial.RES_CODE + 619, // 218: tutorial.ResChampshipRank.RankList:type_name -> tutorial.ResChampshipRank.RankListEntry + 620, // 219: tutorial.ResChampshipPreRank.RankList:type_name -> tutorial.ResChampshipPreRank.RankListEntry + 621, // 220: tutorial.ResNotifyCard.Card:type_name -> tutorial.ResNotifyCard.CardEntry + 622, // 221: tutorial.ResNotifyCard.Master:type_name -> tutorial.ResNotifyCard.MasterEntry + 1, // 222: tutorial.ResSetFacebookUrl.Code:type_name -> tutorial.RES_CODE + 436, // 223: tutorial.ResDailyTask.WeekRewardEntry.value:type_name -> tutorial.DailyWeek + 437, // 224: tutorial.ResDailyTask.DailyTaskEntry.value:type_name -> tutorial.DailyTask + 464, // 225: tutorial.ResLimitEvent.LimitEventListEntry.value:type_name -> tutorial.LimitEvent + 473, // 226: tutorial.ResRank.RankListEntry.value:type_name -> tutorial.ResPlayerSimple + 506, // 227: tutorial.ResMailList.MailListEntry.value:type_name -> tutorial.MailInfo + 514, // 228: tutorial.ResCharge.SpecialShopEntry.value:type_name -> tutorial.ResSpecialShop + 515, // 229: tutorial.ResCharge.ChessShopEntry.value:type_name -> tutorial.ResChessShop + 524, // 230: tutorial.ResEndless.EndlessListEntry.value:type_name -> tutorial.ResEndlessInfo + 474, // 231: tutorial.ResChampshipRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank + 474, // 232: tutorial.ResChampshipPreRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank + 233, // [233:233] is the sub-list for method output_type + 233, // [233:233] is the sub-list for method input_type + 233, // [233:233] is the sub-list for extension type_name + 233, // [233:233] is the sub-list for extension extendee + 0, // [0:233] is the sub-list for field type_name } func init() { file_Gameapi_proto_init() } @@ -36186,7 +36322,7 @@ func file_Gameapi_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_Gameapi_proto_rawDesc, NumEnums: 4, - NumMessages: 616, + NumMessages: 619, NumExtensions: 0, NumServices: 0, }, diff --git a/src/server/teLog/log.2024-11-27 b/src/server/teLog/log.2024-11-27 new file mode 100644 index 00000000..e69de29b diff --git a/src/server/thinkdata/te.go b/src/server/thinkdata/te.go new file mode 100644 index 00000000..76734023 --- /dev/null +++ b/src/server/thinkdata/te.go @@ -0,0 +1,22 @@ +package telog + +import ( + "server/conf" + + "github.com/ThinkingDataAnalytics/go-sdk/v2/src/thinkingdata" +) + +var Te thinkingdata.TDAnalytics + +func init() { + // 初始化 + // 创建 LogConfig 配置文件 + + config := thinkingdata.TDLogConsumerConfig{ + Directory: conf.Server.TELOGDIR, // 事件采集的文件路径 + } + // 初始化 logConsumer + consumer, _ := thinkingdata.NewLogConsumerWithConfig(config) + // 创建 te 对象 + Te = thinkingdata.New(consumer) +} diff --git a/src/server/vendor/github.com/ThinkingDataAnalytics/go-sdk/v2/LICENSE b/src/server/vendor/github.com/ThinkingDataAnalytics/go-sdk/v2/LICENSE new file mode 100644 index 00000000..f7cd59f4 --- /dev/null +++ b/src/server/vendor/github.com/ThinkingDataAnalytics/go-sdk/v2/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2019 thinking-analytics / data-collector / server-sdk + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/src/server/vendor/github.com/ThinkingDataAnalytics/go-sdk/v2/src/thinkingdata/consumer_batch.go b/src/server/vendor/github.com/ThinkingDataAnalytics/go-sdk/v2/src/thinkingdata/consumer_batch.go new file mode 100644 index 00000000..8d559121 --- /dev/null +++ b/src/server/vendor/github.com/ThinkingDataAnalytics/go-sdk/v2/src/thinkingdata/consumer_batch.go @@ -0,0 +1,352 @@ +package thinkingdata + +import ( + "bytes" + "compress/gzip" + "encoding/json" + "errors" + "fmt" + "io/ioutil" + "net/http" + "net/url" + "strconv" + "strings" + "sync" + "time" +) + +// TDBatchConsumer upload data to TE by http +type TDBatchConsumer struct { + serverUrl string // serverUrl + appId string // appId + timeout time.Duration // http timeout (mill second) + compress bool // is need compress + bufferMutex *sync.RWMutex + cacheMutex *sync.RWMutex // cache mutex + + buffer []Data + batchSize int // flush event count each time + cacheBuffer [][]Data // buffer + cacheCapacity int // buffer max count +} + +type TDBatchConfig struct { + ServerUrl string // serverUrl + AppId string // appId + BatchSize int // flush event count each time + Timeout int // http timeout (mill second) + Compress bool // enable compress data + AutoFlush bool // enable auto flush + Interval int // auto flush spacing (second) + CacheCapacity int // cache event count +} + +const ( + DefaultTimeOut = 30000 + DefaultBatchSize = 20 + MaxBatchSize = 200 + DefaultInterval = 30 + DefaultCacheCapacity = 50 +) + +// NewBatchConsumer create TDBatchConsumer +func NewBatchConsumer(serverUrl string, appId string) (TDConsumer, error) { + config := TDBatchConfig{ + ServerUrl: serverUrl, + AppId: appId, + Compress: true, + } + return initBatchConsumer(config) +} + +// NewBatchConsumerWithBatchSize create TDBatchConsumer +// serverUrl +// appId +// batchSize: flush event count each time +func NewBatchConsumerWithBatchSize(serverUrl string, appId string, batchSize int) (TDConsumer, error) { + config := TDBatchConfig{ + ServerUrl: serverUrl, + AppId: appId, + Compress: true, + BatchSize: batchSize, + } + return initBatchConsumer(config) +} + +// NewBatchConsumerWithCompress create TDBatchConsumer +// serverUrl +// appId +// compress: enable data compress +func NewBatchConsumerWithCompress(serverUrl string, appId string, compress bool) (TDConsumer, error) { + config := TDBatchConfig{ + ServerUrl: serverUrl, + AppId: appId, + Compress: compress, + } + return initBatchConsumer(config) +} + +func NewBatchConsumerWithConfig(config TDBatchConfig) (TDConsumer, error) { + return initBatchConsumer(config) +} + +func initBatchConsumer(config TDBatchConfig) (TDConsumer, error) { + if config.ServerUrl == "" { + msg := fmt.Sprint("ServerUrl not be empty") + tdLogInfo(msg) + return nil, errors.New(msg) + } + u, err := url.Parse(config.ServerUrl) + if err != nil { + return nil, err + } + u.Path = "/sync_server" + + var batchSize int + if config.BatchSize > MaxBatchSize { + batchSize = MaxBatchSize + } else if config.BatchSize <= 0 { + batchSize = DefaultBatchSize + } else { + batchSize = config.BatchSize + } + + var cacheCapacity int + if config.CacheCapacity <= 0 { + cacheCapacity = DefaultCacheCapacity + } else { + cacheCapacity = config.CacheCapacity + } + + var timeout int + if config.Timeout == 0 { + timeout = DefaultTimeOut + } else { + timeout = config.Timeout + } + + c := &TDBatchConsumer{ + serverUrl: u.String(), + appId: config.AppId, + timeout: time.Duration(timeout) * time.Millisecond, + compress: config.Compress, + bufferMutex: new(sync.RWMutex), + cacheMutex: new(sync.RWMutex), + batchSize: batchSize, + buffer: make([]Data, 0, batchSize), + cacheCapacity: cacheCapacity, + cacheBuffer: make([][]Data, 0, cacheCapacity), + } + + var interval int + if config.Interval == 0 { + interval = DefaultInterval + } else { + interval = config.Interval + } + if config.AutoFlush { + go func() { + ticker := time.NewTicker(time.Duration(interval) * time.Second) + defer ticker.Stop() + for { + <-ticker.C + _ = c.timerFlush() + } + }() + } + + tdLogInfo("Mode: batch consumer, appId: %s, serverUrl: %s", c.appId, c.serverUrl) + + return c, nil +} + +func (c *TDBatchConsumer) Add(d Data) error { + c.bufferMutex.Lock() + c.buffer = append(c.buffer, d) + c.bufferMutex.Unlock() + + tdLogInfo("Enqueue event data: %v", d) + + if c.getBufferLength() >= c.batchSize || c.getCacheLength() > 0 { + err := c.Flush() + return err + } + + return nil +} + +func (c *TDBatchConsumer) timerFlush() error { + tdLogInfo("timer flush data") + return c.innerFlush() +} + +func (c *TDBatchConsumer) Flush() error { + tdLogInfo("flush data") + return c.innerFlush() +} + +func (c *TDBatchConsumer) innerFlush() error { + + c.cacheMutex.Lock() + defer c.cacheMutex.Unlock() + + c.bufferMutex.Lock() + defer c.bufferMutex.Unlock() + + if len(c.buffer) == 0 && len(c.cacheBuffer) == 0 { + return nil + } + + defer func() { + if len(c.cacheBuffer) > c.cacheCapacity { + c.cacheBuffer = c.cacheBuffer[1:] + } + }() + + if len(c.cacheBuffer) == 0 || len(c.buffer) >= c.batchSize { + c.cacheBuffer = append(c.cacheBuffer, c.buffer) + c.buffer = make([]Data, 0, c.batchSize) + } + + err := c.uploadEvents() + + return err +} + +func (c *TDBatchConsumer) uploadEvents() error { + buffer := c.cacheBuffer[0] + + jsonBytes, err := json.Marshal(buffer) + if err == nil { + params := parseTime(jsonBytes) + for i := 0; i < 3; i++ { + statusCode, code, err := c.send(params, len(buffer)) + if statusCode == 200 { + c.cacheBuffer = c.cacheBuffer[1:] + switch code { + case 0: + tdLogInfo("send success: %v", params) + return nil + case 1, -1: + msg := "invalid data format" + tdLogError(msg) + return fmt.Errorf(msg) + case -2: + msg := "APP ID doesn't exist" + tdLogError(msg) + return fmt.Errorf(msg) + case -3: + msg := "invalid ip transmission" + tdLogError(msg) + return fmt.Errorf(msg) + default: + msg := "unknown error" + tdLogError(msg) + return fmt.Errorf(msg) + } + } + if err != nil { + if i == 2 { + return err + } + } + } + } + return err +} + +func (c *TDBatchConsumer) FlushAll() error { + for c.getCacheLength() > 0 || c.getBufferLength() > 0 { + if err := c.Flush(); err != nil { + if !strings.Contains(err.Error(), "ThinkingDataError") { + return err + } + } + } + return nil +} + +func (c *TDBatchConsumer) Close() error { + tdLogInfo("batch consumer close") + return c.FlushAll() +} + +func (c *TDBatchConsumer) IsStringent() bool { + return false +} + +func (c *TDBatchConsumer) send(data string, size int) (statusCode int, code int, err error) { + var encodedData string + var compressType = "gzip" + if c.compress { + encodedData, err = encodeData(data) + } else { + encodedData = data + compressType = "none" + } + if err != nil { + return 0, 0, err + } + postData := bytes.NewBufferString(encodedData) + + var resp *http.Response + req, _ := http.NewRequest("POST", c.serverUrl, postData) + req.Header["appid"] = []string{c.appId} + req.Header.Set("user-agent", "ta-go-sdk") + req.Header.Set("version", SdkVersion) + req.Header.Set("compress", compressType) + req.Header["TA-Integration-Type"] = []string{LibName} + req.Header["TA-Integration-Version"] = []string{SdkVersion} + req.Header["TA-Integration-Count"] = []string{strconv.Itoa(size)} + client := &http.Client{Timeout: c.timeout} + resp, err = client.Do(req) + + if err != nil { + return 0, 0, err + } + + defer resp.Body.Close() + + if resp.StatusCode == http.StatusOK { + body, _ := ioutil.ReadAll(resp.Body) + var result struct { + Code int + } + + err = json.Unmarshal(body, &result) + if err != nil { + return resp.StatusCode, 1, err + } + + return resp.StatusCode, result.Code, nil + } else { + return resp.StatusCode, -1, nil + } +} + +// Gzip +func encodeData(data string) (string, error) { + var buf bytes.Buffer + gw := gzip.NewWriter(&buf) + + _, err := gw.Write([]byte(data)) + if err != nil { + gw.Close() + return "", err + } + gw.Close() + + return string(buf.Bytes()), nil +} + +func (c *TDBatchConsumer) getBufferLength() int { + c.bufferMutex.RLock() + defer c.bufferMutex.RUnlock() + return len(c.buffer) +} + +func (c *TDBatchConsumer) getCacheLength() int { + c.cacheMutex.RLock() + defer c.cacheMutex.RUnlock() + return len(c.cacheBuffer) +} diff --git a/src/server/vendor/github.com/ThinkingDataAnalytics/go-sdk/v2/src/thinkingdata/consumer_debug.go b/src/server/vendor/github.com/ThinkingDataAnalytics/go-sdk/v2/src/thinkingdata/consumer_debug.go new file mode 100644 index 00000000..2e7726de --- /dev/null +++ b/src/server/vendor/github.com/ThinkingDataAnalytics/go-sdk/v2/src/thinkingdata/consumer_debug.go @@ -0,0 +1,120 @@ +package thinkingdata + +import ( + "encoding/json" + "errors" + "fmt" + "io/ioutil" + "net/http" + "net/url" +) + +// TDDebugConsumer The data is reported one by one, and when an error occurs, the log will be printed on the console. +type TDDebugConsumer struct { + serverUrl string // serverUrl + appId string // appId + writeData bool // is archive to TE + deviceId string // be used to debug in TE +} + +// NewDebugConsumer init TDDebugConsumer +func NewDebugConsumer(serverUrl string, appId string) (TDConsumer, error) { + return NewDebugConsumerWithWriter(serverUrl, appId, true) +} + +func NewDebugConsumerWithWriter(serverUrl string, appId string, writeData bool) (TDConsumer, error) { + return NewDebugConsumerWithDeviceId(serverUrl, appId, writeData, "") +} + +func NewDebugConsumerWithDeviceId(serverUrl string, appId string, writeData bool, deviceId string) (TDConsumer, error) { + // enable console log + SetLogLevel(TDLogLevelDebug) + + if len(serverUrl) <= 0 { + msg := fmt.Sprint("ServerUrl not be empty") + tdLogError(msg) + return nil, errors.New(msg) + } + + u, err := url.Parse(serverUrl) + if err != nil { + return nil, err + } + + u.Path = "/data_debug" + + c := &TDDebugConsumer{serverUrl: u.String(), appId: appId, writeData: writeData, deviceId: deviceId} + + tdLogInfo("Mode: debug consumer, appId: %s, serverUrl: %s", c.appId, c.serverUrl) + + return c, nil +} + +func (c *TDDebugConsumer) Add(d Data) error { + jsonBytes, err := json.Marshal(d) + if err != nil { + return err + } + + var jsonStr string + // if properties has includes complex data, SDK need parse time with regular expression + if d.IsComplex { + jsonStr = parseTime(jsonBytes) + } else { + jsonStr = string(jsonBytes) + } + + tdLogInfo("%v", jsonStr) + + return c.send(jsonStr) +} + +func (c *TDDebugConsumer) Flush() error { + tdLogInfo("flush data") + return nil +} + +func (c *TDDebugConsumer) Close() error { + tdLogInfo("debug consumer close") + return nil +} + +func (c *TDDebugConsumer) IsStringent() bool { + return true +} + +func (c *TDDebugConsumer) send(data string) error { + var dryRun = "0" + if !c.writeData { + dryRun = "1" + } + postData := url.Values{"data": {data}, "appid": {c.appId}, "source": {"server"}, "dryRun": {dryRun}} + if len(c.deviceId) > 0 { + postData.Add("deviceId", c.deviceId) + } + resp, err := http.PostForm(c.serverUrl, postData) + if err != nil { + return err + } + + defer resp.Body.Close() + + if resp.StatusCode == http.StatusOK { + body, _ := ioutil.ReadAll(resp.Body) + result := map[string]interface{}{} + err = json.Unmarshal(body, &result) + if err != nil { + return err + } + if uint64(result["errorLevel"].(float64)) != 0 { + msg := fmt.Sprintf("send to receiver failed with return content: %s", string(body)) + tdLogError(msg) + return errors.New(msg) + } else { + tdLogInfo("send success: %v", result) + } + } else { + return errors.New(fmt.Sprintf("Unexpected Status Code: %d", resp.StatusCode)) + } + return nil +} diff --git a/src/server/vendor/github.com/ThinkingDataAnalytics/go-sdk/v2/src/thinkingdata/consumer_log.go b/src/server/vendor/github.com/ThinkingDataAnalytics/go-sdk/v2/src/thinkingdata/consumer_log.go new file mode 100644 index 00000000..e39f45b3 --- /dev/null +++ b/src/server/vendor/github.com/ThinkingDataAnalytics/go-sdk/v2/src/thinkingdata/consumer_log.go @@ -0,0 +1,256 @@ +package thinkingdata + +import ( + "encoding/json" + "errors" + "fmt" + "os" + "sync" + "time" +) + +type RotateMode int32 + +const ( + DefaultChannelSize = 1000 // channel size + ROTATE_DAILY RotateMode = 0 // by the day + ROTATE_HOURLY RotateMode = 1 // by the hour +) + +// TDLogConsumer write data to file, it works with LogBus +type TDLogConsumer struct { + directory string // directory of log file + dateFormat string // name format of log file + fileSize int64 // max size of single log file (MByte) + fileNamePrefix string // prefix of log file + currentFile *os.File // current file handler + wg sync.WaitGroup + ch chan []byte + mutex *sync.RWMutex + sdkClose bool +} + +type TDLogConsumerConfig struct { + Directory string // directory of log file + RotateMode RotateMode // rotate mode of log file + FileSize int // max size of single log file (MByte) + FileNamePrefix string // prefix of log file + ChannelSize int +} + +func NewLogConsumer(directory string, r RotateMode) (TDConsumer, error) { + return NewLogConsumerWithFileSize(directory, r, 0) +} + +// NewLogConsumerWithFileSize init TDLogConsumer +// directory: directory of log file +// r: rotate mode of log file. (in days / hours) +// size: max size of single log file (MByte) +func NewLogConsumerWithFileSize(directory string, r RotateMode, size int) (TDConsumer, error) { + config := TDLogConsumerConfig{ + Directory: directory, + RotateMode: r, + FileSize: size, + } + return NewLogConsumerWithConfig(config) +} + +func NewLogConsumerWithConfig(config TDLogConsumerConfig) (TDConsumer, error) { + var df string + switch config.RotateMode { + case ROTATE_DAILY: + df = "2006-01-02" + case ROTATE_HOURLY: + df = "2006-01-02-15" + default: + errStr := "unknown rotate mode" + tdLogInfo(errStr) + return nil, errors.New(errStr) + } + + chanSize := DefaultChannelSize + if config.ChannelSize > 0 { + chanSize = config.ChannelSize + } + + c := &TDLogConsumer{ + directory: config.Directory, + dateFormat: df, + fileSize: int64(config.FileSize * 1024 * 1024), + fileNamePrefix: config.FileNamePrefix, + wg: sync.WaitGroup{}, + ch: make(chan []byte, chanSize), + mutex: new(sync.RWMutex), + sdkClose: false, + } + + return c, c.init() +} + +func (c *TDLogConsumer) Add(d Data) error { + var err error = nil + c.mutex.Lock() + defer func() { + c.mutex.Unlock() + }() + if c.sdkClose { + err = errors.New("add event failed, SDK has been closed") + tdLogError(err.Error()) + } else { + jsonBytes, jsonErr := json.Marshal(d) + if jsonErr != nil { + err = jsonErr + } else { + c.ch <- jsonBytes + } + } + return err +} + +func (c *TDLogConsumer) Flush() error { + tdLogInfo("flush data") + var err error = nil + c.mutex.Lock() + if c.currentFile != nil { + err = c.currentFile.Sync() + } + c.mutex.Unlock() + return err +} + +func (c *TDLogConsumer) Close() error { + tdLogInfo("log consumer close") + + var err error = nil + c.mutex.Lock() + if c.sdkClose { + err = errors.New("[ThinkingData][error]: SDK has been closed") + } else { + close(c.ch) + c.wg.Wait() + if c.currentFile != nil { + _ = c.currentFile.Sync() + err = c.currentFile.Close() + c.currentFile = nil + } + } + c.sdkClose = true + c.mutex.Unlock() + return err +} + +func (c *TDLogConsumer) IsStringent() bool { + return false +} + +func (c *TDLogConsumer) constructFileName(timeStr string, i int) string { + fileNamePrefix := "" + if len(c.fileNamePrefix) != 0 { + fileNamePrefix = c.fileNamePrefix + "." + } + // is need paging + if c.fileSize > 0 { + return fmt.Sprintf("%s/%slog.%s_%d", c.directory, fileNamePrefix, timeStr, i) + } else { + return fmt.Sprintf("%s/%slog.%s", c.directory, fileNamePrefix, timeStr) + } +} + +func (c *TDLogConsumer) init() error { + fd, err := c.initLogFile() + if err != nil { + tdLogError("init log file failed: %s", err) + return err + } + c.currentFile = fd + + c.wg.Add(1) + + go func() { + defer func() { + c.wg.Done() + }() + for { + select { + case rec, ok := <-c.ch: + if !ok { + return + } + jsonStr := parseTime(rec) + tdLogInfo("write event data: %s", jsonStr) + c.writeToFile(jsonStr) + } + } + }() + + tdLogInfo("Mode: log consumer, log path: " + c.directory) + + return nil +} + +func (c *TDLogConsumer) initLogFile() (*os.File, error) { + _, err := os.Stat(c.directory) + if err != nil && os.IsNotExist(err) { + e := os.MkdirAll(c.directory, os.ModePerm) + if e != nil { + return nil, e + } + } + timeStr := time.Now().Format(c.dateFormat) + return os.OpenFile(c.constructFileName(timeStr, 0), os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0664) +} + +var logFileIndex = 0 + +func (c *TDLogConsumer) writeToFile(str string) { + timeStr := time.Now().Format(c.dateFormat) + // paging by Rotate Mode and current file size + var newName string + fName := c.constructFileName(timeStr, logFileIndex) + + if c.currentFile == nil { + var openFileErr error + c.currentFile, openFileErr = os.OpenFile(fName, os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0664) + if openFileErr != nil { + tdLogInfo("open log file failed: %s\n", openFileErr) + return + } + } + + if c.currentFile.Name() != fName { + newName = fName + } else if c.fileSize > 0 { + stat, _ := c.currentFile.Stat() + if stat.Size() > c.fileSize { + logFileIndex++ + newName = c.constructFileName(timeStr, logFileIndex) + } + } + if newName != "" { + err := c.currentFile.Close() + if err != nil { + tdLogInfo("close file failed: %s\n", err) + return + } + c.currentFile, err = os.OpenFile(fName, os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0664) + if err != nil { + tdLogInfo("rotate log file failed: %s\n", err) + return + } + } + _, err := fmt.Fprintln(c.currentFile, str) + if err != nil { + tdLogInfo("LoggerWriter(%q): %s\n", c.currentFile.Name(), err) + return + } +} + +// Deprecated: please use TDLogConsumer +type LogConsumer struct { + TDLogConsumer +} + +// Deprecated: please use TDLogConsumerConfig +type LogConfig struct { + TDLogConsumerConfig +} diff --git a/src/server/vendor/github.com/ThinkingDataAnalytics/go-sdk/v2/src/thinkingdata/td_log.go b/src/server/vendor/github.com/ThinkingDataAnalytics/go-sdk/v2/src/thinkingdata/td_log.go new file mode 100644 index 00000000..a35ec036 --- /dev/null +++ b/src/server/vendor/github.com/ThinkingDataAnalytics/go-sdk/v2/src/thinkingdata/td_log.go @@ -0,0 +1,125 @@ +package thinkingdata + +import ( + "fmt" + "time" +) + +// SDK_LOG_PREFIX const +const SDK_LOG_PREFIX = "[ThinkingData]" + +var logInstance TDLogger + +type TDLogLevel int32 + +const ( + TDLogLevelOff TDLogLevel = 1 + TDLogLevelError TDLogLevel = 2 + TDLogLevelWarning TDLogLevel = 3 + TDLogLevelInfo TDLogLevel = 4 + TDLogLevelDebug TDLogLevel = 5 +) + +// default is TDLogLevelOff +var currentLogLevel = TDLogLevelOff + +// TDLogger User-defined log classes must comply with interface +type TDLogger interface { + Print(message string) +} + +// SetLogLevel Set the log output level +func SetLogLevel(level TDLogLevel) { + if level < TDLogLevelOff || level > TDLogLevelDebug { + fmt.Println(SDK_LOG_PREFIX + "log type error") + return + } else { + currentLogLevel = level + } +} + +// SetCustomLogger Set a custom log input class, usually you don't need to set it up. +func SetCustomLogger(logger TDLogger) { + if logger != nil { + logInstance = logger + } +} + +func tdLog(level TDLogLevel, format string, v ...interface{}) { + if level > currentLogLevel { + return + } + + var modeStr string + switch level { + case TDLogLevelError: + modeStr = "[Error] " + break + case TDLogLevelWarning: + modeStr = "[Warning] " + break + case TDLogLevelInfo: + modeStr = "[Info] " + break + case TDLogLevelDebug: + modeStr = "[Debug] " + break + default: + modeStr = "[Info] " + break + } + + if logInstance != nil { + msg := fmt.Sprintf(SDK_LOG_PREFIX+modeStr+format+"\n", v...) + logInstance.Print(msg) + } else { + logTime := fmt.Sprintf("[%v]", time.Now().Format("2006-01-02 15:04:05.000")) + fmt.Printf(logTime+SDK_LOG_PREFIX+modeStr+format+"\n", v...) + } +} + +func tdLogDebug(format string, v ...interface{}) { + tdLog(TDLogLevelDebug, format, v...) +} + +func tdLogInfo(format string, v ...interface{}) { + tdLog(TDLogLevelInfo, format, v...) +} + +func tdLogError(format string, v ...interface{}) { + tdLog(TDLogLevelError, format, v...) +} + +func tdLogWarning(format string, v ...interface{}) { + tdLog(TDLogLevelWarning, format, v...) +} + +// Deprecated: please use thinkingdata.SetLogLevel(thinkingdata.TDLogLevelOff) +type LogType int32 + +// Deprecated: please use thinkingdata.SetLogLevel(thinkingdata.TDLogLevelOff) +const ( + LoggerTypeOff LogType = 1 << 0 // disable log + LoggerTypePrint LogType = 1 << 1 // print on console + LoggerTypeWriteFile LogType = 1 << 2 // print to file + LoggerTypePrintAndWriteFile = LoggerTypePrint | LoggerTypeWriteFile // print both on console and file +) + +// Deprecated: please use thinkingdata.SetLogLevel(thinkingdata.TDLogLevelOff) +type LoggerConfig struct { + Type LogType + Path string +} + +// Deprecated: please use thinkingdata.SetLogLevel(thinkingdata.TDLogLevelOff) +func SetLoggerConfig(config LoggerConfig) { + if config.Type < LoggerTypeOff || config.Type > LoggerTypePrintAndWriteFile { + fmt.Println(SDK_LOG_PREFIX + "log type error") + return + } + if config.Type&LoggerTypeOff == LoggerTypeOff { + currentLogLevel = TDLogLevelOff + } else { + currentLogLevel = TDLogLevelInfo + } +} diff --git a/src/server/vendor/github.com/ThinkingDataAnalytics/go-sdk/v2/src/thinkingdata/thinkingdata.go b/src/server/vendor/github.com/ThinkingDataAnalytics/go-sdk/v2/src/thinkingdata/thinkingdata.go new file mode 100644 index 00000000..f6b5ae9d --- /dev/null +++ b/src/server/vendor/github.com/ThinkingDataAnalytics/go-sdk/v2/src/thinkingdata/thinkingdata.go @@ -0,0 +1,305 @@ +package thinkingdata + +import ( + "errors" + "sync" +) + +const ( + Track = "track" + TrackUpdate = "track_update" + TrackOverwrite = "track_overwrite" + UserSet = "user_set" + UserUnset = "user_unset" + UserSetOnce = "user_setOnce" + UserAdd = "user_add" + UserAppend = "user_append" + UserUniqAppend = "user_uniq_append" + UserDel = "user_del" + + SdkVersion = "2.0.3" + LibName = "Golang" +) + +type Data struct { + IsComplex bool `json:"-"` // properties are nested or not + AccountId string `json:"#account_id,omitempty"` + DistinctId string `json:"#distinct_id,omitempty"` + Type string `json:"#type"` + Time string `json:"#time"` + EventName string `json:"#event_name,omitempty"` + EventId string `json:"#event_id,omitempty"` + FirstCheckId string `json:"#first_check_id,omitempty"` + Ip string `json:"#ip,omitempty"` + UUID string `json:"#uuid,omitempty"` + AppId string `json:"#app_id,omitempty"` + Properties map[string]interface{} `json:"properties"` +} + +// TDConsumer define operation interface +type TDConsumer interface { + Add(d Data) error + Flush() error + Close() error + IsStringent() bool // check data or not. +} + +type TDAnalytics struct { + consumer TDConsumer + superProperties map[string]interface{} + mutex *sync.RWMutex + dynamicSuperProperties func() map[string]interface{} +} + +// New init SDK +func New(c TDConsumer) TDAnalytics { + tdLogInfo("init SDK success") + return TDAnalytics{ + consumer: c, + superProperties: make(map[string]interface{}), + mutex: new(sync.RWMutex), + } +} + +// GetSuperProperties get common properties +func (ta *TDAnalytics) GetSuperProperties() map[string]interface{} { + result := make(map[string]interface{}) + ta.mutex.Lock() + mergeProperties(result, ta.superProperties) + ta.mutex.Unlock() + return result +} + +// SetSuperProperties set common properties +func (ta *TDAnalytics) SetSuperProperties(superProperties map[string]interface{}) { + ta.mutex.Lock() + mergeProperties(ta.superProperties, superProperties) + ta.mutex.Unlock() +} + +// ClearSuperProperties clear common properties +func (ta *TDAnalytics) ClearSuperProperties() { + ta.mutex.Lock() + ta.superProperties = make(map[string]interface{}) + ta.mutex.Unlock() +} + +// SetDynamicSuperProperties set common properties dynamically. +// not recommend to add the operation which with a lot of computation +func (ta *TDAnalytics) SetDynamicSuperProperties(action func() map[string]interface{}) { + ta.mutex.Lock() + ta.dynamicSuperProperties = action + ta.mutex.Unlock() +} + +// GetDynamicSuperProperties dynamic common properties +func (ta *TDAnalytics) GetDynamicSuperProperties() map[string]interface{} { + result := make(map[string]interface{}) + ta.mutex.RLock() + if ta.dynamicSuperProperties != nil { + mergeProperties(result, ta.dynamicSuperProperties()) + } + ta.mutex.RUnlock() + return result +} + +// Track report ordinary event +func (ta *TDAnalytics) Track(accountId, distinctId, eventName string, properties map[string]interface{}) error { + return ta.track(accountId, distinctId, Track, eventName, "", properties) +} + +// TrackFirst report first event +func (ta *TDAnalytics) TrackFirst(accountId, distinctId, eventName, firstCheckId string, properties map[string]interface{}) error { + if len(firstCheckId) == 0 { + msg := "the 'firstCheckId' must be provided" + tdLogInfo(msg) + return errors.New(msg) + } + p := make(map[string]interface{}) + mergeProperties(p, properties) + p["#first_check_id"] = firstCheckId + return ta.track(accountId, distinctId, Track, eventName, "", p) +} + +// TrackUpdate report updatable event +func (ta *TDAnalytics) TrackUpdate(accountId, distinctId, eventName, eventId string, properties map[string]interface{}) error { + return ta.track(accountId, distinctId, TrackUpdate, eventName, eventId, properties) +} + +// TrackOverwrite report overridable event +func (ta *TDAnalytics) TrackOverwrite(accountId, distinctId, eventName, eventId string, properties map[string]interface{}) error { + return ta.track(accountId, distinctId, TrackOverwrite, eventName, eventId, properties) +} + +func (ta *TDAnalytics) track(accountId, distinctId, dataType, eventName, eventId string, properties map[string]interface{}) error { + defer func() { + if r := recover(); r != nil { + tdLogError("%+v\ndata: %+v", r, properties) + } + }() + + if len(eventName) == 0 { + msg := "the event name must be provided" + tdLogError(msg) + return errors.New(msg) + } + + // eventId not be null unless eventType is equal Track. + if len(eventId) == 0 && dataType != Track { + msg := "the event id must be provided" + tdLogError(msg) + return errors.New(msg) + } + + p := ta.GetSuperProperties() + dynamicSuperProperties := ta.GetDynamicSuperProperties() + + mergeProperties(p, dynamicSuperProperties) + // preset properties has the highest priority + p["#lib"] = LibName + p["#lib_version"] = SdkVersion + // custom properties + mergeProperties(p, properties) + + return ta.add(accountId, distinctId, dataType, eventName, eventId, p) +} + +// UserSet set user properties. would overwrite existing names. +func (ta *TDAnalytics) UserSet(accountId string, distinctId string, properties map[string]interface{}) error { + return ta.user(accountId, distinctId, UserSet, properties) +} + +// UserUnset clear the user properties of users. +func (ta *TDAnalytics) UserUnset(accountId string, distinctId string, s []string) error { + if len(s) == 0 { + msg := "invalid params for UserUnset: keys is nil" + tdLogInfo(msg) + return errors.New(msg) + } + prop := make(map[string]interface{}) + for _, v := range s { + prop[v] = 0 + } + return ta.user(accountId, distinctId, UserUnset, prop) +} + +func (ta *TDAnalytics) UserUnsetWithProperties(accountId string, distinctId string, properties map[string]interface{}) error { + if len(properties) == 0 { + msg := "invalid params for UserUnset: properties is nil" + tdLogInfo(msg) + return errors.New(msg) + } + return ta.user(accountId, distinctId, UserUnset, properties) +} + +// UserSetOnce set user properties, If such property had been set before, this message would be neglected. +func (ta *TDAnalytics) UserSetOnce(accountId string, distinctId string, properties map[string]interface{}) error { + return ta.user(accountId, distinctId, UserSetOnce, properties) +} + +// UserAdd to accumulate operations against the property. +func (ta *TDAnalytics) UserAdd(accountId string, distinctId string, properties map[string]interface{}) error { + return ta.user(accountId, distinctId, UserAdd, properties) +} + +// UserAppend to add user properties of array type. +func (ta *TDAnalytics) UserAppend(accountId string, distinctId string, properties map[string]interface{}) error { + return ta.user(accountId, distinctId, UserAppend, properties) +} + +// UserUniqAppend append user properties to array type by unique. +func (ta *TDAnalytics) UserUniqAppend(accountId string, distinctId string, properties map[string]interface{}) error { + return ta.user(accountId, distinctId, UserUniqAppend, properties) +} + +// UserDelete delete a user, This operation cannot be undone. +func (ta *TDAnalytics) UserDelete(accountId string, distinctId string) error { + return ta.user(accountId, distinctId, UserDel, nil) +} + +// UserDeleteWithProperties delete a user, This operation cannot be undone. +func (ta *TDAnalytics) UserDeleteWithProperties(accountId string, distinctId string, properties map[string]interface{}) error { + return ta.user(accountId, distinctId, UserDel, properties) +} + +func (ta *TDAnalytics) user(accountId, distinctId, dataType string, properties map[string]interface{}) error { + defer func() { + if r := recover(); r != nil { + tdLogError("%+v\ndata: %+v", r, properties) + } + }() + if properties == nil && dataType != UserDel { + msg := "invalid params for " + dataType + ": properties is nil" + tdLogError(msg) + return errors.New(msg) + } + p := make(map[string]interface{}) + mergeProperties(p, properties) + return ta.add(accountId, distinctId, dataType, "", "", p) +} + +// Flush report data immediately. +func (ta *TDAnalytics) Flush() error { + return ta.consumer.Flush() +} + +// Close and exit sdk +func (ta *TDAnalytics) Close() error { + err := ta.consumer.Close() + tdLogInfo("SDK close") + return err +} + +func (ta *TDAnalytics) add(accountId, distinctId, dataType, eventName, eventId string, properties map[string]interface{}) error { + if len(accountId) == 0 && len(distinctId) == 0 { + msg := "invalid parameters: account_id and distinct_id cannot be empty at the same time" + tdLogError(msg) + return errors.New(msg) + } + + // get "#ip" value in properties, empty string will be return when not found. + ip := extractStringProperty(properties, "#ip") + + // get "#app_id" value in properties, empty string will be return when not found. + appId := extractStringProperty(properties, "#app_id") + + // get "#time" value in properties, empty string will be return when not found. + eventTime := extractTime(properties) + + firstCheckId := extractStringProperty(properties, "#first_check_id") + + // get "#uuid" value in properties, empty string will be return when not found. + uuid := extractStringProperty(properties, "#uuid") + if len(uuid) == 0 { + uuid = generateUUID() + } + + data := Data{ + AccountId: accountId, + DistinctId: distinctId, + Type: dataType, + Time: eventTime, + EventName: eventName, + EventId: eventId, + FirstCheckId: firstCheckId, + Ip: ip, + UUID: uuid, + Properties: properties, + } + + if len(appId) > 0 { + data.AppId = appId + } + + err := formatProperties(&data, ta) + if err != nil { + return err + } + + return ta.consumer.Add(data) +} + +// Deprecated: please use TDConsumer +type Consumer interface { + TDConsumer +} diff --git a/src/server/vendor/github.com/ThinkingDataAnalytics/go-sdk/v2/src/thinkingdata/utils.go b/src/server/vendor/github.com/ThinkingDataAnalytics/go-sdk/v2/src/thinkingdata/utils.go new file mode 100644 index 00000000..3ac20f07 --- /dev/null +++ b/src/server/vendor/github.com/ThinkingDataAnalytics/go-sdk/v2/src/thinkingdata/utils.go @@ -0,0 +1,143 @@ +package thinkingdata + +import ( + "errors" + "fmt" + "github.com/google/uuid" + "os" + "reflect" + "regexp" + "time" +) + +const ( + DATE_FORMAT = "2006-01-02 15:04:05.000" + KEY_PATTERN = "^[a-zA-Z#][A-Za-z0-9_]{0,49}$" +) + +// A string of 50 letters and digits that starts with '#' or a letter +var keyPattern, _ = regexp.Compile(KEY_PATTERN) + +func mergeProperties(target, source map[string]interface{}) { + for k, v := range source { + target[k] = v + } +} + +func extractTime(p map[string]interface{}) string { + if t, ok := p["#time"]; ok { + delete(p, "#time") + switch v := t.(type) { + case string: + return v + case time.Time: + return v.Format(DATE_FORMAT) + default: + return time.Now().Format(DATE_FORMAT) + } + } + + return time.Now().Format(DATE_FORMAT) +} + +func extractStringProperty(p map[string]interface{}, key string) string { + if t, ok := p[key]; ok { + delete(p, key) + v, ok := t.(string) + if !ok { + fmt.Fprintln(os.Stderr, "Invalid data type for "+key) + } + return v + } + return "" +} + +func isNotNumber(v interface{}) bool { + switch v.(type) { + case int, int8, int16, int32, int64, uint, uint8, uint16, uint32, uint64: + case float32, float64: + default: + return true + } + return false +} + +func formatProperties(d *Data, ta *TDAnalytics) error { + + if d.EventName != "" { + matched := checkPattern([]byte(d.EventName)) + if !matched { + msg := "invalid event name: " + d.EventName + tdLogInfo(msg) + return errors.New(msg) + } + } + + if d.Properties != nil { + for k, v := range d.Properties { + if ta.consumer.IsStringent() { + isMatch := checkPattern([]byte(k)) + if !isMatch { + msg := "invalid property key: " + k + tdLogInfo(msg) + return errors.New(msg) + } + } + + if d.Type == UserAdd && isNotNumber(v) { + msg := "invalid property value: only numbers is supported by UserAdd" + tdLogInfo(msg) + return errors.New(msg) + } + + // check value + switch v.(type) { + case int: + case bool: + case float64: + case string: + case time.Time: + d.Properties[k] = v.(time.Time).Format(DATE_FORMAT) + case []string: + d.IsComplex = true + default: + d.IsComplex = true + } + } + } + + return nil +} + +func isNotArrayOrSlice(v interface{}) bool { + typeOf := reflect.TypeOf(v) + switch typeOf.Kind() { + case reflect.Array: + case reflect.Slice: + default: + return true + } + return false +} + +func checkPattern(name []byte) bool { + return keyPattern.Match(name) +} + +func parseTime(input []byte) string { + var re = regexp.MustCompile(`"((\d{4}-\d{2}-\d{2})T(\d{2}:\d{2}:\d{2})(?:\.(\d{3}))\d*)(Z|[\+-]\d{2}:\d{2})"`) + var substitution = "\"$2 $3.$4\"" + + for re.Match(input) { + input = re.ReplaceAll(input, []byte(substitution)) + } + return string(input) +} + +func generateUUID() string { + newUUID, err := uuid.NewUUID() + if err != nil { + return "" + } + return newUUID.String() +} diff --git a/src/server/vendor/github.com/google/uuid/CHANGELOG.md b/src/server/vendor/github.com/google/uuid/CHANGELOG.md new file mode 100644 index 00000000..2bd78667 --- /dev/null +++ b/src/server/vendor/github.com/google/uuid/CHANGELOG.md @@ -0,0 +1,10 @@ +# Changelog + +## [1.3.1](https://github.com/google/uuid/compare/v1.3.0...v1.3.1) (2023-08-18) + + +### Bug Fixes + +* Use .EqualFold() to parse urn prefixed UUIDs ([#118](https://github.com/google/uuid/issues/118)) ([574e687](https://github.com/google/uuid/commit/574e6874943741fb99d41764c705173ada5293f0)) + +## Changelog diff --git a/src/server/vendor/github.com/google/uuid/CONTRIBUTING.md b/src/server/vendor/github.com/google/uuid/CONTRIBUTING.md new file mode 100644 index 00000000..55668887 --- /dev/null +++ b/src/server/vendor/github.com/google/uuid/CONTRIBUTING.md @@ -0,0 +1,26 @@ +# How to contribute + +We definitely welcome patches and contribution to this project! + +### Tips + +Commits must be formatted according to the [Conventional Commits Specification](https://www.conventionalcommits.org). + +Always try to include a test case! If it is not possible or not necessary, +please explain why in the pull request description. + +### Releasing + +Commits that would precipitate a SemVer change, as desrcibed in the Conventional +Commits Specification, will trigger [`release-please`](https://github.com/google-github-actions/release-please-action) +to create a release candidate pull request. Once submitted, `release-please` +will create a release. + +For tips on how to work with `release-please`, see its documentation. + +### Legal requirements + +In order to protect both you and ourselves, you will need to sign the +[Contributor License Agreement](https://cla.developers.google.com/clas). + +You may have already signed it for other Google projects. diff --git a/src/server/vendor/github.com/google/uuid/CONTRIBUTORS b/src/server/vendor/github.com/google/uuid/CONTRIBUTORS new file mode 100644 index 00000000..b4bb97f6 --- /dev/null +++ b/src/server/vendor/github.com/google/uuid/CONTRIBUTORS @@ -0,0 +1,9 @@ +Paul Borman +bmatsuo +shawnps +theory +jboverfelt +dsymonds +cd1 +wallclockbuilder +dansouza diff --git a/src/server/vendor/github.com/google/uuid/LICENSE b/src/server/vendor/github.com/google/uuid/LICENSE new file mode 100644 index 00000000..5dc68268 --- /dev/null +++ b/src/server/vendor/github.com/google/uuid/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) 2009,2014 Google Inc. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/src/server/vendor/github.com/google/uuid/README.md b/src/server/vendor/github.com/google/uuid/README.md new file mode 100644 index 00000000..3e9a6188 --- /dev/null +++ b/src/server/vendor/github.com/google/uuid/README.md @@ -0,0 +1,21 @@ +# uuid +The uuid package generates and inspects UUIDs based on +[RFC 4122](https://datatracker.ietf.org/doc/html/rfc4122) +and DCE 1.1: Authentication and Security Services. + +This package is based on the github.com/pborman/uuid package (previously named +code.google.com/p/go-uuid). It differs from these earlier packages in that +a UUID is a 16 byte array rather than a byte slice. One loss due to this +change is the ability to represent an invalid UUID (vs a NIL UUID). + +###### Install +```sh +go get github.com/google/uuid +``` + +###### Documentation +[![Go Reference](https://pkg.go.dev/badge/github.com/google/uuid.svg)](https://pkg.go.dev/github.com/google/uuid) + +Full `go doc` style documentation for the package can be viewed online without +installing this package by using the GoDoc site here: +http://pkg.go.dev/github.com/google/uuid diff --git a/src/server/vendor/github.com/google/uuid/dce.go b/src/server/vendor/github.com/google/uuid/dce.go new file mode 100644 index 00000000..fa820b9d --- /dev/null +++ b/src/server/vendor/github.com/google/uuid/dce.go @@ -0,0 +1,80 @@ +// Copyright 2016 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import ( + "encoding/binary" + "fmt" + "os" +) + +// A Domain represents a Version 2 domain +type Domain byte + +// Domain constants for DCE Security (Version 2) UUIDs. +const ( + Person = Domain(0) + Group = Domain(1) + Org = Domain(2) +) + +// NewDCESecurity returns a DCE Security (Version 2) UUID. +// +// The domain should be one of Person, Group or Org. +// On a POSIX system the id should be the users UID for the Person +// domain and the users GID for the Group. The meaning of id for +// the domain Org or on non-POSIX systems is site defined. +// +// For a given domain/id pair the same token may be returned for up to +// 7 minutes and 10 seconds. +func NewDCESecurity(domain Domain, id uint32) (UUID, error) { + uuid, err := NewUUID() + if err == nil { + uuid[6] = (uuid[6] & 0x0f) | 0x20 // Version 2 + uuid[9] = byte(domain) + binary.BigEndian.PutUint32(uuid[0:], id) + } + return uuid, err +} + +// NewDCEPerson returns a DCE Security (Version 2) UUID in the person +// domain with the id returned by os.Getuid. +// +// NewDCESecurity(Person, uint32(os.Getuid())) +func NewDCEPerson() (UUID, error) { + return NewDCESecurity(Person, uint32(os.Getuid())) +} + +// NewDCEGroup returns a DCE Security (Version 2) UUID in the group +// domain with the id returned by os.Getgid. +// +// NewDCESecurity(Group, uint32(os.Getgid())) +func NewDCEGroup() (UUID, error) { + return NewDCESecurity(Group, uint32(os.Getgid())) +} + +// Domain returns the domain for a Version 2 UUID. Domains are only defined +// for Version 2 UUIDs. +func (uuid UUID) Domain() Domain { + return Domain(uuid[9]) +} + +// ID returns the id for a Version 2 UUID. IDs are only defined for Version 2 +// UUIDs. +func (uuid UUID) ID() uint32 { + return binary.BigEndian.Uint32(uuid[0:4]) +} + +func (d Domain) String() string { + switch d { + case Person: + return "Person" + case Group: + return "Group" + case Org: + return "Org" + } + return fmt.Sprintf("Domain%d", int(d)) +} diff --git a/src/server/vendor/github.com/google/uuid/doc.go b/src/server/vendor/github.com/google/uuid/doc.go new file mode 100644 index 00000000..5b8a4b9a --- /dev/null +++ b/src/server/vendor/github.com/google/uuid/doc.go @@ -0,0 +1,12 @@ +// Copyright 2016 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package uuid generates and inspects UUIDs. +// +// UUIDs are based on RFC 4122 and DCE 1.1: Authentication and Security +// Services. +// +// A UUID is a 16 byte (128 bit) array. UUIDs may be used as keys to +// maps or compared directly. +package uuid diff --git a/src/server/vendor/github.com/google/uuid/hash.go b/src/server/vendor/github.com/google/uuid/hash.go new file mode 100644 index 00000000..b404f4be --- /dev/null +++ b/src/server/vendor/github.com/google/uuid/hash.go @@ -0,0 +1,53 @@ +// Copyright 2016 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import ( + "crypto/md5" + "crypto/sha1" + "hash" +) + +// Well known namespace IDs and UUIDs +var ( + NameSpaceDNS = Must(Parse("6ba7b810-9dad-11d1-80b4-00c04fd430c8")) + NameSpaceURL = Must(Parse("6ba7b811-9dad-11d1-80b4-00c04fd430c8")) + NameSpaceOID = Must(Parse("6ba7b812-9dad-11d1-80b4-00c04fd430c8")) + NameSpaceX500 = Must(Parse("6ba7b814-9dad-11d1-80b4-00c04fd430c8")) + Nil UUID // empty UUID, all zeros +) + +// NewHash returns a new UUID derived from the hash of space concatenated with +// data generated by h. The hash should be at least 16 byte in length. The +// first 16 bytes of the hash are used to form the UUID. The version of the +// UUID will be the lower 4 bits of version. NewHash is used to implement +// NewMD5 and NewSHA1. +func NewHash(h hash.Hash, space UUID, data []byte, version int) UUID { + h.Reset() + h.Write(space[:]) //nolint:errcheck + h.Write(data) //nolint:errcheck + s := h.Sum(nil) + var uuid UUID + copy(uuid[:], s) + uuid[6] = (uuid[6] & 0x0f) | uint8((version&0xf)<<4) + uuid[8] = (uuid[8] & 0x3f) | 0x80 // RFC 4122 variant + return uuid +} + +// NewMD5 returns a new MD5 (Version 3) UUID based on the +// supplied name space and data. It is the same as calling: +// +// NewHash(md5.New(), space, data, 3) +func NewMD5(space UUID, data []byte) UUID { + return NewHash(md5.New(), space, data, 3) +} + +// NewSHA1 returns a new SHA1 (Version 5) UUID based on the +// supplied name space and data. It is the same as calling: +// +// NewHash(sha1.New(), space, data, 5) +func NewSHA1(space UUID, data []byte) UUID { + return NewHash(sha1.New(), space, data, 5) +} diff --git a/src/server/vendor/github.com/google/uuid/marshal.go b/src/server/vendor/github.com/google/uuid/marshal.go new file mode 100644 index 00000000..14bd3407 --- /dev/null +++ b/src/server/vendor/github.com/google/uuid/marshal.go @@ -0,0 +1,38 @@ +// Copyright 2016 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import "fmt" + +// MarshalText implements encoding.TextMarshaler. +func (uuid UUID) MarshalText() ([]byte, error) { + var js [36]byte + encodeHex(js[:], uuid) + return js[:], nil +} + +// UnmarshalText implements encoding.TextUnmarshaler. +func (uuid *UUID) UnmarshalText(data []byte) error { + id, err := ParseBytes(data) + if err != nil { + return err + } + *uuid = id + return nil +} + +// MarshalBinary implements encoding.BinaryMarshaler. +func (uuid UUID) MarshalBinary() ([]byte, error) { + return uuid[:], nil +} + +// UnmarshalBinary implements encoding.BinaryUnmarshaler. +func (uuid *UUID) UnmarshalBinary(data []byte) error { + if len(data) != 16 { + return fmt.Errorf("invalid UUID (got %d bytes)", len(data)) + } + copy(uuid[:], data) + return nil +} diff --git a/src/server/vendor/github.com/google/uuid/node.go b/src/server/vendor/github.com/google/uuid/node.go new file mode 100644 index 00000000..d651a2b0 --- /dev/null +++ b/src/server/vendor/github.com/google/uuid/node.go @@ -0,0 +1,90 @@ +// Copyright 2016 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import ( + "sync" +) + +var ( + nodeMu sync.Mutex + ifname string // name of interface being used + nodeID [6]byte // hardware for version 1 UUIDs + zeroID [6]byte // nodeID with only 0's +) + +// NodeInterface returns the name of the interface from which the NodeID was +// derived. The interface "user" is returned if the NodeID was set by +// SetNodeID. +func NodeInterface() string { + defer nodeMu.Unlock() + nodeMu.Lock() + return ifname +} + +// SetNodeInterface selects the hardware address to be used for Version 1 UUIDs. +// If name is "" then the first usable interface found will be used or a random +// Node ID will be generated. If a named interface cannot be found then false +// is returned. +// +// SetNodeInterface never fails when name is "". +func SetNodeInterface(name string) bool { + defer nodeMu.Unlock() + nodeMu.Lock() + return setNodeInterface(name) +} + +func setNodeInterface(name string) bool { + iname, addr := getHardwareInterface(name) // null implementation for js + if iname != "" && addr != nil { + ifname = iname + copy(nodeID[:], addr) + return true + } + + // We found no interfaces with a valid hardware address. If name + // does not specify a specific interface generate a random Node ID + // (section 4.1.6) + if name == "" { + ifname = "random" + randomBits(nodeID[:]) + return true + } + return false +} + +// NodeID returns a slice of a copy of the current Node ID, setting the Node ID +// if not already set. +func NodeID() []byte { + defer nodeMu.Unlock() + nodeMu.Lock() + if nodeID == zeroID { + setNodeInterface("") + } + nid := nodeID + return nid[:] +} + +// SetNodeID sets the Node ID to be used for Version 1 UUIDs. The first 6 bytes +// of id are used. If id is less than 6 bytes then false is returned and the +// Node ID is not set. +func SetNodeID(id []byte) bool { + if len(id) < 6 { + return false + } + defer nodeMu.Unlock() + nodeMu.Lock() + copy(nodeID[:], id) + ifname = "user" + return true +} + +// NodeID returns the 6 byte node id encoded in uuid. It returns nil if uuid is +// not valid. The NodeID is only well defined for version 1 and 2 UUIDs. +func (uuid UUID) NodeID() []byte { + var node [6]byte + copy(node[:], uuid[10:]) + return node[:] +} diff --git a/src/server/vendor/github.com/google/uuid/node_js.go b/src/server/vendor/github.com/google/uuid/node_js.go new file mode 100644 index 00000000..b2a0bc87 --- /dev/null +++ b/src/server/vendor/github.com/google/uuid/node_js.go @@ -0,0 +1,12 @@ +// Copyright 2017 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build js + +package uuid + +// getHardwareInterface returns nil values for the JS version of the code. +// This removes the "net" dependency, because it is not used in the browser. +// Using the "net" library inflates the size of the transpiled JS code by 673k bytes. +func getHardwareInterface(name string) (string, []byte) { return "", nil } diff --git a/src/server/vendor/github.com/google/uuid/node_net.go b/src/server/vendor/github.com/google/uuid/node_net.go new file mode 100644 index 00000000..0cbbcddb --- /dev/null +++ b/src/server/vendor/github.com/google/uuid/node_net.go @@ -0,0 +1,33 @@ +// Copyright 2017 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !js + +package uuid + +import "net" + +var interfaces []net.Interface // cached list of interfaces + +// getHardwareInterface returns the name and hardware address of interface name. +// If name is "" then the name and hardware address of one of the system's +// interfaces is returned. If no interfaces are found (name does not exist or +// there are no interfaces) then "", nil is returned. +// +// Only addresses of at least 6 bytes are returned. +func getHardwareInterface(name string) (string, []byte) { + if interfaces == nil { + var err error + interfaces, err = net.Interfaces() + if err != nil { + return "", nil + } + } + for _, ifs := range interfaces { + if len(ifs.HardwareAddr) >= 6 && (name == "" || name == ifs.Name) { + return ifs.Name, ifs.HardwareAddr + } + } + return "", nil +} diff --git a/src/server/vendor/github.com/google/uuid/null.go b/src/server/vendor/github.com/google/uuid/null.go new file mode 100644 index 00000000..d7fcbf28 --- /dev/null +++ b/src/server/vendor/github.com/google/uuid/null.go @@ -0,0 +1,118 @@ +// Copyright 2021 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import ( + "bytes" + "database/sql/driver" + "encoding/json" + "fmt" +) + +var jsonNull = []byte("null") + +// NullUUID represents a UUID that may be null. +// NullUUID implements the SQL driver.Scanner interface so +// it can be used as a scan destination: +// +// var u uuid.NullUUID +// err := db.QueryRow("SELECT name FROM foo WHERE id=?", id).Scan(&u) +// ... +// if u.Valid { +// // use u.UUID +// } else { +// // NULL value +// } +// +type NullUUID struct { + UUID UUID + Valid bool // Valid is true if UUID is not NULL +} + +// Scan implements the SQL driver.Scanner interface. +func (nu *NullUUID) Scan(value interface{}) error { + if value == nil { + nu.UUID, nu.Valid = Nil, false + return nil + } + + err := nu.UUID.Scan(value) + if err != nil { + nu.Valid = false + return err + } + + nu.Valid = true + return nil +} + +// Value implements the driver Valuer interface. +func (nu NullUUID) Value() (driver.Value, error) { + if !nu.Valid { + return nil, nil + } + // Delegate to UUID Value function + return nu.UUID.Value() +} + +// MarshalBinary implements encoding.BinaryMarshaler. +func (nu NullUUID) MarshalBinary() ([]byte, error) { + if nu.Valid { + return nu.UUID[:], nil + } + + return []byte(nil), nil +} + +// UnmarshalBinary implements encoding.BinaryUnmarshaler. +func (nu *NullUUID) UnmarshalBinary(data []byte) error { + if len(data) != 16 { + return fmt.Errorf("invalid UUID (got %d bytes)", len(data)) + } + copy(nu.UUID[:], data) + nu.Valid = true + return nil +} + +// MarshalText implements encoding.TextMarshaler. +func (nu NullUUID) MarshalText() ([]byte, error) { + if nu.Valid { + return nu.UUID.MarshalText() + } + + return jsonNull, nil +} + +// UnmarshalText implements encoding.TextUnmarshaler. +func (nu *NullUUID) UnmarshalText(data []byte) error { + id, err := ParseBytes(data) + if err != nil { + nu.Valid = false + return err + } + nu.UUID = id + nu.Valid = true + return nil +} + +// MarshalJSON implements json.Marshaler. +func (nu NullUUID) MarshalJSON() ([]byte, error) { + if nu.Valid { + return json.Marshal(nu.UUID) + } + + return jsonNull, nil +} + +// UnmarshalJSON implements json.Unmarshaler. +func (nu *NullUUID) UnmarshalJSON(data []byte) error { + if bytes.Equal(data, jsonNull) { + *nu = NullUUID{} + return nil // valid null UUID + } + err := json.Unmarshal(data, &nu.UUID) + nu.Valid = err == nil + return err +} diff --git a/src/server/vendor/github.com/google/uuid/sql.go b/src/server/vendor/github.com/google/uuid/sql.go new file mode 100644 index 00000000..2e02ec06 --- /dev/null +++ b/src/server/vendor/github.com/google/uuid/sql.go @@ -0,0 +1,59 @@ +// Copyright 2016 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import ( + "database/sql/driver" + "fmt" +) + +// Scan implements sql.Scanner so UUIDs can be read from databases transparently. +// Currently, database types that map to string and []byte are supported. Please +// consult database-specific driver documentation for matching types. +func (uuid *UUID) Scan(src interface{}) error { + switch src := src.(type) { + case nil: + return nil + + case string: + // if an empty UUID comes from a table, we return a null UUID + if src == "" { + return nil + } + + // see Parse for required string format + u, err := Parse(src) + if err != nil { + return fmt.Errorf("Scan: %v", err) + } + + *uuid = u + + case []byte: + // if an empty UUID comes from a table, we return a null UUID + if len(src) == 0 { + return nil + } + + // assumes a simple slice of bytes if 16 bytes + // otherwise attempts to parse + if len(src) != 16 { + return uuid.Scan(string(src)) + } + copy((*uuid)[:], src) + + default: + return fmt.Errorf("Scan: unable to scan type %T into UUID", src) + } + + return nil +} + +// Value implements sql.Valuer so that UUIDs can be written to databases +// transparently. Currently, UUIDs map to strings. Please consult +// database-specific driver documentation for matching types. +func (uuid UUID) Value() (driver.Value, error) { + return uuid.String(), nil +} diff --git a/src/server/vendor/github.com/google/uuid/time.go b/src/server/vendor/github.com/google/uuid/time.go new file mode 100644 index 00000000..e6ef06cd --- /dev/null +++ b/src/server/vendor/github.com/google/uuid/time.go @@ -0,0 +1,123 @@ +// Copyright 2016 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import ( + "encoding/binary" + "sync" + "time" +) + +// A Time represents a time as the number of 100's of nanoseconds since 15 Oct +// 1582. +type Time int64 + +const ( + lillian = 2299160 // Julian day of 15 Oct 1582 + unix = 2440587 // Julian day of 1 Jan 1970 + epoch = unix - lillian // Days between epochs + g1582 = epoch * 86400 // seconds between epochs + g1582ns100 = g1582 * 10000000 // 100s of a nanoseconds between epochs +) + +var ( + timeMu sync.Mutex + lasttime uint64 // last time we returned + clockSeq uint16 // clock sequence for this run + + timeNow = time.Now // for testing +) + +// UnixTime converts t the number of seconds and nanoseconds using the Unix +// epoch of 1 Jan 1970. +func (t Time) UnixTime() (sec, nsec int64) { + sec = int64(t - g1582ns100) + nsec = (sec % 10000000) * 100 + sec /= 10000000 + return sec, nsec +} + +// GetTime returns the current Time (100s of nanoseconds since 15 Oct 1582) and +// clock sequence as well as adjusting the clock sequence as needed. An error +// is returned if the current time cannot be determined. +func GetTime() (Time, uint16, error) { + defer timeMu.Unlock() + timeMu.Lock() + return getTime() +} + +func getTime() (Time, uint16, error) { + t := timeNow() + + // If we don't have a clock sequence already, set one. + if clockSeq == 0 { + setClockSequence(-1) + } + now := uint64(t.UnixNano()/100) + g1582ns100 + + // If time has gone backwards with this clock sequence then we + // increment the clock sequence + if now <= lasttime { + clockSeq = ((clockSeq + 1) & 0x3fff) | 0x8000 + } + lasttime = now + return Time(now), clockSeq, nil +} + +// ClockSequence returns the current clock sequence, generating one if not +// already set. The clock sequence is only used for Version 1 UUIDs. +// +// The uuid package does not use global static storage for the clock sequence or +// the last time a UUID was generated. Unless SetClockSequence is used, a new +// random clock sequence is generated the first time a clock sequence is +// requested by ClockSequence, GetTime, or NewUUID. (section 4.2.1.1) +func ClockSequence() int { + defer timeMu.Unlock() + timeMu.Lock() + return clockSequence() +} + +func clockSequence() int { + if clockSeq == 0 { + setClockSequence(-1) + } + return int(clockSeq & 0x3fff) +} + +// SetClockSequence sets the clock sequence to the lower 14 bits of seq. Setting to +// -1 causes a new sequence to be generated. +func SetClockSequence(seq int) { + defer timeMu.Unlock() + timeMu.Lock() + setClockSequence(seq) +} + +func setClockSequence(seq int) { + if seq == -1 { + var b [2]byte + randomBits(b[:]) // clock sequence + seq = int(b[0])<<8 | int(b[1]) + } + oldSeq := clockSeq + clockSeq = uint16(seq&0x3fff) | 0x8000 // Set our variant + if oldSeq != clockSeq { + lasttime = 0 + } +} + +// Time returns the time in 100s of nanoseconds since 15 Oct 1582 encoded in +// uuid. The time is only defined for version 1 and 2 UUIDs. +func (uuid UUID) Time() Time { + time := int64(binary.BigEndian.Uint32(uuid[0:4])) + time |= int64(binary.BigEndian.Uint16(uuid[4:6])) << 32 + time |= int64(binary.BigEndian.Uint16(uuid[6:8])&0xfff) << 48 + return Time(time) +} + +// ClockSequence returns the clock sequence encoded in uuid. +// The clock sequence is only well defined for version 1 and 2 UUIDs. +func (uuid UUID) ClockSequence() int { + return int(binary.BigEndian.Uint16(uuid[8:10])) & 0x3fff +} diff --git a/src/server/vendor/github.com/google/uuid/util.go b/src/server/vendor/github.com/google/uuid/util.go new file mode 100644 index 00000000..5ea6c737 --- /dev/null +++ b/src/server/vendor/github.com/google/uuid/util.go @@ -0,0 +1,43 @@ +// Copyright 2016 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import ( + "io" +) + +// randomBits completely fills slice b with random data. +func randomBits(b []byte) { + if _, err := io.ReadFull(rander, b); err != nil { + panic(err.Error()) // rand should never fail + } +} + +// xvalues returns the value of a byte as a hexadecimal digit or 255. +var xvalues = [256]byte{ + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 255, 255, 255, 255, 255, 255, + 255, 10, 11, 12, 13, 14, 15, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 10, 11, 12, 13, 14, 15, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +} + +// xtob converts hex characters x1 and x2 into a byte. +func xtob(x1, x2 byte) (byte, bool) { + b1 := xvalues[x1] + b2 := xvalues[x2] + return (b1 << 4) | b2, b1 != 255 && b2 != 255 +} diff --git a/src/server/vendor/github.com/google/uuid/uuid.go b/src/server/vendor/github.com/google/uuid/uuid.go new file mode 100644 index 00000000..a56138cc --- /dev/null +++ b/src/server/vendor/github.com/google/uuid/uuid.go @@ -0,0 +1,296 @@ +// Copyright 2018 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import ( + "bytes" + "crypto/rand" + "encoding/hex" + "errors" + "fmt" + "io" + "strings" + "sync" +) + +// A UUID is a 128 bit (16 byte) Universal Unique IDentifier as defined in RFC +// 4122. +type UUID [16]byte + +// A Version represents a UUID's version. +type Version byte + +// A Variant represents a UUID's variant. +type Variant byte + +// Constants returned by Variant. +const ( + Invalid = Variant(iota) // Invalid UUID + RFC4122 // The variant specified in RFC4122 + Reserved // Reserved, NCS backward compatibility. + Microsoft // Reserved, Microsoft Corporation backward compatibility. + Future // Reserved for future definition. +) + +const randPoolSize = 16 * 16 + +var ( + rander = rand.Reader // random function + poolEnabled = false + poolMu sync.Mutex + poolPos = randPoolSize // protected with poolMu + pool [randPoolSize]byte // protected with poolMu +) + +type invalidLengthError struct{ len int } + +func (err invalidLengthError) Error() string { + return fmt.Sprintf("invalid UUID length: %d", err.len) +} + +// IsInvalidLengthError is matcher function for custom error invalidLengthError +func IsInvalidLengthError(err error) bool { + _, ok := err.(invalidLengthError) + return ok +} + +// Parse decodes s into a UUID or returns an error. Both the standard UUID +// forms of xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx and +// urn:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx are decoded as well as the +// Microsoft encoding {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} and the raw hex +// encoding: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx. +func Parse(s string) (UUID, error) { + var uuid UUID + switch len(s) { + // xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx + case 36: + + // urn:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx + case 36 + 9: + if !strings.EqualFold(s[:9], "urn:uuid:") { + return uuid, fmt.Errorf("invalid urn prefix: %q", s[:9]) + } + s = s[9:] + + // {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} + case 36 + 2: + s = s[1:] + + // xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + case 32: + var ok bool + for i := range uuid { + uuid[i], ok = xtob(s[i*2], s[i*2+1]) + if !ok { + return uuid, errors.New("invalid UUID format") + } + } + return uuid, nil + default: + return uuid, invalidLengthError{len(s)} + } + // s is now at least 36 bytes long + // it must be of the form xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx + if s[8] != '-' || s[13] != '-' || s[18] != '-' || s[23] != '-' { + return uuid, errors.New("invalid UUID format") + } + for i, x := range [16]int{ + 0, 2, 4, 6, + 9, 11, + 14, 16, + 19, 21, + 24, 26, 28, 30, 32, 34, + } { + v, ok := xtob(s[x], s[x+1]) + if !ok { + return uuid, errors.New("invalid UUID format") + } + uuid[i] = v + } + return uuid, nil +} + +// ParseBytes is like Parse, except it parses a byte slice instead of a string. +func ParseBytes(b []byte) (UUID, error) { + var uuid UUID + switch len(b) { + case 36: // xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx + case 36 + 9: // urn:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx + if !bytes.EqualFold(b[:9], []byte("urn:uuid:")) { + return uuid, fmt.Errorf("invalid urn prefix: %q", b[:9]) + } + b = b[9:] + case 36 + 2: // {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} + b = b[1:] + case 32: // xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + var ok bool + for i := 0; i < 32; i += 2 { + uuid[i/2], ok = xtob(b[i], b[i+1]) + if !ok { + return uuid, errors.New("invalid UUID format") + } + } + return uuid, nil + default: + return uuid, invalidLengthError{len(b)} + } + // s is now at least 36 bytes long + // it must be of the form xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx + if b[8] != '-' || b[13] != '-' || b[18] != '-' || b[23] != '-' { + return uuid, errors.New("invalid UUID format") + } + for i, x := range [16]int{ + 0, 2, 4, 6, + 9, 11, + 14, 16, + 19, 21, + 24, 26, 28, 30, 32, 34, + } { + v, ok := xtob(b[x], b[x+1]) + if !ok { + return uuid, errors.New("invalid UUID format") + } + uuid[i] = v + } + return uuid, nil +} + +// MustParse is like Parse but panics if the string cannot be parsed. +// It simplifies safe initialization of global variables holding compiled UUIDs. +func MustParse(s string) UUID { + uuid, err := Parse(s) + if err != nil { + panic(`uuid: Parse(` + s + `): ` + err.Error()) + } + return uuid +} + +// FromBytes creates a new UUID from a byte slice. Returns an error if the slice +// does not have a length of 16. The bytes are copied from the slice. +func FromBytes(b []byte) (uuid UUID, err error) { + err = uuid.UnmarshalBinary(b) + return uuid, err +} + +// Must returns uuid if err is nil and panics otherwise. +func Must(uuid UUID, err error) UUID { + if err != nil { + panic(err) + } + return uuid +} + +// String returns the string form of uuid, xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx +// , or "" if uuid is invalid. +func (uuid UUID) String() string { + var buf [36]byte + encodeHex(buf[:], uuid) + return string(buf[:]) +} + +// URN returns the RFC 2141 URN form of uuid, +// urn:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, or "" if uuid is invalid. +func (uuid UUID) URN() string { + var buf [36 + 9]byte + copy(buf[:], "urn:uuid:") + encodeHex(buf[9:], uuid) + return string(buf[:]) +} + +func encodeHex(dst []byte, uuid UUID) { + hex.Encode(dst, uuid[:4]) + dst[8] = '-' + hex.Encode(dst[9:13], uuid[4:6]) + dst[13] = '-' + hex.Encode(dst[14:18], uuid[6:8]) + dst[18] = '-' + hex.Encode(dst[19:23], uuid[8:10]) + dst[23] = '-' + hex.Encode(dst[24:], uuid[10:]) +} + +// Variant returns the variant encoded in uuid. +func (uuid UUID) Variant() Variant { + switch { + case (uuid[8] & 0xc0) == 0x80: + return RFC4122 + case (uuid[8] & 0xe0) == 0xc0: + return Microsoft + case (uuid[8] & 0xe0) == 0xe0: + return Future + default: + return Reserved + } +} + +// Version returns the version of uuid. +func (uuid UUID) Version() Version { + return Version(uuid[6] >> 4) +} + +func (v Version) String() string { + if v > 15 { + return fmt.Sprintf("BAD_VERSION_%d", v) + } + return fmt.Sprintf("VERSION_%d", v) +} + +func (v Variant) String() string { + switch v { + case RFC4122: + return "RFC4122" + case Reserved: + return "Reserved" + case Microsoft: + return "Microsoft" + case Future: + return "Future" + case Invalid: + return "Invalid" + } + return fmt.Sprintf("BadVariant%d", int(v)) +} + +// SetRand sets the random number generator to r, which implements io.Reader. +// If r.Read returns an error when the package requests random data then +// a panic will be issued. +// +// Calling SetRand with nil sets the random number generator to the default +// generator. +func SetRand(r io.Reader) { + if r == nil { + rander = rand.Reader + return + } + rander = r +} + +// EnableRandPool enables internal randomness pool used for Random +// (Version 4) UUID generation. The pool contains random bytes read from +// the random number generator on demand in batches. Enabling the pool +// may improve the UUID generation throughput significantly. +// +// Since the pool is stored on the Go heap, this feature may be a bad fit +// for security sensitive applications. +// +// Both EnableRandPool and DisableRandPool are not thread-safe and should +// only be called when there is no possibility that New or any other +// UUID Version 4 generation function will be called concurrently. +func EnableRandPool() { + poolEnabled = true +} + +// DisableRandPool disables the randomness pool if it was previously +// enabled with EnableRandPool. +// +// Both EnableRandPool and DisableRandPool are not thread-safe and should +// only be called when there is no possibility that New or any other +// UUID Version 4 generation function will be called concurrently. +func DisableRandPool() { + poolEnabled = false + defer poolMu.Unlock() + poolMu.Lock() + poolPos = randPoolSize +} diff --git a/src/server/vendor/github.com/google/uuid/version1.go b/src/server/vendor/github.com/google/uuid/version1.go new file mode 100644 index 00000000..46310962 --- /dev/null +++ b/src/server/vendor/github.com/google/uuid/version1.go @@ -0,0 +1,44 @@ +// Copyright 2016 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import ( + "encoding/binary" +) + +// NewUUID returns a Version 1 UUID based on the current NodeID and clock +// sequence, and the current time. If the NodeID has not been set by SetNodeID +// or SetNodeInterface then it will be set automatically. If the NodeID cannot +// be set NewUUID returns nil. If clock sequence has not been set by +// SetClockSequence then it will be set automatically. If GetTime fails to +// return the current NewUUID returns nil and an error. +// +// In most cases, New should be used. +func NewUUID() (UUID, error) { + var uuid UUID + now, seq, err := GetTime() + if err != nil { + return uuid, err + } + + timeLow := uint32(now & 0xffffffff) + timeMid := uint16((now >> 32) & 0xffff) + timeHi := uint16((now >> 48) & 0x0fff) + timeHi |= 0x1000 // Version 1 + + binary.BigEndian.PutUint32(uuid[0:], timeLow) + binary.BigEndian.PutUint16(uuid[4:], timeMid) + binary.BigEndian.PutUint16(uuid[6:], timeHi) + binary.BigEndian.PutUint16(uuid[8:], seq) + + nodeMu.Lock() + if nodeID == zeroID { + setNodeInterface("") + } + copy(uuid[10:], nodeID[:]) + nodeMu.Unlock() + + return uuid, nil +} diff --git a/src/server/vendor/github.com/google/uuid/version4.go b/src/server/vendor/github.com/google/uuid/version4.go new file mode 100644 index 00000000..7697802e --- /dev/null +++ b/src/server/vendor/github.com/google/uuid/version4.go @@ -0,0 +1,76 @@ +// Copyright 2016 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import "io" + +// New creates a new random UUID or panics. New is equivalent to +// the expression +// +// uuid.Must(uuid.NewRandom()) +func New() UUID { + return Must(NewRandom()) +} + +// NewString creates a new random UUID and returns it as a string or panics. +// NewString is equivalent to the expression +// +// uuid.New().String() +func NewString() string { + return Must(NewRandom()).String() +} + +// NewRandom returns a Random (Version 4) UUID. +// +// The strength of the UUIDs is based on the strength of the crypto/rand +// package. +// +// Uses the randomness pool if it was enabled with EnableRandPool. +// +// A note about uniqueness derived from the UUID Wikipedia entry: +// +// Randomly generated UUIDs have 122 random bits. One's annual risk of being +// hit by a meteorite is estimated to be one chance in 17 billion, that +// means the probability is about 0.00000000006 (6 × 10−11), +// equivalent to the odds of creating a few tens of trillions of UUIDs in a +// year and having one duplicate. +func NewRandom() (UUID, error) { + if !poolEnabled { + return NewRandomFromReader(rander) + } + return newRandomFromPool() +} + +// NewRandomFromReader returns a UUID based on bytes read from a given io.Reader. +func NewRandomFromReader(r io.Reader) (UUID, error) { + var uuid UUID + _, err := io.ReadFull(r, uuid[:]) + if err != nil { + return Nil, err + } + uuid[6] = (uuid[6] & 0x0f) | 0x40 // Version 4 + uuid[8] = (uuid[8] & 0x3f) | 0x80 // Variant is 10 + return uuid, nil +} + +func newRandomFromPool() (UUID, error) { + var uuid UUID + poolMu.Lock() + if poolPos == randPoolSize { + _, err := io.ReadFull(rander, pool[:]) + if err != nil { + poolMu.Unlock() + return Nil, err + } + poolPos = 0 + } + copy(uuid[:], pool[poolPos:(poolPos+16)]) + poolPos += 16 + poolMu.Unlock() + + uuid[6] = (uuid[6] & 0x0f) | 0x40 // Version 4 + uuid[8] = (uuid[8] & 0x3f) | 0x80 // Variant is 10 + return uuid, nil +} diff --git a/src/server/vendor/modules.txt b/src/server/vendor/modules.txt index d55c0128..b905f657 100644 --- a/src/server/vendor/modules.txt +++ b/src/server/vendor/modules.txt @@ -2,6 +2,11 @@ ## explicit; go 1.20 filippo.io/edwards25519 filippo.io/edwards25519/field +# github.com/ThinkingDataAnalytics/go-sdk v1.7.0 +## explicit; go 1.14 +# github.com/ThinkingDataAnalytics/go-sdk/v2 v2.0.3 +## explicit; go 1.14 +github.com/ThinkingDataAnalytics/go-sdk/v2/src/thinkingdata # github.com/cespare/xxhash/v2 v2.2.0 ## explicit; go 1.11 github.com/cespare/xxhash/v2 @@ -13,6 +18,9 @@ github.com/dgryski/go-rendezvous github.com/go-sql-driver/mysql # github.com/google/go-cmp v0.6.0 ## explicit; go 1.13 +# github.com/google/uuid v1.3.1 +## explicit +github.com/google/uuid # github.com/gorilla/mux v1.8.1 ## explicit; go 1.20 github.com/gorilla/mux