Parcourir la source

无尽模式排行榜

lt il y a 10 mois
Parent
commit
3971b88cc6

+ 3 - 3
RO_Server_Trunk-branch_0.1.39/roserver/baseserver/model/base_config.go

@@ -3495,7 +3495,7 @@ func convertTowerCfg() {
 }
 
 var ConvertTowerWjData = map[int32][]*TowerWjReward{} //key是层数
-var ConvertTowerWjRankInfo *TowerWjRankInfo = nil
+var ConvertTowerWjRankInfo map[int32][]*TowerWjRankRewardInfo = nil
 
 type TowerWjReward struct {
 	Min, Max   int32
@@ -3536,7 +3536,7 @@ func convertTowerWjCfg() {
 
 		for _, data := range serverproto.TowerWjRankCfgLoader {
 			if ConvertTowerWjRankInfo == nil {
-				ConvertTowerWjRankInfo = &TowerWjRankInfo{}
+				ConvertTowerWjRankInfo = make(map[int32][]*TowerWjRankRewardInfo, 0)
 			}
 
 			rankRewardInfo := &TowerWjRankRewardInfo{
@@ -3554,7 +3554,7 @@ func convertTowerWjCfg() {
 				key, value := Str2Res(data.RankReward[idx])
 				rankRewardInfo.RewardList[key] += value
 			}
-			ConvertTowerWjRankInfo.RewardInfo = append(ConvertTowerWjRankInfo.RewardInfo, rankRewardInfo)
+			ConvertTowerWjRankInfo[data.Day] = append(ConvertTowerWjRankInfo[data.Day], rankRewardInfo)
 		}
 	}
 }

+ 1 - 0
RO_Server_Trunk-branch_0.1.39/roserver/baseserver/model/orm_common.go

@@ -63,6 +63,7 @@ const (
 	CompetitionIdolFansVotePrefix = "rank:com:idolfans"
 
 	TowerLevelRankPrefix      = "rank:tower"
+	TowerWjLevelRankPrefix    = "rank:towerwj"
 	TowerFightpowerRankPrefix = "rank:towerfight"
 
 	CardCollectRankPrefix = "rank:cardcollect"

+ 1 - 1
RO_Server_Trunk-branch_0.1.39/roserver/db/model/role_msg.go

@@ -27,7 +27,7 @@ func init() {
 
 	//获取服务器当前赛季信息
 	serverproto.Handle_DB_SSGetServerCompetitionReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
-		//msg := ev.Msg().(*serverproto.SSGetServerCompetitionReq)
+		_ = ev.Msg().(*serverproto.SSGetServerCompetitionReq)
 		util.InfoF("SSGetServerCompetitionReq")
 
 		ssAckMsg := &serverproto.SSGetServerCompetitionAck{RounInfo: &serverproto.StRecRound{}}

+ 23 - 0
RO_Server_Trunk-branch_0.1.39/roserver/game/model/role_tower.go

@@ -612,6 +612,29 @@ func (this *RoleTower) passTowerInfoToRank(recordTimeStamp uint64, battleTime in
 	this.role.SendRank(ntfMsg)
 }
 
+// 通关更新榜单
+func (this *RoleTower) passTowerWjInfoToRank(recordTimeStamp uint64, battleTime int32, isGM bool) {
+	ntfMsg := &serverproto.SSTowerPassFightPowerNtf{
+		TowerBfInfo: &serverproto.TowerBriefInfo{
+			CommonInfo: &serverproto.CommonPlayerBriefInfo{
+				BattleRecordId: model.GenerateUid(),
+			},
+			BattleTime: battleTime,
+		},
+		RecordTimeStamp: recordTimeStamp,
+	}
+
+	this.role.GetRoleBriefInfo(ntfMsg.TowerBfInfo.CommonInfo)
+	//获取当前最新战力
+	//ntfMsg.TowerBfInfo.CommonInfo.FightPower = int32(this.role.GetRoleFightPower().TotalFightPower)
+	ntfMsg.TowerBfInfo.CommonInfo.FightPower = int32(this.role.roleBattleAttr.curTotalFightPower)
+	//修正通关数据
+
+	ntfMsg.TowerBfInfo.CommonInfo.TowerLevel = this.nowTowerWjLevel
+	ntfMsg.TowerBfInfo.CommonInfo.TowerTime = uint64(util.GetTimeSeconds())
+	this.role.SendRank(ntfMsg)
+}
+
 func (this *RoleTower) SendFriendInfoReqToDB(begin, end int32) {
 	ntfMsg := &serverproto.SSGetFriendTowerInfoReq{}
 	UidList := this.role.GetRoleSocial().GetFriendList()

+ 47 - 3
RO_Server_Trunk-branch_0.1.39/roserver/game/model/tower_manager.go

@@ -4,6 +4,7 @@ import (
 	"rocommon/util"
 	"roserver/baseserver/model"
 	"roserver/serverproto"
+	"strconv"
 	"time"
 )
 
@@ -31,8 +32,8 @@ func (this *TowerManager) init(ms uint64) {
 	if nowTime.Before(this.seasonEndTime) {
 		return
 	}
-	//msg := &serverproto.SSCrossYuanHangTrialRankUpdateReq{}
-	//SendCrossService(msg)
+	msg := &serverproto.SSTowerWjRankUpdateReq{}
+	SendRankService(msg)
 	util.ErrorF("tower rank refresh time:%v", nowTime)
 	//this.refreshTime = nowTime
 	this.seasonEndTime = this.seasonEndTime.AddDate(0, 0, 7)
@@ -50,7 +51,7 @@ func (this *TowerManager) initTowerWjInfoFromDB() bool {
 
 // 获取当前已经开启的赛季ID(from db)
 func (this *TowerManager) DoUpdateTowerInfoFromDB(ssAckMsg *serverproto.SSGetServerCompetitionAck) {
-	this.initFromDb = true
+	this.initFromDb2 = true
 	if ssAckMsg.TowerInfo != nil {
 		TowerMag.day = ssAckMsg.TowerInfo.Day
 		TowerMag.isRefresh = ssAckMsg.TowerInfo.IsRefresh
@@ -113,3 +114,46 @@ func (this *TowerManager) Update(ms uint64) {
 	//	}
 	//}
 }
+
+func (this *TowerManager) GetRankReward(role uint64, selfRank int32) {
+	if selfRank <= 0 || role == 0 {
+		return
+	}
+
+	//获取排名奖励,发送邮件
+	for _, data := range model.ConvertTowerWjRankInfo[this.day] {
+		if selfRank >= data.Left && selfRank <= data.Right {
+			itemList := make([]*serverproto.KeyValueType, 0)
+			for k, v := range data.RewardList {
+				itemList = append(itemList, &serverproto.KeyValueType{
+					Key:   k,
+					Value: v,
+				})
+			}
+			//发送邮件
+			AddMailOnlineAndOffline([]uint64{role}, model.GlobalMailyuanhangRankAward, int32(serverproto.MailType_MailType_GM),
+				itemList, []int32{int32(util.GetTimeSeconds())}, "无尽爬塔排行榜奖励", "恭喜您在无尽爬塔中獲得了第"+strconv.FormatInt(int64(selfRank), 10)+"名")
+			//判断是否有玩家达到1000层,到了周期难度+1
+			if this.isRefresh {
+				this.day++
+				this.isRefresh = false
+				ssNtfMsg := &serverproto.SSServerCompetitionInfoSaveNtf{
+					TowerInfo: &serverproto.TowerRound{Day: this.day, IsRefresh: this.isRefresh},
+				}
+				SendDb(ssNtfMsg)
+			}
+			util.InfoF("send rank award uid:%v award:%v", role, itemList)
+			break
+		}
+	}
+	//
+	//// 赛季第一名触发称号事件
+	//var value int32 = 1
+	//if selfRank != 1 {
+	//	value = role.roleTask.GetTypeCnt(int32(serverproto.TaskType_Eve_Arean_First)) * -1
+	//} else {
+	//	TaskMagCheck(role, serverproto.TaskType_Eve_Arean_First_Cnt, 1)
+	//}
+	//role.roleTask.AddTypeCnt(serverproto.TaskType_Eve_Arean_First, value)
+	//TaskMagCheck(role, serverproto.TaskType_Eve_Arean_First, rewardSeasonId)
+}

+ 5 - 0
RO_Server_Trunk-branch_0.1.39/roserver/game/msg/default_msg.go

@@ -35,6 +35,11 @@ func init() {
 		util.DebugF("receive SSGetServerCompetitionAck msg=%v", msg)
 
 		model2.CompetitionMag.DoUpdateCompetitionInfoFromDB(msg)
+		if msg.TowerInfo != nil {
+			if model2.TowerMag != nil {
+				model2.TowerMag.DoUpdateTowerInfoFromDB(msg)
+			}
+		}
 	})
 
 	//social通知game当前在线的玩家数量

+ 56 - 13
RO_Server_Trunk-branch_0.1.39/roserver/game/msg/role_msg.go

@@ -2231,6 +2231,34 @@ func init() {
 
 		role.(model2.RoleLogicOuter).ClimbingTowerWjBuff(msg.Buff1, msg.Buff2, msg.Buff3)
 	})
+	//无尽爬塔排行榜获取
+	serverproto.Handle_GAME_CSClimbingTowerWjRankReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
+		msg := ev.Msg().(*serverproto.CSClimbingTowerWjRankReq)
+		util.DebugF("receive CSClimbingTowerRankReq msg:%v", msg)
+		role := model2.RoleMag.GetRoleOrKick(cliId, ev)
+		if role == nil {
+			return
+		}
+
+		//发送到rankserver,请求排行榜信息
+		rankMsg := &serverproto.SSPassTowerLevelRankReq{
+			Uid:  role.(*model2.Role).GetUUid(),
+			Type: 1,
+		}
+		role.(*model2.Role).SendRank(rankMsg)
+	})
+
+	//无尽排行奖励 from rank
+	serverproto.Handle_RANK_SSTowerWjRankUpdateAck = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
+		msg := ev.Msg().(*serverproto.SSTowerWjRankUpdateAck)
+		util.InfoF("receive SSTowerWjRankUpdateAck msg=%v", msg)
+
+		if msg.Error == int32(serverproto.ErrorCode_ERROR_OK) {
+			for _, data := range msg.RewardPlayerList {
+				model2.TowerMag.GetRankReward(data.Key, data.Value)
+			}
+		}
+	})
 	//爬塔排行榜获取
 	serverproto.Handle_GAME_CSClimbingTowerRankReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
 		msg := ev.Msg().(*serverproto.CSClimbingTowerRankReq)
@@ -2303,20 +2331,35 @@ func init() {
 		if role == nil {
 			return
 		}
-
-		ackMsg := &serverproto.SCClimbingTowerRankAck{
-			Error:    0,
-			SelfRank: msg.SelfRank,
-		}
-		for _, data := range msg.TowerInfo {
-			ackMsg.RankList = append(ackMsg.RankList, &serverproto.KeyValueType64{
-				Key:    data.Uid,
-				Value:  data.Rank,
-				Value2: 0,
-				Value3: 0,
-			})
+		if msg.Type == 1 {
+			ackMsg := &serverproto.SCClimbingTowerWjRankAck{
+				Error:    0,
+				SelfRank: msg.SelfRank,
+			}
+			for _, data := range msg.TowerInfo {
+				ackMsg.RankList = append(ackMsg.RankList, &serverproto.KeyValueType64{
+					Key:    data.Uid,
+					Value:  data.Rank,
+					Value2: 0,
+					Value3: 0,
+				})
+			}
+			role.ReplayGate(ackMsg, true)
+		} else {
+			ackMsg := &serverproto.SCClimbingTowerRankAck{
+				Error:    0,
+				SelfRank: msg.SelfRank,
+			}
+			for _, data := range msg.TowerInfo {
+				ackMsg.RankList = append(ackMsg.RankList, &serverproto.KeyValueType64{
+					Key:    data.Uid,
+					Value:  data.Rank,
+					Value2: 0,
+					Value3: 0,
+				})
+			}
+			role.ReplayGate(ackMsg, true)
 		}
-		role.ReplayGate(ackMsg, true)
 	})
 
 	//TODO WANGZHAOCAN 爬塔冲榜开始

+ 71 - 12
RO_Server_Trunk-branch_0.1.39/roserver/rank/model/rank_tower.go

@@ -12,7 +12,7 @@ import (
 	"time"
 )
 
-//排名前3玩家uid列表
+// 排名前3玩家uid列表
 const (
 	TOWERRANK_TOP_50   = 50   //玩家可查看排名数量
 	TOWERRANK_TOP_1000 = 1000 //最大排名数量
@@ -27,7 +27,7 @@ const (
 	Rush_Tower_Rank_End    = 3 //结束
 )
 
-//爬塔战力信息
+// 爬塔战力信息
 type TowerFightInfo struct {
 	Uid        uint64
 	FightPower int32
@@ -63,7 +63,7 @@ func newTowerRankManger() *TowerRankManger {
 	return mag
 }
 
-//1秒刷新
+// 1秒刷新
 func (this *TowerRankManger) Update(ms uint64) {
 	if service.GetRedis() == nil {
 		return
@@ -290,7 +290,7 @@ func (this *TowerRankManger) GetMinFightList(towerLevel int32, ackMsg *serverpro
 	}
 }
 
-//passTime 传进来的是秒。所以32位够用。以防万一就用48位,所以还要判定下0xffffffffffff > passTime
+// passTime 传进来的是秒。所以32位够用。以防万一就用48位,所以还要判定下0xffffffffffff > passTime
 func (this *TowerRankManger) GetTowerRankScore(val uint64, passTime uint64) uint64 {
 	//score
 	var scoreStr = val
@@ -306,7 +306,7 @@ func (this *TowerRankManger) GetTowerRankScore(val uint64, passTime uint64) uint
 	return scoreStr
 }
 
-//全服爬塔排名逻辑
+// 全服爬塔排名逻辑
 func (this *TowerRankManger) AddTowerLevelRank(brief *serverproto.CommonPlayerBriefInfo) uint32 {
 	//score
 	scoreStr := getTowerScore(uint64(brief.TowerLevel), brief.TowerTime)
@@ -375,8 +375,67 @@ func (this *TowerRankManger) GetTopTowerRank(uid uint64, ackMsg *serverproto.SSP
 	return 0
 }
 
-//=================================================      爬塔冲榜     =================================================
-//加载赛季数据
+func GetTopTowerWjRank(uid uint64, ackMsg *serverproto.SSPassTowerLevelRankAck) int32 {
+	if ackMsg == nil {
+		return 0
+	}
+
+	topListWithScore, err3 := service.GetRedis().ZRevRangeWithScores(model2.TowerWjLevelRankPrefix, 0, TOWERRANK_TOP_50-1).Result()
+	if err3 == nil {
+		for index, _ := range topListWithScore {
+			rankUid, _ := strconv.ParseUint(topListWithScore[index].Member.(string), 10, 64)
+			//	_, _, TowerLevel := getValByRankScore(topListWithScore[index].Score)
+			info := &serverproto.TowerLevelInfo{
+				Rank: int32(index + 1),
+				Uid:  rankUid,
+			}
+			ackMsg.TowerInfo = append(ackMsg.TowerInfo, info)
+		}
+		//获取自己的排名
+		keyStr := strconv.FormatUint(uid, 10)
+		selfRank, err4 := service.GetRedis().ZRevRank(model2.TowerWjLevelRankPrefix, keyStr).Result()
+		if err4 != nil {
+			util.DebugF("[GetTopTowerRank] selfRank err:%v", err4)
+			return 0
+		}
+		ackMsg.SelfRank = int32(selfRank + 1)
+		return int32(selfRank)
+	}
+	return 0
+}
+
+// 无尽模式排行榜刷新
+func RefreshTopTowerWjRank() []*serverproto.KeyValueType64 {
+	rankList := make([]*serverproto.KeyValueType64, 0)
+	//获得前100排行玩家数据
+	for idx := 0; idx < 5; idx++ {
+		startIdx := int64(idx * 20)
+		rankNumList, err2 := service.GetRedis().ZRevRange(model2.TowerWjLevelRankPrefix, startIdx, startIdx+19).Result()
+		if err2 != nil {
+			break
+		}
+		if len(rankNumList) <= 0 {
+			break
+		}
+		for i := 0; i < len(rankNumList); i++ {
+			rankUid, _ := model2.Str2NumU64(rankNumList[i])
+			//crossTopRankReward[rankUid] = int(startIdx) + i + 1
+			rankList = append(rankList, &serverproto.KeyValueType64{
+				Key:   rankUid,
+				Value: int32(int(startIdx) + i + 1),
+			})
+		}
+	}
+	//清除排行榜数据并备份
+	_, err := service.GetRedis().Rename(model2.TowerWjLevelRankPrefix, model2.TowerWjLevelRankPrefix+time.Now().Format("2006-01-02")).Result()
+	if err != nil {
+		util.ErrorF("[RefreshTopTowerWjRank] err:%v", err.Error())
+	}
+	return rankList
+}
+
+// =================================================      爬塔冲榜     =================================================
+// 加载赛季数据
 func (this *TowerRankManger) loadRushTowerDataFromRedis() error {
 	keyStr := model2.RushTowerPrefix
 	ret, err := service.GetRedis().Get(keyStr).Result()
@@ -437,7 +496,7 @@ func (this *TowerRankManger) saveRushTowerDataToRedis() {
 	util.InfoF("SaveTowerData save rushData sucess : %v", rushData)
 }
 
-//当前是否有冲榜活动
+// 当前是否有冲榜活动
 func (this *TowerRankManger) CheckInRushActivity() bool {
 	if this.RushId == 0 || (this.RushId != 0 && this.RushStage == int32(Rush_Tower_Rank_End)) {
 		return false
@@ -445,7 +504,7 @@ func (this *TowerRankManger) CheckInRushActivity() bool {
 	return true
 }
 
-//是否有新的冲榜开启
+// 是否有新的冲榜开启
 func (this *TowerRankManger) CheckNewRushActivity() {
 	//如果在活动内,不做处理
 	if this.RushId != 0 && this.RushStage != int32(Rush_Tower_Rank_End) {
@@ -528,7 +587,7 @@ func (this *TowerRankManger) GetRoundTime(rushId int32) (uint64, uint64, uint64)
 	return 0, 0, 0
 }
 
-//是否冲榜状态更新
+// 是否冲榜状态更新
 func (this *TowerRankManger) SwitchRushActivityState() {
 	if this.CheckInRushActivity() == false {
 		this.CheckNewRushActivity()
@@ -568,7 +627,7 @@ func (this *TowerRankManger) SwitchRushActivityState() {
 	}
 }
 
-//备份爬塔数据
+// 备份爬塔数据
 func (this *TowerRankManger) backUpTowerRankData() {
 	roundStr := strconv.Itoa(int(this.RushId))
 	prefixStr := model2.RushTowerRankPrefix + roundStr
@@ -705,7 +764,7 @@ func (this *TowerRankManger) SendRushTowerReward() {
 	}
 }
 
-//打包冲榜信息给客户端
+// 打包冲榜信息给客户端
 func (this *TowerRankManger) GetCurRushInfo(rushTowerData *serverproto.RushActivityData) {
 	if rushTowerData == nil {
 		return

+ 17 - 1
RO_Server_Trunk-branch_0.1.39/roserver/rank/msg/rank_msg.go

@@ -280,7 +280,23 @@ func init() {
 		util.DebugF("uid=%v receive SSPassTowerLevelRankReq msg=%v", cliId.SessID, msg)
 
 		ackMsg := &serverproto.SSPassTowerLevelRankAck{}
-		rankMode.TowerMag.GetTopTowerRank(msg.Uid, ackMsg)
+		//无尽模式
+		if msg.Type == 1 {
+			ackMsg.Type = 1
+			rankMode.GetTopTowerWjRank(msg.Uid, ackMsg)
+		} else {
+			rankMode.TowerMag.GetTopTowerRank(msg.Uid, ackMsg)
+		}
+		model.ServiceReplay(ev, ackMsg)
+	})
+
+	//无尽模式关卡排名刷新
+	serverproto.Handle_RANK_SSTowerWjRankUpdateReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
+		msg := ev.Msg().(*serverproto.SSTowerWjRankUpdateReq)
+		util.DebugF("uid=%v receive SSPassTowerLevelRankReq msg=%v", cliId.SessID, msg)
+
+		ackMsg := &serverproto.SSTowerWjRankUpdateAck{}
+		ackMsg.RewardPlayerList = rankMode.RefreshTopTowerWjRank()
 		model.ServiceReplay(ev, ackMsg)
 	})
 

+ 483 - 385
RO_Server_Trunk-branch_0.1.39/roserver/serverproto/db.pb.go

@@ -3181,6 +3181,7 @@ func (m *SSTowerMinFightPowerAck) GetNotify() bool {
 // 请求通关排行榜
 type SSPassTowerLevelRankReq struct {
 	Uid                  uint64   `protobuf:"varint,1,opt,name=uid,proto3" json:"uid,omitempty"`
+	Type                 int32    `protobuf:"varint,2,opt,name=type,proto3" json:"type,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
 	XXX_sizecache        int32    `json:"-"`
@@ -3218,6 +3219,13 @@ func (m *SSPassTowerLevelRankReq) GetUid() uint64 {
 	return 0
 }
 
+func (m *SSPassTowerLevelRankReq) GetType() int32 {
+	if m != nil {
+		return m.Type
+	}
+	return 0
+}
+
 type TowerLevelInfo struct {
 	Rank                 int32    `protobuf:"varint,1,opt,name=rank,proto3" json:"rank,omitempty"`
 	Uid                  uint64   `protobuf:"varint,2,opt,name=uid,proto3" json:"uid,omitempty"`
@@ -3269,6 +3277,7 @@ func (m *TowerLevelInfo) GetUid() uint64 {
 type SSPassTowerLevelRankAck struct {
 	SelfRank             int32             `protobuf:"varint,1,opt,name=self_rank,json=selfRank,proto3" json:"self_rank,omitempty"`
 	TowerInfo            []*TowerLevelInfo `protobuf:"bytes,2,rep,name=tower_info,json=towerInfo,proto3" json:"tower_info,omitempty"`
+	Type                 int32             `protobuf:"varint,3,opt,name=type,proto3" json:"type,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
 	XXX_unrecognized     []byte            `json:"-"`
 	XXX_sizecache        int32             `json:"-"`
@@ -3313,6 +3322,92 @@ func (m *SSPassTowerLevelRankAck) GetTowerInfo() []*TowerLevelInfo {
 	return nil
 }
 
+func (m *SSPassTowerLevelRankAck) GetType() int32 {
+	if m != nil {
+		return m.Type
+	}
+	return 0
+}
+
+// 无尽模式刷新数据
+type SSTowerWjRankUpdateReq struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *SSTowerWjRankUpdateReq) Reset()         { *m = SSTowerWjRankUpdateReq{} }
+func (m *SSTowerWjRankUpdateReq) String() string { return proto.CompactTextString(m) }
+func (*SSTowerWjRankUpdateReq) ProtoMessage()    {}
+func (*SSTowerWjRankUpdateReq) Descriptor() ([]byte, []int) {
+	return fileDescriptor_8817812184a13374, []int{67}
+}
+
+func (m *SSTowerWjRankUpdateReq) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_SSTowerWjRankUpdateReq.Unmarshal(m, b)
+}
+func (m *SSTowerWjRankUpdateReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_SSTowerWjRankUpdateReq.Marshal(b, m, deterministic)
+}
+func (m *SSTowerWjRankUpdateReq) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_SSTowerWjRankUpdateReq.Merge(m, src)
+}
+func (m *SSTowerWjRankUpdateReq) XXX_Size() int {
+	return xxx_messageInfo_SSTowerWjRankUpdateReq.Size(m)
+}
+func (m *SSTowerWjRankUpdateReq) XXX_DiscardUnknown() {
+	xxx_messageInfo_SSTowerWjRankUpdateReq.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_SSTowerWjRankUpdateReq proto.InternalMessageInfo
+
+type SSTowerWjRankUpdateAck struct {
+	Error                int32             `protobuf:"varint,1,opt,name=error,proto3" json:"error,omitempty"`
+	RewardPlayerList     []*KeyValueType64 `protobuf:"bytes,2,rep,name=reward_player_list,json=rewardPlayerList,proto3" json:"reward_player_list,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
+	XXX_unrecognized     []byte            `json:"-"`
+	XXX_sizecache        int32             `json:"-"`
+}
+
+func (m *SSTowerWjRankUpdateAck) Reset()         { *m = SSTowerWjRankUpdateAck{} }
+func (m *SSTowerWjRankUpdateAck) String() string { return proto.CompactTextString(m) }
+func (*SSTowerWjRankUpdateAck) ProtoMessage()    {}
+func (*SSTowerWjRankUpdateAck) Descriptor() ([]byte, []int) {
+	return fileDescriptor_8817812184a13374, []int{68}
+}
+
+func (m *SSTowerWjRankUpdateAck) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_SSTowerWjRankUpdateAck.Unmarshal(m, b)
+}
+func (m *SSTowerWjRankUpdateAck) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_SSTowerWjRankUpdateAck.Marshal(b, m, deterministic)
+}
+func (m *SSTowerWjRankUpdateAck) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_SSTowerWjRankUpdateAck.Merge(m, src)
+}
+func (m *SSTowerWjRankUpdateAck) XXX_Size() int {
+	return xxx_messageInfo_SSTowerWjRankUpdateAck.Size(m)
+}
+func (m *SSTowerWjRankUpdateAck) XXX_DiscardUnknown() {
+	xxx_messageInfo_SSTowerWjRankUpdateAck.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_SSTowerWjRankUpdateAck proto.InternalMessageInfo
+
+func (m *SSTowerWjRankUpdateAck) GetError() int32 {
+	if m != nil {
+		return m.Error
+	}
+	return 0
+}
+
+func (m *SSTowerWjRankUpdateAck) GetRewardPlayerList() []*KeyValueType64 {
+	if m != nil {
+		return m.RewardPlayerList
+	}
+	return nil
+}
+
 type SSGetFriendTowerInfoReq struct {
 	Uid                  uint64   `protobuf:"varint,1,opt,name=uid,proto3" json:"uid,omitempty"`
 	UidList              []uint64 `protobuf:"varint,2,rep,packed,name=uid_list,json=uidList,proto3" json:"uid_list,omitempty"`
@@ -3327,7 +3422,7 @@ func (m *SSGetFriendTowerInfoReq) Reset()         { *m = SSGetFriendTowerInfoReq
 func (m *SSGetFriendTowerInfoReq) String() string { return proto.CompactTextString(m) }
 func (*SSGetFriendTowerInfoReq) ProtoMessage()    {}
 func (*SSGetFriendTowerInfoReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{67}
+	return fileDescriptor_8817812184a13374, []int{69}
 }
 
 func (m *SSGetFriendTowerInfoReq) XXX_Unmarshal(b []byte) error {
@@ -3391,7 +3486,7 @@ func (m *SSGetFriendTowerInfoAck) Reset()         { *m = SSGetFriendTowerInfoAck
 func (m *SSGetFriendTowerInfoAck) String() string { return proto.CompactTextString(m) }
 func (*SSGetFriendTowerInfoAck) ProtoMessage()    {}
 func (*SSGetFriendTowerInfoAck) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{68}
+	return fileDescriptor_8817812184a13374, []int{70}
 }
 
 func (m *SSGetFriendTowerInfoAck) XXX_Unmarshal(b []byte) error {
@@ -3459,7 +3554,7 @@ func (m *SSOnlineGetRushInfoReq) Reset()         { *m = SSOnlineGetRushInfoReq{}
 func (m *SSOnlineGetRushInfoReq) String() string { return proto.CompactTextString(m) }
 func (*SSOnlineGetRushInfoReq) ProtoMessage()    {}
 func (*SSOnlineGetRushInfoReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{69}
+	return fileDescriptor_8817812184a13374, []int{71}
 }
 
 func (m *SSOnlineGetRushInfoReq) XXX_Unmarshal(b []byte) error {
@@ -3499,7 +3594,7 @@ func (m *SSOnlineGetRushInfoAck) Reset()         { *m = SSOnlineGetRushInfoAck{}
 func (m *SSOnlineGetRushInfoAck) String() string { return proto.CompactTextString(m) }
 func (*SSOnlineGetRushInfoAck) ProtoMessage()    {}
 func (*SSOnlineGetRushInfoAck) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{70}
+	return fileDescriptor_8817812184a13374, []int{72}
 }
 
 func (m *SSOnlineGetRushInfoAck) XXX_Unmarshal(b []byte) error {
@@ -3550,7 +3645,7 @@ func (m *SSRushDataChangeReq) Reset()         { *m = SSRushDataChangeReq{} }
 func (m *SSRushDataChangeReq) String() string { return proto.CompactTextString(m) }
 func (*SSRushDataChangeReq) ProtoMessage()    {}
 func (*SSRushDataChangeReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{71}
+	return fileDescriptor_8817812184a13374, []int{73}
 }
 
 func (m *SSRushDataChangeReq) XXX_Unmarshal(b []byte) error {
@@ -3622,7 +3717,7 @@ func (m *SSRushDataChangeAck) Reset()         { *m = SSRushDataChangeAck{} }
 func (m *SSRushDataChangeAck) String() string { return proto.CompactTextString(m) }
 func (*SSRushDataChangeAck) ProtoMessage()    {}
 func (*SSRushDataChangeAck) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{72}
+	return fileDescriptor_8817812184a13374, []int{74}
 }
 
 func (m *SSRushDataChangeAck) XXX_Unmarshal(b []byte) error {
@@ -3699,7 +3794,7 @@ func (m *SSGetRushBaseRewardReq) Reset()         { *m = SSGetRushBaseRewardReq{}
 func (m *SSGetRushBaseRewardReq) String() string { return proto.CompactTextString(m) }
 func (*SSGetRushBaseRewardReq) ProtoMessage()    {}
 func (*SSGetRushBaseRewardReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{73}
+	return fileDescriptor_8817812184a13374, []int{75}
 }
 
 func (m *SSGetRushBaseRewardReq) XXX_Unmarshal(b []byte) error {
@@ -3755,7 +3850,7 @@ func (m *SSGetRushBaseRewardAck) Reset()         { *m = SSGetRushBaseRewardAck{}
 func (m *SSGetRushBaseRewardAck) String() string { return proto.CompactTextString(m) }
 func (*SSGetRushBaseRewardAck) ProtoMessage()    {}
 func (*SSGetRushBaseRewardAck) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{74}
+	return fileDescriptor_8817812184a13374, []int{76}
 }
 
 func (m *SSGetRushBaseRewardAck) XXX_Unmarshal(b []byte) error {
@@ -3819,7 +3914,7 @@ func (m *SSGetRushShopInfoReq) Reset()         { *m = SSGetRushShopInfoReq{} }
 func (m *SSGetRushShopInfoReq) String() string { return proto.CompactTextString(m) }
 func (*SSGetRushShopInfoReq) ProtoMessage()    {}
 func (*SSGetRushShopInfoReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{75}
+	return fileDescriptor_8817812184a13374, []int{77}
 }
 
 func (m *SSGetRushShopInfoReq) XXX_Unmarshal(b []byte) error {
@@ -3884,7 +3979,7 @@ func (m *SSGetRushShopInfoAck) Reset()         { *m = SSGetRushShopInfoAck{} }
 func (m *SSGetRushShopInfoAck) String() string { return proto.CompactTextString(m) }
 func (*SSGetRushShopInfoAck) ProtoMessage()    {}
 func (*SSGetRushShopInfoAck) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{76}
+	return fileDescriptor_8817812184a13374, []int{78}
 }
 
 func (m *SSGetRushShopInfoAck) XXX_Unmarshal(b []byte) error {
@@ -3963,7 +4058,7 @@ func (m *SSGetRushShopBuyReq) Reset()         { *m = SSGetRushShopBuyReq{} }
 func (m *SSGetRushShopBuyReq) String() string { return proto.CompactTextString(m) }
 func (*SSGetRushShopBuyReq) ProtoMessage()    {}
 func (*SSGetRushShopBuyReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{77}
+	return fileDescriptor_8817812184a13374, []int{79}
 }
 
 func (m *SSGetRushShopBuyReq) XXX_Unmarshal(b []byte) error {
@@ -4036,7 +4131,7 @@ func (m *SSGetRushShopBuyAck) Reset()         { *m = SSGetRushShopBuyAck{} }
 func (m *SSGetRushShopBuyAck) String() string { return proto.CompactTextString(m) }
 func (*SSGetRushShopBuyAck) ProtoMessage()    {}
 func (*SSGetRushShopBuyAck) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{78}
+	return fileDescriptor_8817812184a13374, []int{80}
 }
 
 func (m *SSGetRushShopBuyAck) XXX_Unmarshal(b []byte) error {
@@ -4119,7 +4214,7 @@ func (m *SSGetRushDataReq) Reset()         { *m = SSGetRushDataReq{} }
 func (m *SSGetRushDataReq) String() string { return proto.CompactTextString(m) }
 func (*SSGetRushDataReq) ProtoMessage()    {}
 func (*SSGetRushDataReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{79}
+	return fileDescriptor_8817812184a13374, []int{81}
 }
 
 func (m *SSGetRushDataReq) XXX_Unmarshal(b []byte) error {
@@ -4173,7 +4268,7 @@ func (m *SSGetRushDataAck) Reset()         { *m = SSGetRushDataAck{} }
 func (m *SSGetRushDataAck) String() string { return proto.CompactTextString(m) }
 func (*SSGetRushDataAck) ProtoMessage()    {}
 func (*SSGetRushDataAck) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{80}
+	return fileDescriptor_8817812184a13374, []int{82}
 }
 
 func (m *SSGetRushDataAck) XXX_Unmarshal(b []byte) error {
@@ -4271,7 +4366,7 @@ func (m *SSGetRushRewardReq) Reset()         { *m = SSGetRushRewardReq{} }
 func (m *SSGetRushRewardReq) String() string { return proto.CompactTextString(m) }
 func (*SSGetRushRewardReq) ProtoMessage()    {}
 func (*SSGetRushRewardReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{81}
+	return fileDescriptor_8817812184a13374, []int{83}
 }
 
 func (m *SSGetRushRewardReq) XXX_Unmarshal(b []byte) error {
@@ -4329,7 +4424,7 @@ func (m *SSGetRushRewardAck) Reset()         { *m = SSGetRushRewardAck{} }
 func (m *SSGetRushRewardAck) String() string { return proto.CompactTextString(m) }
 func (*SSGetRushRewardAck) ProtoMessage()    {}
 func (*SSGetRushRewardAck) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{82}
+	return fileDescriptor_8817812184a13374, []int{84}
 }
 
 func (m *SSGetRushRewardAck) XXX_Unmarshal(b []byte) error {
@@ -4405,7 +4500,7 @@ func (m *RushMailData) Reset()         { *m = RushMailData{} }
 func (m *RushMailData) String() string { return proto.CompactTextString(m) }
 func (*RushMailData) ProtoMessage()    {}
 func (*RushMailData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{83}
+	return fileDescriptor_8817812184a13374, []int{85}
 }
 
 func (m *RushMailData) XXX_Unmarshal(b []byte) error {
@@ -4461,7 +4556,7 @@ func (m *SSRushActivityRankRewardNtf) Reset()         { *m = SSRushActivityRankR
 func (m *SSRushActivityRankRewardNtf) String() string { return proto.CompactTextString(m) }
 func (*SSRushActivityRankRewardNtf) ProtoMessage()    {}
 func (*SSRushActivityRankRewardNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{84}
+	return fileDescriptor_8817812184a13374, []int{86}
 }
 
 func (m *SSRushActivityRankRewardNtf) XXX_Unmarshal(b []byte) error {
@@ -4522,7 +4617,7 @@ func (m *SSGetRushRankRewardReq) Reset()         { *m = SSGetRushRankRewardReq{}
 func (m *SSGetRushRankRewardReq) String() string { return proto.CompactTextString(m) }
 func (*SSGetRushRankRewardReq) ProtoMessage()    {}
 func (*SSGetRushRankRewardReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{85}
+	return fileDescriptor_8817812184a13374, []int{87}
 }
 
 func (m *SSGetRushRankRewardReq) XXX_Unmarshal(b []byte) error {
@@ -4571,7 +4666,7 @@ func (m *RankRewardData) Reset()         { *m = RankRewardData{} }
 func (m *RankRewardData) String() string { return proto.CompactTextString(m) }
 func (*RankRewardData) ProtoMessage()    {}
 func (*RankRewardData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{86}
+	return fileDescriptor_8817812184a13374, []int{88}
 }
 
 func (m *RankRewardData) XXX_Unmarshal(b []byte) error {
@@ -4633,7 +4728,7 @@ func (m *RankRewardList) Reset()         { *m = RankRewardList{} }
 func (m *RankRewardList) String() string { return proto.CompactTextString(m) }
 func (*RankRewardList) ProtoMessage()    {}
 func (*RankRewardList) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{87}
+	return fileDescriptor_8817812184a13374, []int{89}
 }
 
 func (m *RankRewardList) XXX_Unmarshal(b []byte) error {
@@ -4687,7 +4782,7 @@ func (m *SSGetRushRankRewardAck) Reset()         { *m = SSGetRushRankRewardAck{}
 func (m *SSGetRushRankRewardAck) String() string { return proto.CompactTextString(m) }
 func (*SSGetRushRankRewardAck) ProtoMessage()    {}
 func (*SSGetRushRankRewardAck) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{88}
+	return fileDescriptor_8817812184a13374, []int{90}
 }
 
 func (m *SSGetRushRankRewardAck) XXX_Unmarshal(b []byte) error {
@@ -4734,7 +4829,7 @@ func (m *SSTestRushRankRewardNtf) Reset()         { *m = SSTestRushRankRewardNtf
 func (m *SSTestRushRankRewardNtf) String() string { return proto.CompactTextString(m) }
 func (*SSTestRushRankRewardNtf) ProtoMessage()    {}
 func (*SSTestRushRankRewardNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{89}
+	return fileDescriptor_8817812184a13374, []int{91}
 }
 
 func (m *SSTestRushRankRewardNtf) XXX_Unmarshal(b []byte) error {
@@ -4781,7 +4876,7 @@ func (m *SSRushMapScoreNtf) Reset()         { *m = SSRushMapScoreNtf{} }
 func (m *SSRushMapScoreNtf) String() string { return proto.CompactTextString(m) }
 func (*SSRushMapScoreNtf) ProtoMessage()    {}
 func (*SSRushMapScoreNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{90}
+	return fileDescriptor_8817812184a13374, []int{92}
 }
 
 func (m *SSRushMapScoreNtf) XXX_Unmarshal(b []byte) error {
@@ -4830,7 +4925,7 @@ func (m *SSLoadMailNtf) Reset()         { *m = SSLoadMailNtf{} }
 func (m *SSLoadMailNtf) String() string { return proto.CompactTextString(m) }
 func (*SSLoadMailNtf) ProtoMessage()    {}
 func (*SSLoadMailNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{91}
+	return fileDescriptor_8817812184a13374, []int{93}
 }
 
 func (m *SSLoadMailNtf) XXX_Unmarshal(b []byte) error {
@@ -4881,7 +4976,7 @@ func (m *SSMailSaveNtf) Reset()         { *m = SSMailSaveNtf{} }
 func (m *SSMailSaveNtf) String() string { return proto.CompactTextString(m) }
 func (*SSMailSaveNtf) ProtoMessage()    {}
 func (*SSMailSaveNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{92}
+	return fileDescriptor_8817812184a13374, []int{94}
 }
 
 func (m *SSMailSaveNtf) XXX_Unmarshal(b []byte) error {
@@ -4950,7 +5045,7 @@ func (m *SSCompetitionSaveReq) Reset()         { *m = SSCompetitionSaveReq{} }
 func (m *SSCompetitionSaveReq) String() string { return proto.CompactTextString(m) }
 func (*SSCompetitionSaveReq) ProtoMessage()    {}
 func (*SSCompetitionSaveReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{93}
+	return fileDescriptor_8817812184a13374, []int{95}
 }
 
 func (m *SSCompetitionSaveReq) XXX_Unmarshal(b []byte) error {
@@ -4993,7 +5088,7 @@ func (m *SSGetUidByRoleNameReq) Reset()         { *m = SSGetUidByRoleNameReq{} }
 func (m *SSGetUidByRoleNameReq) String() string { return proto.CompactTextString(m) }
 func (*SSGetUidByRoleNameReq) ProtoMessage()    {}
 func (*SSGetUidByRoleNameReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{94}
+	return fileDescriptor_8817812184a13374, []int{96}
 }
 
 func (m *SSGetUidByRoleNameReq) XXX_Unmarshal(b []byte) error {
@@ -5046,7 +5141,7 @@ func (m *SSGetUidByRoleNameAck) Reset()         { *m = SSGetUidByRoleNameAck{} }
 func (m *SSGetUidByRoleNameAck) String() string { return proto.CompactTextString(m) }
 func (*SSGetUidByRoleNameAck) ProtoMessage()    {}
 func (*SSGetUidByRoleNameAck) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{95}
+	return fileDescriptor_8817812184a13374, []int{97}
 }
 
 func (m *SSGetUidByRoleNameAck) XXX_Unmarshal(b []byte) error {
@@ -5087,7 +5182,7 @@ func (m *SSDBFriendAddFansReq) Reset()         { *m = SSDBFriendAddFansReq{} }
 func (m *SSDBFriendAddFansReq) String() string { return proto.CompactTextString(m) }
 func (*SSDBFriendAddFansReq) ProtoMessage()    {}
 func (*SSDBFriendAddFansReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{96}
+	return fileDescriptor_8817812184a13374, []int{98}
 }
 
 func (m *SSDBFriendAddFansReq) XXX_Unmarshal(b []byte) error {
@@ -5135,7 +5230,7 @@ func (m *SSDBFriendAddFansAck) Reset()         { *m = SSDBFriendAddFansAck{} }
 func (m *SSDBFriendAddFansAck) String() string { return proto.CompactTextString(m) }
 func (*SSDBFriendAddFansAck) ProtoMessage()    {}
 func (*SSDBFriendAddFansAck) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{97}
+	return fileDescriptor_8817812184a13374, []int{99}
 }
 
 func (m *SSDBFriendAddFansAck) XXX_Unmarshal(b []byte) error {
@@ -5190,7 +5285,7 @@ func (m *SSDBFriendDelFansNtf) Reset()         { *m = SSDBFriendDelFansNtf{} }
 func (m *SSDBFriendDelFansNtf) String() string { return proto.CompactTextString(m) }
 func (*SSDBFriendDelFansNtf) ProtoMessage()    {}
 func (*SSDBFriendDelFansNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{98}
+	return fileDescriptor_8817812184a13374, []int{100}
 }
 
 func (m *SSDBFriendDelFansNtf) XXX_Unmarshal(b []byte) error {
@@ -5238,7 +5333,7 @@ func (m *SSFriendDataSaveReq) Reset()         { *m = SSFriendDataSaveReq{} }
 func (m *SSFriendDataSaveReq) String() string { return proto.CompactTextString(m) }
 func (*SSFriendDataSaveReq) ProtoMessage()    {}
 func (*SSFriendDataSaveReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{99}
+	return fileDescriptor_8817812184a13374, []int{101}
 }
 
 func (m *SSFriendDataSaveReq) XXX_Unmarshal(b []byte) error {
@@ -5291,7 +5386,7 @@ func (m *SSLoadFriendDataNtf) Reset()         { *m = SSLoadFriendDataNtf{} }
 func (m *SSLoadFriendDataNtf) String() string { return proto.CompactTextString(m) }
 func (*SSLoadFriendDataNtf) ProtoMessage()    {}
 func (*SSLoadFriendDataNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{100}
+	return fileDescriptor_8817812184a13374, []int{102}
 }
 
 func (m *SSLoadFriendDataNtf) XXX_Unmarshal(b []byte) error {
@@ -5337,7 +5432,7 @@ func (m *WorldBossStateInfo) Reset()         { *m = WorldBossStateInfo{} }
 func (m *WorldBossStateInfo) String() string { return proto.CompactTextString(m) }
 func (*WorldBossStateInfo) ProtoMessage()    {}
 func (*WorldBossStateInfo) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{101}
+	return fileDescriptor_8817812184a13374, []int{103}
 }
 
 func (m *WorldBossStateInfo) XXX_Unmarshal(b []byte) error {
@@ -5426,7 +5521,7 @@ func (m *SSRoleLogData) Reset()         { *m = SSRoleLogData{} }
 func (m *SSRoleLogData) String() string { return proto.CompactTextString(m) }
 func (*SSRoleLogData) ProtoMessage()    {}
 func (*SSRoleLogData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{102}
+	return fileDescriptor_8817812184a13374, []int{104}
 }
 
 func (m *SSRoleLogData) XXX_Unmarshal(b []byte) error {
@@ -5507,7 +5602,7 @@ func (m *SSRoleLogNtf) Reset()         { *m = SSRoleLogNtf{} }
 func (m *SSRoleLogNtf) String() string { return proto.CompactTextString(m) }
 func (*SSRoleLogNtf) ProtoMessage()    {}
 func (*SSRoleLogNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{103}
+	return fileDescriptor_8817812184a13374, []int{105}
 }
 
 func (m *SSRoleLogNtf) XXX_Unmarshal(b []byte) error {
@@ -5548,7 +5643,7 @@ func (m *RoleRes2MysqlInfo) Reset()         { *m = RoleRes2MysqlInfo{} }
 func (m *RoleRes2MysqlInfo) String() string { return proto.CompactTextString(m) }
 func (*RoleRes2MysqlInfo) ProtoMessage()    {}
 func (*RoleRes2MysqlInfo) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{104}
+	return fileDescriptor_8817812184a13374, []int{106}
 }
 
 func (m *RoleRes2MysqlInfo) XXX_Unmarshal(b []byte) error {
@@ -5601,7 +5696,7 @@ func (m *SSRoleResMysqlNtf) Reset()         { *m = SSRoleResMysqlNtf{} }
 func (m *SSRoleResMysqlNtf) String() string { return proto.CompactTextString(m) }
 func (*SSRoleResMysqlNtf) ProtoMessage()    {}
 func (*SSRoleResMysqlNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{105}
+	return fileDescriptor_8817812184a13374, []int{107}
 }
 
 func (m *SSRoleResMysqlNtf) XXX_Unmarshal(b []byte) error {
@@ -5636,7 +5731,7 @@ func (m *SSPlayerStateChangeNtf) Reset()         { *m = SSPlayerStateChangeNtf{}
 func (m *SSPlayerStateChangeNtf) String() string { return proto.CompactTextString(m) }
 func (*SSPlayerStateChangeNtf) ProtoMessage()    {}
 func (*SSPlayerStateChangeNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{106}
+	return fileDescriptor_8817812184a13374, []int{108}
 }
 
 func (m *SSPlayerStateChangeNtf) XXX_Unmarshal(b []byte) error {
@@ -5698,7 +5793,7 @@ func (m *SSCardCollectionChangeNtf) Reset()         { *m = SSCardCollectionChang
 func (m *SSCardCollectionChangeNtf) String() string { return proto.CompactTextString(m) }
 func (*SSCardCollectionChangeNtf) ProtoMessage()    {}
 func (*SSCardCollectionChangeNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{107}
+	return fileDescriptor_8817812184a13374, []int{109}
 }
 
 func (m *SSCardCollectionChangeNtf) XXX_Unmarshal(b []byte) error {
@@ -5753,7 +5848,7 @@ func (m *SSLoadPetNtf) Reset()         { *m = SSLoadPetNtf{} }
 func (m *SSLoadPetNtf) String() string { return proto.CompactTextString(m) }
 func (*SSLoadPetNtf) ProtoMessage()    {}
 func (*SSLoadPetNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{108}
+	return fileDescriptor_8817812184a13374, []int{110}
 }
 
 func (m *SSLoadPetNtf) XXX_Unmarshal(b []byte) error {
@@ -5801,7 +5896,7 @@ func (m *SSLoadSkillEquipNtf) Reset()         { *m = SSLoadSkillEquipNtf{} }
 func (m *SSLoadSkillEquipNtf) String() string { return proto.CompactTextString(m) }
 func (*SSLoadSkillEquipNtf) ProtoMessage()    {}
 func (*SSLoadSkillEquipNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{109}
+	return fileDescriptor_8817812184a13374, []int{111}
 }
 
 func (m *SSLoadSkillEquipNtf) XXX_Unmarshal(b []byte) error {
@@ -5851,7 +5946,7 @@ func (m *SSPetQueryAssistInfoReq) Reset()         { *m = SSPetQueryAssistInfoReq
 func (m *SSPetQueryAssistInfoReq) String() string { return proto.CompactTextString(m) }
 func (*SSPetQueryAssistInfoReq) ProtoMessage()    {}
 func (*SSPetQueryAssistInfoReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{110}
+	return fileDescriptor_8817812184a13374, []int{112}
 }
 
 func (m *SSPetQueryAssistInfoReq) XXX_Unmarshal(b []byte) error {
@@ -5912,7 +6007,7 @@ func (m *SSPetQueryAssistInfoAck) Reset()         { *m = SSPetQueryAssistInfoAck
 func (m *SSPetQueryAssistInfoAck) String() string { return proto.CompactTextString(m) }
 func (*SSPetQueryAssistInfoAck) ProtoMessage()    {}
 func (*SSPetQueryAssistInfoAck) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{111}
+	return fileDescriptor_8817812184a13374, []int{113}
 }
 
 func (m *SSPetQueryAssistInfoAck) XXX_Unmarshal(b []byte) error {
@@ -5959,7 +6054,7 @@ func (m *SSPetSetAssistNtf) Reset()         { *m = SSPetSetAssistNtf{} }
 func (m *SSPetSetAssistNtf) String() string { return proto.CompactTextString(m) }
 func (*SSPetSetAssistNtf) ProtoMessage()    {}
 func (*SSPetSetAssistNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{112}
+	return fileDescriptor_8817812184a13374, []int{114}
 }
 
 func (m *SSPetSetAssistNtf) XXX_Unmarshal(b []byte) error {
@@ -6004,7 +6099,7 @@ func (m *SSPetBondAssistListReq) Reset()         { *m = SSPetBondAssistListReq{}
 func (m *SSPetBondAssistListReq) String() string { return proto.CompactTextString(m) }
 func (*SSPetBondAssistListReq) ProtoMessage()    {}
 func (*SSPetBondAssistListReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{113}
+	return fileDescriptor_8817812184a13374, []int{115}
 }
 
 func (m *SSPetBondAssistListReq) XXX_Unmarshal(b []byte) error {
@@ -6079,7 +6174,7 @@ func (m *SSPetBondAssistListAck) Reset()         { *m = SSPetBondAssistListAck{}
 func (m *SSPetBondAssistListAck) String() string { return proto.CompactTextString(m) }
 func (*SSPetBondAssistListAck) ProtoMessage()    {}
 func (*SSPetBondAssistListAck) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{114}
+	return fileDescriptor_8817812184a13374, []int{116}
 }
 
 func (m *SSPetBondAssistListAck) XXX_Unmarshal(b []byte) error {
@@ -6125,7 +6220,7 @@ func (m *SSPetAdvAchievementReq) Reset()         { *m = SSPetAdvAchievementReq{}
 func (m *SSPetAdvAchievementReq) String() string { return proto.CompactTextString(m) }
 func (*SSPetAdvAchievementReq) ProtoMessage()    {}
 func (*SSPetAdvAchievementReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{115}
+	return fileDescriptor_8817812184a13374, []int{117}
 }
 
 func (m *SSPetAdvAchievementReq) XXX_Unmarshal(b []byte) error {
@@ -6166,7 +6261,7 @@ func (m *SSPetAdvAchievementAck) Reset()         { *m = SSPetAdvAchievementAck{}
 func (m *SSPetAdvAchievementAck) String() string { return proto.CompactTextString(m) }
 func (*SSPetAdvAchievementAck) ProtoMessage()    {}
 func (*SSPetAdvAchievementAck) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{116}
+	return fileDescriptor_8817812184a13374, []int{118}
 }
 
 func (m *SSPetAdvAchievementAck) XXX_Unmarshal(b []byte) error {
@@ -6220,7 +6315,7 @@ func (m *SSPetAdvAchievementSetNtf) Reset()         { *m = SSPetAdvAchievementSe
 func (m *SSPetAdvAchievementSetNtf) String() string { return proto.CompactTextString(m) }
 func (*SSPetAdvAchievementSetNtf) ProtoMessage()    {}
 func (*SSPetAdvAchievementSetNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{117}
+	return fileDescriptor_8817812184a13374, []int{119}
 }
 
 func (m *SSPetAdvAchievementSetNtf) XXX_Unmarshal(b []byte) error {
@@ -6269,7 +6364,7 @@ func (m *SSRushPetInfoChangeNtf) Reset()         { *m = SSRushPetInfoChangeNtf{}
 func (m *SSRushPetInfoChangeNtf) String() string { return proto.CompactTextString(m) }
 func (*SSRushPetInfoChangeNtf) ProtoMessage()    {}
 func (*SSRushPetInfoChangeNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{118}
+	return fileDescriptor_8817812184a13374, []int{120}
 }
 
 func (m *SSRushPetInfoChangeNtf) XXX_Unmarshal(b []byte) error {
@@ -6324,7 +6419,7 @@ func (m *SSRushSkillInfoChangeNtf) Reset()         { *m = SSRushSkillInfoChangeN
 func (m *SSRushSkillInfoChangeNtf) String() string { return proto.CompactTextString(m) }
 func (*SSRushSkillInfoChangeNtf) ProtoMessage()    {}
 func (*SSRushSkillInfoChangeNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{119}
+	return fileDescriptor_8817812184a13374, []int{121}
 }
 
 func (m *SSRushSkillInfoChangeNtf) XXX_Unmarshal(b []byte) error {
@@ -6372,7 +6467,7 @@ func (m *SSExpeditionDBHelpReq) Reset()         { *m = SSExpeditionDBHelpReq{} }
 func (m *SSExpeditionDBHelpReq) String() string { return proto.CompactTextString(m) }
 func (*SSExpeditionDBHelpReq) ProtoMessage()    {}
 func (*SSExpeditionDBHelpReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{120}
+	return fileDescriptor_8817812184a13374, []int{122}
 }
 
 func (m *SSExpeditionDBHelpReq) XXX_Unmarshal(b []byte) error {
@@ -6420,7 +6515,7 @@ func (m *SSExpeditionDBHelpAck) Reset()         { *m = SSExpeditionDBHelpAck{} }
 func (m *SSExpeditionDBHelpAck) String() string { return proto.CompactTextString(m) }
 func (*SSExpeditionDBHelpAck) ProtoMessage()    {}
 func (*SSExpeditionDBHelpAck) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{121}
+	return fileDescriptor_8817812184a13374, []int{123}
 }
 
 func (m *SSExpeditionDBHelpAck) XXX_Unmarshal(b []byte) error {
@@ -6474,7 +6569,7 @@ func (m *SSLoadInvitationDataNtf) Reset()         { *m = SSLoadInvitationDataNtf
 func (m *SSLoadInvitationDataNtf) String() string { return proto.CompactTextString(m) }
 func (*SSLoadInvitationDataNtf) ProtoMessage()    {}
 func (*SSLoadInvitationDataNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{122}
+	return fileDescriptor_8817812184a13374, []int{124}
 }
 
 func (m *SSLoadInvitationDataNtf) XXX_Unmarshal(b []byte) error {
@@ -6524,7 +6619,7 @@ func (m *SSInvitationSaveNtf) Reset()         { *m = SSInvitationSaveNtf{} }
 func (m *SSInvitationSaveNtf) String() string { return proto.CompactTextString(m) }
 func (*SSInvitationSaveNtf) ProtoMessage()    {}
 func (*SSInvitationSaveNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{123}
+	return fileDescriptor_8817812184a13374, []int{125}
 }
 
 func (m *SSInvitationSaveNtf) XXX_Unmarshal(b []byte) error {
@@ -6642,7 +6737,7 @@ func (m *SSInvitationGenNumberReq) Reset()         { *m = SSInvitationGenNumberR
 func (m *SSInvitationGenNumberReq) String() string { return proto.CompactTextString(m) }
 func (*SSInvitationGenNumberReq) ProtoMessage()    {}
 func (*SSInvitationGenNumberReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{124}
+	return fileDescriptor_8817812184a13374, []int{126}
 }
 
 func (m *SSInvitationGenNumberReq) XXX_Unmarshal(b []byte) error {
@@ -6689,7 +6784,7 @@ func (m *SSInvitationGenNumberAck) Reset()         { *m = SSInvitationGenNumberA
 func (m *SSInvitationGenNumberAck) String() string { return proto.CompactTextString(m) }
 func (*SSInvitationGenNumberAck) ProtoMessage()    {}
 func (*SSInvitationGenNumberAck) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{125}
+	return fileDescriptor_8817812184a13374, []int{127}
 }
 
 func (m *SSInvitationGenNumberAck) XXX_Unmarshal(b []byte) error {
@@ -6736,7 +6831,7 @@ func (m *SSInvitationNumberUserInfoReq) Reset()         { *m = SSInvitationNumbe
 func (m *SSInvitationNumberUserInfoReq) String() string { return proto.CompactTextString(m) }
 func (*SSInvitationNumberUserInfoReq) ProtoMessage()    {}
 func (*SSInvitationNumberUserInfoReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{126}
+	return fileDescriptor_8817812184a13374, []int{128}
 }
 
 func (m *SSInvitationNumberUserInfoReq) XXX_Unmarshal(b []byte) error {
@@ -6778,7 +6873,7 @@ func (m *SSInvitationNumberUserInfoAck) Reset()         { *m = SSInvitationNumbe
 func (m *SSInvitationNumberUserInfoAck) String() string { return proto.CompactTextString(m) }
 func (*SSInvitationNumberUserInfoAck) ProtoMessage()    {}
 func (*SSInvitationNumberUserInfoAck) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{127}
+	return fileDescriptor_8817812184a13374, []int{129}
 }
 
 func (m *SSInvitationNumberUserInfoAck) XXX_Unmarshal(b []byte) error {
@@ -6841,7 +6936,7 @@ func (m *SSInvitationMemberNoticeMasterNtf) Reset()         { *m = SSInvitationM
 func (m *SSInvitationMemberNoticeMasterNtf) String() string { return proto.CompactTextString(m) }
 func (*SSInvitationMemberNoticeMasterNtf) ProtoMessage()    {}
 func (*SSInvitationMemberNoticeMasterNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{128}
+	return fileDescriptor_8817812184a13374, []int{130}
 }
 
 func (m *SSInvitationMemberNoticeMasterNtf) XXX_Unmarshal(b []byte) error {
@@ -6896,7 +6991,7 @@ func (m *SSDaoChang100SaveNtf) Reset()         { *m = SSDaoChang100SaveNtf{} }
 func (m *SSDaoChang100SaveNtf) String() string { return proto.CompactTextString(m) }
 func (*SSDaoChang100SaveNtf) ProtoMessage()    {}
 func (*SSDaoChang100SaveNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{129}
+	return fileDescriptor_8817812184a13374, []int{131}
 }
 
 func (m *SSDaoChang100SaveNtf) XXX_Unmarshal(b []byte) error {
@@ -6943,7 +7038,7 @@ func (m *SSUpdateKeepSakeRankNtf) Reset()         { *m = SSUpdateKeepSakeRankNtf
 func (m *SSUpdateKeepSakeRankNtf) String() string { return proto.CompactTextString(m) }
 func (*SSUpdateKeepSakeRankNtf) ProtoMessage()    {}
 func (*SSUpdateKeepSakeRankNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{130}
+	return fileDescriptor_8817812184a13374, []int{132}
 }
 
 func (m *SSUpdateKeepSakeRankNtf) XXX_Unmarshal(b []byte) error {
@@ -6990,7 +7085,7 @@ func (m *SSDaoChang100WheelLogAddNtf) Reset()         { *m = SSDaoChang100WheelL
 func (m *SSDaoChang100WheelLogAddNtf) String() string { return proto.CompactTextString(m) }
 func (*SSDaoChang100WheelLogAddNtf) ProtoMessage()    {}
 func (*SSDaoChang100WheelLogAddNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{131}
+	return fileDescriptor_8817812184a13374, []int{133}
 }
 
 func (m *SSDaoChang100WheelLogAddNtf) XXX_Unmarshal(b []byte) error {
@@ -7030,7 +7125,7 @@ func (m *SSCrossDataSaveNtf) Reset()         { *m = SSCrossDataSaveNtf{} }
 func (m *SSCrossDataSaveNtf) String() string { return proto.CompactTextString(m) }
 func (*SSCrossDataSaveNtf) ProtoMessage()    {}
 func (*SSCrossDataSaveNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{132}
+	return fileDescriptor_8817812184a13374, []int{134}
 }
 
 func (m *SSCrossDataSaveNtf) XXX_Unmarshal(b []byte) error {
@@ -7070,7 +7165,7 @@ func (m *SSHeadDataSaveReq) Reset()         { *m = SSHeadDataSaveReq{} }
 func (m *SSHeadDataSaveReq) String() string { return proto.CompactTextString(m) }
 func (*SSHeadDataSaveReq) ProtoMessage()    {}
 func (*SSHeadDataSaveReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{133}
+	return fileDescriptor_8817812184a13374, []int{135}
 }
 
 func (m *SSHeadDataSaveReq) XXX_Unmarshal(b []byte) error {
@@ -7112,7 +7207,7 @@ func (m *SSUpdateHeadDataSaveReq) Reset()         { *m = SSUpdateHeadDataSaveReq
 func (m *SSUpdateHeadDataSaveReq) String() string { return proto.CompactTextString(m) }
 func (*SSUpdateHeadDataSaveReq) ProtoMessage()    {}
 func (*SSUpdateHeadDataSaveReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{134}
+	return fileDescriptor_8817812184a13374, []int{136}
 }
 
 func (m *SSUpdateHeadDataSaveReq) XXX_Unmarshal(b []byte) error {
@@ -7165,7 +7260,7 @@ func (m *SSLoadCrossDataNtf) Reset()         { *m = SSLoadCrossDataNtf{} }
 func (m *SSLoadCrossDataNtf) String() string { return proto.CompactTextString(m) }
 func (*SSLoadCrossDataNtf) ProtoMessage()    {}
 func (*SSLoadCrossDataNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{135}
+	return fileDescriptor_8817812184a13374, []int{137}
 }
 
 func (m *SSLoadCrossDataNtf) XXX_Unmarshal(b []byte) error {
@@ -7204,7 +7299,7 @@ func (m *SSWishBoxDataSaveReq) Reset()         { *m = SSWishBoxDataSaveReq{} }
 func (m *SSWishBoxDataSaveReq) String() string { return proto.CompactTextString(m) }
 func (*SSWishBoxDataSaveReq) ProtoMessage()    {}
 func (*SSWishBoxDataSaveReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{136}
+	return fileDescriptor_8817812184a13374, []int{138}
 }
 
 func (m *SSWishBoxDataSaveReq) XXX_Unmarshal(b []byte) error {
@@ -7245,7 +7340,7 @@ func (m *SSBTDataSaveNtf) Reset()         { *m = SSBTDataSaveNtf{} }
 func (m *SSBTDataSaveNtf) String() string { return proto.CompactTextString(m) }
 func (*SSBTDataSaveNtf) ProtoMessage()    {}
 func (*SSBTDataSaveNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{137}
+	return fileDescriptor_8817812184a13374, []int{139}
 }
 
 func (m *SSBTDataSaveNtf) XXX_Unmarshal(b []byte) error {
@@ -7348,6 +7443,8 @@ func init() {
 	proto.RegisterType((*SSPassTowerLevelRankReq)(nil), "serverproto.SSPassTowerLevelRankReq")
 	proto.RegisterType((*TowerLevelInfo)(nil), "serverproto.TowerLevelInfo")
 	proto.RegisterType((*SSPassTowerLevelRankAck)(nil), "serverproto.SSPassTowerLevelRankAck")
+	proto.RegisterType((*SSTowerWjRankUpdateReq)(nil), "serverproto.SSTowerWjRankUpdateReq")
+	proto.RegisterType((*SSTowerWjRankUpdateAck)(nil), "serverproto.SSTowerWjRankUpdateAck")
 	proto.RegisterType((*SSGetFriendTowerInfoReq)(nil), "serverproto.SSGetFriendTowerInfoReq")
 	proto.RegisterType((*SSGetFriendTowerInfoAck)(nil), "serverproto.SSGetFriendTowerInfoAck")
 	proto.RegisterType((*SSOnlineGetRushInfoReq)(nil), "serverproto.SSOnlineGetRushInfoReq")
@@ -7426,324 +7523,325 @@ func init() {
 }
 
 var fileDescriptor_8817812184a13374 = []byte{
-	// 5095 bytes of a gzipped FileDescriptorProto
+	// 5116 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x3b, 0x5d, 0x8f, 0x1c, 0x57,
 	0x56, 0xea, 0xef, 0xee, 0xd3, 0xd3, 0x33, 0xe3, 0x8a, 0x63, 0x8f, 0xe3, 0x4d, 0x76, 0x52, 0xd9,
 	0x04, 0xe7, 0x63, 0xe3, 0x5d, 0xdb, 0x38, 0x89, 0x63, 0x92, 0xcc, 0x8c, 0xed, 0xf1, 0x6c, 0x3c,
 	0xce, 0xa4, 0x7a, 0xc6, 0x81, 0x45, 0xab, 0xd2, 0xed, 0xae, 0xdb, 0xdd, 0x15, 0x57, 0x57, 0xb5,
 	0xab, 0xaa, 0xc7, 0x1e, 0x9e, 0xd0, 0x0a, 0x10, 0xcb, 0xc3, 0x8a, 0x17, 0x1e, 0x10, 0x3c, 0x80,
 	0x90, 0x40, 0x48, 0x68, 0x25, 0x84, 0x16, 0x21, 0x5e, 0x40, 0xf0, 0x0b, 0x10, 0x48, 0x48, 0x3c,
-	0xf2, 0x82, 0xe0, 0x57, 0xa0, 0x73, 0xce, 0xad, 0xaa, 0x5b, 0xdd, 0xd5, 0xed, 0x99, 0x64, 0x57,
-	0xbb, 0x4f, 0x5d, 0x75, 0xee, 0xb9, 0xe7, 0x9e, 0x7b, 0xce, 0xb9, 0xe7, 0xe3, 0xd6, 0x69, 0x68,
-	0x3a, 0xbd, 0x77, 0x27, 0x61, 0x10, 0x07, 0x46, 0x3b, 0x92, 0xe1, 0xb1, 0x0c, 0xe9, 0xe5, 0x25,
-	0x98, 0x46, 0x32, 0xe4, 0x01, 0xf3, 0xf7, 0x4a, 0x70, 0xb1, 0xdb, 0xdd, 0xea, 0xf7, 0x83, 0xa9,
-	0x1f, 0xef, 0xca, 0xd8, 0x0a, 0x3c, 0xf9, 0xc0, 0x8d, 0x62, 0x4b, 0x3e, 0x31, 0x5e, 0x06, 0xe8,
-	0x8f, 0x84, 0xef, 0x4b, 0xcf, 0x76, 0x9d, 0x8d, 0xd2, 0x66, 0xe9, 0x4a, 0xd5, 0x6a, 0x29, 0xc8,
-	0x9e, 0x63, 0x5c, 0x84, 0x46, 0x30, 0x91, 0x3e, 0x8e, 0x95, 0x37, 0x4b, 0x57, 0x5a, 0x56, 0x1d,
-	0x5f, 0xf7, 0x1c, 0xe3, 0x25, 0x68, 0x4e, 0x3c, 0x11, 0x0f, 0x82, 0x70, 0xbc, 0x51, 0xa1, 0x91,
-	0xf4, 0x1d, 0x27, 0xfd, 0x56, 0xe0, 0x4b, 0x9c, 0x54, 0xdd, 0x2c, 0x5d, 0xa9, 0x59, 0x75, 0x7c,
-	0xdd, 0x73, 0xcc, 0x69, 0x31, 0x1f, 0x5b, 0xfd, 0xc7, 0xc6, 0xbb, 0x50, 0x0b, 0x03, 0x4f, 0x46,
-	0x1b, 0xa5, 0xcd, 0xca, 0x95, 0xf6, 0xb5, 0x8d, 0x77, 0xb5, 0xcd, 0xbc, 0xab, 0xa6, 0x20, 0xbe,
-	0xc5, 0x68, 0xc6, 0x5b, 0x70, 0xce, 0x8d, 0xec, 0xbe, 0x17, 0x44, 0xd2, 0x0e, 0xe5, 0xd0, 0x8d,
-	0x62, 0x19, 0x12, 0x8b, 0x4d, 0x6b, 0xcd, 0x8d, 0x76, 0x10, 0x6e, 0x29, 0xb0, 0xf9, 0x93, 0x12,
-	0xac, 0x77, 0xbb, 0x5b, 0x8e, 0x83, 0x04, 0xb6, 0x05, 0x8e, 0x3c, 0x31, 0xde, 0x84, 0x6a, 0x4f,
-	0x44, 0x92, 0xb6, 0xdc, 0xbe, 0xf6, 0x62, 0x6e, 0xbd, 0x14, 0x8f, 0x50, 0x8c, 0x6f, 0x42, 0x5b,
-	0xf4, 0x63, 0xf7, 0x58, 0xda, 0xfd, 0xc0, 0x91, 0x4a, 0x10, 0xc0, 0xa0, 0x9d, 0xc0, 0x91, 0xba,
-	0x94, 0x2a, 0x39, 0x29, 0xbd, 0x0a, 0x2b, 0xd1, 0xb4, 0x67, 0xa7, 0x92, 0xaa, 0xd2, 0x68, 0x3b,
-	0x9a, 0xf6, 0x0e, 0x12, 0x61, 0x19, 0x50, 0x45, 0xe9, 0x6c, 0xd4, 0x48, 0x52, 0xf4, 0x6c, 0x3e,
-	0x98, 0xe1, 0x17, 0x05, 0xb4, 0x0e, 0x15, 0x19, 0x86, 0xc4, 0x6e, 0xcd, 0xc2, 0x47, 0xe3, 0x0d,
-	0x58, 0xeb, 0x87, 0x52, 0xc4, 0xd2, 0x46, 0x91, 0xd8, 0x53, 0xa5, 0xa3, 0xaa, 0xd5, 0x61, 0x30,
-	0xce, 0x3e, 0x72, 0x1d, 0xf3, 0x2e, 0xbc, 0x90, 0x4a, 0x5d, 0x11, 0x7d, 0x18, 0x0f, 0xce, 0x2a,
-	0x71, 0xf3, 0x36, 0xac, 0x74, 0xbb, 0x4a, 0x6b, 0x28, 0xc0, 0x77, 0xc0, 0xa0, 0x75, 0x13, 0xe9,
-	0xdb, 0xb1, 0x3b, 0x96, 0xca, 0x82, 0xd6, 0x43, 0x42, 0xe2, 0x81, 0x43, 0x77, 0x2c, 0xcd, 0x5d,
-	0x6d, 0x76, 0xf1, 0x76, 0x5e, 0x87, 0x2a, 0xce, 0xa2, 0x3d, 0xb4, 0xaf, 0x9d, 0x9b, 0x53, 0x88,
-	0x45, 0xc3, 0xe6, 0x79, 0x30, 0x52, 0x42, 0xf7, 0x5c, 0xdf, 0x8d, 0x46, 0x0f, 0xe3, 0x81, 0xf9,
-	0x11, 0x9c, 0xeb, 0x76, 0x13, 0x71, 0x75, 0xc5, 0xf1, 0x19, 0x55, 0xcc, 0xf3, 0xef, 0xcb, 0x30,
-	0xb8, 0x23, 0x62, 0xa1, 0xcd, 0x1f, 0xc9, 0x30, 0x58, 0x38, 0x1f, 0xf1, 0x2d, 0x42, 0x31, 0xb7,
-	0x91, 0xab, 0xbb, 0x4f, 0xa6, 0xee, 0x44, 0x27, 0xf0, 0x0e, 0xd4, 0x24, 0xc2, 0x14, 0x85, 0x0b,
-	0x73, 0x14, 0x68, 0x86, 0xc5, 0x48, 0xe6, 0xef, 0xd3, 0x31, 0xed, 0x3e, 0x76, 0x3d, 0x6f, 0x8e,
-	0xd2, 0x6d, 0x68, 0x47, 0x38, 0x60, 0xeb, 0xf4, 0x2e, 0xcf, 0xd1, 0xcb, 0x26, 0x5b, 0x10, 0xa5,
-	0xcf, 0xc6, 0x55, 0x38, 0xaf, 0xcd, 0xb6, 0x1d, 0xe9, 0xd9, 0x9e, 0x1b, 0xc5, 0x1b, 0xe5, 0xcd,
-	0xca, 0x95, 0x8e, 0x75, 0x2e, 0xc3, 0xbc, 0x23, 0x3d, 0x3c, 0x90, 0xe6, 0x2d, 0x34, 0xc0, 0x6d,
-	0x31, 0xd4, 0x59, 0x78, 0x03, 0x2a, 0x3d, 0x31, 0x54, 0x4b, 0x9f, 0x2f, 0x10, 0xe6, 0xd0, 0x42,
-	0x04, 0x16, 0xe5, 0xce, 0x28, 0xcf, 0xff, 0x9b, 0x50, 0xed, 0x8f, 0x52, 0xc6, 0xe7, 0x45, 0x89,
-	0xf8, 0x16, 0xa1, 0x98, 0x3b, 0xb8, 0xf6, 0xbe, 0xc8, 0x4d, 0xbf, 0x0a, 0x4d, 0xb2, 0xb5, 0xb1,
-	0x98, 0x2c, 0x64, 0x60, 0x5f, 0x4c, 0xac, 0x46, 0xc8, 0x0f, 0x8a, 0x09, 0x11, 0x3a, 0xb3, 0x4c,
-	0x88, 0xd0, 0x59, 0xcc, 0x84, 0x08, 0x1d, 0x8b, 0x50, 0xcc, 0xef, 0xc1, 0xf9, 0x6e, 0xf7, 0x9e,
-	0x88, 0x46, 0x6e, 0xe0, 0xeb, 0x24, 0xae, 0x41, 0x63, 0xc0, 0x50, 0x45, 0x65, 0x63, 0x8e, 0x8a,
-	0x9a, 0x65, 0x25, 0x88, 0xe6, 0x3d, 0x3c, 0x7f, 0xdb, 0x22, 0x8e, 0x3d, 0x99, 0xdf, 0x53, 0xbd,
-	0x47, 0x40, 0x45, 0xe9, 0x62, 0x81, 0x48, 0x71, 0xd8, 0x52, 0x68, 0xe6, 0x4f, 0x4b, 0xc8, 0xd4,
-	0xce, 0x48, 0xc4, 0xfb, 0x32, 0x8a, 0xc4, 0x30, 0xb5, 0xf3, 0x2d, 0x68, 0x0f, 0xc2, 0x60, 0x8c,
-	0x6e, 0xe6, 0x44, 0x86, 0x8a, 0xdc, 0x66, 0x8e, 0x1c, 0xce, 0x3a, 0xa0, 0xe1, 0xed, 0xd0, 0x95,
-	0x83, 0x3d, 0x7f, 0x10, 0x58, 0x80, 0x93, 0x18, 0x68, 0xfc, 0x1a, 0xb4, 0x83, 0xc1, 0xc0, 0x73,
-	0x7d, 0x69, 0x8f, 0xa3, 0xa1, 0x3a, 0x83, 0xdf, 0x98, 0x23, 0xa1, 0x16, 0xe6, 0xe9, 0x6a, 0xc2,
-	0x7e, 0x34, 0x34, 0x2e, 0x43, 0x2b, 0x16, 0xe1, 0x50, 0xc6, 0x89, 0x0b, 0xac, 0x5a, 0x4d, 0x06,
-	0xec, 0x39, 0xac, 0x8b, 0x43, 0x11, 0x3d, 0x9e, 0xd1, 0x45, 0x2c, 0xa2, 0xc7, 0x0b, 0x75, 0x81,
-	0xf8, 0x16, 0xa1, 0x98, 0x9f, 0xc2, 0x8b, 0x7c, 0xb6, 0xef, 0x84, 0xe2, 0x69, 0x5e, 0x19, 0x2d,
-	0xb2, 0x0a, 0x27, 0x14, 0x4f, 0x17, 0x12, 0xc2, 0x49, 0x16, 0x59, 0x0f, 0x3e, 0x99, 0x1b, 0x70,
-	0x81, 0x65, 0xf8, 0x19, 0x73, 0xcf, 0xfb, 0xb7, 0xe4, 0x13, 0xb3, 0x57, 0x38, 0x82, 0xbe, 0xea,
-	0x3e, 0xbc, 0x48, 0xeb, 0x68, 0x12, 0xe2, 0xf3, 0xb3, 0xd8, 0x9a, 0x45, 0x6c, 0x91, 0x77, 0xfc,
-	0x2c, 0x95, 0x11, 0x9d, 0xab, 0x7f, 0x28, 0xe1, 0x22, 0xa4, 0xdb, 0x44, 0x0d, 0x99, 0x12, 0xa1,
-	0x87, 0x30, 0xdb, 0xf5, 0x07, 0x89, 0xcb, 0x31, 0xf3, 0x0a, 0x08, 0xc6, 0xe3, 0xc0, 0x9f, 0xd5,
-	0x62, 0xab, 0x97, 0x3c, 0x2e, 0x0e, 0xd6, 0x33, 0x01, 0xac, 0x32, 0x17, 0xc0, 0x9e, 0x1f, 0xa7,
-	0xcc, 0x2e, 0x6a, 0x41, 0xf9, 0xdd, 0x6c, 0x75, 0xf9, 0x04, 0x03, 0x58, 0x7c, 0x32, 0x91, 0xca,
-	0x95, 0xd3, 0x33, 0x86, 0x26, 0x36, 0x46, 0x8c, 0x4a, 0x99, 0xaf, 0xa9, 0x5a, 0x1d, 0x06, 0x1f,
-	0xb9, 0x0e, 0xc9, 0xc3, 0x2f, 0x22, 0x8a, 0x22, 0x2f, 0x22, 0x9a, 0x97, 0x50, 0x99, 0xa2, 0xd6,
-	0xd9, 0x24, 0x64, 0x7e, 0x8a, 0x6e, 0x7a, 0x2b, 0x94, 0xbe, 0xd0, 0xed, 0xe8, 0x57, 0x01, 0x48,
-	0xbf, 0x02, 0x07, 0x16, 0xfa, 0x6a, 0x9a, 0x66, 0x91, 0xc5, 0xd1, 0x23, 0x3b, 0x49, 0x8e, 0x86,
-	0x8e, 0xe6, 0x24, 0x43, 0xe9, 0x2c, 0xf4, 0x51, 0x96, 0x74, 0x2c, 0x44, 0xe0, 0x33, 0xd1, 0x1d,
-	0x05, 0xb3, 0x4e, 0x32, 0x1a, 0x05, 0x8b, 0x9d, 0x24, 0xe2, 0x5b, 0x84, 0xc2, 0xf1, 0xe6, 0x30,
-	0x78, 0x2a, 0xc3, 0x99, 0x78, 0x13, 0x23, 0x6c, 0xe1, 0x1e, 0x68, 0x86, 0xc5, 0x48, 0x4c, 0x63,
-	0x77, 0xea, 0x7a, 0xce, 0x0c, 0x8d, 0x21, 0xc2, 0x16, 0xd2, 0xa0, 0x19, 0x16, 0x23, 0x99, 0x47,
-	0x14, 0xb2, 0x62, 0x11, 0xbb, 0x51, 0xec, 0xf6, 0x23, 0x9d, 0xd0, 0x2d, 0x80, 0x28, 0x1d, 0x50,
-	0xd4, 0x5e, 0x9a, 0xdf, 0x53, 0x82, 0x62, 0x69, 0xd8, 0xe6, 0xff, 0x95, 0xe0, 0xc2, 0x16, 0x9a,
-	0xa7, 0x1b, 0x9f, 0x24, 0x34, 0xef, 0xc8, 0x58, 0xb8, 0x9e, 0xf1, 0x1a, 0x74, 0x04, 0x8f, 0xb8,
-	0x32, 0x4a, 0x72, 0xd6, 0x9a, 0xb5, 0x92, 0x01, 0xf7, 0x1c, 0xe3, 0x5e, 0x8a, 0x74, 0x62, 0x3b,
-	0x22, 0x16, 0xca, 0xa1, 0xbd, 0x3a, 0x93, 0xe3, 0x24, 0x33, 0x98, 0x34, 0x2e, 0x94, 0xd2, 0xa1,
-	0x65, 0x8d, 0x8f, 0x61, 0x1d, 0x73, 0xe1, 0xa1, 0xb4, 0xd1, 0x13, 0xb1, 0x21, 0x57, 0xc8, 0xf0,
-	0xf2, 0xda, 0x49, 0xbc, 0x9b, 0xb5, 0xca, 0xe8, 0xf8, 0x8e, 0x06, 0x6e, 0x98, 0xd0, 0xc1, 0x68,
-	0x9b, 0xcd, 0xae, 0x52, 0xc8, 0x6d, 0x3b, 0xd2, 0x4b, 0x70, 0xcc, 0xff, 0x2a, 0xe1, 0x29, 0x98,
-	0xdd, 0x2e, 0x8a, 0xf0, 0x23, 0xe8, 0xb0, 0x61, 0xaa, 0x31, 0x25, 0xc5, 0x4b, 0xf3, 0xb6, 0xa9,
-	0x10, 0xac, 0x95, 0x50, 0x7b, 0x33, 0x8e, 0xe0, 0xbc, 0x62, 0x3f, 0x95, 0x46, 0x7a, 0x16, 0xdb,
-	0xd7, 0x5e, 0x2b, 0x92, 0xc6, 0x8c, 0xb8, 0x2d, 0x83, 0x09, 0x24, 0xa3, 0xb4, 0xa9, 0xb7, 0xe0,
-	0x1c, 0x6e, 0x2a, 0x4f, 0x13, 0xc5, 0x52, 0xb3, 0xd6, 0x1c, 0xe9, 0xe9, 0xb8, 0xe6, 0x0f, 0xe0,
-	0xe5, 0x6c, 0x6f, 0xdd, 0xb1, 0x88, 0x46, 0x77, 0x87, 0xc3, 0x68, 0x3f, 0x1a, 0xe2, 0x1a, 0x98,
-	0x86, 0xde, 0x06, 0x14, 0x79, 0xe6, 0x53, 0xab, 0xc4, 0x5b, 0xde, 0x50, 0xba, 0x27, 0x51, 0x2c,
-	0xc7, 0x2a, 0xf8, 0x90, 0xe3, 0x4a, 0x1c, 0xea, 0xdf, 0x53, 0x6a, 0x7f, 0x20, 0x63, 0x5d, 0x6c,
-	0x9b, 0xb0, 0x32, 0x91, 0x71, 0x96, 0xe6, 0x94, 0x48, 0xe6, 0x30, 0x91, 0xb1, 0xca, 0x6f, 0x50,
-	0x2d, 0xbd, 0xc0, 0x77, 0xf2, 0x99, 0x50, 0xcd, 0x6a, 0x23, 0x30, 0xc1, 0x49, 0x72, 0x8e, 0x89,
-	0x8c, 0xc9, 0x63, 0x16, 0x9d, 0xe7, 0x03, 0x19, 0x73, 0xce, 0x71, 0x20, 0x63, 0xe3, 0x6d, 0x30,
-	0x70, 0xd9, 0x99, 0x1c, 0x8b, 0x15, 0xbe, 0x36, 0x91, 0x71, 0x2e, 0xc3, 0xda, 0xa5, 0x84, 0x75,
-	0xea, 0xcb, 0xa2, 0x80, 0x16, 0x4e, 0xfd, 0xc5, 0x59, 0x2b, 0x4e, 0xe2, 0x80, 0x86, 0x4f, 0xe6,
-	0x21, 0x12, 0xfa, 0x54, 0xca, 0x49, 0x57, 0x3c, 0x4e, 0x33, 0x82, 0x8f, 0x61, 0x95, 0x08, 0x3d,
-	0x96, 0x72, 0x62, 0x47, 0xe2, 0xb1, 0x5c, 0x68, 0x39, 0xc9, 0x4c, 0xb6, 0x9c, 0xe4, 0xcd, 0xdc,
-	0x85, 0xd5, 0x6e, 0xf7, 0x41, 0x20, 0x1c, 0x72, 0x75, 0xa8, 0xa7, 0xaf, 0xe8, 0x24, 0x7f, 0x5a,
-	0x82, 0x35, 0xe5, 0x72, 0xf7, 0x45, 0xdc, 0x1f, 0x21, 0x77, 0xe7, 0xa1, 0x16, 0xf5, 0x83, 0x30,
-	0xf1, 0xee, 0xfc, 0x82, 0x31, 0xc3, 0x13, 0x51, 0x6c, 0x67, 0x81, 0x23, 0x29, 0x67, 0x10, 0x7c,
-	0x90, 0xc4, 0x0d, 0xac, 0x58, 0xc7, 0x48, 0xc9, 0xf6, 0xe4, 0x80, 0x35, 0x53, 0xb3, 0x5a, 0x04,
-	0x79, 0x20, 0x07, 0x31, 0xc6, 0x3a, 0x1e, 0x0e, 0xdd, 0xe1, 0x28, 0x56, 0x05, 0x28, 0xcf, 0xb0,
-	0x10, 0x62, 0x7c, 0x0b, 0x56, 0xe3, 0x60, 0x62, 0x6b, 0x34, 0xb8, 0xf4, 0x5a, 0x89, 0x83, 0xc9,
-	0x7e, 0x42, 0xc6, 0x7c, 0x90, 0x67, 0x1b, 0x63, 0xd2, 0x07, 0x00, 0x03, 0xa4, 0xa0, 0x47, 0xe8,
-	0xbc, 0x9d, 0xde, 0xc3, 0x61, 0x14, 0x03, 0xc7, 0x1d, 0xc2, 0xa6, 0xb8, 0xf3, 0x09, 0xba, 0xc9,
-	0x5d, 0x19, 0x7f, 0x16, 0x8f, 0x64, 0x78, 0xc8, 0x89, 0x91, 0x0a, 0x9f, 0xeb, 0x50, 0x99, 0xa6,
-	0x95, 0x37, 0x3e, 0x1a, 0x2f, 0x40, 0x2d, 0xd6, 0xb6, 0x5f, 0x8d, 0xb1, 0x88, 0xfb, 0xdd, 0x52,
-	0x31, 0x09, 0x55, 0x4b, 0x9d, 0x82, 0x04, 0x8a, 0x5d, 0x86, 0x61, 0x10, 0x2a, 0x99, 0xf1, 0x8b,
-	0xf1, 0x6d, 0xa8, 0xd2, 0x7e, 0xaa, 0x05, 0x06, 0xf2, 0xc8, 0x95, 0x4f, 0xd3, 0xed, 0x10, 0x9a,
-	0x39, 0xc2, 0xf3, 0xb6, 0x2b, 0xc6, 0x72, 0x5b, 0xf8, 0x49, 0x25, 0x79, 0x11, 0x1a, 0x3d, 0xe1,
-	0xdb, 0x19, 0x0f, 0xf5, 0x9e, 0xf0, 0x71, 0xc5, 0x4d, 0x58, 0xc1, 0x01, 0xe9, 0x3b, 0x5c, 0x1c,
-	0x32, 0x37, 0xd0, 0x13, 0xfe, 0x5d, 0xdf, 0xc1, 0xb2, 0xd0, 0xb8, 0x04, 0x4d, 0xc4, 0xa0, 0x58,
-	0xcf, 0x6c, 0x21, 0xa9, 0xc3, 0x93, 0x89, 0xcc, 0xd2, 0x3e, 0x6b, 0x1a, 0x8d, 0x8a, 0x4f, 0x49,
-	0x34, 0x5a, 0x72, 0x4a, 0xa2, 0x51, 0x72, 0x4a, 0xa2, 0x91, 0xf9, 0x67, 0x25, 0x2a, 0x82, 0x51,
-	0x9f, 0x5d, 0xb4, 0x36, 0x4b, 0xf8, 0x8f, 0x91, 0x75, 0x25, 0xba, 0x72, 0x26, 0xba, 0xd4, 0x38,
-	0x2b, 0xba, 0x71, 0x5e, 0x86, 0x56, 0xe0, 0x39, 0x36, 0x8f, 0xb0, 0x4d, 0x35, 0x03, 0xcf, 0x21,
-	0x5a, 0xe8, 0x4d, 0xc6, 0xae, 0x6f, 0xa3, 0x55, 0x31, 0x02, 0x1b, 0x54, 0x7b, 0xec, 0xfa, 0x87,
-	0xc1, 0x84, 0x71, 0x36, 0x01, 0xed, 0xcb, 0x0e, 0x85, 0xff, 0xd8, 0xf6, 0xa7, 0xe3, 0x8d, 0x3a,
-	0xdb, 0x65, 0x1c, 0x4c, 0x88, 0x95, 0xe9, 0xd8, 0xb4, 0x30, 0x35, 0xdc, 0x17, 0xcf, 0xc8, 0x88,
-	0x0e, 0x28, 0x50, 0x2f, 0x64, 0xf2, 0x0d, 0x58, 0x1b, 0x8b, 0x67, 0x36, 0x9b, 0xe3, 0x84, 0x42,
-	0x3e, 0x67, 0xdd, 0x9d, 0xb1, 0x4e, 0xc0, 0xfc, 0x3b, 0xda, 0xf6, 0xbe, 0x98, 0x3c, 0x90, 0xc7,
-	0xd2, 0xdb, 0x21, 0x57, 0x8e, 0x22, 0xfc, 0x15, 0x58, 0xf7, 0xe5, 0x53, 0x2c, 0xa7, 0x6c, 0x0f,
-	0x47, 0x92, 0x38, 0xda, 0xb1, 0x3a, 0xbe, 0x7c, 0x9a, 0xe0, 0xef, 0x39, 0xb8, 0xef, 0x89, 0x88,
-	0x22, 0x5d, 0x7d, 0x4d, 0x04, 0x90, 0xf2, 0x3e, 0x82, 0x76, 0x28, 0xfb, 0x41, 0xe8, 0xf0, 0x89,
-	0x60, 0x27, 0xf9, 0x72, 0x4e, 0x15, 0xaa, 0x84, 0x21, 0x2c, 0xae, 0x1a, 0xc2, 0xf4, 0xd9, 0xb8,
-	0x00, 0x75, 0x37, 0xba, 0x8f, 0x15, 0x99, 0xba, 0x26, 0xe2, 0x37, 0xf3, 0x8f, 0xca, 0xf3, 0x5c,
-	0xa3, 0x9d, 0xa7, 0x06, 0x5c, 0xd2, 0x0d, 0xd8, 0x80, 0x2a, 0x4a, 0x95, 0xb8, 0xeb, 0x58, 0xf4,
-	0x8c, 0xf9, 0x2c, 0x49, 0x9a, 0x7d, 0x49, 0x44, 0xac, 0x75, 0xac, 0x36, 0xc2, 0xd8, 0x91, 0x44,
-	0xc6, 0x0e, 0xac, 0xa1, 0x42, 0x94, 0xb7, 0xd1, 0x42, 0xcf, 0x4c, 0x55, 0x9d, 0x4e, 0x21, 0xf6,
-	0x3b, 0x71, 0x30, 0xe1, 0x57, 0x8a, 0x11, 0x17, 0xa0, 0xee, 0x07, 0xb1, 0x3b, 0x38, 0x21, 0x95,
-	0x37, 0x2d, 0xf5, 0x66, 0x5c, 0x81, 0x75, 0x2e, 0xda, 0xec, 0x44, 0x40, 0x0e, 0x69, 0xbc, 0x6a,
-	0xad, 0xf6, 0x74, 0x89, 0x38, 0x18, 0x4b, 0x15, 0x0a, 0x8a, 0xd8, 0x8e, 0x62, 0x31, 0x9e, 0x6c,
-	0x34, 0x08, 0x75, 0x8d, 0x07, 0x50, 0xd4, 0x5d, 0x04, 0x9b, 0x71, 0x9a, 0xbd, 0x22, 0x57, 0xc9,
-	0x0d, 0xde, 0x65, 0x68, 0xd1, 0x5e, 0xb5, 0x7c, 0xb9, 0x89, 0x00, 0x3c, 0x44, 0x38, 0x18, 0xc5,
-	0x22, 0xc4, 0xba, 0xec, 0x19, 0x49, 0xa8, 0x66, 0x35, 0x09, 0xb0, 0xe7, 0x3c, 0x43, 0x4f, 0x48,
-	0x1e, 0x37, 0x92, 0x22, 0x0a, 0xd2, 0xdb, 0xab, 0x9a, 0xb5, 0x82, 0xd0, 0x2e, 0x01, 0xf7, 0x1c,
-	0xf3, 0xbf, 0x4b, 0x73, 0xcb, 0x2e, 0x56, 0xc6, 0x7b, 0x8a, 0x19, 0x2d, 0xcd, 0xc8, 0xbb, 0xc8,
-	0x94, 0x0e, 0x89, 0x93, 0x18, 0x25, 0x49, 0x22, 0xa3, 0xd2, 0x1b, 0xd0, 0x01, 0x51, 0x6c, 0x34,
-	0x11, 0x80, 0xa8, 0xf9, 0x2d, 0x56, 0x97, 0x6d, 0xb1, 0x36, 0xb3, 0xc5, 0x37, 0x60, 0x2d, 0x25,
-	0xab, 0x0e, 0x27, 0x9f, 0xbc, 0x4e, 0x42, 0x9c, 0x8e, 0xa7, 0xf9, 0x9b, 0x58, 0x5a, 0xa7, 0xbc,
-	0x59, 0xf2, 0xa9, 0x08, 0x9d, 0x62, 0xef, 0x9c, 0xfa, 0x87, 0xf2, 0x8c, 0x7f, 0x98, 0x95, 0x62,
-	0x33, 0x4a, 0x24, 0xf8, 0x83, 0x02, 0xe2, 0x28, 0xc2, 0xdc, 0x9e, 0x4b, 0x33, 0x7b, 0xbe, 0x02,
-	0xeb, 0x21, 0x61, 0x6a, 0xea, 0xe1, 0x25, 0x57, 0x19, 0x9e, 0x2a, 0xe8, 0xcb, 0x1c, 0xf9, 0xa3,
-	0x89, 0x23, 0x62, 0x3a, 0xe4, 0xf3, 0xea, 0x2d, 0xcd, 0xab, 0x97, 0xae, 0xf1, 0x78, 0x1d, 0xfd,
-	0x28, 0x70, 0xb5, 0xa6, 0x38, 0xc8, 0x0c, 0xde, 0xfc, 0xf3, 0x52, 0xc1, 0x62, 0x8b, 0xcd, 0x61,
-	0x6f, 0x21, 0xf1, 0xd9, 0x73, 0xf6, 0xa9, 0x3c, 0x79, 0x24, 0xbc, 0xa9, 0x44, 0x95, 0xde, 0xbc,
-	0x31, 0xbf, 0x72, 0xa1, 0x3c, 0x2a, 0x85, 0xf2, 0x18, 0xc1, 0xab, 0xdd, 0xee, 0x4e, 0x18, 0x44,
-	0xd1, 0x6f, 0x4c, 0x85, 0x7f, 0x5f, 0xf8, 0xc3, 0xc3, 0xd0, 0x15, 0xde, 0xcf, 0x41, 0xb1, 0x5f,
-	0x3e, 0x6f, 0xa5, 0x9f, 0xa1, 0x96, 0x9f, 0x2e, 0x5e, 0xeb, 0xe7, 0xab, 0xf2, 0x9f, 0x94, 0x9e,
-	0xb7, 0xf2, 0x2f, 0x99, 0xfe, 0xff, 0xb4, 0x04, 0x1b, 0xaa, 0x38, 0x3e, 0x10, 0x51, 0x94, 0x85,
-	0x43, 0x8c, 0xa5, 0x1f, 0x43, 0x87, 0xaa, 0x5f, 0xbb, 0x97, 0xbb, 0x69, 0xc9, 0x33, 0x43, 0x73,
-	0xb3, 0x0b, 0x84, 0x36, 0xcd, 0xd8, 0xe6, 0x4b, 0x96, 0x42, 0x87, 0x5d, 0x2e, 0x74, 0xd8, 0x98,
-	0x86, 0xb9, 0x91, 0x3d, 0xe4, 0x2f, 0x24, 0x4d, 0xab, 0xea, 0x46, 0xbb, 0x63, 0xf3, 0x47, 0x25,
-	0x78, 0x49, 0xb1, 0xf7, 0xc5, 0x97, 0xbf, 0x58, 0x06, 0xcd, 0x5b, 0x98, 0x54, 0x12, 0xb1, 0x7d,
-	0xd7, 0xd7, 0x12, 0x0f, 0xf9, 0x04, 0xf3, 0x68, 0xe6, 0x83, 0x12, 0x04, 0xa5, 0x56, 0x20, 0x10,
-	0x85, 0x65, 0xf3, 0xdf, 0x4b, 0xd0, 0xc9, 0x4d, 0xc5, 0x29, 0x7a, 0x46, 0xa2, 0xa6, 0x0c, 0x52,
-	0xb2, 0xc6, 0xfb, 0x50, 0xc3, 0x2d, 0x45, 0xaa, 0x1c, 0x3f, 0xcd, 0xe5, 0x0d, 0x4f, 0x40, 0xd2,
-	0xda, 0xa6, 0x54, 0xb2, 0x03, 0xd9, 0x76, 0x10, 0x41, 0x45, 0x5c, 0x42, 0xa8, 0x52, 0xc0, 0x07,
-	0x06, 0x11, 0xc2, 0xeb, 0xa0, 0x42, 0xaf, 0x7d, 0x2c, 0xc3, 0xc8, 0x0d, 0x7c, 0x15, 0x2b, 0x3a,
-	0x0c, 0x7d, 0xc4, 0x40, 0xf3, 0x5f, 0x4a, 0xc5, 0x22, 0x51, 0x05, 0x00, 0x8b, 0x44, 0xe9, 0x65,
-	0x3e, 0xba, 0xe5, 0xe6, 0x59, 0x2d, 0xc2, 0x26, 0xa5, 0x14, 0x25, 0x04, 0xe5, 0xd3, 0x27, 0x04,
-	0x95, 0x62, 0xfb, 0xca, 0xd2, 0x8f, 0xaa, 0x9e, 0x7e, 0x98, 0x6f, 0xe3, 0x1e, 0xd0, 0xb4, 0x0e,
-	0x53, 0x75, 0xb1, 0x4f, 0x2a, 0xf0, 0x7b, 0xe6, 0x4d, 0x58, 0xcd, 0xd0, 0x88, 0xd9, 0x24, 0xa3,
-	0x52, 0x97, 0x6f, 0x94, 0x51, 0xcd, 0xe5, 0xa0, 0x66, 0x58, 0xbc, 0xc8, 0x73, 0x5d, 0xde, 0xad,
-	0x9c, 0x14, 0x8b, 0x7c, 0x41, 0x9e, 0x1d, 0x4d, 0x8c, 0xa6, 0xaf, 0x8a, 0xa0, 0x7b, 0xa1, 0x2b,
-	0x7d, 0xe7, 0x30, 0x81, 0x17, 0x3b, 0xf4, 0x4b, 0xd0, 0x9c, 0xb9, 0x7d, 0x6c, 0x4c, 0xf9, 0xde,
-	0x11, 0xbd, 0x55, 0x4f, 0x0e, 0x5d, 0x3f, 0x49, 0xf2, 0xe9, 0x85, 0xbe, 0x49, 0xf9, 0x49, 0x32,
-	0x8a, 0x8f, 0xe6, 0x5f, 0x94, 0x8a, 0x17, 0x2c, 0xae, 0xba, 0x34, 0xf3, 0xae, 0x9c, 0xcd, 0xbc,
-	0xcf, 0x43, 0x6d, 0xe0, 0xfa, 0xc2, 0x53, 0x8e, 0x82, 0x5f, 0x32, 0x2e, 0xab, 0x05, 0x5c, 0xd6,
-	0x32, 0x2e, 0xdf, 0xc2, 0xca, 0xe1, 0x33, 0xdf, 0x73, 0x7d, 0xb9, 0x2b, 0x63, 0xac, 0x77, 0x16,
-	0x0a, 0xc5, 0x1c, 0x14, 0xe2, 0xe2, 0x7e, 0x6e, 0x41, 0x0b, 0x2b, 0x2a, 0xbe, 0x2f, 0x63, 0xe3,
-	0xce, 0xe7, 0xf2, 0x88, 0xac, 0xdf, 0x12, 0x59, 0xcd, 0x50, 0x55, 0x66, 0x05, 0xd6, 0xf1, 0x07,
-	0x54, 0x79, 0x24, 0xa5, 0x5b, 0x56, 0x79, 0xcc, 0x4b, 0xed, 0xb2, 0x5a, 0x97, 0x92, 0x3b, 0x95,
-	0xa2, 0x22, 0x80, 0x92, 0xbb, 0xe2, 0x6a, 0xec, 0x02, 0xd4, 0xe9, 0xe1, 0x5a, 0x52, 0x38, 0xf0,
-	0x5b, 0x0a, 0xbf, 0xae, 0xa4, 0xa3, 0xde, 0xcc, 0xbf, 0x2e, 0x60, 0xa6, 0x58, 0x85, 0x4b, 0x99,
-	0x79, 0x19, 0x80, 0x06, 0xc3, 0x60, 0xea, 0x27, 0xc1, 0x87, 0xd0, 0x2d, 0x04, 0x64, 0xbc, 0x56,
-	0x8b, 0x79, 0xad, 0x2d, 0xe0, 0xb5, 0x9e, 0xe3, 0x95, 0x14, 0xa4, 0x54, 0xc3, 0xdf, 0xaa, 0x17,
-	0xa7, 0x2c, 0x5f, 0x83, 0x5b, 0xf3, 0x87, 0xa5, 0xc2, 0x85, 0xbe, 0x82, 0x58, 0x2e, 0x40, 0x9d,
-	0x23, 0xb0, 0xb2, 0x5e, 0xf5, 0x46, 0x45, 0x18, 0x47, 0x6c, 0x66, 0x81, 0xc5, 0xd2, 0x66, 0x58,
-	0xca, 0xc4, 0xf9, 0x94, 0x89, 0xee, 0x28, 0x98, 0x2c, 0x3e, 0xcd, 0x4b, 0x59, 0x40, 0x87, 0x33,
-	0x0a, 0x26, 0xfa, 0x3d, 0x42, 0x13, 0x01, 0x34, 0xf8, 0x0a, 0xb4, 0xa3, 0x69, 0xcf, 0x26, 0x84,
-	0xb4, 0x25, 0xa1, 0x15, 0x4d, 0x7b, 0xb4, 0xa0, 0x63, 0xfe, 0x73, 0x11, 0x13, 0x5f, 0xc3, 0x3c,
-	0xa2, 0x58, 0x0c, 0xa5, 0x2e, 0xf0, 0x2e, 0x02, 0x66, 0xf4, 0x51, 0x9d, 0xb5, 0x9e, 0xdc, 0x16,
-	0x6a, 0xcb, 0xb7, 0x50, 0x9f, 0xdd, 0xc2, 0x1f, 0x93, 0x81, 0x6b, 0x5b, 0xd8, 0x9e, 0x9e, 0xfc,
-	0xac, 0xc5, 0x78, 0x09, 0x9a, 0xc3, 0x20, 0x70, 0xa2, 0x4c, 0x86, 0x0d, 0x7a, 0xe7, 0x5b, 0x02,
-	0x1e, 0xf2, 0xa7, 0xe3, 0x84, 0x77, 0x02, 0x3c, 0x9c, 0x8e, 0xcd, 0xff, 0x2c, 0xe0, 0xed, 0x97,
-	0x4b, 0xba, 0xfa, 0xce, 0xea, 0x4b, 0x76, 0xd6, 0x98, 0xd9, 0xd9, 0x16, 0xdd, 0x85, 0xf1, 0xc6,
-	0xc8, 0x21, 0x9e, 0x59, 0xe2, 0xe6, 0x3f, 0x95, 0x67, 0x68, 0x2c, 0xce, 0xa5, 0xe7, 0x6f, 0x81,
-	0x96, 0xd6, 0xcc, 0x97, 0xa0, 0x99, 0xde, 0xbb, 0x55, 0x69, 0x4e, 0x43, 0xaa, 0x4b, 0xb7, 0x1c,
-	0x47, 0xb5, 0x19, 0x39, 0xdf, 0x80, 0x66, 0x1c, 0x4c, 0x38, 0x0a, 0xd4, 0x29, 0x0a, 0x5c, 0x9a,
-	0x8b, 0x02, 0xb8, 0xc0, 0x61, 0x30, 0xb9, 0x6e, 0x35, 0x62, 0xfe, 0x82, 0x85, 0xe2, 0x27, 0x56,
-	0x38, 0x59, 0x6c, 0x28, 0xfb, 0x94, 0xde, 0x80, 0xc2, 0xb8, 0x71, 0x1d, 0x9a, 0x74, 0x23, 0x8f,
-	0x44, 0x9b, 0x05, 0xed, 0x26, 0x48, 0x54, 0x5d, 0xe2, 0x5b, 0x8d, 0x09, 0x3f, 0x60, 0x31, 0xd3,
-	0x9f, 0x86, 0xb6, 0xa6, 0xd6, 0x16, 0x17, 0x33, 0xfd, 0x69, 0x68, 0xa5, 0x7e, 0xcc, 0x49, 0xfa,
-	0x41, 0x10, 0xf2, 0x55, 0x7d, 0x25, 0xa5, 0x97, 0xe4, 0xaa, 0x34, 0xd3, 0x07, 0x06, 0x91, 0x9e,
-	0xfe, 0xad, 0x34, 0xb7, 0xcc, 0x19, 0x35, 0x95, 0x2d, 0x5e, 0x59, 0xbe, 0x78, 0x75, 0x76, 0x71,
-	0xe3, 0x26, 0xb4, 0xdc, 0x58, 0x8e, 0x39, 0x93, 0xa9, 0x15, 0xe8, 0x44, 0x2f, 0x9e, 0xac, 0x26,
-	0xe2, 0x52, 0x96, 0x93, 0x3f, 0x13, 0xf5, 0xd9, 0x08, 0xf0, 0x3b, 0x25, 0x58, 0xc1, 0xed, 0xec,
-	0xab, 0x6f, 0x5f, 0x05, 0x42, 0xbb, 0x95, 0xb2, 0xa6, 0x15, 0x6e, 0x4b, 0xd6, 0x56, 0x5c, 0xd3,
-	0xea, 0x74, 0x47, 0xe9, 0x7a, 0xf6, 0x44, 0x84, 0x62, 0xac, 0x7f, 0x23, 0xea, 0x20, 0xf8, 0x00,
-	0xa1, 0x54, 0x5f, 0xfe, 0x6d, 0x09, 0x2e, 0x73, 0x70, 0x4e, 0xbf, 0x62, 0xa5, 0xf5, 0x33, 0x16,
-	0x44, 0xaf, 0x40, 0x9b, 0xe8, 0xf4, 0x07, 0xc3, 0xac, 0xa0, 0x6d, 0x21, 0x68, 0x67, 0x30, 0xe4,
-	0x23, 0x4a, 0xe3, 0xba, 0x62, 0x11, 0x90, 0x88, 0x8e, 0x06, 0xc9, 0xf2, 0x2a, 0x0b, 0xcc, 0x39,
-	0x11, 0x00, 0xcf, 0x4b, 0xec, 0x79, 0x89, 0x3b, 0xe1, 0x5e, 0x81, 0xc4, 0x1a, 0x9e, 0x73, 0xaf,
-	0x70, 0x53, 0xcf, 0xab, 0x9e, 0x2b, 0xc1, 0x34, 0xa7, 0x32, 0xff, 0xaa, 0x04, 0xab, 0x19, 0xed,
-	0x02, 0xae, 0x4a, 0xb3, 0x4e, 0x4e, 0xbf, 0x09, 0x4d, 0xf2, 0xf6, 0x19, 0x0d, 0x56, 0xbe, 0xa6,
-	0x06, 0xab, 0x45, 0x1a, 0xfc, 0x71, 0x8e, 0xd3, 0xe4, 0x3a, 0x6f, 0xf1, 0x69, 0xbb, 0x0d, 0x74,
-	0x13, 0x6b, 0xa7, 0x59, 0x43, 0xf1, 0xb5, 0x6b, 0xb6, 0x71, 0x0b, 0xc2, 0xf4, 0x1d, 0xd3, 0x8a,
-	0x01, 0xf5, 0x7d, 0xe5, 0xd3, 0x0a, 0x86, 0xb1, 0x7a, 0x46, 0x85, 0xea, 0x29, 0x0e, 0x3a, 0xb7,
-	0x8b, 0x4c, 0x7c, 0x11, 0x33, 0x74, 0xe7, 0xaa, 0x89, 0xc8, 0xbc, 0x4f, 0xd5, 0xa2, 0x8c, 0x66,
-	0x96, 0xd2, 0x6e, 0xed, 0x4f, 0x1b, 0x09, 0x3e, 0xe4, 0x0f, 0x82, 0x68, 0x8d, 0xfc, 0xc9, 0xa0,
-	0x98, 0x46, 0xee, 0x96, 0xaa, 0xa3, 0x92, 0x4c, 0xf3, 0x00, 0x3a, 0xfc, 0xb9, 0x0e, 0x4d, 0x19,
-	0x27, 0x16, 0x3b, 0xa6, 0x37, 0xa1, 0x8a, 0x9a, 0x53, 0xe5, 0xf7, 0x8b, 0x05, 0x2d, 0x54, 0xae,
-	0x67, 0x11, 0x8a, 0xf9, 0xdb, 0x65, 0x24, 0x89, 0x80, 0xe4, 0x43, 0xed, 0x27, 0xca, 0x1a, 0xa2,
-	0x58, 0xc4, 0x32, 0xfb, 0xb0, 0x3a, 0xeb, 0xca, 0x71, 0xca, 0x4e, 0xe0, 0xc7, 0xd2, 0x8f, 0xd9,
-	0x4e, 0xba, 0x88, 0xaf, 0x7f, 0x0c, 0x27, 0x2a, 0xfa, 0x57, 0x57, 0x47, 0x7a, 0x38, 0x8b, 0x70,
-	0x6e, 0x43, 0x47, 0x38, 0x8e, 0x86, 0x53, 0x79, 0xce, 0x1a, 0x6d, 0xe1, 0x38, 0xe9, 0x6c, 0xf2,
-	0x15, 0xcf, 0x78, 0x76, 0x96, 0xea, 0x8d, 0xc5, 0x33, 0xc4, 0xd8, 0x73, 0x8c, 0xb7, 0xc1, 0xc0,
-	0x90, 0x32, 0xf4, 0x82, 0x9e, 0xf0, 0x52, 0x34, 0x0e, 0x81, 0x6b, 0xfd, 0x69, 0xb8, 0x4b, 0x03,
-	0x8c, 0x6c, 0xda, 0xd4, 0x6e, 0x15, 0x8c, 0x27, 0x32, 0x76, 0x63, 0x37, 0xf0, 0x93, 0xef, 0x4f,
-	0xbb, 0xb0, 0xde, 0xcf, 0xa0, 0x49, 0xbd, 0x34, 0xdf, 0x30, 0x45, 0x9d, 0x40, 0x19, 0xa2, 0xb5,
-	0xa6, 0xcd, 0xa2, 0x13, 0x3e, 0x54, 0xdd, 0x2f, 0x47, 0xae, 0xb3, 0x7d, 0x42, 0x1f, 0xd3, 0xc4,
-	0x98, 0x56, 0xb8, 0x04, 0x14, 0xc7, 0xb5, 0x2f, 0x6a, 0x0d, 0x7c, 0x3f, 0x72, 0xa9, 0x95, 0x27,
-	0x92, 0x22, 0xec, 0x8f, 0x6c, 0x5f, 0x8c, 0xd3, 0x5e, 0x54, 0x06, 0xe1, 0xf4, 0xb4, 0x9f, 0xb4,
-	0xa2, 0xf5, 0x93, 0xf6, 0x8b, 0x16, 0xc2, 0xe3, 0xf0, 0x3d, 0x58, 0xcb, 0x5a, 0x6a, 0x74, 0x9d,
-	0x9e, 0xa6, 0x76, 0xed, 0xa4, 0x7d, 0x35, 0x74, 0x14, 0xa8, 0x65, 0xee, 0xce, 0x36, 0x57, 0xca,
-	0x5b, 0x8e, 0x73, 0x4f, 0xf8, 0x91, 0xda, 0x0c, 0x75, 0xa7, 0x69, 0x9b, 0xc1, 0x77, 0xdc, 0xcc,
-	0x45, 0x68, 0xa0, 0xb2, 0xb3, 0x60, 0x59, 0x17, 0x8e, 0x73, 0xe4, 0x52, 0x68, 0x9a, 0x27, 0xb6,
-	0x38, 0xe0, 0xea, 0x4b, 0x94, 0xf3, 0x4b, 0x7c, 0x98, 0x2d, 0x51, 0x39, 0xf5, 0xa5, 0x53, 0xc2,
-	0x46, 0x6e, 0x4b, 0x77, 0xa4, 0x87, 0x5c, 0xe0, 0x51, 0x58, 0xbe, 0x25, 0xb4, 0x71, 0x6d, 0x4b,
-	0x8e, 0xf4, 0x90, 0xd6, 0xbf, 0x52, 0x1a, 0xac, 0x48, 0x69, 0x5f, 0x33, 0x6f, 0x42, 0x13, 0x53,
-	0x7b, 0x4d, 0xf6, 0x4b, 0x2f, 0x46, 0x1b, 0xd1, 0xb4, 0x47, 0xa6, 0xfe, 0x3e, 0xb4, 0x06, 0xc2,
-	0x8f, 0x4e, 0x7d, 0xa3, 0xda, 0x44, 0x6c, 0x9a, 0x79, 0x0b, 0xa0, 0xe7, 0x89, 0x7e, 0xae, 0x9d,
-	0x65, 0xe9, 0xd4, 0x16, 0xa1, 0x93, 0x92, 0xa9, 0x97, 0x11, 0x1d, 0x4d, 0xb6, 0x11, 0x14, 0xc8,
-	0x55, 0xa8, 0x0f, 0x08, 0xb0, 0xb0, 0x97, 0x91, 0xf1, 0x2d, 0x85, 0x66, 0xfe, 0x4f, 0x09, 0x8c,
-	0x2f, 0x82, 0xd0, 0x73, 0xb6, 0x83, 0x28, 0x22, 0x0f, 0x91, 0x74, 0xb0, 0xf5, 0x82, 0x48, 0x6b,
-	0xeb, 0xa9, 0xe3, 0xeb, 0x9e, 0x63, 0xac, 0x42, 0x79, 0x34, 0x51, 0x3e, 0xb3, 0x3c, 0x9a, 0xe4,
-	0xee, 0x76, 0x2a, 0xf9, 0xbb, 0x1d, 0x3c, 0x21, 0x53, 0xd4, 0xaa, 0x9e, 0xfb, 0x02, 0x83, 0x28,
-	0xfd, 0x7d, 0x0d, 0x3a, 0xce, 0x34, 0x14, 0x74, 0x78, 0x09, 0x45, 0x7d, 0xff, 0x4f, 0x80, 0x84,
-	0x84, 0x09, 0x2d, 0x53, 0x71, 0x9d, 0x67, 0x59, 0xc1, 0x85, 0x90, 0x3d, 0xe7, 0x99, 0x71, 0x05,
-	0xd6, 0xd5, 0x30, 0xf1, 0x4b, 0x1e, 0x9d, 0xb3, 0xde, 0x55, 0x86, 0xe3, 0xbe, 0xc8, 0xaf, 0xff,
-	0x6f, 0x09, 0x1d, 0x29, 0xb5, 0xba, 0x07, 0xc3, 0x05, 0x69, 0x56, 0xd2, 0xed, 0x56, 0xd6, 0xba,
-	0xdd, 0x2e, 0xb1, 0x5d, 0xe8, 0x5f, 0xc6, 0xa3, 0x69, 0x2f, 0x29, 0x85, 0xe6, 0x42, 0x72, 0x6b,
-	0x92, 0x84, 0x63, 0x0c, 0x90, 0xf4, 0x72, 0xf3, 0x46, 0x96, 0x31, 0x56, 0xad, 0xb6, 0x82, 0x29,
-	0x13, 0xc8, 0x05, 0xbd, 0xfa, 0x59, 0xb2, 0x02, 0x64, 0x2c, 0x56, 0x37, 0xf9, 0x8d, 0xcd, 0xca,
-	0x95, 0x96, 0xd5, 0x88, 0x62, 0xfe, 0x54, 0x70, 0x17, 0x56, 0xd2, 0xad, 0x72, 0xcf, 0x48, 0xd3,
-	0x0b, 0x86, 0xba, 0x6d, 0xcf, 0xf4, 0xf5, 0xe8, 0x72, 0xb1, 0x1a, 0x5e, 0xc0, 0x4d, 0x3d, 0x63,
-	0x38, 0xc7, 0xcd, 0x72, 0xd1, 0xb5, 0xfd, 0x93, 0xe8, 0x09, 0x5f, 0x4a, 0x9e, 0x87, 0xda, 0x38,
-	0xf0, 0xe5, 0x89, 0xfa, 0x4e, 0xcd, 0x2f, 0xc6, 0xeb, 0xb0, 0x1a, 0x07, 0xb1, 0xf0, 0xec, 0x50,
-	0xf6, 0x47, 0x22, 0x1c, 0xb2, 0x0c, 0xcb, 0x56, 0x87, 0xa0, 0x96, 0x02, 0x62, 0xe4, 0x3d, 0x76,
-	0xd5, 0xb7, 0xee, 0x24, 0xff, 0x3e, 0x76, 0xf9, 0xfb, 0xb2, 0xf9, 0x42, 0xd2, 0x3b, 0x6e, 0xc9,
-	0x88, 0xd6, 0x7b, 0x18, 0x0f, 0xcc, 0x3f, 0xa4, 0xeb, 0x11, 0x76, 0x0c, 0x64, 0x9f, 0x7c, 0x6b,
-	0x54, 0x1c, 0x94, 0xb1, 0x80, 0x9c, 0xba, 0x9e, 0x76, 0xab, 0xdb, 0xa0, 0x77, 0x6e, 0xbd, 0x4c,
-	0x3a, 0xc8, 0xb4, 0xca, 0x42, 0x75, 0x89, 0xa1, 0x32, 0xaf, 0xc0, 0xba, 0x23, 0xd1, 0x90, 0xf8,
-	0xea, 0x5c, 0xb3, 0xd9, 0x55, 0x82, 0xd3, 0x55, 0x32, 0xb5, 0xd0, 0x4b, 0xb8, 0xc4, 0x3d, 0xcd,
-	0x3b, 0x81, 0xe7, 0xc9, 0x3e, 0x9a, 0xea, 0x32, 0xa6, 0x2e, 0x42, 0xa3, 0x2f, 0xb2, 0x9b, 0xe6,
-	0x9a, 0x55, 0xc7, 0xd7, 0x3d, 0x6a, 0xa0, 0xa1, 0x01, 0x5d, 0x1a, 0x2d, 0x84, 0xb0, 0x38, 0x3e,
-	0x47, 0x25, 0xe2, 0x11, 0x3f, 0x90, 0x31, 0x52, 0x7e, 0x03, 0x2a, 0x13, 0x19, 0x2f, 0x6c, 0x69,
-	0x3c, 0x90, 0xb1, 0x85, 0x08, 0x28, 0x04, 0x2f, 0x10, 0x8e, 0x8d, 0x5e, 0x80, 0xff, 0x88, 0xd1,
-	0xc0, 0xf7, 0xbb, 0xbe, 0x63, 0xfa, 0x89, 0xd7, 0xc8, 0xfa, 0xd3, 0xb9, 0xf5, 0xeb, 0xeb, 0x34,
-	0xb5, 0x2f, 0x59, 0xef, 0x6f, 0xe8, 0xda, 0xf6, 0x40, 0xc6, 0x9f, 0x4f, 0x65, 0x78, 0xb2, 0x15,
-	0x45, 0x6e, 0x94, 0xf6, 0xdb, 0xec, 0xc0, 0xb9, 0x27, 0x08, 0xb5, 0x05, 0x81, 0x75, 0xe3, 0xcc,
-	0x7b, 0x2d, 0x9e, 0x46, 0x96, 0xb9, 0xf6, 0x24, 0xa3, 0x33, 0xf3, 0xdd, 0xbf, 0x9c, 0xfb, 0xee,
-	0xbf, 0xc4, 0x2d, 0xe9, 0x36, 0x52, 0xcd, 0xd9, 0x88, 0x79, 0x5c, 0xcc, 0x2d, 0xc6, 0xbb, 0x6c,
-	0xa1, 0x52, 0x6e, 0xa1, 0xc2, 0x5d, 0x94, 0xcf, 0xb6, 0x0b, 0xf3, 0x73, 0x34, 0xfc, 0x03, 0x19,
-	0x77, 0x65, 0xcc, 0x50, 0xa5, 0x94, 0x79, 0xc9, 0x5c, 0x2e, 0xa0, 0x49, 0x4d, 0x82, 0x94, 0x9c,
-	0x8b, 0x8c, 0xe4, 0x3f, 0x96, 0xe9, 0xd8, 0xc8, 0x78, 0x3b, 0xf0, 0x9d, 0x6c, 0x29, 0x14, 0xfc,
-	0x2b, 0x40, 0xed, 0x75, 0x33, 0x75, 0x1c, 0x82, 0xb8, 0x8e, 0xdb, 0x86, 0xb5, 0x7e, 0xe0, 0x3b,
-	0x94, 0x1e, 0x7d, 0xf7, 0x94, 0xf5, 0xe6, 0x6a, 0x36, 0x83, 0x84, 0xac, 0xd3, 0xb8, 0x76, 0xca,
-	0x8a, 0x27, 0xa3, 0x71, 0x6d, 0x8e, 0xc6, 0x75, 0xbd, 0x31, 0xe4, 0x54, 0x34, 0xae, 0x27, 0xca,
-	0x4e, 0xed, 0xa0, 0xb6, 0xd8, 0x0e, 0xea, 0x79, 0x3b, 0x08, 0x0b, 0x65, 0x87, 0x66, 0xf0, 0x3c,
-	0xd9, 0xbd, 0x9f, 0x57, 0xda, 0x73, 0x0c, 0x41, 0x57, 0xd8, 0x4d, 0xb5, 0xe6, 0x96, 0x73, 0xbc,
-	0xd5, 0x1f, 0xb9, 0xf2, 0x58, 0x8e, 0x31, 0xab, 0x96, 0x4f, 0x8c, 0x6f, 0x00, 0x4c, 0x64, 0x9c,
-	0x5f, 0xb2, 0x39, 0x91, 0x31, 0xad, 0x68, 0xfe, 0x49, 0xa9, 0x70, 0x22, 0x32, 0xbb, 0x74, 0xa2,
-	0xf1, 0x26, 0xac, 0x8b, 0x0c, 0x5f, 0x6f, 0x2c, 0x5a, 0xd3, 0xe0, 0x14, 0x83, 0xdf, 0x87, 0x1a,
-	0xa5, 0x98, 0x67, 0xc8, 0xdc, 0x78, 0x82, 0xf9, 0x08, 0x5d, 0xe5, 0x1c, 0x73, 0x5d, 0x76, 0x68,
-	0xcb, 0xf9, 0xbb, 0x0c, 0x2d, 0xe1, 0x1c, 0x2b, 0xe7, 0xa8, 0x8a, 0x34, 0xe1, 0x1c, 0xb3, 0x6f,
-	0x3c, 0xa1, 0xf6, 0x7d, 0xbe, 0xac, 0xc2, 0xf5, 0x32, 0xff, 0x4b, 0x9f, 0x4b, 0x31, 0x10, 0xe9,
-	0x9d, 0x8d, 0x40, 0x20, 0x6e, 0x00, 0x7b, 0x47, 0xf5, 0xd9, 0x95, 0x8b, 0xfe, 0x36, 0x92, 0x51,
-	0xe4, 0x36, 0xbb, 0xc4, 0x9d, 0x57, 0xb2, 0x0f, 0x2a, 0xfb, 0xb0, 0xc1, 0x4b, 0x93, 0x3b, 0x3c,
-	0xe3, 0xe2, 0xf3, 0xdf, 0x67, 0x1e, 0x61, 0x49, 0x70, 0xf7, 0xd9, 0x44, 0xb2, 0xd9, 0xde, 0xd9,
-	0xbe, 0x2f, 0xbd, 0x09, 0xaa, 0xdd, 0x84, 0x4e, 0x4f, 0xda, 0x23, 0xe9, 0x4d, 0xa4, 0xa3, 0x25,
-	0xb8, 0xed, 0x9e, 0xbc, 0x4f, 0xb0, 0x23, 0x8e, 0x77, 0x0b, 0xf2, 0x6d, 0xd3, 0x2b, 0xa2, 0xbb,
-	0x38, 0x73, 0x9f, 0x5b, 0xad, 0xbc, 0x7c, 0xb5, 0x4a, 0x7e, 0x35, 0x1b, 0x3d, 0x27, 0x06, 0x96,
-	0x3d, 0xff, 0xd8, 0x8d, 0x45, 0x52, 0x59, 0xa1, 0x4c, 0xee, 0xc0, 0x9a, 0x9b, 0x02, 0x17, 0x7f,
-	0x49, 0xe7, 0xf6, 0xc6, 0x04, 0xcf, 0x5a, 0xcd, 0xe6, 0xd0, 0x07, 0xc7, 0xff, 0xa8, 0x62, 0xe8,
-	0xca, 0x10, 0x92, 0x62, 0xf8, 0x32, 0xb4, 0x7a, 0x22, 0x92, 0x76, 0x24, 0x8e, 0xa5, 0x72, 0xcd,
-	0xcd, 0x9e, 0xfa, 0xeb, 0x19, 0x0e, 0xf6, 0x3d, 0xb7, 0xcf, 0x8d, 0x7e, 0xca, 0x84, 0x08, 0xf0,
-	0x70, 0x3a, 0x36, 0x6e, 0xc0, 0x05, 0xaa, 0xed, 0x34, 0xe6, 0xfc, 0xe9, 0xb8, 0x97, 0x76, 0xf0,
-	0x9d, 0xc7, 0xd1, 0x6c, 0xc1, 0x87, 0x34, 0xc6, 0x4d, 0xaf, 0xf4, 0x2f, 0xbb, 0x69, 0x1a, 0x3f,
-	0x5a, 0x0c, 0x39, 0x4a, 0xfa, 0x01, 0x69, 0x38, 0xbd, 0xf3, 0xad, 0x25, 0xfd, 0x80, 0x08, 0x4e,
-	0xda, 0x2d, 0xdf, 0x82, 0x73, 0xcc, 0xd9, 0x58, 0x22, 0xd9, 0x2c, 0xfb, 0xab, 0x5a, 0x6b, 0x34,
-	0xb0, 0x4f, 0x70, 0x72, 0x54, 0xef, 0xc1, 0x06, 0xe3, 0x86, 0x72, 0xe2, 0x89, 0x13, 0x5b, 0x2d,
-	0x90, 0xe6, 0x7d, 0x55, 0xeb, 0x45, 0x1a, 0xb7, 0x68, 0x78, 0x9f, 0x46, 0x55, 0x09, 0xdf, 0xca,
-	0xfa, 0xdd, 0xf9, 0xb6, 0xf7, 0x9b, 0x39, 0x99, 0x67, 0xbb, 0x4b, 0xfb, 0xe6, 0x9b, 0x71, 0xd2,
-	0x31, 0xdf, 0x85, 0x17, 0xe8, 0x02, 0x80, 0x19, 0x4c, 0xbd, 0x68, 0x8b, 0xe8, 0x7c, 0x6b, 0x01,
-	0x1d, 0x66, 0xfb, 0x91, 0xe0, 0x6b, 0xbc, 0x75, 0xe1, 0x38, 0x0c, 0x51, 0xff, 0x33, 0x31, 0xbe,
-	0x0d, 0x2f, 0xd0, 0xcd, 0xc3, 0x0c, 0x51, 0xe0, 0x96, 0x17, 0x47, 0x7a, 0x79, 0xf4, 0x4f, 0x60,
-	0x05, 0x79, 0x48, 0x73, 0xd7, 0x36, 0x2d, 0xfe, 0xca, 0x82, 0xc5, 0x93, 0xfc, 0x15, 0x84, 0xe3,
-	0x3c, 0xe0, 0x14, 0x96, 0xf4, 0xc5, 0x8b, 0xa1, 0x0d, 0xac, 0xa8, 0x7b, 0x08, 0x82, 0x3c, 0x9c,
-	0x8e, 0xcd, 0x5f, 0xc7, 0xc3, 0x9c, 0x51, 0xd8, 0x95, 0x4a, 0xcf, 0xea, 0x1f, 0xb9, 0x43, 0x99,
-	0x1a, 0x05, 0xdb, 0x56, 0x6b, 0x28, 0x8b, 0x2d, 0xa1, 0x3c, 0x63, 0x09, 0xe6, 0x60, 0x01, 0x65,
-	0x3c, 0x82, 0x6f, 0xc3, 0xb9, 0x79, 0xab, 0x53, 0x7f, 0xd8, 0x74, 0x97, 0x5b, 0xdc, 0xdc, 0x3a,
-	0xef, 0xc1, 0xcb, 0xfa, 0x3a, 0x3c, 0xe9, 0x28, 0xca, 0xbe, 0xc7, 0x63, 0xe6, 0xa2, 0xaf, 0xa0,
-	0xde, 0xcc, 0xbf, 0x2c, 0x2d, 0x9b, 0xb9, 0xd8, 0x53, 0xa4, 0xc1, 0xa0, 0x7c, 0xc6, 0x60, 0x30,
-	0xa3, 0x8b, 0xca, 0x8c, 0x2e, 0x34, 0x46, 0xab, 0x39, 0x46, 0x7f, 0x4c, 0x7d, 0x4f, 0xb3, 0x36,
-	0xf6, 0x30, 0x88, 0xdd, 0xbe, 0x64, 0x6b, 0x47, 0x47, 0x90, 0x17, 0x53, 0x69, 0xf6, 0x60, 0xea,
-	0x37, 0x39, 0xe5, 0xfc, 0x4d, 0xce, 0x55, 0xa8, 0x51, 0x49, 0xa6, 0xa2, 0xdb, 0x92, 0xec, 0x82,
-	0xf1, 0xcc, 0x1f, 0xf1, 0xa5, 0x88, 0x60, 0xc7, 0xff, 0xdd, 0xef, 0x7c, 0x27, 0x71, 0x46, 0x1f,
-	0x40, 0x0b, 0xfd, 0xd0, 0xf2, 0x9b, 0x28, 0x6d, 0x9e, 0xd5, 0x8c, 0x54, 0xee, 0x66, 0xdc, 0xd4,
-	0x2a, 0xb4, 0xa2, 0x4b, 0x04, 0x6d, 0xd6, 0x83, 0x60, 0x98, 0x95, 0x68, 0xfb, 0xe8, 0x78, 0xb9,
-	0xfb, 0x2b, 0xfd, 0x07, 0x41, 0xbe, 0x5b, 0x59, 0xab, 0x44, 0x36, 0x61, 0x25, 0xfd, 0x23, 0x42,
-	0x56, 0x8e, 0xc0, 0x63, 0x35, 0x71, 0xcf, 0x31, 0xbb, 0x70, 0x39, 0xb7, 0xb3, 0x2f, 0x46, 0x52,
-	0x7a, 0x0f, 0x82, 0xe1, 0x96, 0x43, 0x57, 0xa9, 0x37, 0xe6, 0xea, 0xc8, 0xbc, 0xb4, 0x12, 0xf4,
-	0x7c, 0x19, 0xb9, 0x07, 0x86, 0xea, 0x5b, 0x4b, 0xee, 0x5b, 0x90, 0xd6, 0xf5, 0x79, 0x61, 0xcd,
-	0xff, 0x8d, 0x81, 0x66, 0x65, 0x62, 0x4a, 0xfe, 0x1e, 0x2c, 0x9c, 0xb9, 0xbf, 0x07, 0x0b, 0x67,
-	0xc9, 0xdf, 0x83, 0x85, 0x63, 0x11, 0x8a, 0xf9, 0xfd, 0x4c, 0x5c, 0xb3, 0x54, 0x0a, 0x0b, 0x37,
-	0x9c, 0xa4, 0x15, 0x6e, 0xf8, 0xba, 0xc7, 0x77, 0xbf, 0x58, 0x8a, 0xa6, 0xcd, 0x10, 0xf8, 0xc2,
-	0xdb, 0xc4, 0x18, 0x98, 0x6e, 0x55, 0x6d, 0x93, 0xaa, 0xa3, 0xd3, 0x6c, 0x13, 0x11, 0x69, 0x9b,
-	0x3b, 0x68, 0x60, 0x5f, 0xb8, 0xd1, 0x68, 0x3b, 0x78, 0xa6, 0xf3, 0xf8, 0x36, 0xd4, 0x9e, 0xba,
-	0xd1, 0x28, 0x5a, 0xb8, 0x55, 0x9c, 0x63, 0x31, 0x8e, 0xf9, 0x43, 0xfa, 0xc7, 0xc7, 0xf6, 0xa1,
-	0x2e, 0xf4, 0x0f, 0x60, 0xa5, 0x17, 0xdb, 0xbd, 0xc0, 0x73, 0x75, 0x86, 0xf2, 0x09, 0xea, 0xf6,
-	0xe1, 0x76, 0xe0, 0xb9, 0xec, 0x49, 0x7b, 0x71, 0xf2, 0x6c, 0xdc, 0x50, 0x91, 0x56, 0xfb, 0x1b,
-	0xd7, 0xdc, 0x3c, 0x11, 0x71, 0x25, 0x42, 0x21, 0x18, 0x9f, 0xb6, 0xd7, 0xbf, 0xbf, 0xfa, 0xee,
-	0xd5, 0x0f, 0x35, 0xb4, 0x5e, 0x9d, 0x7e, 0xae, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x73,
-	0x37, 0xf5, 0x4c, 0x30, 0x41, 0x00, 0x00,
+	0xf2, 0x82, 0xe0, 0x57, 0xa0, 0x73, 0xce, 0xad, 0xaa, 0x5b, 0xdd, 0xd5, 0xed, 0x99, 0x64, 0x17,
+	0xf6, 0xa9, 0xab, 0xce, 0x3d, 0xf7, 0xdc, 0x73, 0xcf, 0x39, 0xf7, 0x7c, 0xdc, 0x3a, 0x0d, 0x4d,
+	0xa7, 0xf7, 0xee, 0x24, 0x0c, 0xe2, 0xc0, 0x68, 0x47, 0x32, 0x3c, 0x96, 0x21, 0xbd, 0xbc, 0x04,
+	0xd3, 0x48, 0x86, 0x3c, 0x60, 0xfe, 0x4e, 0x09, 0x2e, 0x76, 0xbb, 0x5b, 0xfd, 0x7e, 0x30, 0xf5,
+	0xe3, 0x5d, 0x19, 0x5b, 0x81, 0x27, 0x1f, 0xb8, 0x51, 0x6c, 0xc9, 0x27, 0xc6, 0xcb, 0x00, 0xfd,
+	0x91, 0xf0, 0x7d, 0xe9, 0xd9, 0xae, 0xb3, 0x51, 0xda, 0x2c, 0x5d, 0xa9, 0x5a, 0x2d, 0x05, 0xd9,
+	0x73, 0x8c, 0x8b, 0xd0, 0x08, 0x26, 0xd2, 0xc7, 0xb1, 0xf2, 0x66, 0xe9, 0x4a, 0xcb, 0xaa, 0xe3,
+	0xeb, 0x9e, 0x63, 0xbc, 0x04, 0xcd, 0x89, 0x27, 0xe2, 0x41, 0x10, 0x8e, 0x37, 0x2a, 0x34, 0x92,
+	0xbe, 0xe3, 0xa4, 0xdf, 0x08, 0x7c, 0x89, 0x93, 0xaa, 0x9b, 0xa5, 0x2b, 0x35, 0xab, 0x8e, 0xaf,
+	0x7b, 0x8e, 0x39, 0x2d, 0xe6, 0x63, 0xab, 0xff, 0xd8, 0x78, 0x17, 0x6a, 0x61, 0xe0, 0xc9, 0x68,
+	0xa3, 0xb4, 0x59, 0xb9, 0xd2, 0xbe, 0xb6, 0xf1, 0xae, 0xb6, 0x99, 0x77, 0xd5, 0x14, 0xc4, 0xb7,
+	0x18, 0xcd, 0x78, 0x0b, 0xce, 0xb9, 0x91, 0xdd, 0xf7, 0x82, 0x48, 0xda, 0xa1, 0x1c, 0xba, 0x51,
+	0x2c, 0x43, 0x62, 0xb1, 0x69, 0xad, 0xb9, 0xd1, 0x0e, 0xc2, 0x2d, 0x05, 0x36, 0x7f, 0x52, 0x82,
+	0xf5, 0x6e, 0x77, 0xcb, 0x71, 0x90, 0xc0, 0xb6, 0xc0, 0x91, 0x27, 0xc6, 0x9b, 0x50, 0xed, 0x89,
+	0x48, 0xd2, 0x96, 0xdb, 0xd7, 0x5e, 0xcc, 0xad, 0x97, 0xe2, 0x11, 0x8a, 0xf1, 0x4d, 0x68, 0x8b,
+	0x7e, 0xec, 0x1e, 0x4b, 0xbb, 0x1f, 0x38, 0x52, 0x09, 0x02, 0x18, 0xb4, 0x13, 0x38, 0x52, 0x97,
+	0x52, 0x25, 0x27, 0xa5, 0x57, 0x61, 0x25, 0x9a, 0xf6, 0xec, 0x54, 0x52, 0x55, 0x1a, 0x6d, 0x47,
+	0xd3, 0xde, 0x41, 0x22, 0x2c, 0x03, 0xaa, 0x28, 0x9d, 0x8d, 0x1a, 0x49, 0x8a, 0x9e, 0xcd, 0x07,
+	0x33, 0xfc, 0xa2, 0x80, 0xd6, 0xa1, 0x22, 0xc3, 0x90, 0xd8, 0xad, 0x59, 0xf8, 0x68, 0xbc, 0x01,
+	0x6b, 0xfd, 0x50, 0x8a, 0x58, 0xda, 0x28, 0x12, 0x7b, 0xaa, 0x74, 0x54, 0xb5, 0x3a, 0x0c, 0xc6,
+	0xd9, 0x47, 0xae, 0x63, 0xde, 0x85, 0x17, 0x52, 0xa9, 0x2b, 0xa2, 0x0f, 0xe3, 0xc1, 0x59, 0x25,
+	0x6e, 0xde, 0x86, 0x95, 0x6e, 0x57, 0x69, 0x0d, 0x05, 0xf8, 0x0e, 0x18, 0xb4, 0x6e, 0x22, 0x7d,
+	0x3b, 0x76, 0xc7, 0x52, 0x59, 0xd0, 0x7a, 0x48, 0x48, 0x3c, 0x70, 0xe8, 0x8e, 0xa5, 0xb9, 0xab,
+	0xcd, 0x2e, 0xde, 0xce, 0xeb, 0x50, 0xc5, 0x59, 0xb4, 0x87, 0xf6, 0xb5, 0x73, 0x73, 0x0a, 0xb1,
+	0x68, 0xd8, 0x3c, 0x0f, 0x46, 0x4a, 0xe8, 0x9e, 0xeb, 0xbb, 0xd1, 0xe8, 0x61, 0x3c, 0x30, 0x3f,
+	0x82, 0x73, 0xdd, 0x6e, 0x22, 0xae, 0xae, 0x38, 0x3e, 0xa3, 0x8a, 0x79, 0xfe, 0x7d, 0x19, 0x06,
+	0x77, 0x44, 0x2c, 0xb4, 0xf9, 0x23, 0x19, 0x06, 0x0b, 0xe7, 0x23, 0xbe, 0x45, 0x28, 0xe6, 0x36,
+	0x72, 0x75, 0xf7, 0xc9, 0xd4, 0x9d, 0xe8, 0x04, 0xde, 0x81, 0x9a, 0x44, 0x98, 0xa2, 0x70, 0x61,
+	0x8e, 0x02, 0xcd, 0xb0, 0x18, 0xc9, 0xfc, 0x5d, 0x3a, 0xa6, 0xdd, 0xc7, 0xae, 0xe7, 0xcd, 0x51,
+	0xba, 0x0d, 0xed, 0x08, 0x07, 0x6c, 0x9d, 0xde, 0xe5, 0x39, 0x7a, 0xd9, 0x64, 0x0b, 0xa2, 0xf4,
+	0xd9, 0xb8, 0x0a, 0xe7, 0xb5, 0xd9, 0xb6, 0x23, 0x3d, 0xdb, 0x73, 0xa3, 0x78, 0xa3, 0xbc, 0x59,
+	0xb9, 0xd2, 0xb1, 0xce, 0x65, 0x98, 0x77, 0xa4, 0x87, 0x07, 0xd2, 0xbc, 0x85, 0x06, 0xb8, 0x2d,
+	0x86, 0x3a, 0x0b, 0x6f, 0x40, 0xa5, 0x27, 0x86, 0x6a, 0xe9, 0xf3, 0x05, 0xc2, 0x1c, 0x5a, 0x88,
+	0xc0, 0xa2, 0xdc, 0x19, 0xe5, 0xf9, 0x7f, 0x13, 0xaa, 0xfd, 0x51, 0xca, 0xf8, 0xbc, 0x28, 0x11,
+	0xdf, 0x22, 0x14, 0x73, 0x07, 0xd7, 0xde, 0x17, 0xb9, 0xe9, 0x57, 0xa1, 0x49, 0xb6, 0x36, 0x16,
+	0x93, 0x85, 0x0c, 0xec, 0x8b, 0x89, 0xd5, 0x08, 0xf9, 0x41, 0x31, 0x21, 0x42, 0x67, 0x96, 0x09,
+	0x11, 0x3a, 0x8b, 0x99, 0x10, 0xa1, 0x63, 0x11, 0x8a, 0xf9, 0x3d, 0x38, 0xdf, 0xed, 0xde, 0x13,
+	0xd1, 0xc8, 0x0d, 0x7c, 0x9d, 0xc4, 0x35, 0x68, 0x0c, 0x18, 0xaa, 0xa8, 0x6c, 0xcc, 0x51, 0x51,
+	0xb3, 0xac, 0x04, 0xd1, 0xbc, 0x87, 0xe7, 0x6f, 0x5b, 0xc4, 0xb1, 0x27, 0xf3, 0x7b, 0xaa, 0xf7,
+	0x08, 0xa8, 0x28, 0x5d, 0x2c, 0x10, 0x29, 0x0e, 0x5b, 0x0a, 0xcd, 0xfc, 0x69, 0x09, 0x99, 0xda,
+	0x19, 0x89, 0x78, 0x5f, 0x46, 0x91, 0x18, 0xa6, 0x76, 0xbe, 0x05, 0xed, 0x41, 0x18, 0x8c, 0xd1,
+	0xcd, 0x9c, 0xc8, 0x50, 0x91, 0xdb, 0xcc, 0x91, 0xc3, 0x59, 0x07, 0x34, 0xbc, 0x1d, 0xba, 0x72,
+	0xb0, 0xe7, 0x0f, 0x02, 0x0b, 0x70, 0x12, 0x03, 0x8d, 0x5f, 0x81, 0x76, 0x30, 0x18, 0x78, 0xae,
+	0x2f, 0xed, 0x71, 0x34, 0x54, 0x67, 0xf0, 0x1b, 0x73, 0x24, 0xd4, 0xc2, 0x3c, 0x5d, 0x4d, 0xd8,
+	0x8f, 0x86, 0xc6, 0x65, 0x68, 0xc5, 0x22, 0x1c, 0xca, 0x38, 0x71, 0x81, 0x55, 0xab, 0xc9, 0x80,
+	0x3d, 0x87, 0x75, 0x71, 0x28, 0xa2, 0xc7, 0x33, 0xba, 0x88, 0x45, 0xf4, 0x78, 0xa1, 0x2e, 0x10,
+	0xdf, 0x22, 0x14, 0xf3, 0x53, 0x78, 0x91, 0xcf, 0xf6, 0x9d, 0x50, 0x3c, 0xcd, 0x2b, 0xa3, 0x45,
+	0x56, 0xe1, 0x84, 0xe2, 0xe9, 0x42, 0x42, 0x38, 0xc9, 0x22, 0xeb, 0xc1, 0x27, 0x73, 0x03, 0x2e,
+	0xb0, 0x0c, 0x3f, 0x63, 0xee, 0x79, 0xff, 0x96, 0x7c, 0x62, 0xf6, 0x0a, 0x47, 0xd0, 0x57, 0xdd,
+	0x87, 0x17, 0x69, 0x1d, 0x4d, 0x42, 0x7c, 0x7e, 0x16, 0x5b, 0xb3, 0x88, 0x2d, 0xf2, 0x8e, 0x9f,
+	0xa5, 0x32, 0xa2, 0x73, 0xf5, 0x77, 0x25, 0x5c, 0x84, 0x74, 0x9b, 0xa8, 0x21, 0x53, 0x22, 0xf4,
+	0x10, 0x66, 0xbb, 0xfe, 0x20, 0x71, 0x39, 0x66, 0x5e, 0x01, 0xc1, 0x78, 0x1c, 0xf8, 0xb3, 0x5a,
+	0x6c, 0xf5, 0x92, 0xc7, 0xc5, 0xc1, 0x7a, 0x26, 0x80, 0x55, 0xe6, 0x02, 0xd8, 0xf3, 0xe3, 0x94,
+	0xd9, 0x45, 0x2d, 0x28, 0xbf, 0x9b, 0xad, 0x2e, 0x9f, 0x60, 0x00, 0x8b, 0x4f, 0x26, 0x52, 0xb9,
+	0x72, 0x7a, 0xc6, 0xd0, 0xc4, 0xc6, 0x88, 0x51, 0x29, 0xf3, 0x35, 0x55, 0xab, 0xc3, 0xe0, 0x23,
+	0xd7, 0x21, 0x79, 0xf8, 0x45, 0x44, 0x51, 0xe4, 0x45, 0x44, 0xf3, 0x12, 0x2a, 0x53, 0xd4, 0x3a,
+	0x9b, 0x84, 0xcc, 0x4f, 0xd1, 0x4d, 0x6f, 0x85, 0xd2, 0x17, 0xba, 0x1d, 0xfd, 0x32, 0x00, 0xe9,
+	0x57, 0xe0, 0xc0, 0x42, 0x5f, 0x4d, 0xd3, 0x2c, 0xb2, 0x38, 0x7a, 0x64, 0x27, 0xc9, 0xd1, 0xd0,
+	0xd1, 0x9c, 0x64, 0x28, 0x9d, 0x85, 0x3e, 0xca, 0x92, 0x8e, 0x85, 0x08, 0x7c, 0x26, 0xba, 0xa3,
+	0x60, 0xd6, 0x49, 0x46, 0xa3, 0x60, 0xb1, 0x93, 0x44, 0x7c, 0x8b, 0x50, 0x38, 0xde, 0x1c, 0x06,
+	0x4f, 0x65, 0x38, 0x13, 0x6f, 0x62, 0x84, 0x2d, 0xdc, 0x03, 0xcd, 0xb0, 0x18, 0x89, 0x69, 0xec,
+	0x4e, 0x5d, 0xcf, 0x99, 0xa1, 0x31, 0x44, 0xd8, 0x42, 0x1a, 0x34, 0xc3, 0x62, 0x24, 0xf3, 0x88,
+	0x42, 0x56, 0x2c, 0x62, 0x37, 0x8a, 0xdd, 0x7e, 0xa4, 0x13, 0xba, 0x05, 0x10, 0xa5, 0x03, 0x8a,
+	0xda, 0x4b, 0xf3, 0x7b, 0x4a, 0x50, 0x2c, 0x0d, 0xdb, 0xfc, 0x9f, 0x12, 0x5c, 0xd8, 0x42, 0xf3,
+	0x74, 0xe3, 0x93, 0x84, 0xe6, 0x1d, 0x19, 0x0b, 0xd7, 0x33, 0x5e, 0x83, 0x8e, 0xe0, 0x11, 0x57,
+	0x46, 0x49, 0xce, 0x5a, 0xb3, 0x56, 0x32, 0xe0, 0x9e, 0x63, 0xdc, 0x4b, 0x91, 0x4e, 0x6c, 0x47,
+	0xc4, 0x42, 0x39, 0xb4, 0x57, 0x67, 0x72, 0x9c, 0x64, 0x06, 0x93, 0xc6, 0x85, 0x52, 0x3a, 0xb4,
+	0xac, 0xf1, 0x31, 0xac, 0x63, 0x2e, 0x3c, 0x94, 0x36, 0x7a, 0x22, 0x36, 0xe4, 0x0a, 0x19, 0x5e,
+	0x5e, 0x3b, 0x89, 0x77, 0xb3, 0x56, 0x19, 0x1d, 0xdf, 0xd1, 0xc0, 0x0d, 0x13, 0x3a, 0x18, 0x6d,
+	0xb3, 0xd9, 0x55, 0x0a, 0xb9, 0x6d, 0x47, 0x7a, 0x09, 0x8e, 0xf9, 0x1f, 0x25, 0x3c, 0x05, 0xb3,
+	0xdb, 0x45, 0x11, 0x7e, 0x04, 0x1d, 0x36, 0x4c, 0x35, 0xa6, 0xa4, 0x78, 0x69, 0xde, 0x36, 0x15,
+	0x82, 0xb5, 0x12, 0x6a, 0x6f, 0xc6, 0x11, 0x9c, 0x57, 0xec, 0xa7, 0xd2, 0x48, 0xcf, 0x62, 0xfb,
+	0xda, 0x6b, 0x45, 0xd2, 0x98, 0x11, 0xb7, 0x65, 0x30, 0x81, 0x64, 0x94, 0x36, 0xf5, 0x16, 0x9c,
+	0xc3, 0x4d, 0xe5, 0x69, 0xa2, 0x58, 0x6a, 0xd6, 0x9a, 0x23, 0x3d, 0x1d, 0xd7, 0xfc, 0x01, 0xbc,
+	0x9c, 0xed, 0xad, 0x3b, 0x16, 0xd1, 0xe8, 0xee, 0x70, 0x18, 0xed, 0x47, 0x43, 0x5c, 0x03, 0xd3,
+	0xd0, 0xdb, 0x80, 0x22, 0xcf, 0x7c, 0x6a, 0x95, 0x78, 0xcb, 0x1b, 0x4a, 0xf7, 0x24, 0x8a, 0xe5,
+	0x58, 0x05, 0x1f, 0x72, 0x5c, 0x89, 0x43, 0xfd, 0x5b, 0x4a, 0xed, 0x0f, 0x64, 0xac, 0x8b, 0x6d,
+	0x13, 0x56, 0x26, 0x32, 0xce, 0xd2, 0x9c, 0x12, 0xc9, 0x1c, 0x26, 0x32, 0x56, 0xf9, 0x0d, 0xaa,
+	0xa5, 0x17, 0xf8, 0x4e, 0x3e, 0x13, 0xaa, 0x59, 0x6d, 0x04, 0x26, 0x38, 0x49, 0xce, 0x31, 0x91,
+	0x31, 0x79, 0xcc, 0xa2, 0xf3, 0x7c, 0x20, 0x63, 0xce, 0x39, 0x0e, 0x64, 0x6c, 0xbc, 0x0d, 0x06,
+	0x2e, 0x3b, 0x93, 0x63, 0xb1, 0xc2, 0xd7, 0x26, 0x32, 0xce, 0x65, 0x58, 0xbb, 0x94, 0xb0, 0x4e,
+	0x7d, 0x59, 0x14, 0xd0, 0xc2, 0xa9, 0xbf, 0x38, 0x6b, 0xc5, 0x49, 0x1c, 0xd0, 0xf0, 0xc9, 0x3c,
+	0x44, 0x42, 0x9f, 0x4a, 0x39, 0xe9, 0x8a, 0xc7, 0x69, 0x46, 0xf0, 0x31, 0xac, 0x12, 0xa1, 0xc7,
+	0x52, 0x4e, 0xec, 0x48, 0x3c, 0x96, 0x0b, 0x2d, 0x27, 0x99, 0xc9, 0x96, 0x93, 0xbc, 0x99, 0xbb,
+	0xb0, 0xda, 0xed, 0x3e, 0x08, 0x84, 0x43, 0xae, 0x0e, 0xf5, 0xf4, 0x15, 0x9d, 0xe4, 0x4f, 0x4b,
+	0xb0, 0xa6, 0x5c, 0xee, 0xbe, 0x88, 0xfb, 0x23, 0xe4, 0xee, 0x3c, 0xd4, 0xa2, 0x7e, 0x10, 0x26,
+	0xde, 0x9d, 0x5f, 0x30, 0x66, 0x78, 0x22, 0x8a, 0xed, 0x2c, 0x70, 0x24, 0xe5, 0x0c, 0x82, 0x0f,
+	0x92, 0xb8, 0x81, 0x15, 0xeb, 0x18, 0x29, 0xd9, 0x9e, 0x1c, 0xb0, 0x66, 0x6a, 0x56, 0x8b, 0x20,
+	0x0f, 0xe4, 0x20, 0xc6, 0x58, 0xc7, 0xc3, 0xa1, 0x3b, 0x1c, 0xc5, 0xaa, 0x00, 0xe5, 0x19, 0x16,
+	0x42, 0x8c, 0x6f, 0xc1, 0x6a, 0x1c, 0x4c, 0x6c, 0x8d, 0x06, 0x97, 0x5e, 0x2b, 0x71, 0x30, 0xd9,
+	0x4f, 0xc8, 0x98, 0x0f, 0xf2, 0x6c, 0x63, 0x4c, 0xfa, 0x00, 0x60, 0x80, 0x14, 0xf4, 0x08, 0x9d,
+	0xb7, 0xd3, 0x7b, 0x38, 0x8c, 0x62, 0xe0, 0xb8, 0x43, 0xd8, 0x14, 0x77, 0x3e, 0x41, 0x37, 0xb9,
+	0x2b, 0xe3, 0xcf, 0xe2, 0x91, 0x0c, 0x0f, 0x39, 0x31, 0x52, 0xe1, 0x73, 0x1d, 0x2a, 0xd3, 0xb4,
+	0xf2, 0xc6, 0x47, 0xe3, 0x05, 0xa8, 0xc5, 0xda, 0xf6, 0xab, 0x31, 0x16, 0x71, 0xbf, 0x5d, 0x2a,
+	0x26, 0xa1, 0x6a, 0xa9, 0x53, 0x90, 0x40, 0xb1, 0xcb, 0x30, 0x0c, 0x42, 0x25, 0x33, 0x7e, 0x31,
+	0xbe, 0x0d, 0x55, 0xda, 0x4f, 0xb5, 0xc0, 0x40, 0x1e, 0xb9, 0xf2, 0x69, 0xba, 0x1d, 0x42, 0x33,
+	0x47, 0x78, 0xde, 0x76, 0xc5, 0x58, 0x6e, 0x0b, 0x3f, 0xa9, 0x24, 0x2f, 0x42, 0xa3, 0x27, 0x7c,
+	0x3b, 0xe3, 0xa1, 0xde, 0x13, 0x3e, 0xae, 0xb8, 0x09, 0x2b, 0x38, 0x20, 0x7d, 0x87, 0x8b, 0x43,
+	0xe6, 0x06, 0x7a, 0xc2, 0xbf, 0xeb, 0x3b, 0x58, 0x16, 0x1a, 0x97, 0xa0, 0x89, 0x18, 0x14, 0xeb,
+	0x99, 0x2d, 0x24, 0x75, 0x78, 0x32, 0x91, 0x59, 0xda, 0x67, 0x4d, 0xa3, 0x51, 0xf1, 0x29, 0x89,
+	0x46, 0x4b, 0x4e, 0x49, 0x34, 0x4a, 0x4e, 0x49, 0x34, 0x32, 0xff, 0xa4, 0x44, 0x45, 0x30, 0xea,
+	0xb3, 0x8b, 0xd6, 0x66, 0x09, 0xff, 0x31, 0xb2, 0xae, 0x44, 0x57, 0xce, 0x44, 0x97, 0x1a, 0x67,
+	0x45, 0x37, 0xce, 0xcb, 0xd0, 0x0a, 0x3c, 0xc7, 0xe6, 0x11, 0xb6, 0xa9, 0x66, 0xe0, 0x39, 0x44,
+	0x0b, 0xbd, 0xc9, 0xd8, 0xf5, 0x6d, 0xb4, 0x2a, 0x46, 0x60, 0x83, 0x6a, 0x8f, 0x5d, 0xff, 0x30,
+	0x98, 0x30, 0xce, 0x26, 0xa0, 0x7d, 0xd9, 0xa1, 0xf0, 0x1f, 0xdb, 0xfe, 0x74, 0xbc, 0x51, 0x67,
+	0xbb, 0x8c, 0x83, 0x09, 0xb1, 0x32, 0x1d, 0x9b, 0x16, 0xa6, 0x86, 0xfb, 0xe2, 0x19, 0x19, 0xd1,
+	0x01, 0x05, 0xea, 0x85, 0x4c, 0xbe, 0x01, 0x6b, 0x63, 0xf1, 0xcc, 0x66, 0x73, 0x9c, 0x50, 0xc8,
+	0xe7, 0xac, 0xbb, 0x33, 0xd6, 0x09, 0x98, 0x7f, 0x43, 0xdb, 0xde, 0x17, 0x93, 0x07, 0xf2, 0x58,
+	0x7a, 0x3b, 0xe4, 0xca, 0x51, 0x84, 0xbf, 0x04, 0xeb, 0xbe, 0x7c, 0x8a, 0xe5, 0x94, 0xed, 0xe1,
+	0x48, 0x12, 0x47, 0x3b, 0x56, 0xc7, 0x97, 0x4f, 0x13, 0xfc, 0x3d, 0x07, 0xf7, 0x3d, 0x11, 0x51,
+	0xa4, 0xab, 0xaf, 0x89, 0x00, 0x52, 0xde, 0x47, 0xd0, 0x0e, 0x65, 0x3f, 0x08, 0x1d, 0x3e, 0x11,
+	0xec, 0x24, 0x5f, 0xce, 0xa9, 0x42, 0x95, 0x30, 0x84, 0xc5, 0x55, 0x43, 0x98, 0x3e, 0x1b, 0x17,
+	0xa0, 0xee, 0x46, 0xf7, 0xb1, 0x22, 0x53, 0xd7, 0x44, 0xfc, 0x66, 0xfe, 0x41, 0x79, 0x9e, 0x6b,
+	0xb4, 0xf3, 0xd4, 0x80, 0x4b, 0xba, 0x01, 0x1b, 0x50, 0x45, 0xa9, 0x12, 0x77, 0x1d, 0x8b, 0x9e,
+	0x31, 0x9f, 0x25, 0x49, 0xb3, 0x2f, 0x89, 0x88, 0xb5, 0x8e, 0xd5, 0x46, 0x18, 0x3b, 0x92, 0xc8,
+	0xd8, 0x81, 0x35, 0x54, 0x88, 0xf2, 0x36, 0x5a, 0xe8, 0x99, 0xa9, 0xaa, 0xd3, 0x29, 0xc4, 0x7e,
+	0x27, 0x0e, 0x26, 0xfc, 0x4a, 0x31, 0xe2, 0x02, 0xd4, 0xfd, 0x20, 0x76, 0x07, 0x27, 0xa4, 0xf2,
+	0xa6, 0xa5, 0xde, 0x8c, 0x2b, 0xb0, 0xce, 0x45, 0x9b, 0x9d, 0x08, 0xc8, 0x21, 0x8d, 0x57, 0xad,
+	0xd5, 0x9e, 0x2e, 0x11, 0x07, 0x63, 0xa9, 0x42, 0x41, 0x11, 0xdb, 0x51, 0x2c, 0xc6, 0x93, 0x8d,
+	0x06, 0xa1, 0xae, 0xf1, 0x00, 0x8a, 0xba, 0x8b, 0x60, 0x33, 0x4e, 0xb3, 0x57, 0xe4, 0x2a, 0xb9,
+	0xc1, 0xbb, 0x0c, 0x2d, 0xda, 0xab, 0x96, 0x2f, 0x37, 0x11, 0x80, 0x87, 0x08, 0x07, 0xa3, 0x58,
+	0x84, 0x58, 0x97, 0x3d, 0x23, 0x09, 0xd5, 0xac, 0x26, 0x01, 0xf6, 0x9c, 0x67, 0xe8, 0x09, 0xc9,
+	0xe3, 0x46, 0x52, 0x44, 0x41, 0x7a, 0x7b, 0x55, 0xb3, 0x56, 0x10, 0xda, 0x25, 0xe0, 0x9e, 0x63,
+	0xfe, 0x67, 0x69, 0x6e, 0xd9, 0xc5, 0xca, 0x78, 0x4f, 0x31, 0xa3, 0xa5, 0x19, 0x79, 0x17, 0x99,
+	0xd2, 0x21, 0x71, 0x12, 0xa3, 0x24, 0x49, 0x64, 0x54, 0x7a, 0x03, 0x3a, 0x20, 0x8a, 0x8d, 0x26,
+	0x02, 0x10, 0x35, 0xbf, 0xc5, 0xea, 0xb2, 0x2d, 0xd6, 0x66, 0xb6, 0xf8, 0x06, 0xac, 0xa5, 0x64,
+	0xd5, 0xe1, 0xe4, 0x93, 0xd7, 0x49, 0x88, 0xd3, 0xf1, 0x34, 0x7f, 0x1d, 0x4b, 0xeb, 0x94, 0x37,
+	0x4b, 0x3e, 0x15, 0xa1, 0x53, 0xec, 0x9d, 0x53, 0xff, 0x50, 0x9e, 0xf1, 0x0f, 0xb3, 0x52, 0x6c,
+	0x46, 0x89, 0x04, 0x7f, 0x50, 0x40, 0x1c, 0x45, 0x98, 0xdb, 0x73, 0x69, 0x66, 0xcf, 0x57, 0x60,
+	0x3d, 0x24, 0x4c, 0x4d, 0x3d, 0xbc, 0xe4, 0x2a, 0xc3, 0x53, 0x05, 0x7d, 0x99, 0x23, 0x7f, 0x34,
+	0x71, 0x44, 0x4c, 0x87, 0x7c, 0x5e, 0xbd, 0xa5, 0x79, 0xf5, 0xd2, 0x35, 0x1e, 0xaf, 0xa3, 0x1f,
+	0x05, 0xae, 0xd6, 0x14, 0x07, 0x99, 0xc1, 0x9b, 0x7f, 0x5a, 0x2a, 0x58, 0x6c, 0xb1, 0x39, 0xec,
+	0x2d, 0x24, 0x3e, 0x7b, 0xce, 0x3e, 0x95, 0x27, 0x8f, 0x84, 0x37, 0x95, 0xa8, 0xd2, 0x9b, 0x37,
+	0xe6, 0x57, 0x2e, 0x94, 0x47, 0xa5, 0x50, 0x1e, 0x23, 0x78, 0xb5, 0xdb, 0xdd, 0x09, 0x83, 0x28,
+	0xfa, 0xb5, 0xa9, 0xf0, 0xef, 0x0b, 0x7f, 0x78, 0x18, 0xba, 0xc2, 0xfb, 0x39, 0x28, 0xf6, 0xcb,
+	0xe7, 0xad, 0xf4, 0x33, 0xd4, 0xf2, 0xd3, 0xc5, 0x6b, 0xfd, 0x7c, 0x55, 0xfe, 0x93, 0xd2, 0xf3,
+	0x56, 0xfe, 0x05, 0xd3, 0xff, 0x1f, 0x97, 0x60, 0x43, 0x15, 0xc7, 0x07, 0x22, 0x8a, 0xb2, 0x70,
+	0x88, 0xb1, 0xf4, 0x63, 0xe8, 0x50, 0xf5, 0x6b, 0xf7, 0x72, 0x37, 0x2d, 0x79, 0x66, 0x68, 0x6e,
+	0x76, 0x81, 0xd0, 0xa6, 0x19, 0xdb, 0x7c, 0xc9, 0x52, 0xe8, 0xb0, 0xcb, 0x85, 0x0e, 0x1b, 0xd3,
+	0x30, 0x37, 0xb2, 0x87, 0xfc, 0x85, 0xa4, 0x69, 0x55, 0xdd, 0x68, 0x77, 0x6c, 0xfe, 0xa8, 0x04,
+	0x2f, 0x29, 0xf6, 0xbe, 0xf8, 0xf2, 0xff, 0x97, 0x41, 0xf3, 0x16, 0x26, 0x95, 0x44, 0x6c, 0xdf,
+	0xf5, 0xb5, 0xc4, 0x43, 0x3e, 0xc1, 0x3c, 0x9a, 0xf9, 0xa0, 0x04, 0x41, 0xa9, 0x15, 0x08, 0x44,
+	0x61, 0xd9, 0xfc, 0xd7, 0x12, 0x74, 0x72, 0x53, 0x71, 0x8a, 0x9e, 0x91, 0xa8, 0x29, 0x83, 0x94,
+	0xac, 0xf1, 0x3e, 0xd4, 0x70, 0x4b, 0x91, 0x2a, 0xc7, 0x4f, 0x73, 0x79, 0xc3, 0x13, 0x90, 0xb4,
+	0xb6, 0x29, 0x95, 0xec, 0x40, 0xb6, 0x1d, 0x44, 0x50, 0x11, 0x97, 0x10, 0xaa, 0x14, 0xf0, 0x81,
+	0x41, 0x84, 0xf0, 0x3a, 0xa8, 0xd0, 0x6b, 0x1f, 0xcb, 0x30, 0x72, 0x03, 0x5f, 0xc5, 0x8a, 0x0e,
+	0x43, 0x1f, 0x31, 0xd0, 0xfc, 0xa7, 0x52, 0xb1, 0x48, 0x54, 0x01, 0xc0, 0x22, 0x51, 0x7a, 0x99,
+	0x8f, 0x6e, 0xb9, 0x79, 0x56, 0x8b, 0xb0, 0x49, 0x29, 0x45, 0x09, 0x41, 0xf9, 0xf4, 0x09, 0x41,
+	0xa5, 0xd8, 0xbe, 0xb2, 0xf4, 0xa3, 0xaa, 0xa7, 0x1f, 0xe6, 0xc7, 0xb8, 0x07, 0x34, 0xad, 0xc3,
+	0x54, 0x5d, 0xec, 0x93, 0x8a, 0xfc, 0x5e, 0x72, 0xd5, 0x56, 0xce, 0xae, 0xda, 0xcc, 0x9b, 0xb0,
+	0x9a, 0x4d, 0xa5, 0x0d, 0x24, 0x59, 0x96, 0xba, 0x90, 0xa3, 0x2c, 0x6b, 0x2e, 0x2f, 0x55, 0x5f,
+	0x1a, 0xe7, 0x57, 0x7e, 0xae, 0x1f, 0xbc, 0x95, 0x13, 0x6d, 0x91, 0x83, 0xc8, 0xf3, 0xa3, 0xcb,
+	0x36, 0xd9, 0x40, 0x45, 0xdb, 0x00, 0x5d, 0xf3, 0xaa, 0x33, 0x96, 0x73, 0x91, 0xe6, 0x49, 0xe1,
+	0xc8, 0xff, 0x85, 0x0b, 0x33, 0x7d, 0x55, 0xc2, 0xdd, 0x0b, 0x5d, 0xe9, 0x3b, 0x87, 0xc9, 0x06,
+	0x8a, 0xd5, 0x72, 0x09, 0x9a, 0x33, 0x77, 0xa7, 0x8d, 0x29, 0xdf, 0x9a, 0x22, 0xa3, 0x3d, 0x39,
+	0x74, 0xfd, 0xa4, 0x44, 0xa1, 0x17, 0xfa, 0xa2, 0xe6, 0x27, 0xa9, 0x34, 0x3e, 0x9a, 0x7f, 0x56,
+	0x2a, 0x5e, 0xb0, 0xb8, 0x66, 0xd4, 0x0e, 0x67, 0xe5, 0x6c, 0x87, 0xf3, 0x3c, 0xd4, 0x06, 0xae,
+	0x2f, 0x3c, 0xe5, 0xe6, 0xf8, 0x25, 0xe3, 0xb2, 0x5a, 0xc0, 0x65, 0x2d, 0xe3, 0xf2, 0x2d, 0x54,
+	0xc8, 0x67, 0xbe, 0xe7, 0xfa, 0x72, 0x57, 0xc6, 0x58, 0xad, 0x2d, 0x14, 0x8a, 0x39, 0x28, 0xc4,
+	0xc5, 0xfd, 0xdc, 0x82, 0x16, 0xd6, 0x83, 0x7c, 0xdb, 0xc7, 0x47, 0x33, 0x5f, 0x89, 0x20, 0xb2,
+	0x7e, 0xc7, 0x65, 0x35, 0x43, 0x55, 0x57, 0x16, 0xd8, 0xf1, 0xef, 0x51, 0xdd, 0x94, 0x14, 0x9e,
+	0x59, 0xdd, 0x34, 0x2f, 0xb5, 0xcb, 0x6a, 0x5d, 0xed, 0x08, 0x11, 0x61, 0x4a, 0x4d, 0x8b, 0x6b,
+	0xc9, 0x0b, 0x50, 0xa7, 0x87, 0x6b, 0x49, 0xd9, 0xc3, 0x6f, 0x29, 0xfc, 0xba, 0x92, 0x8e, 0x7a,
+	0x33, 0xff, 0xb2, 0x80, 0x99, 0x62, 0x15, 0x2e, 0x65, 0xe6, 0x65, 0x00, 0x1a, 0x0c, 0x83, 0xa9,
+	0x9f, 0x84, 0x4e, 0x42, 0xb7, 0x10, 0x90, 0xf1, 0x5a, 0x2d, 0xe6, 0xb5, 0xb6, 0x80, 0xd7, 0x7a,
+	0x8e, 0x57, 0x52, 0x90, 0x52, 0x0d, 0x7f, 0x69, 0x5f, 0x9c, 0x70, 0x7d, 0x0d, 0x6e, 0xcd, 0x1f,
+	0x96, 0x0a, 0x17, 0xfa, 0x0a, 0x62, 0xb9, 0x00, 0x75, 0x3e, 0xa8, 0xca, 0x7a, 0xd5, 0x1b, 0x95,
+	0x90, 0x7c, 0xee, 0x99, 0x05, 0x16, 0x4b, 0x9b, 0x61, 0x29, 0x13, 0xe7, 0x53, 0x26, 0xba, 0xa3,
+	0x60, 0xb2, 0xf8, 0x34, 0x2f, 0x65, 0x01, 0x3d, 0xe3, 0x28, 0x98, 0xe8, 0xb7, 0x20, 0x4d, 0x04,
+	0xd0, 0xe0, 0x2b, 0xd0, 0x8e, 0xa6, 0x3d, 0x9b, 0x10, 0xd2, 0x86, 0x8a, 0x56, 0x34, 0xed, 0xd1,
+	0x82, 0x8e, 0xf9, 0x8f, 0x45, 0x4c, 0x7c, 0x0d, 0xf3, 0x88, 0x62, 0x31, 0x94, 0xba, 0xc0, 0xbb,
+	0x08, 0x98, 0xd1, 0x47, 0x75, 0xd6, 0x7a, 0x72, 0x5b, 0xa8, 0x2d, 0xdf, 0x42, 0x7d, 0x76, 0x0b,
+	0x7f, 0x48, 0x06, 0xae, 0x6d, 0x61, 0x7b, 0x7a, 0xf2, 0xb3, 0x16, 0xe3, 0x25, 0x68, 0x0e, 0x83,
+	0xc0, 0x89, 0x32, 0x19, 0x36, 0xe8, 0x9d, 0xef, 0x38, 0x78, 0xc8, 0x9f, 0x8e, 0x13, 0xde, 0x09,
+	0xf0, 0x70, 0x3a, 0x36, 0xff, 0xbd, 0x80, 0xb7, 0x5f, 0x2c, 0xe9, 0xea, 0x3b, 0xab, 0x2f, 0xd9,
+	0x59, 0x63, 0x66, 0x67, 0x5b, 0x74, 0x93, 0xc7, 0x1b, 0x23, 0x87, 0x78, 0x66, 0x89, 0x9b, 0xff,
+	0x50, 0x9e, 0xa1, 0xb1, 0x38, 0x8c, 0xce, 0xdf, 0x61, 0x2d, 0xad, 0xf8, 0x2f, 0x41, 0x33, 0xbd,
+	0x35, 0xac, 0xd2, 0x9c, 0x86, 0x54, 0x57, 0x86, 0x39, 0x8e, 0x6a, 0x33, 0x72, 0xbe, 0x01, 0xcd,
+	0x38, 0x98, 0x70, 0x14, 0xa8, 0x53, 0x14, 0xb8, 0x34, 0x17, 0x05, 0x70, 0x81, 0xc3, 0x60, 0x72,
+	0xdd, 0x6a, 0xc4, 0xfc, 0xfd, 0x0d, 0xc5, 0x4f, 0xac, 0x70, 0xaa, 0xdb, 0x50, 0xf6, 0x29, 0xbd,
+	0x01, 0xe5, 0x1b, 0xc6, 0x75, 0x68, 0xd2, 0xf7, 0x04, 0x24, 0xda, 0x2c, 0x68, 0x96, 0x41, 0xa2,
+	0xea, 0x13, 0x84, 0xd5, 0x98, 0xf0, 0x03, 0x96, 0x62, 0xfd, 0x69, 0x68, 0x6b, 0x6a, 0x6d, 0x71,
+	0x29, 0xd6, 0x9f, 0x86, 0x56, 0xea, 0xc7, 0x9c, 0xa4, 0x9b, 0x05, 0x21, 0x5f, 0xd5, 0x57, 0x52,
+	0x72, 0x4c, 0xae, 0x4a, 0x33, 0x7d, 0x60, 0x10, 0xe9, 0xe9, 0x5f, 0x4a, 0x73, 0xcb, 0x9c, 0x51,
+	0x53, 0xd9, 0xe2, 0x95, 0xe5, 0x8b, 0x57, 0x67, 0x17, 0x37, 0x6e, 0x42, 0xcb, 0x8d, 0xe5, 0x98,
+	0x33, 0x99, 0x5a, 0x81, 0x4e, 0xf4, 0xbc, 0xc9, 0x6a, 0x22, 0x2e, 0x65, 0x39, 0xf9, 0x33, 0x51,
+	0x9f, 0x8d, 0x00, 0xbf, 0x55, 0x82, 0x15, 0xdc, 0xce, 0xbe, 0xfa, 0x72, 0x57, 0x20, 0xb4, 0x5b,
+	0x29, 0x6b, 0x5a, 0xce, 0xb6, 0x64, 0x6d, 0xc5, 0x35, 0xad, 0x4e, 0x37, 0xac, 0xae, 0x67, 0x4f,
+	0x44, 0x28, 0xc6, 0xfa, 0x17, 0xae, 0x0e, 0x82, 0x0f, 0x10, 0x4a, 0x39, 0xdd, 0x5f, 0x97, 0xe0,
+	0x32, 0x07, 0xe7, 0xf4, 0x1b, 0x5c, 0x5a, 0xfd, 0x63, 0x39, 0xf7, 0x0a, 0xb4, 0x89, 0x4e, 0x7f,
+	0x30, 0xcc, 0xca, 0xf1, 0x16, 0x82, 0x76, 0x06, 0x43, 0x3e, 0xa2, 0x34, 0xae, 0x2b, 0x16, 0x01,
+	0x89, 0xe8, 0x68, 0x90, 0x2c, 0xaf, 0xb2, 0xc0, 0x9c, 0x13, 0x01, 0xf0, 0xbc, 0xc4, 0x9e, 0x97,
+	0xb8, 0x13, 0xee, 0x74, 0x48, 0xac, 0xe1, 0x39, 0xb7, 0x22, 0x37, 0xf5, 0xbc, 0xea, 0xb9, 0x12,
+	0x4c, 0x73, 0x2a, 0xf3, 0x2f, 0x4a, 0xb0, 0x9a, 0xd1, 0x2e, 0xe0, 0xaa, 0x34, 0xeb, 0xe4, 0xf4,
+	0x7b, 0xdc, 0xa4, 0xc2, 0x98, 0xd1, 0x60, 0xe5, 0x6b, 0x6a, 0xb0, 0x5a, 0xa4, 0xc1, 0x1f, 0xe7,
+	0x38, 0x4d, 0x2e, 0x23, 0x17, 0x9f, 0xb6, 0xdb, 0x40, 0xf7, 0xc8, 0x76, 0x9a, 0x35, 0x14, 0x5f,
+	0x1a, 0x67, 0x1b, 0xb7, 0x20, 0x4c, 0xdf, 0x31, 0xad, 0x18, 0x50, 0xd7, 0x5a, 0x3e, 0xad, 0x60,
+	0x18, 0xab, 0x67, 0x54, 0xa8, 0x9e, 0xe2, 0xa0, 0x73, 0xbb, 0xc8, 0xc4, 0x17, 0x31, 0x43, 0x37,
+	0xc6, 0x9a, 0x88, 0xcc, 0xfb, 0x54, 0xeb, 0xca, 0x68, 0x66, 0x29, 0xed, 0x9b, 0xc3, 0x69, 0x23,
+	0xc1, 0x87, 0xfc, 0x39, 0x13, 0xad, 0x91, 0x3f, 0x78, 0x14, 0xd3, 0xc8, 0xdd, 0xb1, 0x75, 0x54,
+	0x92, 0x69, 0x1e, 0x40, 0x87, 0x3f, 0x36, 0xa2, 0x29, 0xe3, 0xc4, 0x62, 0xc7, 0xf4, 0x26, 0x54,
+	0x51, 0x73, 0xea, 0xf2, 0xe0, 0xc5, 0x82, 0x06, 0x30, 0xd7, 0xb3, 0x08, 0xc5, 0xfc, 0xcd, 0x32,
+	0x92, 0x44, 0x40, 0xf2, 0x99, 0xf9, 0x13, 0x65, 0x0d, 0x51, 0x2c, 0x62, 0x99, 0x7d, 0x16, 0x9e,
+	0x75, 0xe5, 0x38, 0x65, 0x27, 0xf0, 0x63, 0xe9, 0xc7, 0x6c, 0x27, 0x5d, 0xc4, 0xd7, 0x3f, 0xe5,
+	0x13, 0x15, 0xfd, 0x9b, 0xb1, 0x23, 0x3d, 0x9c, 0x45, 0x38, 0xb7, 0xa1, 0x23, 0x1c, 0x47, 0xc3,
+	0xa9, 0x3c, 0x67, 0x8d, 0xb6, 0x70, 0x9c, 0x74, 0x36, 0xf9, 0x8a, 0x67, 0x3c, 0x3b, 0x4b, 0xf5,
+	0xc6, 0xe2, 0x19, 0x62, 0xec, 0x39, 0xc6, 0xdb, 0x60, 0x60, 0x48, 0x19, 0x7a, 0x41, 0x4f, 0x78,
+	0x29, 0x1a, 0x87, 0xc0, 0xb5, 0xfe, 0x34, 0xdc, 0xa5, 0x01, 0x46, 0x36, 0x6d, 0x6a, 0x16, 0x0b,
+	0xc6, 0x13, 0x19, 0xbb, 0xb1, 0x1b, 0xf8, 0xc9, 0xd7, 0xb3, 0x5d, 0x58, 0xef, 0x67, 0xd0, 0xa4,
+	0x5e, 0x9a, 0x6f, 0xf7, 0xa2, 0x3e, 0xa6, 0x0c, 0xd1, 0x5a, 0xd3, 0x66, 0xd1, 0x09, 0x1f, 0xaa,
+	0xde, 0x9d, 0x23, 0xd7, 0xd9, 0x3e, 0xa1, 0x4f, 0x81, 0x62, 0x4c, 0x2b, 0x5c, 0x02, 0x8a, 0xe3,
+	0xda, 0xf7, 0xc0, 0x06, 0xbe, 0x1f, 0xb9, 0xd4, 0x88, 0x14, 0x49, 0x11, 0xf6, 0x47, 0xb6, 0x2f,
+	0xc6, 0x69, 0x27, 0x2d, 0x83, 0x70, 0x7a, 0xda, 0x0d, 0x5b, 0xd1, 0xba, 0x61, 0xfb, 0x45, 0x0b,
+	0xe1, 0x71, 0xf8, 0x1e, 0xac, 0x65, 0x0d, 0x41, 0xba, 0x4e, 0x4f, 0x53, 0xbb, 0x76, 0xd2, 0xae,
+	0x20, 0x3a, 0x0a, 0xd4, 0xf0, 0x77, 0x67, 0x9b, 0x2b, 0xe5, 0x2d, 0xc7, 0xb9, 0x27, 0xfc, 0x48,
+	0x6d, 0x86, 0x7a, 0xeb, 0xb4, 0xcd, 0xe0, 0x3b, 0x6e, 0xe6, 0x22, 0x34, 0x50, 0xd9, 0x59, 0xb0,
+	0xac, 0x0b, 0xc7, 0x39, 0x72, 0x29, 0x34, 0xcd, 0x13, 0x5b, 0x1c, 0x70, 0xf5, 0x25, 0xca, 0xf9,
+	0x25, 0x3e, 0xcc, 0x96, 0xa8, 0x9c, 0xfa, 0xca, 0x2c, 0x61, 0x23, 0xb7, 0xa5, 0x3b, 0xd2, 0x43,
+	0x2e, 0xf0, 0x28, 0x2c, 0xdf, 0x12, 0xda, 0xb8, 0xb6, 0x25, 0x47, 0x7a, 0x48, 0xeb, 0x9f, 0x29,
+	0x0d, 0x56, 0xa4, 0xb4, 0x6f, 0xb1, 0x37, 0xa1, 0x89, 0xa9, 0xbd, 0x26, 0xfb, 0xa5, 0x77, 0x22,
+	0x8d, 0x68, 0xda, 0x23, 0x53, 0x7f, 0x1f, 0x5a, 0x03, 0xe1, 0x47, 0xa7, 0xbe, 0x4c, 0x69, 0x22,
+	0x36, 0xcd, 0xbc, 0x05, 0xd0, 0xf3, 0x44, 0x3f, 0xd7, 0x8c, 0xb3, 0x74, 0x6a, 0x8b, 0xd0, 0x49,
+	0xc9, 0xd4, 0x89, 0x89, 0x8e, 0x26, 0xdb, 0x08, 0x0a, 0xe4, 0x2a, 0xd4, 0x07, 0x04, 0x58, 0xd8,
+	0x89, 0xc9, 0xf8, 0x96, 0x42, 0x33, 0xff, 0xab, 0x04, 0xc6, 0x17, 0x41, 0xe8, 0x39, 0xdb, 0x41,
+	0x14, 0x91, 0x87, 0x48, 0xfa, 0xef, 0x7a, 0x41, 0xa4, 0x35, 0x25, 0xd5, 0xf1, 0x75, 0xcf, 0x31,
+	0x56, 0xa1, 0x3c, 0x9a, 0x28, 0x9f, 0x59, 0x1e, 0x4d, 0x72, 0x77, 0x3b, 0x95, 0xfc, 0xdd, 0x0e,
+	0x9e, 0x90, 0x29, 0x6a, 0x55, 0xcf, 0x7d, 0x81, 0x41, 0x94, 0xfe, 0xbe, 0x06, 0x1d, 0x67, 0x1a,
+	0x0a, 0x3a, 0xbc, 0x84, 0xa2, 0xba, 0x17, 0x12, 0x20, 0x21, 0x61, 0x42, 0xcb, 0x54, 0x5c, 0xe7,
+	0x59, 0x56, 0x70, 0x21, 0x64, 0xcf, 0x79, 0x66, 0x5c, 0x81, 0x75, 0x35, 0x4c, 0xfc, 0x92, 0x47,
+	0xe7, 0xac, 0x77, 0x95, 0xe1, 0xb8, 0x2f, 0xf2, 0xeb, 0xff, 0x5d, 0x42, 0x47, 0x4a, 0x8d, 0xfa,
+	0xc1, 0x70, 0x41, 0x9a, 0x55, 0x70, 0x81, 0x48, 0x3e, 0x60, 0xda, 0xcb, 0x7d, 0xd7, 0x8f, 0xa6,
+	0xbd, 0xa4, 0x14, 0x9a, 0x0b, 0xc9, 0xad, 0x49, 0x12, 0x8e, 0x31, 0x40, 0xd2, 0xcb, 0xcd, 0x1b,
+	0x59, 0xc6, 0x58, 0xb5, 0xda, 0x0a, 0xa6, 0x4c, 0x20, 0x17, 0xf4, 0xea, 0x67, 0xc9, 0x0a, 0x90,
+	0xb1, 0x58, 0x5d, 0xe2, 0x35, 0x36, 0x2b, 0x57, 0x5a, 0x56, 0x23, 0x8a, 0xf9, 0x7a, 0xee, 0x2e,
+	0xac, 0xa4, 0x5b, 0xe5, 0x8e, 0x97, 0xa6, 0x17, 0x0c, 0x75, 0xdb, 0x9e, 0xe9, 0x4a, 0xd2, 0xe5,
+	0x62, 0x35, 0xbc, 0x80, 0x5b, 0x92, 0xc6, 0x70, 0x8e, 0x5b, 0xfd, 0xa2, 0x6b, 0xfb, 0x27, 0xd1,
+	0x13, 0xbe, 0x3e, 0x3d, 0x0f, 0xb5, 0x71, 0xe0, 0xcb, 0x13, 0xf5, 0x95, 0x9d, 0x5f, 0x8c, 0xd7,
+	0x61, 0x35, 0x0e, 0x62, 0xe1, 0xd9, 0xa1, 0xec, 0x8f, 0x44, 0x38, 0x64, 0x19, 0x96, 0xad, 0x0e,
+	0x41, 0x2d, 0x05, 0xc4, 0xc8, 0x7b, 0xec, 0xaa, 0x2f, 0xf5, 0x49, 0xfe, 0x7d, 0xec, 0xf2, 0xd7,
+	0x71, 0xf3, 0x85, 0xa4, 0xf3, 0xdd, 0x92, 0x11, 0xad, 0xf7, 0x30, 0x1e, 0x98, 0xbf, 0x4f, 0xd7,
+	0x23, 0xec, 0x18, 0xc8, 0x3e, 0xf9, 0xd6, 0xa8, 0x38, 0x28, 0x63, 0x01, 0x39, 0x75, 0x3d, 0xed,
+	0x4e, 0xba, 0x41, 0xef, 0xdc, 0x38, 0x9a, 0xf4, 0xbf, 0x69, 0x95, 0x85, 0xea, 0x71, 0x43, 0x65,
+	0x5e, 0x81, 0x75, 0x47, 0xa2, 0x21, 0xf1, 0xc5, 0xbf, 0x66, 0xb3, 0xab, 0x04, 0xa7, 0x8b, 0x70,
+	0xfa, 0x03, 0x80, 0x84, 0x4b, 0xdc, 0x91, 0xbd, 0x13, 0x78, 0x9e, 0xec, 0xa3, 0xa9, 0x2e, 0x63,
+	0xea, 0x22, 0x34, 0xfa, 0x22, 0xbb, 0x27, 0xaf, 0x59, 0x75, 0x7c, 0xdd, 0xa3, 0xf6, 0x1f, 0x1a,
+	0xd0, 0xa5, 0xd1, 0x42, 0x08, 0x8b, 0xe3, 0x73, 0x54, 0x22, 0x1e, 0xf1, 0x03, 0x19, 0x23, 0xe5,
+	0x37, 0xa0, 0x32, 0x91, 0xf1, 0xc2, 0x86, 0xcc, 0x03, 0x19, 0x5b, 0x88, 0x80, 0x42, 0xf0, 0x02,
+	0xe1, 0xd8, 0xe8, 0x05, 0xf8, 0x6f, 0x24, 0x0d, 0x7c, 0xbf, 0xeb, 0x3b, 0xa6, 0x9f, 0x78, 0x8d,
+	0xac, 0xbb, 0x9e, 0x1b, 0xd7, 0xbe, 0x4e, 0x4b, 0xfe, 0x92, 0xf5, 0xfe, 0x8a, 0x2f, 0xd1, 0x65,
+	0xfc, 0xf9, 0x54, 0x86, 0x27, 0x5b, 0x51, 0xe4, 0x46, 0x69, 0xb7, 0xd0, 0x0e, 0x9c, 0x7b, 0x82,
+	0x50, 0x5b, 0x10, 0x58, 0x37, 0xce, 0xbc, 0xd7, 0xe2, 0x69, 0x64, 0x99, 0x6b, 0x4f, 0x32, 0x3a,
+	0x33, 0x5d, 0x0b, 0xe5, 0x5c, 0xd7, 0xc2, 0x12, 0xb7, 0xa4, 0xdb, 0x48, 0x35, 0x67, 0x23, 0xe6,
+	0x71, 0x31, 0xb7, 0x18, 0xef, 0xb2, 0x85, 0x4a, 0xb9, 0x85, 0x0a, 0x77, 0x51, 0x3e, 0xdb, 0x2e,
+	0xcc, 0xcf, 0xd1, 0xf0, 0x0f, 0x64, 0xdc, 0x95, 0x31, 0x43, 0x95, 0x52, 0xe6, 0x25, 0x73, 0xb9,
+	0x80, 0x26, 0xb5, 0x38, 0x52, 0x72, 0x2e, 0x32, 0x92, 0x7f, 0x5f, 0xa6, 0x63, 0x23, 0xe3, 0xed,
+	0xc0, 0x77, 0xb2, 0xa5, 0x50, 0xf0, 0xaf, 0x00, 0x35, 0x07, 0xce, 0xd4, 0x71, 0x08, 0xe2, 0x3a,
+	0x6e, 0x1b, 0xd6, 0xfa, 0x81, 0xef, 0x50, 0x7a, 0xf4, 0xdd, 0x53, 0xd6, 0x9b, 0xab, 0xd9, 0x0c,
+	0x12, 0xb2, 0x4e, 0xe3, 0xda, 0x29, 0x2b, 0x9e, 0x8c, 0xc6, 0xb5, 0x39, 0x1a, 0xd7, 0xf5, 0xb6,
+	0x96, 0x53, 0xd1, 0xb8, 0x9e, 0x28, 0x3b, 0xb5, 0x83, 0xda, 0x62, 0x3b, 0xa8, 0xe7, 0xed, 0x20,
+	0x2c, 0x94, 0x1d, 0x9a, 0xc1, 0xf3, 0x64, 0xf7, 0x7e, 0x5e, 0x69, 0xcf, 0x31, 0x04, 0x5d, 0x61,
+	0x37, 0xd5, 0x9a, 0x5b, 0xce, 0xf1, 0x56, 0x7f, 0xe4, 0xca, 0x63, 0x39, 0xc6, 0xac, 0x5a, 0x3e,
+	0x31, 0xbe, 0x01, 0x30, 0x91, 0x71, 0x7e, 0xc9, 0xe6, 0x44, 0xc6, 0xb4, 0xa2, 0xf9, 0x47, 0xa5,
+	0xc2, 0x89, 0xc8, 0xec, 0xd2, 0x89, 0xc6, 0x9b, 0xb0, 0x2e, 0x32, 0x7c, 0xbd, 0x2d, 0x6a, 0x4d,
+	0x83, 0x53, 0x0c, 0x7e, 0x1f, 0x6a, 0x94, 0x62, 0x9e, 0x21, 0x73, 0xe3, 0x09, 0xe6, 0x23, 0x74,
+	0x95, 0x73, 0xcc, 0x75, 0xd9, 0xa1, 0x2d, 0xe7, 0xef, 0x32, 0xb4, 0x84, 0x73, 0xac, 0x9c, 0xa3,
+	0x2a, 0xd2, 0x84, 0x73, 0xcc, 0xbe, 0x91, 0x3e, 0x7d, 0xa9, 0xcb, 0x2a, 0x5c, 0x2f, 0xf3, 0xbf,
+	0xf4, 0xb1, 0x17, 0x03, 0x91, 0xde, 0x97, 0x09, 0x04, 0xe2, 0xf6, 0xb5, 0x77, 0x54, 0x97, 0x60,
+	0xb9, 0xe8, 0x4f, 0x2f, 0x19, 0x45, 0x6e, 0x12, 0x4c, 0xdc, 0x79, 0x25, 0xfb, 0xa0, 0xb2, 0x0f,
+	0x1b, 0xbc, 0x34, 0xb9, 0xc3, 0x33, 0x2e, 0x3e, 0xff, 0x7d, 0xe6, 0x11, 0x96, 0x04, 0x77, 0x9f,
+	0x4d, 0x24, 0x9b, 0xed, 0x9d, 0xed, 0xfb, 0xd2, 0x9b, 0xa0, 0xda, 0x4d, 0xe8, 0xf4, 0xa4, 0x3d,
+	0x92, 0xde, 0x44, 0x3a, 0x5a, 0x82, 0xdb, 0xee, 0xc9, 0xfb, 0x04, 0x3b, 0xe2, 0x78, 0xb7, 0x20,
+	0xdf, 0x36, 0xbd, 0x22, 0xba, 0x8b, 0x33, 0xf7, 0xb9, 0xd5, 0xca, 0xcb, 0x57, 0xab, 0xe4, 0x57,
+	0xb3, 0xd1, 0x73, 0x62, 0x60, 0xd9, 0xf3, 0x8f, 0xdd, 0x58, 0x24, 0x95, 0x15, 0xca, 0xe4, 0x0e,
+	0xac, 0xb9, 0x29, 0x70, 0x71, 0x1f, 0x00, 0x37, 0x67, 0x26, 0x78, 0xd6, 0x6a, 0x36, 0x87, 0xda,
+	0x4e, 0xff, 0xad, 0x8a, 0xa1, 0x2b, 0x43, 0x48, 0x8a, 0xe1, 0xcb, 0xd0, 0xea, 0x89, 0x48, 0xda,
+	0x91, 0x38, 0x96, 0xca, 0x35, 0x37, 0x7b, 0xea, 0x8f, 0x73, 0x38, 0xd8, 0xf7, 0xdc, 0x3e, 0xb7,
+	0x29, 0x2a, 0x13, 0x22, 0xc0, 0xc3, 0xe9, 0xd8, 0xb8, 0x01, 0x17, 0xa8, 0xb6, 0xd3, 0x98, 0xf3,
+	0xa7, 0xe3, 0x5e, 0xda, 0x7f, 0x78, 0x1e, 0x47, 0xb3, 0x05, 0x1f, 0xd2, 0x18, 0xb7, 0xec, 0xd2,
+	0x7f, 0x04, 0xa7, 0x69, 0xfc, 0x68, 0x31, 0xe4, 0x28, 0xe9, 0x66, 0xa4, 0xe1, 0xf4, 0xce, 0xb7,
+	0x96, 0x74, 0x33, 0x22, 0x38, 0x69, 0x16, 0x7d, 0x0b, 0xce, 0x31, 0x67, 0x63, 0x89, 0x64, 0xb3,
+	0xec, 0xaf, 0x6a, 0xad, 0xd1, 0xc0, 0x3e, 0xc1, 0xc9, 0x51, 0xbd, 0x07, 0x1b, 0x8c, 0x1b, 0xca,
+	0x89, 0x27, 0x4e, 0x6c, 0xb5, 0x40, 0x9a, 0xf7, 0x55, 0xad, 0x17, 0x69, 0xdc, 0xa2, 0xe1, 0x7d,
+	0x1a, 0x55, 0x25, 0x7c, 0x2b, 0xeb, 0xd6, 0xe7, 0xdb, 0xde, 0x6f, 0xe6, 0x64, 0x9e, 0xed, 0x2e,
+	0xed, 0xfa, 0x6f, 0xc6, 0x49, 0xbf, 0x7f, 0x17, 0x5e, 0xa0, 0x0b, 0x00, 0x66, 0x30, 0xf5, 0xa2,
+	0x2d, 0xa2, 0xf3, 0xad, 0x05, 0x74, 0x98, 0xed, 0x47, 0x82, 0xaf, 0xf1, 0xd6, 0x85, 0xe3, 0x30,
+	0x44, 0xfd, 0x4b, 0xc6, 0xf8, 0x36, 0xbc, 0x40, 0x37, 0x0f, 0x33, 0x44, 0x81, 0x1b, 0x76, 0x1c,
+	0xe9, 0xe5, 0xd1, 0x3f, 0x81, 0x15, 0xe4, 0x21, 0xcd, 0x5d, 0xdb, 0xb4, 0xf8, 0x2b, 0x0b, 0x16,
+	0x4f, 0xf2, 0x57, 0x10, 0x8e, 0xf3, 0x80, 0x53, 0x58, 0xd2, 0x17, 0x2f, 0x86, 0x36, 0xb0, 0xa2,
+	0xee, 0x21, 0x08, 0xf2, 0x70, 0x3a, 0x36, 0x7f, 0x15, 0x0f, 0x73, 0x46, 0x61, 0x57, 0x2a, 0x3d,
+	0xab, 0xff, 0x13, 0x0f, 0x65, 0x6a, 0x14, 0x6c, 0x5b, 0xad, 0xa1, 0x2c, 0xb6, 0x84, 0xf2, 0x8c,
+	0x25, 0x98, 0x83, 0x05, 0x94, 0xf1, 0x08, 0xbe, 0x0d, 0xe7, 0xe6, 0xad, 0x4e, 0xfd, 0xdd, 0xd4,
+	0x5d, 0x6e, 0x71, 0x73, 0xeb, 0xbc, 0x07, 0x2f, 0xeb, 0xeb, 0xf0, 0xa4, 0xa3, 0x28, 0xfb, 0x1e,
+	0x8f, 0x99, 0x8b, 0xbe, 0x82, 0x7a, 0x33, 0xff, 0xbc, 0xb4, 0x6c, 0xe6, 0x62, 0x4f, 0x91, 0x06,
+	0x83, 0xf2, 0x19, 0x83, 0xc1, 0x8c, 0x2e, 0x2a, 0x33, 0xba, 0xd0, 0x18, 0xad, 0xe6, 0x18, 0xfd,
+	0x31, 0x75, 0x6d, 0xcd, 0xda, 0xd8, 0xc3, 0x20, 0x76, 0xfb, 0x92, 0xad, 0x1d, 0x1d, 0x41, 0x5e,
+	0x4c, 0xa5, 0xd9, 0x83, 0xa9, 0xdf, 0xe4, 0x94, 0xf3, 0x37, 0x39, 0x57, 0xa1, 0x46, 0x25, 0x99,
+	0x8a, 0x6e, 0x4b, 0xb2, 0x0b, 0xc6, 0x33, 0x7f, 0xc4, 0x97, 0x22, 0x82, 0x1d, 0xff, 0x77, 0xbf,
+	0xf3, 0x9d, 0xc4, 0x19, 0x7d, 0x00, 0x2d, 0xf4, 0x43, 0xcb, 0x6f, 0xa2, 0xb4, 0x79, 0x56, 0x33,
+	0x52, 0xb9, 0x9b, 0x71, 0x53, 0xab, 0xd0, 0x8a, 0x2e, 0x11, 0xb4, 0x59, 0x0f, 0x82, 0x61, 0x56,
+	0xa2, 0xed, 0xa3, 0xe3, 0xe5, 0xc6, 0x8f, 0xf4, 0xff, 0x0f, 0xf9, 0x5e, 0x6b, 0xad, 0x12, 0xd9,
+	0x84, 0x95, 0xf4, 0x6f, 0x14, 0x59, 0x39, 0x02, 0x8f, 0xd5, 0xc4, 0x3d, 0xc7, 0xec, 0xc2, 0xe5,
+	0xdc, 0xce, 0xbe, 0x18, 0x49, 0xe9, 0x3d, 0x08, 0x86, 0x5b, 0x0e, 0x5d, 0xa5, 0xde, 0x98, 0xab,
+	0x23, 0xf3, 0xd2, 0x4a, 0xd0, 0xf3, 0x65, 0xe4, 0x1e, 0x18, 0xaa, 0xeb, 0x2e, 0xb9, 0x6f, 0x41,
+	0x5a, 0xd7, 0xe7, 0x85, 0x35, 0xff, 0x27, 0x0c, 0x9a, 0x95, 0x89, 0x29, 0xf9, 0x73, 0xb3, 0x70,
+	0xe6, 0xfe, 0xdc, 0x2c, 0x9c, 0x25, 0x7f, 0x6e, 0x16, 0x8e, 0x45, 0x28, 0xe6, 0xf7, 0x33, 0x71,
+	0xcd, 0x52, 0x29, 0x2c, 0xdc, 0x70, 0x92, 0x56, 0xb8, 0xe1, 0xeb, 0x1e, 0xdf, 0xfd, 0x62, 0x29,
+	0x9a, 0x36, 0x43, 0xe0, 0x0b, 0x6f, 0x13, 0x63, 0x60, 0xba, 0x55, 0xb5, 0x4d, 0xaa, 0x8e, 0x4e,
+	0xb3, 0x4d, 0x44, 0xa4, 0x6d, 0xee, 0xa0, 0x81, 0x7d, 0xe1, 0x46, 0xa3, 0xed, 0xe0, 0x99, 0xce,
+	0xe3, 0xdb, 0x50, 0x7b, 0xea, 0x46, 0xa3, 0x68, 0xe1, 0x56, 0x71, 0x8e, 0xc5, 0x38, 0xe6, 0x0f,
+	0xe9, 0xff, 0x2a, 0xdb, 0x87, 0xba, 0xd0, 0x3f, 0x80, 0x95, 0x5e, 0x6c, 0xf7, 0x02, 0xcf, 0xd5,
+	0x19, 0xca, 0x27, 0xa8, 0xdb, 0x87, 0xdb, 0x81, 0xe7, 0xb2, 0x27, 0xed, 0xc5, 0xc9, 0xb3, 0x71,
+	0x43, 0x45, 0x5a, 0xed, 0x4f, 0x68, 0x73, 0xf3, 0x44, 0xc4, 0x95, 0x08, 0x85, 0x60, 0x7c, 0xda,
+	0x5e, 0xff, 0xfe, 0xea, 0xbb, 0x57, 0x3f, 0xd4, 0xd0, 0x7a, 0x75, 0xfa, 0xb9, 0xfe, 0xbf, 0x01,
+	0x00, 0x00, 0xff, 0xff, 0xa3, 0xe6, 0xff, 0xd8, 0xee, 0x41, 0x00, 0x00,
 }

+ 14 - 0
RO_Server_Trunk-branch_0.1.39/roserver/serverproto/db.proto

@@ -306,6 +306,7 @@ message SSTowerPassFightPowerNtf {  //project rank
     TowerBriefInfo tower_bf_info             = 1;
     uint64 record_time_stamp                 = 2;
     bool is_gm                               = 3;
+    int32 type =4;//1:无尽模式
 }
 
 message SSTowerWjPassFightPowerNtf {  //project rank
@@ -334,6 +335,7 @@ message SSTowerMinFightPowerAck {   //project game
 //请求通关排行榜
 message SSPassTowerLevelRankReq {   //project rank
     uint64 uid              = 1;
+    int32 type =2;//1:无尽模式
 }
 message TowerLevelInfo{
     int32 rank                     = 1; //排名
@@ -344,6 +346,18 @@ message TowerLevelInfo{
 message SSPassTowerLevelRankAck {   //project game
     int32 self_rank                      = 1;   //自己的排行
     repeated TowerLevelInfo tower_info   = 2;   //通关排行榜
+    int32 type =3;//1:无尽模式
+}
+
+//无尽模式刷新数据
+message SSTowerWjRankUpdateReq {  //project rank
+    //int32 last_season_id                = 1; //更新赛季数据
+    //repeated uint64 reward_player_list  = 2; //获取奖励玩家
+}
+message SSTowerWjRankUpdateAck {  //project game
+    int32  error                                 = 1; //错误码
+    repeated KeyValueType64 reward_player_list   = 2;
+    //int32 reward_season_id                       = 3;
 }
 
 message SSGetFriendTowerInfoReq {   //project db

+ 8 - 0
RO_Server_Trunk-branch_0.1.39/roserver/serverproto/pbbind_gen.go

@@ -843,6 +843,8 @@ var (
 	Handle_RANK_SSCrossTopTowerMatchFightReq         = func(e rocommon.ProcEvent) { panic("SSCrossTopTowerMatchFightReq not implements") }
 	Handle_RANK_SSCrossTopTowerForceWinRankUpdateNtf = func(e rocommon.ProcEvent) { panic("SSCrossTopTowerForceWinRankUpdateNtf not implements") }
 	Handle_RANK_SSCrossTopTowerForceWinRankListReq   = func(e rocommon.ProcEvent) { panic("SSCrossTopTowerForceWinRankListReq not implements") }
+	Handle_RANK_SSTowerWjRankUpdateReq               = func(e rocommon.ProcEvent) { panic("SSTowerWjRankUpdateReq not implements") }
+	Handle_RANK_SSTowerWjRankUpdateAck               = func(e rocommon.ProcEvent) { panic("SSTowerWjRankUpdateAck not implements") }
 	Handle_RANK_Default                              func(e rocommon.ProcEvent)
 )
 
@@ -2570,6 +2572,10 @@ func GetMessageHandler(sreviceName string) rocommon.EventCallBack {
 				Handle_RANK_SSCrossTopTowerForceWinRankUpdateNtf(e)
 			case *SSCrossTopTowerForceWinRankListReq:
 				Handle_RANK_SSCrossTopTowerForceWinRankListReq(e)
+			case *SSTowerWjRankUpdateReq:
+				Handle_RANK_SSTowerWjRankUpdateReq(e)
+			case *SSTowerWjRankUpdateAck:
+				Handle_RANK_SSTowerWjRankUpdateAck(e)
 			default:
 				if Handle_RANK_Default != nil {
 					Handle_RANK_Default(e)
@@ -3739,4 +3745,6 @@ func init() {
 	registerInfo(6065, reflect.TypeOf((*SCClimbingTowerWjBossNtf)(nil)).Elem(), 0)
 	registerInfo(6066, reflect.TypeOf((*CSClimbingTowerWjBuffReq)(nil)).Elem(), 0)
 	registerInfo(6067, reflect.TypeOf((*SCClimbingTowerWjBuffAck)(nil)).Elem(), 0)
+	registerInfo(6068, reflect.TypeOf((*SSTowerWjRankUpdateReq)(nil)).Elem(), 0)
+	registerInfo(6069, reflect.TypeOf((*SSTowerWjRankUpdateAck)(nil)).Elem(), 0)
 }