Merge remote-tracking branch 'origin/v2.3.0release' into v2.3.0release

This commit is contained in:
Gordon 2022-12-22 17:25:29 +08:00
commit 98ce12d74e
5 changed files with 483 additions and 261 deletions

View File

@ -7,11 +7,12 @@ import (
"Open_IM/pkg/common/log"
server_api_params "Open_IM/pkg/proto/sdk_ws"
"Open_IM/pkg/utils"
goRedis "github.com/go-redis/redis/v8"
"github.com/golang/protobuf/proto"
"math"
"strconv"
"strings"
goRedis "github.com/go-redis/redis/v8"
"github.com/golang/protobuf/proto"
)
const oldestList = 0
@ -105,6 +106,8 @@ func deleteMongoMsg(operationID string, ID string, index int64, delStruct *delMs
if len(msgs.Msg) > db.GetSingleGocMsgNum() {
log.NewWarn(operationID, utils.GetSelfFuncName(), "msgs too large", len(msgs.Msg), msgs.UID)
}
// lastMsgSendTime := msgs.Msg[len(msgs.Msg)-1].SendTime
var hasMsgDoNotNeedDel bool
for i, msg := range msgs.Msg {
// 找到列表中不需要删除的消息了, 表示为递归到最后一个块
@ -130,20 +133,16 @@ func deleteMongoMsg(operationID string, ID string, index int64, delStruct *delMs
}
// 递归结束
return msgPb.Seq, nil
} else {
if !msgListIsFull(msgs) {
}
}
}
// 该列表中消息全部为老消息并且列表满了, 加入删除列表继续递归
lastMsgPb := &server_api_params.MsgData{}
err = proto.Unmarshal(msgs.Msg[len(msgs.Msg)-1].Msg, lastMsgPb)
if err != nil {
log.NewError(operationID, utils.GetSelfFuncName(), err.Error(), len(msgs.Msg)-1, msgs.UID)
return 0, utils.Wrap(err, "proto.Unmarshal failed")
}
delStruct.minSeq = lastMsgPb.Seq
// lastMsgPb := &server_api_params.MsgData{}
// err = proto.Unmarshal(msgs.Msg[len(msgs.Msg)-1].Msg, lastMsgPb)
// if err != nil {
// log.NewError(operationID, utils.GetSelfFuncName(), err.Error(), len(msgs.Msg)-1, msgs.UID)
// return 0, utils.Wrap(err, "proto.Unmarshal failed")
// }
// delStruct.minSeq = lastMsgPb.Seq
if msgListIsFull(msgs) {
log.NewDebug(operationID, "msg list is full", msgs.UID)
delStruct.delUidList = append(delStruct.delUidList, msgs.UID)

View File

@ -26,8 +26,10 @@ var (
)
const (
PushURL = "/push/single/alias"
AuthURL = "/auth"
PushURL = "/push/single/alias"
AuthURL = "/auth"
TaskURL = "/push/list/message"
BatchPushURL = "/push/list/alias"
)
func init() {
@ -53,23 +55,42 @@ type AuthResp struct {
Token string `json:"token"`
}
type TaskResp struct {
TaskID string `json:"taskID"`
}
type Settings struct {
TTL *int64 `json:"ttl"`
}
type Audience struct {
Alias []string `json:"alias"`
}
type PushMessage struct {
Notification *Notification `json:"notification,omitempty"`
Transmission *string `json:"transmission,omitempty"`
}
type PushChannel struct {
Ios *Ios `json:"ios"`
Android *Android `json:"android"`
}
type PushReq struct {
RequestID string `json:"request_id"`
Audience struct {
Alias []string `json:"alias"`
} `json:"audience"`
PushMessage struct {
Notification Notification `json:"notification,omitempty"`
Transmission string `json:"transmission,omitempty"`
} `json:"push_message"`
PushChannel struct {
Ios Ios `json:"ios"`
Android Android `json:"android"`
} `json:"push_channel"`
RequestID *string `json:"request_id"`
Settings *Settings `json:"settings"`
Audience *Audience `json:"audience"`
PushMessage *PushMessage `json:"push_message"`
PushChannel *PushChannel `json:"push_channel"`
IsAsync *bool `json:"is_async"`
Taskid *string `json:"taskid"`
}
type Ios struct {
Aps struct {
NotiType *string `json:"type"`
AutoBadge *string `json:"auto_badge"`
Aps struct {
Sound string `json:"sound"`
Alert Alert `json:"alert"`
} `json:"aps"`
@ -119,9 +140,9 @@ func newGetuiClient() *Getui {
func (g *Getui) Push(userIDList []string, title, detailContent, operationID string, opts push.PushOpts) (resp string, err error) {
token, err := db.DB.GetGetuiToken()
log.NewDebug(operationID, utils.GetSelfFuncName(), "token", token)
log.NewDebug(operationID, utils.GetSelfFuncName(), "token", token, userIDList)
if err != nil {
log.NewError(operationID, utils.OperationIDGenerator(), "GetGetuiToken failed", err.Error())
log.NewError(operationID, utils.GetSelfFuncName(), "GetGetuiToken failed", err.Error())
}
if token == "" || err != nil {
token, err = g.getTokenAndSave2Redis(operationID)
@ -130,47 +151,32 @@ func (g *Getui) Push(userIDList []string, title, detailContent, operationID stri
return "", utils.Wrap(err, "")
}
}
pushReq := PushReq{
RequestID: utils.OperationIDGenerator(),
Audience: struct {
Alias []string `json:"alias"`
}{Alias: []string{userIDList[0]}},
}
pushReq.PushMessage.Notification = Notification{
pushReq := PushReq{PushMessage: &PushMessage{Notification: &Notification{
Title: title,
Body: detailContent,
ClickType: "startapp",
ChannelID: config.Config.Push.Getui.ChannelID,
ChannelName: config.Config.Push.Getui.ChannelName,
}
pushReq.PushChannel.Ios.Aps.Sound = "default"
pushReq.PushChannel.Ios.Aps.Alert = Alert{
Title: title,
Body: title,
}
pushReq.PushChannel.Android.Ups.Notification = Notification{
Title: title,
Body: title,
ClickType: "startapp",
}
pushReq.PushChannel.Android.Ups.Options = Options{
HW: struct {
DefaultSound bool `json:"/message/android/notification/default_sound"`
ChannelID string `json:"/message/android/notification/channel_id"`
Sound string `json:"/message/android/notification/sound"`
Importance string `json:"/message/android/notification/importance"`
}{ChannelID: "RingRing4", Sound: "/raw/ring001", Importance: "NORMAL"},
XM: struct {
ChannelID string `json:"/extra.channel_id"`
}{ChannelID: "high_system"},
VV: struct {
Classification int "json:\"/classification\""
}{
Classification: 1,
},
}
}}}
pushReq.setPushChannel(title, detailContent)
pushResp := PushResp{}
err = g.request(PushURL, pushReq, token, &pushResp, operationID)
if len(userIDList) > 1 {
taskID, err := g.GetTaskID(operationID, token, pushReq)
if err != nil {
return "", utils.Wrap(err, "GetTaskIDAndSave2Redis failed")
}
pushReq = PushReq{Audience: &Audience{Alias: userIDList}}
var IsAsync = false
pushReq.IsAsync = &IsAsync
pushReq.Taskid = &taskID
err = g.request(BatchPushURL, pushReq, token, &pushResp, operationID)
} else {
reqID := utils.OperationIDGenerator()
pushReq.RequestID = &reqID
pushReq.Audience = &Audience{Alias: []string{userIDList[0]}}
err = g.request(PushURL, pushReq, token, &pushResp, operationID)
}
switch err {
case TokenExpireError:
token, err = g.getTokenAndSave2Redis(operationID)
@ -209,6 +215,17 @@ func (g *Getui) Auth(operationID string, timeStamp int64) (token string, expireT
return respAuth.Token, int64(expire), err
}
func (g *Getui) GetTaskID(operationID, token string, pushReq PushReq) (string, error) {
respTask := TaskResp{}
ttl := int64(1000 * 60 * 5)
pushReq.Settings = &Settings{TTL: &ttl}
err := g.request(TaskURL, pushReq, token, &respTask, operationID)
if err != nil {
return "", utils.Wrap(err, "")
}
return respTask.TaskID, nil
}
func (g *Getui) request(url string, content interface{}, token string, returnStruct interface{}, operationID string) error {
con, err := json.Marshal(content)
if err != nil {
@ -245,6 +262,41 @@ func (g *Getui) request(url string, content interface{}, token string, returnStr
return nil
}
func (pushReq *PushReq) setPushChannel(title string, body string) {
pushReq.PushChannel = &PushChannel{}
autoBadge := "+1"
pushReq.PushChannel.Ios = &Ios{AutoBadge: &autoBadge}
notify := "notify"
pushReq.PushChannel.Ios.NotiType = &notify
pushReq.PushChannel.Ios.Aps.Sound = "default"
pushReq.PushChannel.Ios.Aps.Alert = Alert{
Title: title,
Body: body,
}
pushReq.PushChannel.Android = &Android{}
pushReq.PushChannel.Android.Ups.Notification = Notification{
Title: title,
Body: body,
ClickType: "startapp",
}
pushReq.PushChannel.Android.Ups.Options = Options{
HW: struct {
DefaultSound bool `json:"/message/android/notification/default_sound"`
ChannelID string `json:"/message/android/notification/channel_id"`
Sound string `json:"/message/android/notification/sound"`
Importance string `json:"/message/android/notification/importance"`
}{ChannelID: "RingRing4", Sound: "/raw/ring001", Importance: "NORMAL"},
XM: struct {
ChannelID string `json:"/extra.channel_id"`
}{ChannelID: "high_system"},
VV: struct {
Classification int "json:\"/classification\""
}{
Classification: 1,
},
}
}
func (g *Getui) getTokenAndSave2Redis(operationID string) (token string, err error) {
token, expireTime, err := g.Auth(operationID, time.Now().UnixNano()/1e6)
if err != nil {
@ -257,3 +309,17 @@ func (g *Getui) getTokenAndSave2Redis(operationID string) (token string, err err
}
return token, nil
}
func (g *Getui) GetTaskIDAndSave2Redis(operationID, token string, pushReq PushReq) (taskID string, err error) {
ttl := int64(1000 * 60 * 60 * 24)
pushReq.Settings = &Settings{TTL: &ttl}
taskID, err = g.GetTaskID(operationID, token, pushReq)
if err != nil {
return "", utils.Wrap(err, "GetTaskIDAndSave2Redis failed")
}
err = db.DB.SetGetuiTaskID(taskID, 60*60*23)
if err != nil {
return "", utils.Wrap(err, "Auth failed")
}
return token, nil
}

View File

@ -237,7 +237,7 @@ func MsgToSuperGroupUser(pushMsg *pbPush.PushMsgReq) {
if err != nil {
log.NewError(pushMsg.OperationID, utils.GetSelfFuncName(), "GetOfflinePushOpts failed", pushMsg, err.Error())
}
log.NewInfo(pushMsg.OperationID, utils.GetSelfFuncName(), onlineFailedUserIDList, title, detailContent, "opts:", opts)
log.NewInfo(pushMsg.OperationID, utils.GetSelfFuncName(), needOfflinePushUserIDList, title, detailContent, "opts:", opts)
if title == "" {
switch pushMsg.MsgData.ContentType {
case constant.Text:

View File

@ -28,6 +28,7 @@ const (
uidPidToken = "UID_PID_TOKEN_STATUS:"
conversationReceiveMessageOpt = "CON_RECV_MSG_OPT:"
getuiToken = "GETUI_TOKEN"
getuiTaskID = "GETUI_TASK_ID"
messageCache = "MESSAGE_CACHE:"
SignalCache = "SIGNAL_CACHE:"
SignalListCache = "SIGNAL_LIST_CACHE:"
@ -397,6 +398,15 @@ func (d *DataBases) GetGetuiToken() (string, error) {
return result, err
}
func (d *DataBases) SetGetuiTaskID(taskID string, expireTime int64) error {
return d.RDB.Set(context.Background(), getuiTaskID, taskID, time.Duration(expireTime)*time.Second).Err()
}
func (d *DataBases) GetGetuiTaskID() (string, error) {
result, err := d.RDB.Get(context.Background(), getuiTaskID).Result()
return result, err
}
func (d *DataBases) SetSendMsgStatus(status int32, operationID string) error {
return d.RDB.Set(context.Background(), sendMsgFailedFlag+operationID, status, time.Hour*24).Err()
}

View File

@ -36,7 +36,7 @@ func (m *CommonResp) Reset() { *m = CommonResp{} }
func (m *CommonResp) String() string { return proto.CompactTextString(m) }
func (*CommonResp) ProtoMessage() {}
func (*CommonResp) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{0}
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{0}
}
func (m *CommonResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CommonResp.Unmarshal(m, b)
@ -83,7 +83,7 @@ func (m *AdminLoginReq) Reset() { *m = AdminLoginReq{} }
func (m *AdminLoginReq) String() string { return proto.CompactTextString(m) }
func (*AdminLoginReq) ProtoMessage() {}
func (*AdminLoginReq) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{1}
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{1}
}
func (m *AdminLoginReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AdminLoginReq.Unmarshal(m, b)
@ -138,7 +138,7 @@ func (m *AdminLoginResp) Reset() { *m = AdminLoginResp{} }
func (m *AdminLoginResp) String() string { return proto.CompactTextString(m) }
func (*AdminLoginResp) ProtoMessage() {}
func (*AdminLoginResp) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{2}
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{2}
}
func (m *AdminLoginResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AdminLoginResp.Unmarshal(m, b)
@ -186,6 +186,114 @@ func (m *AdminLoginResp) GetCommonResp() *CommonResp {
return nil
}
type GetUserTokenReq struct {
OperationID string `protobuf:"bytes,1,opt,name=operationID" json:"operationID,omitempty"`
UserID string `protobuf:"bytes,2,opt,name=userID" json:"userID,omitempty"`
PlatformID int32 `protobuf:"varint,3,opt,name=platformID" json:"platformID,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *GetUserTokenReq) Reset() { *m = GetUserTokenReq{} }
func (m *GetUserTokenReq) String() string { return proto.CompactTextString(m) }
func (*GetUserTokenReq) ProtoMessage() {}
func (*GetUserTokenReq) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{3}
}
func (m *GetUserTokenReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUserTokenReq.Unmarshal(m, b)
}
func (m *GetUserTokenReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_GetUserTokenReq.Marshal(b, m, deterministic)
}
func (dst *GetUserTokenReq) XXX_Merge(src proto.Message) {
xxx_messageInfo_GetUserTokenReq.Merge(dst, src)
}
func (m *GetUserTokenReq) XXX_Size() int {
return xxx_messageInfo_GetUserTokenReq.Size(m)
}
func (m *GetUserTokenReq) XXX_DiscardUnknown() {
xxx_messageInfo_GetUserTokenReq.DiscardUnknown(m)
}
var xxx_messageInfo_GetUserTokenReq proto.InternalMessageInfo
func (m *GetUserTokenReq) GetOperationID() string {
if m != nil {
return m.OperationID
}
return ""
}
func (m *GetUserTokenReq) GetUserID() string {
if m != nil {
return m.UserID
}
return ""
}
func (m *GetUserTokenReq) GetPlatformID() int32 {
if m != nil {
return m.PlatformID
}
return 0
}
type GetUserTokenResp struct {
CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"`
Token string `protobuf:"bytes,2,opt,name=token" json:"token,omitempty"`
ExpTime int64 `protobuf:"varint,3,opt,name=expTime" json:"expTime,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *GetUserTokenResp) Reset() { *m = GetUserTokenResp{} }
func (m *GetUserTokenResp) String() string { return proto.CompactTextString(m) }
func (*GetUserTokenResp) ProtoMessage() {}
func (*GetUserTokenResp) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{4}
}
func (m *GetUserTokenResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUserTokenResp.Unmarshal(m, b)
}
func (m *GetUserTokenResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_GetUserTokenResp.Marshal(b, m, deterministic)
}
func (dst *GetUserTokenResp) XXX_Merge(src proto.Message) {
xxx_messageInfo_GetUserTokenResp.Merge(dst, src)
}
func (m *GetUserTokenResp) XXX_Size() int {
return xxx_messageInfo_GetUserTokenResp.Size(m)
}
func (m *GetUserTokenResp) XXX_DiscardUnknown() {
xxx_messageInfo_GetUserTokenResp.DiscardUnknown(m)
}
var xxx_messageInfo_GetUserTokenResp proto.InternalMessageInfo
func (m *GetUserTokenResp) GetCommonResp() *CommonResp {
if m != nil {
return m.CommonResp
}
return nil
}
func (m *GetUserTokenResp) GetToken() string {
if m != nil {
return m.Token
}
return ""
}
func (m *GetUserTokenResp) GetExpTime() int64 {
if m != nil {
return m.ExpTime
}
return 0
}
type AddUserRegisterAddFriendIDListReq struct {
OperationID string `protobuf:"bytes,1,opt,name=operationID" json:"operationID,omitempty"`
UserIDList []string `protobuf:"bytes,2,rep,name=userIDList" json:"userIDList,omitempty"`
@ -198,7 +306,7 @@ func (m *AddUserRegisterAddFriendIDListReq) Reset() { *m = AddUserRegist
func (m *AddUserRegisterAddFriendIDListReq) String() string { return proto.CompactTextString(m) }
func (*AddUserRegisterAddFriendIDListReq) ProtoMessage() {}
func (*AddUserRegisterAddFriendIDListReq) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{3}
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{5}
}
func (m *AddUserRegisterAddFriendIDListReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AddUserRegisterAddFriendIDListReq.Unmarshal(m, b)
@ -243,7 +351,7 @@ func (m *AddUserRegisterAddFriendIDListResp) Reset() { *m = AddUserRegis
func (m *AddUserRegisterAddFriendIDListResp) String() string { return proto.CompactTextString(m) }
func (*AddUserRegisterAddFriendIDListResp) ProtoMessage() {}
func (*AddUserRegisterAddFriendIDListResp) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{4}
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{6}
}
func (m *AddUserRegisterAddFriendIDListResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AddUserRegisterAddFriendIDListResp.Unmarshal(m, b)
@ -283,7 +391,7 @@ func (m *ReduceUserRegisterAddFriendIDListReq) Reset() { *m = ReduceUser
func (m *ReduceUserRegisterAddFriendIDListReq) String() string { return proto.CompactTextString(m) }
func (*ReduceUserRegisterAddFriendIDListReq) ProtoMessage() {}
func (*ReduceUserRegisterAddFriendIDListReq) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{5}
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{7}
}
func (m *ReduceUserRegisterAddFriendIDListReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReduceUserRegisterAddFriendIDListReq.Unmarshal(m, b)
@ -335,7 +443,7 @@ func (m *ReduceUserRegisterAddFriendIDListResp) Reset() { *m = ReduceUse
func (m *ReduceUserRegisterAddFriendIDListResp) String() string { return proto.CompactTextString(m) }
func (*ReduceUserRegisterAddFriendIDListResp) ProtoMessage() {}
func (*ReduceUserRegisterAddFriendIDListResp) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{6}
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{8}
}
func (m *ReduceUserRegisterAddFriendIDListResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReduceUserRegisterAddFriendIDListResp.Unmarshal(m, b)
@ -374,7 +482,7 @@ func (m *GetUserRegisterAddFriendIDListReq) Reset() { *m = GetUserRegist
func (m *GetUserRegisterAddFriendIDListReq) String() string { return proto.CompactTextString(m) }
func (*GetUserRegisterAddFriendIDListReq) ProtoMessage() {}
func (*GetUserRegisterAddFriendIDListReq) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{7}
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{9}
}
func (m *GetUserRegisterAddFriendIDListReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUserRegisterAddFriendIDListReq.Unmarshal(m, b)
@ -421,7 +529,7 @@ func (m *GetUserRegisterAddFriendIDListResp) Reset() { *m = GetUserRegis
func (m *GetUserRegisterAddFriendIDListResp) String() string { return proto.CompactTextString(m) }
func (*GetUserRegisterAddFriendIDListResp) ProtoMessage() {}
func (*GetUserRegisterAddFriendIDListResp) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{8}
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{10}
}
func (m *GetUserRegisterAddFriendIDListResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUserRegisterAddFriendIDListResp.Unmarshal(m, b)
@ -481,7 +589,7 @@ func (m *GetChatLogsReq) Reset() { *m = GetChatLogsReq{} }
func (m *GetChatLogsReq) String() string { return proto.CompactTextString(m) }
func (*GetChatLogsReq) ProtoMessage() {}
func (*GetChatLogsReq) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{9}
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{11}
}
func (m *GetChatLogsReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetChatLogsReq.Unmarshal(m, b)
@ -592,7 +700,7 @@ func (m *ChatLog) Reset() { *m = ChatLog{} }
func (m *ChatLog) String() string { return proto.CompactTextString(m) }
func (*ChatLog) ProtoMessage() {}
func (*ChatLog) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{10}
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{12}
}
func (m *ChatLog) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ChatLog.Unmarshal(m, b)
@ -752,7 +860,7 @@ func (m *GetChatLogsResp) Reset() { *m = GetChatLogsResp{} }
func (m *GetChatLogsResp) String() string { return proto.CompactTextString(m) }
func (*GetChatLogsResp) ProtoMessage() {}
func (*GetChatLogsResp) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{11}
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{13}
}
func (m *GetChatLogsResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetChatLogsResp.Unmarshal(m, b)
@ -812,7 +920,7 @@ func (m *StatisticsReq) Reset() { *m = StatisticsReq{} }
func (m *StatisticsReq) String() string { return proto.CompactTextString(m) }
func (*StatisticsReq) ProtoMessage() {}
func (*StatisticsReq) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{12}
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{14}
}
func (m *StatisticsReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_StatisticsReq.Unmarshal(m, b)
@ -858,7 +966,7 @@ func (m *GetActiveUserReq) Reset() { *m = GetActiveUserReq{} }
func (m *GetActiveUserReq) String() string { return proto.CompactTextString(m) }
func (*GetActiveUserReq) ProtoMessage() {}
func (*GetActiveUserReq) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{13}
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{15}
}
func (m *GetActiveUserReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetActiveUserReq.Unmarshal(m, b)
@ -905,7 +1013,7 @@ func (m *UserResp) Reset() { *m = UserResp{} }
func (m *UserResp) String() string { return proto.CompactTextString(m) }
func (*UserResp) ProtoMessage() {}
func (*UserResp) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{14}
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{16}
}
func (m *UserResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UserResp.Unmarshal(m, b)
@ -958,7 +1066,7 @@ func (m *GetActiveUserResp) Reset() { *m = GetActiveUserResp{} }
func (m *GetActiveUserResp) String() string { return proto.CompactTextString(m) }
func (*GetActiveUserResp) ProtoMessage() {}
func (*GetActiveUserResp) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{15}
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{17}
}
func (m *GetActiveUserResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetActiveUserResp.Unmarshal(m, b)
@ -1004,7 +1112,7 @@ func (m *GetActiveGroupReq) Reset() { *m = GetActiveGroupReq{} }
func (m *GetActiveGroupReq) String() string { return proto.CompactTextString(m) }
func (*GetActiveGroupReq) ProtoMessage() {}
func (*GetActiveGroupReq) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{16}
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{18}
}
func (m *GetActiveGroupReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetActiveGroupReq.Unmarshal(m, b)
@ -1052,7 +1160,7 @@ func (m *GroupResp) Reset() { *m = GroupResp{} }
func (m *GroupResp) String() string { return proto.CompactTextString(m) }
func (*GroupResp) ProtoMessage() {}
func (*GroupResp) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{17}
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{19}
}
func (m *GroupResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupResp.Unmarshal(m, b)
@ -1112,7 +1220,7 @@ func (m *GetActiveGroupResp) Reset() { *m = GetActiveGroupResp{} }
func (m *GetActiveGroupResp) String() string { return proto.CompactTextString(m) }
func (*GetActiveGroupResp) ProtoMessage() {}
func (*GetActiveGroupResp) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{18}
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{20}
}
func (m *GetActiveGroupResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetActiveGroupResp.Unmarshal(m, b)
@ -1158,7 +1266,7 @@ func (m *DateNumList) Reset() { *m = DateNumList{} }
func (m *DateNumList) String() string { return proto.CompactTextString(m) }
func (*DateNumList) ProtoMessage() {}
func (*DateNumList) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{19}
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{21}
}
func (m *DateNumList) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DateNumList.Unmarshal(m, b)
@ -1204,7 +1312,7 @@ func (m *GetMessageStatisticsReq) Reset() { *m = GetMessageStatisticsReq
func (m *GetMessageStatisticsReq) String() string { return proto.CompactTextString(m) }
func (*GetMessageStatisticsReq) ProtoMessage() {}
func (*GetMessageStatisticsReq) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{20}
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{22}
}
func (m *GetMessageStatisticsReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetMessageStatisticsReq.Unmarshal(m, b)
@ -1253,7 +1361,7 @@ func (m *GetMessageStatisticsResp) Reset() { *m = GetMessageStatisticsRe
func (m *GetMessageStatisticsResp) String() string { return proto.CompactTextString(m) }
func (*GetMessageStatisticsResp) ProtoMessage() {}
func (*GetMessageStatisticsResp) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{21}
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{23}
}
func (m *GetMessageStatisticsResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetMessageStatisticsResp.Unmarshal(m, b)
@ -1320,7 +1428,7 @@ func (m *GetGroupStatisticsReq) Reset() { *m = GetGroupStatisticsReq{} }
func (m *GetGroupStatisticsReq) String() string { return proto.CompactTextString(m) }
func (*GetGroupStatisticsReq) ProtoMessage() {}
func (*GetGroupStatisticsReq) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{22}
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{24}
}
func (m *GetGroupStatisticsReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupStatisticsReq.Unmarshal(m, b)
@ -1369,7 +1477,7 @@ func (m *GetGroupStatisticsResp) Reset() { *m = GetGroupStatisticsResp{}
func (m *GetGroupStatisticsResp) String() string { return proto.CompactTextString(m) }
func (*GetGroupStatisticsResp) ProtoMessage() {}
func (*GetGroupStatisticsResp) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{23}
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{25}
}
func (m *GetGroupStatisticsResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupStatisticsResp.Unmarshal(m, b)
@ -1436,7 +1544,7 @@ func (m *GetUserStatisticsReq) Reset() { *m = GetUserStatisticsReq{} }
func (m *GetUserStatisticsReq) String() string { return proto.CompactTextString(m) }
func (*GetUserStatisticsReq) ProtoMessage() {}
func (*GetUserStatisticsReq) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{24}
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{26}
}
func (m *GetUserStatisticsReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUserStatisticsReq.Unmarshal(m, b)
@ -1487,7 +1595,7 @@ func (m *GetUserStatisticsResp) Reset() { *m = GetUserStatisticsResp{} }
func (m *GetUserStatisticsResp) String() string { return proto.CompactTextString(m) }
func (*GetUserStatisticsResp) ProtoMessage() {}
func (*GetUserStatisticsResp) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{25}
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{27}
}
func (m *GetUserStatisticsResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUserStatisticsResp.Unmarshal(m, b)
@ -1569,7 +1677,7 @@ func (m *GenerateInvitationCodeReq) Reset() { *m = GenerateInvitationCod
func (m *GenerateInvitationCodeReq) String() string { return proto.CompactTextString(m) }
func (*GenerateInvitationCodeReq) ProtoMessage() {}
func (*GenerateInvitationCodeReq) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{26}
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{28}
}
func (m *GenerateInvitationCodeReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GenerateInvitationCodeReq.Unmarshal(m, b)
@ -1621,7 +1729,7 @@ func (m *GenerateInvitationCodeResp) Reset() { *m = GenerateInvitationCo
func (m *GenerateInvitationCodeResp) String() string { return proto.CompactTextString(m) }
func (*GenerateInvitationCodeResp) ProtoMessage() {}
func (*GenerateInvitationCodeResp) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{27}
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{29}
}
func (m *GenerateInvitationCodeResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GenerateInvitationCodeResp.Unmarshal(m, b)
@ -1662,7 +1770,7 @@ func (m *GetInvitationCodesReq) Reset() { *m = GetInvitationCodesReq{} }
func (m *GetInvitationCodesReq) String() string { return proto.CompactTextString(m) }
func (*GetInvitationCodesReq) ProtoMessage() {}
func (*GetInvitationCodesReq) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{28}
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{30}
}
func (m *GetInvitationCodesReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetInvitationCodesReq.Unmarshal(m, b)
@ -1725,7 +1833,7 @@ func (m *InvitationCode) Reset() { *m = InvitationCode{} }
func (m *InvitationCode) String() string { return proto.CompactTextString(m) }
func (*InvitationCode) ProtoMessage() {}
func (*InvitationCode) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{29}
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{31}
}
func (m *InvitationCode) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_InvitationCode.Unmarshal(m, b)
@ -1793,7 +1901,7 @@ func (m *GetInvitationCodesResp) Reset() { *m = GetInvitationCodesResp{}
func (m *GetInvitationCodesResp) String() string { return proto.CompactTextString(m) }
func (*GetInvitationCodesResp) ProtoMessage() {}
func (*GetInvitationCodesResp) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{30}
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{32}
}
func (m *GetInvitationCodesResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetInvitationCodesResp.Unmarshal(m, b)
@ -1846,7 +1954,7 @@ func (m *QueryIPRegisterReq) Reset() { *m = QueryIPRegisterReq{} }
func (m *QueryIPRegisterReq) String() string { return proto.CompactTextString(m) }
func (*QueryIPRegisterReq) ProtoMessage() {}
func (*QueryIPRegisterReq) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{31}
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{33}
}
func (m *QueryIPRegisterReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_QueryIPRegisterReq.Unmarshal(m, b)
@ -1895,7 +2003,7 @@ func (m *QueryIPRegisterResp) Reset() { *m = QueryIPRegisterResp{} }
func (m *QueryIPRegisterResp) String() string { return proto.CompactTextString(m) }
func (*QueryIPRegisterResp) ProtoMessage() {}
func (*QueryIPRegisterResp) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{32}
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{34}
}
func (m *QueryIPRegisterResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_QueryIPRegisterResp.Unmarshal(m, b)
@ -1963,7 +2071,7 @@ func (m *AddIPLimitReq) Reset() { *m = AddIPLimitReq{} }
func (m *AddIPLimitReq) String() string { return proto.CompactTextString(m) }
func (*AddIPLimitReq) ProtoMessage() {}
func (*AddIPLimitReq) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{33}
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{35}
}
func (m *AddIPLimitReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AddIPLimitReq.Unmarshal(m, b)
@ -2015,7 +2123,7 @@ func (m *AddIPLimitResp) Reset() { *m = AddIPLimitResp{} }
func (m *AddIPLimitResp) String() string { return proto.CompactTextString(m) }
func (*AddIPLimitResp) ProtoMessage() {}
func (*AddIPLimitResp) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{34}
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{36}
}
func (m *AddIPLimitResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AddIPLimitResp.Unmarshal(m, b)
@ -2054,7 +2162,7 @@ func (m *RemoveIPLimitReq) Reset() { *m = RemoveIPLimitReq{} }
func (m *RemoveIPLimitReq) String() string { return proto.CompactTextString(m) }
func (*RemoveIPLimitReq) ProtoMessage() {}
func (*RemoveIPLimitReq) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{35}
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{37}
}
func (m *RemoveIPLimitReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RemoveIPLimitReq.Unmarshal(m, b)
@ -2099,7 +2207,7 @@ func (m *RemoveIPLimitResp) Reset() { *m = RemoveIPLimitResp{} }
func (m *RemoveIPLimitResp) String() string { return proto.CompactTextString(m) }
func (*RemoveIPLimitResp) ProtoMessage() {}
func (*RemoveIPLimitResp) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{36}
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{38}
}
func (m *RemoveIPLimitResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RemoveIPLimitResp.Unmarshal(m, b)
@ -2138,7 +2246,7 @@ func (m *QueryUserIDIPLimitLoginReq) Reset() { *m = QueryUserIDIPLimitLo
func (m *QueryUserIDIPLimitLoginReq) String() string { return proto.CompactTextString(m) }
func (*QueryUserIDIPLimitLoginReq) ProtoMessage() {}
func (*QueryUserIDIPLimitLoginReq) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{37}
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{39}
}
func (m *QueryUserIDIPLimitLoginReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_QueryUserIDIPLimitLoginReq.Unmarshal(m, b)
@ -2185,7 +2293,7 @@ func (m *UserIPLimit) Reset() { *m = UserIPLimit{} }
func (m *UserIPLimit) String() string { return proto.CompactTextString(m) }
func (*UserIPLimit) ProtoMessage() {}
func (*UserIPLimit) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{38}
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{40}
}
func (m *UserIPLimit) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UserIPLimit.Unmarshal(m, b)
@ -2238,7 +2346,7 @@ func (m *QueryUserIDIPLimitLoginResp) Reset() { *m = QueryUserIDIPLimitL
func (m *QueryUserIDIPLimitLoginResp) String() string { return proto.CompactTextString(m) }
func (*QueryUserIDIPLimitLoginResp) ProtoMessage() {}
func (*QueryUserIDIPLimitLoginResp) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{39}
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{41}
}
func (m *QueryUserIDIPLimitLoginResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_QueryUserIDIPLimitLoginResp.Unmarshal(m, b)
@ -2285,7 +2393,7 @@ func (m *AddUserIPLimitLoginReq) Reset() { *m = AddUserIPLimitLoginReq{}
func (m *AddUserIPLimitLoginReq) String() string { return proto.CompactTextString(m) }
func (*AddUserIPLimitLoginReq) ProtoMessage() {}
func (*AddUserIPLimitLoginReq) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{40}
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{42}
}
func (m *AddUserIPLimitLoginReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AddUserIPLimitLoginReq.Unmarshal(m, b)
@ -2337,7 +2445,7 @@ func (m *AddUserIPLimitLoginResp) Reset() { *m = AddUserIPLimitLoginResp
func (m *AddUserIPLimitLoginResp) String() string { return proto.CompactTextString(m) }
func (*AddUserIPLimitLoginResp) ProtoMessage() {}
func (*AddUserIPLimitLoginResp) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{41}
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{43}
}
func (m *AddUserIPLimitLoginResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AddUserIPLimitLoginResp.Unmarshal(m, b)
@ -2377,7 +2485,7 @@ func (m *RemoveUserIPLimitReq) Reset() { *m = RemoveUserIPLimitReq{} }
func (m *RemoveUserIPLimitReq) String() string { return proto.CompactTextString(m) }
func (*RemoveUserIPLimitReq) ProtoMessage() {}
func (*RemoveUserIPLimitReq) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{42}
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{44}
}
func (m *RemoveUserIPLimitReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RemoveUserIPLimitReq.Unmarshal(m, b)
@ -2429,7 +2537,7 @@ func (m *RemoveUserIPLimitResp) Reset() { *m = RemoveUserIPLimitResp{} }
func (m *RemoveUserIPLimitResp) String() string { return proto.CompactTextString(m) }
func (*RemoveUserIPLimitResp) ProtoMessage() {}
func (*RemoveUserIPLimitResp) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{43}
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{45}
}
func (m *RemoveUserIPLimitResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RemoveUserIPLimitResp.Unmarshal(m, b)
@ -2467,7 +2575,7 @@ func (m *GetClientInitConfigReq) Reset() { *m = GetClientInitConfigReq{}
func (m *GetClientInitConfigReq) String() string { return proto.CompactTextString(m) }
func (*GetClientInitConfigReq) ProtoMessage() {}
func (*GetClientInitConfigReq) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{44}
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{46}
}
func (m *GetClientInitConfigReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetClientInitConfigReq.Unmarshal(m, b)
@ -2505,7 +2613,7 @@ func (m *GetClientInitConfigResp) Reset() { *m = GetClientInitConfigResp
func (m *GetClientInitConfigResp) String() string { return proto.CompactTextString(m) }
func (*GetClientInitConfigResp) ProtoMessage() {}
func (*GetClientInitConfigResp) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{45}
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{47}
}
func (m *GetClientInitConfigResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetClientInitConfigResp.Unmarshal(m, b)
@ -2544,7 +2652,7 @@ func (m *SetClientInitConfigReq) Reset() { *m = SetClientInitConfigReq{}
func (m *SetClientInitConfigReq) String() string { return proto.CompactTextString(m) }
func (*SetClientInitConfigReq) ProtoMessage() {}
func (*SetClientInitConfigReq) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{46}
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{48}
}
func (m *SetClientInitConfigReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SetClientInitConfigReq.Unmarshal(m, b)
@ -2589,7 +2697,7 @@ func (m *SetClientInitConfigResp) Reset() { *m = SetClientInitConfigResp
func (m *SetClientInitConfigResp) String() string { return proto.CompactTextString(m) }
func (*SetClientInitConfigResp) ProtoMessage() {}
func (*SetClientInitConfigResp) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{47}
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{49}
}
func (m *SetClientInitConfigResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SetClientInitConfigResp.Unmarshal(m, b)
@ -2631,7 +2739,7 @@ func (m *GetUserFriendsReq) Reset() { *m = GetUserFriendsReq{} }
func (m *GetUserFriendsReq) String() string { return proto.CompactTextString(m) }
func (*GetUserFriendsReq) ProtoMessage() {}
func (*GetUserFriendsReq) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{48}
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{50}
}
func (m *GetUserFriendsReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUserFriendsReq.Unmarshal(m, b)
@ -2700,7 +2808,7 @@ func (m *GetUserFriendsResp) Reset() { *m = GetUserFriendsResp{} }
func (m *GetUserFriendsResp) String() string { return proto.CompactTextString(m) }
func (*GetUserFriendsResp) ProtoMessage() {}
func (*GetUserFriendsResp) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{49}
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{51}
}
func (m *GetUserFriendsResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUserFriendsResp.Unmarshal(m, b)
@ -2761,7 +2869,7 @@ func (m *GetUserIDByEmailAndPhoneNumberReq) Reset() { *m = GetUserIDByEm
func (m *GetUserIDByEmailAndPhoneNumberReq) String() string { return proto.CompactTextString(m) }
func (*GetUserIDByEmailAndPhoneNumberReq) ProtoMessage() {}
func (*GetUserIDByEmailAndPhoneNumberReq) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{50}
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{52}
}
func (m *GetUserIDByEmailAndPhoneNumberReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUserIDByEmailAndPhoneNumberReq.Unmarshal(m, b)
@ -2814,7 +2922,7 @@ func (m *GetUserIDByEmailAndPhoneNumberResp) Reset() { *m = GetUserIDByE
func (m *GetUserIDByEmailAndPhoneNumberResp) String() string { return proto.CompactTextString(m) }
func (*GetUserIDByEmailAndPhoneNumberResp) ProtoMessage() {}
func (*GetUserIDByEmailAndPhoneNumberResp) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{51}
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{53}
}
func (m *GetUserIDByEmailAndPhoneNumberResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUserIDByEmailAndPhoneNumberResp.Unmarshal(m, b)
@ -2852,6 +2960,8 @@ func init() {
proto.RegisterType((*CommonResp)(nil), "admin_cms.CommonResp")
proto.RegisterType((*AdminLoginReq)(nil), "admin_cms.AdminLoginReq")
proto.RegisterType((*AdminLoginResp)(nil), "admin_cms.AdminLoginResp")
proto.RegisterType((*GetUserTokenReq)(nil), "admin_cms.GetUserTokenReq")
proto.RegisterType((*GetUserTokenResp)(nil), "admin_cms.GetUserTokenResp")
proto.RegisterType((*AddUserRegisterAddFriendIDListReq)(nil), "admin_cms.AddUserRegisterAddFriendIDListReq")
proto.RegisterType((*AddUserRegisterAddFriendIDListResp)(nil), "admin_cms.AddUserRegisterAddFriendIDListResp")
proto.RegisterType((*ReduceUserRegisterAddFriendIDListReq)(nil), "admin_cms.ReduceUserRegisterAddFriendIDListReq")
@ -2936,6 +3046,7 @@ type AdminCMSClient interface {
SetClientInitConfig(ctx context.Context, in *SetClientInitConfigReq, opts ...grpc.CallOption) (*SetClientInitConfigResp, error)
GetUserFriends(ctx context.Context, in *GetUserFriendsReq, opts ...grpc.CallOption) (*GetUserFriendsResp, error)
GetUserIDByEmailAndPhoneNumber(ctx context.Context, in *GetUserIDByEmailAndPhoneNumberReq, opts ...grpc.CallOption) (*GetUserIDByEmailAndPhoneNumberResp, error)
GetUserToken(ctx context.Context, in *GetUserTokenReq, opts ...grpc.CallOption) (*GetUserTokenResp, error)
}
type adminCMSClient struct {
@ -3144,6 +3255,15 @@ func (c *adminCMSClient) GetUserIDByEmailAndPhoneNumber(ctx context.Context, in
return out, nil
}
func (c *adminCMSClient) GetUserToken(ctx context.Context, in *GetUserTokenReq, opts ...grpc.CallOption) (*GetUserTokenResp, error) {
out := new(GetUserTokenResp)
err := grpc.Invoke(ctx, "/admin_cms.adminCMS/GetUserToken", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// Server API for AdminCMS service
type AdminCMSServer interface {
@ -3169,6 +3289,7 @@ type AdminCMSServer interface {
SetClientInitConfig(context.Context, *SetClientInitConfigReq) (*SetClientInitConfigResp, error)
GetUserFriends(context.Context, *GetUserFriendsReq) (*GetUserFriendsResp, error)
GetUserIDByEmailAndPhoneNumber(context.Context, *GetUserIDByEmailAndPhoneNumberReq) (*GetUserIDByEmailAndPhoneNumberResp, error)
GetUserToken(context.Context, *GetUserTokenReq) (*GetUserTokenResp, error)
}
func RegisterAdminCMSServer(s *grpc.Server, srv AdminCMSServer) {
@ -3571,6 +3692,24 @@ func _AdminCMS_GetUserIDByEmailAndPhoneNumber_Handler(srv interface{}, ctx conte
return interceptor(ctx, in, info, handler)
}
func _AdminCMS_GetUserToken_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetUserTokenReq)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(AdminCMSServer).GetUserToken(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/admin_cms.adminCMS/GetUserToken",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(AdminCMSServer).GetUserToken(ctx, req.(*GetUserTokenReq))
}
return interceptor(ctx, in, info, handler)
}
var _AdminCMS_serviceDesc = grpc.ServiceDesc{
ServiceName: "admin_cms.adminCMS",
HandlerType: (*AdminCMSServer)(nil),
@ -3663,155 +3802,163 @@ var _AdminCMS_serviceDesc = grpc.ServiceDesc{
MethodName: "GetUserIDByEmailAndPhoneNumber",
Handler: _AdminCMS_GetUserIDByEmailAndPhoneNumber_Handler,
},
{
MethodName: "GetUserToken",
Handler: _AdminCMS_GetUserToken_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "admin_cms/admin_cms.proto",
}
func init() {
proto.RegisterFile("admin_cms/admin_cms.proto", fileDescriptor_admin_cms_ab5a35fab6587b8a)
proto.RegisterFile("admin_cms/admin_cms.proto", fileDescriptor_admin_cms_49bc09b1772ecee1)
}
var fileDescriptor_admin_cms_ab5a35fab6587b8a = []byte{
// 2240 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x1a, 0x4d, 0x6f, 0xdb, 0xc8,
0x15, 0xd4, 0x87, 0x3f, 0x9e, 0xe3, 0xaf, 0xb1, 0xe3, 0xc8, 0xcc, 0x6e, 0x6a, 0xb3, 0xf1, 0xd6,
0x2d, 0x36, 0x76, 0xe1, 0xa0, 0x97, 0x2d, 0x90, 0xc2, 0xb1, 0x62, 0x55, 0x81, 0xed, 0xa8, 0x54,
0xb2, 0x40, 0xdb, 0xc5, 0xba, 0x8c, 0x34, 0x56, 0x08, 0x5b, 0xe4, 0x84, 0x43, 0x79, 0x13, 0x2c,
0xf6, 0xba, 0x97, 0x5e, 0x0a, 0x14, 0xc8, 0xa1, 0xe7, 0xde, 0x7a, 0xe8, 0xa1, 0x40, 0x8f, 0x05,
0xfa, 0x3b, 0x7a, 0x28, 0x8a, 0xfe, 0x8a, 0xde, 0x8a, 0x99, 0xe1, 0xc7, 0xcc, 0x90, 0x92, 0x18,
0x3a, 0xc8, 0x4d, 0xef, 0xcd, 0x9b, 0xf7, 0xe6, 0x7d, 0xce, 0x9b, 0x47, 0xc1, 0xa6, 0xd3, 0x1f,
0xba, 0xde, 0x79, 0x6f, 0x48, 0xf7, 0x93, 0x5f, 0x7b, 0x24, 0xf0, 0x43, 0x1f, 0xcd, 0x27, 0x08,
0x73, 0xf7, 0x19, 0xc1, 0xde, 0x83, 0xf6, 0xe9, 0x83, 0x2e, 0x0e, 0xae, 0x71, 0xb0, 0x4f, 0x2e,
0x07, 0xfb, 0x9c, 0x68, 0x9f, 0xf6, 0x2f, 0xcf, 0xbf, 0xa1, 0xfb, 0xdf, 0x44, 0x9b, 0xac, 0x47,
0x00, 0x47, 0xfe, 0x70, 0xe8, 0x7b, 0x36, 0xa6, 0x04, 0x35, 0x60, 0x16, 0x07, 0xc1, 0x91, 0xdf,
0xc7, 0x0d, 0x63, 0xcb, 0xd8, 0xad, 0xdb, 0x31, 0x88, 0x36, 0x60, 0x06, 0x07, 0xc1, 0x29, 0x1d,
0x34, 0x2a, 0x5b, 0xc6, 0xee, 0xbc, 0x1d, 0x41, 0x56, 0x0f, 0x16, 0x0f, 0x99, 0xd8, 0x13, 0x7f,
0xe0, 0x7a, 0x36, 0x7e, 0x8d, 0xb6, 0x60, 0xc1, 0x27, 0x38, 0x70, 0x42, 0xd7, 0xf7, 0xda, 0x4d,
0xce, 0x66, 0xde, 0x96, 0x51, 0x4c, 0x08, 0x3f, 0x69, 0xbb, 0x19, 0xf1, 0x8a, 0x41, 0x26, 0x84,
0xe2, 0x5e, 0x80, 0xc3, 0x46, 0x55, 0x08, 0x11, 0x90, 0xf5, 0x47, 0x03, 0x96, 0x64, 0x29, 0x94,
0xa0, 0x75, 0xa8, 0x87, 0xfe, 0x25, 0xf6, 0x22, 0x01, 0x02, 0x40, 0x26, 0xcc, 0x8d, 0x28, 0x0e,
0xce, 0x9c, 0x21, 0x8e, 0x78, 0x27, 0x30, 0x13, 0x7b, 0xe1, 0xf4, 0xf0, 0x0b, 0xfb, 0x24, 0xe2,
0x1e, 0x83, 0xe8, 0x67, 0x00, 0xbd, 0xc4, 0x06, 0x8d, 0xda, 0x96, 0xb1, 0xbb, 0x70, 0x70, 0x7b,
0x2f, 0x35, 0x6f, 0x6a, 0x20, 0x5b, 0x22, 0xb4, 0x30, 0x6c, 0x1f, 0xf6, 0xfb, 0x2f, 0x28, 0x0e,
0x6c, 0x3c, 0x70, 0x69, 0x88, 0x83, 0xc3, 0x7e, 0xff, 0x38, 0x70, 0xb1, 0xd7, 0x6f, 0x37, 0x4f,
0x5c, 0x1a, 0x16, 0x33, 0xc7, 0x3d, 0x00, 0x76, 0x46, 0xb1, 0xa5, 0x51, 0xd9, 0xaa, 0xee, 0xce,
0xdb, 0x12, 0xc6, 0xfa, 0x2d, 0x58, 0xd3, 0xc4, 0x50, 0xa2, 0xe9, 0x60, 0x14, 0xd5, 0xe1, 0x7b,
0x03, 0xee, 0xdb, 0xb8, 0x3f, 0xea, 0xe1, 0x1b, 0xeb, 0xf1, 0x09, 0xcc, 0x27, 0x20, 0x37, 0x7e,
0xdd, 0x4e, 0x11, 0x9a, 0x96, 0xd5, 0x8c, 0x96, 0x5f, 0xc3, 0x4e, 0x81, 0x73, 0x94, 0x57, 0xf4,
0xf7, 0x06, 0x6c, 0xb7, 0x70, 0x78, 0x63, 0x2d, 0x9b, 0x00, 0xc4, 0x19, 0xb8, 0x5e, 0xaa, 0xe6,
0xc2, 0xc1, 0xfd, 0x3d, 0xca, 0xd3, 0xec, 0xdc, 0x21, 0xee, 0x39, 0x71, 0x02, 0x67, 0x48, 0xf7,
0x6c, 0xfc, 0x7a, 0x84, 0x69, 0xd8, 0x49, 0x68, 0x6d, 0x69, 0x9f, 0xf5, 0x5f, 0x03, 0xac, 0x69,
0xa7, 0xa1, 0x04, 0xfd, 0x02, 0x6e, 0x71, 0x13, 0x79, 0x17, 0x3e, 0x37, 0x9b, 0xb1, 0x55, 0xdd,
0x5d, 0x38, 0xb8, 0x9b, 0x23, 0xee, 0x45, 0x44, 0x66, 0x2b, 0x1b, 0xd0, 0x93, 0x9c, 0xd3, 0xee,
0xe4, 0x9e, 0x96, 0x12, 0xdf, 0xa3, 0x38, 0xff, 0xb8, 0x9a, 0xcd, 0xab, 0x45, 0x6d, 0xfe, 0x8f,
0x0a, 0x2c, 0xb5, 0x70, 0x78, 0xf4, 0xca, 0x09, 0x4f, 0xfc, 0x01, 0x65, 0x06, 0x6e, 0xc0, 0x6c,
0xcf, 0xf7, 0x42, 0xec, 0x85, 0x91, 0x71, 0x63, 0x50, 0xe4, 0x3e, 0xd3, 0x3e, 0x2e, 0x30, 0x02,
0x62, 0xf8, 0x00, 0xf7, 0xae, 0xdb, 0xcd, 0xb8, 0x26, 0x08, 0x88, 0xa5, 0x3a, 0xa3, 0x78, 0xee,
0x0e, 0x31, 0x4f, 0xd9, 0x79, 0x3b, 0x81, 0x99, 0x1b, 0x29, 0xa6, 0xd4, 0xf5, 0xbd, 0xe7, 0x6f,
0x09, 0x6e, 0xd4, 0x79, 0x30, 0xca, 0x28, 0x46, 0x11, 0x09, 0xe6, 0x14, 0x33, 0x82, 0x42, 0x42,
0x69, 0x8e, 0x9e, 0x2d, 0xe7, 0x68, 0x3d, 0xa0, 0xe6, 0xb2, 0x01, 0x65, 0xc2, 0x9c, 0x4f, 0xb8,
0xfb, 0x9a, 0x8d, 0x79, 0xa1, 0x47, 0x0c, 0x5b, 0x7f, 0xad, 0xc1, 0x6c, 0x64, 0x3d, 0xa1, 0x13,
0x13, 0x7e, 0x4a, 0x07, 0x69, 0x68, 0x4a, 0x28, 0xae, 0xd3, 0x95, 0x8b, 0xbd, 0x50, 0x50, 0x08,
0x33, 0xca, 0x28, 0xc9, 0xc6, 0xd5, 0x31, 0x36, 0xae, 0x29, 0x36, 0x6e, 0xc0, 0xec, 0x20, 0xf0,
0x47, 0xa4, 0xdd, 0xe4, 0x36, 0x9c, 0xb7, 0x63, 0x10, 0x59, 0x70, 0x8b, 0xd1, 0x9c, 0xb9, 0xbd,
0x4b, 0x8f, 0x15, 0xdb, 0x19, 0xbe, 0xac, 0xe0, 0xd0, 0x4f, 0x60, 0x85, 0xf1, 0xc7, 0x41, 0xe7,
0xca, 0x09, 0x2f, 0xfc, 0x60, 0xd8, 0x6e, 0x72, 0x3b, 0xd6, 0xed, 0x0c, 0x1e, 0x7d, 0x06, 0x4b,
0x02, 0x97, 0x70, 0x14, 0xa6, 0xd2, 0xb0, 0xe8, 0x3e, 0x2c, 0x0a, 0xcc, 0x71, 0x54, 0xca, 0x85,
0xc9, 0x54, 0x24, 0x2b, 0x45, 0xfc, 0xa0, 0xfc, 0x1e, 0x00, 0x4e, 0x91, 0x22, 0xf4, 0xe8, 0x58,
0xc8, 0x46, 0x47, 0x03, 0x66, 0x87, 0x74, 0x70, 0x1c, 0xf8, 0xc3, 0xc6, 0x2d, 0x71, 0x0d, 0x46,
0xa0, 0x1e, 0x37, 0x8b, 0xd9, 0xb8, 0x91, 0x22, 0x7c, 0x29, 0x1b, 0xe1, 0xa1, 0x13, 0x8e, 0x68,
0x63, 0x99, 0x6f, 0x8b, 0x20, 0x25, 0x92, 0x57, 0xb6, 0x8c, 0xdd, 0xaa, 0x14, 0xc9, 0xf7, 0x00,
0x7a, 0x01, 0x76, 0x42, 0xcc, 0x57, 0x57, 0xf9, 0xaa, 0x84, 0x41, 0x4b, 0x50, 0xc1, 0x6f, 0x1a,
0x88, 0x0b, 0xaa, 0xe0, 0x37, 0xd6, 0x7f, 0x0c, 0x58, 0x56, 0x52, 0x8e, 0x12, 0xb4, 0x07, 0x73,
0xbd, 0x08, 0x8e, 0x2a, 0x08, 0x92, 0x73, 0x57, 0x2c, 0xd9, 0x09, 0xcd, 0x87, 0x2a, 0x1a, 0xcc,
0x54, 0x11, 0xcb, 0xb3, 0xd1, 0x90, 0x47, 0x1c, 0x33, 0x55, 0x8a, 0x2a, 0x7b, 0xef, 0x3e, 0x84,
0xc5, 0x6e, 0xe8, 0x84, 0x2e, 0x0d, 0xdd, 0x1e, 0x2f, 0x2a, 0x08, 0x6a, 0x17, 0xcc, 0x57, 0x22,
0x27, 0xf8, 0x6f, 0x66, 0x98, 0xd0, 0x8f, 0x72, 0xa0, 0x12, 0xfa, 0x56, 0x08, 0x2b, 0x2d, 0x1c,
0x1e, 0xf6, 0x42, 0xf7, 0x3a, 0xba, 0x62, 0x5e, 0xa3, 0x47, 0xb0, 0x48, 0x65, 0x46, 0xd1, 0x6d,
0xd2, 0x90, 0x8e, 0xa0, 0x08, 0xb2, 0x55, 0x72, 0x3d, 0xb9, 0x2b, 0x99, 0xe4, 0xb6, 0xbe, 0x86,
0x39, 0x21, 0x8c, 0x12, 0xe6, 0x66, 0xcf, 0xed, 0x5d, 0xf2, 0x98, 0x14, 0x27, 0x4d, 0x60, 0x16,
0x1a, 0xe2, 0x2e, 0x8c, 0x8b, 0x9f, 0x80, 0x98, 0xfb, 0x87, 0x98, 0x52, 0x67, 0x80, 0x53, 0x13,
0x4a, 0x18, 0x6b, 0x04, 0xab, 0x9a, 0x56, 0x94, 0xa0, 0x1f, 0x43, 0x9d, 0xfd, 0x8e, 0x9d, 0xbd,
0x26, 0xa9, 0x13, 0xd3, 0xd8, 0x82, 0x42, 0xf3, 0x40, 0xa5, 0xa8, 0x07, 0x64, 0xb1, 0x2d, 0x96,
0x57, 0x1f, 0xc7, 0x9a, 0x7f, 0x32, 0x60, 0x3e, 0x12, 0x47, 0x09, 0x4b, 0xf2, 0x56, 0x92, 0xe4,
0xc2, 0xa0, 0x29, 0x82, 0xa5, 0x21, 0x07, 0xda, 0xfd, 0xb8, 0xc9, 0x8c, 0x40, 0x66, 0xd3, 0xd3,
0x8c, 0x4d, 0x53, 0x4c, 0xd9, 0xa8, 0x7c, 0x0b, 0x48, 0xb7, 0x09, 0x25, 0xe8, 0x73, 0x98, 0xe1,
0x40, 0xec, 0x8c, 0x75, 0x89, 0x51, 0x42, 0x65, 0x47, 0x34, 0x65, 0xdd, 0xf1, 0x10, 0x16, 0x9a,
0x4e, 0xc8, 0x0e, 0xcf, 0x2f, 0x7d, 0x04, 0x35, 0x06, 0xc6, 0xe9, 0xc0, 0x7e, 0xa3, 0x15, 0xa8,
0x32, 0x6d, 0x45, 0x5b, 0xc6, 0x7e, 0x5a, 0xdf, 0xc2, 0x9d, 0x16, 0x0e, 0x23, 0xbd, 0xd5, 0x7c,
0x7a, 0xa4, 0x25, 0xd8, 0x74, 0x4f, 0x76, 0x75, 0x4f, 0x3e, 0xcb, 0x7a, 0x52, 0x42, 0x59, 0xff,
0xac, 0x40, 0x23, 0x5f, 0x3a, 0xb7, 0xd9, 0x6a, 0x27, 0x70, 0xaf, 0x9d, 0x10, 0x4b, 0x7e, 0x12,
0xcf, 0x91, 0xec, 0x02, 0xda, 0x85, 0x65, 0x6e, 0x3d, 0x89, 0x56, 0x68, 0xa9, 0xa3, 0xd1, 0x09,
0xdc, 0xce, 0x6c, 0x4f, 0xba, 0xd1, 0x85, 0x83, 0x0d, 0x49, 0x3d, 0xc9, 0x9c, 0x76, 0xfe, 0x26,
0xf4, 0x4b, 0x58, 0xd3, 0x04, 0x70, 0x5e, 0xb5, 0x89, 0xbc, 0xf2, 0xb6, 0x68, 0x5e, 0xaf, 0x17,
0x0f, 0xb8, 0xdb, 0x2d, 0x1c, 0x72, 0x86, 0x1f, 0xdb, 0x7d, 0x7f, 0xab, 0xc0, 0x46, 0x9e, 0x6c,
0x4a, 0xd8, 0xa5, 0xdf, 0xf6, 0xd8, 0x05, 0x45, 0x45, 0x16, 0xa4, 0xbe, 0xcb, 0xe0, 0xd9, 0x65,
0xfe, 0xdc, 0x0f, 0x9d, 0xab, 0x84, 0x50, 0x38, 0x4e, 0x45, 0xa2, 0xa7, 0xb0, 0xae, 0xef, 0x2c,
0xe0, 0xb5, 0xdc, 0x3d, 0xa8, 0x09, 0xab, 0x0a, 0xf3, 0x02, 0x2e, 0xcb, 0x6e, 0x28, 0xeb, 0xb0,
0x37, 0xb0, 0x1e, 0xf5, 0xfc, 0x1f, 0xdb, 0x5f, 0xef, 0xaa, 0x3c, 0x56, 0x74, 0xd1, 0x94, 0xb0,
0xec, 0x89, 0x0d, 0xc5, 0x56, 0x53, 0x6f, 0xe9, 0x68, 0xe6, 0xac, 0xf4, 0x9e, 0x91, 0x9c, 0xa5,
0x20, 0x59, 0x5f, 0xc8, 0xed, 0x15, 0x13, 0x89, 0xf2, 0xaa, 0xe0, 0x58, 0xe6, 0x68, 0xcc, 0x8b,
0x64, 0x4e, 0xce, 0x16, 0xe6, 0x4e, 0x45, 0x3c, 0xe7, 0x53, 0x9f, 0xec, 0xce, 0xcc, 0x06, 0xf4,
0x18, 0x56, 0xe4, 0xf3, 0x71, 0x26, 0x33, 0x13, 0x99, 0x64, 0xe8, 0xb5, 0x90, 0x98, 0x2d, 0x1a,
0x12, 0xaf, 0x61, 0xb3, 0x85, 0x3d, 0xe6, 0x28, 0xdc, 0xf6, 0xae, 0xdd, 0x90, 0x3b, 0xec, 0xc8,
0xef, 0xe3, 0xc2, 0x93, 0x94, 0x9e, 0xdf, 0xc7, 0x27, 0x38, 0x7e, 0x70, 0xc7, 0x60, 0xbc, 0x92,
0xba, 0x20, 0x06, 0xad, 0x2e, 0x98, 0xe3, 0x44, 0x96, 0x7f, 0x5d, 0xff, 0xc5, 0xe0, 0x01, 0xa6,
0x32, 0xa4, 0xc5, 0x94, 0x40, 0x50, 0x63, 0x67, 0x8b, 0xe2, 0x96, 0xff, 0x96, 0x5a, 0xe5, 0xaa,
0xd2, 0x2a, 0xab, 0x8f, 0xb2, 0x5a, 0xc9, 0xd7, 0xf7, 0x9f, 0x0d, 0x58, 0x72, 0x95, 0xa3, 0xb2,
0xf7, 0x87, 0x8a, 0x89, 0x4e, 0xaa, 0xd3, 0xa9, 0xfd, 0xb8, 0x30, 0xba, 0xdc, 0x8f, 0x9b, 0x30,
0x77, 0xe5, 0xd0, 0x90, 0xaf, 0x8a, 0xa3, 0x27, 0xb0, 0xd4, 0xe4, 0xd5, 0x94, 0x26, 0x2f, 0x55,
0xb6, 0x2e, 0x2b, 0x6b, 0xfd, 0xcb, 0xe0, 0x55, 0x36, 0x63, 0x54, 0x4a, 0xd0, 0x11, 0x2c, 0xab,
0x07, 0x8b, 0xfb, 0x8b, 0x4d, 0xc9, 0x57, 0x2a, 0x85, 0xad, 0xef, 0x60, 0x7d, 0x7e, 0xa7, 0x6c,
0x9f, 0xdf, 0xb9, 0xf1, 0x70, 0xe0, 0x18, 0xd0, 0xaf, 0x46, 0x38, 0x78, 0xdb, 0xee, 0xc4, 0x13,
0x90, 0x62, 0xe1, 0xb2, 0x04, 0x95, 0x76, 0x27, 0x6e, 0xec, 0xdb, 0x1d, 0xeb, 0xef, 0x06, 0xac,
0x65, 0x18, 0x51, 0x12, 0xd1, 0x19, 0x31, 0x1d, 0xe3, 0x1c, 0xaf, 0xa7, 0xd5, 0x4b, 0x46, 0x31,
0x3f, 0x74, 0x95, 0xa0, 0x13, 0x90, 0x36, 0xba, 0xaa, 0xe9, 0xa3, 0xab, 0xb2, 0xd7, 0xc1, 0x39,
0x2c, 0x1e, 0xf6, 0xfb, 0xed, 0xce, 0x89, 0x3b, 0x74, 0xc3, 0x52, 0xba, 0xb3, 0x16, 0xf8, 0x8a,
0xed, 0x96, 0xc2, 0x2d, 0x45, 0x58, 0x2d, 0x58, 0x92, 0x05, 0x94, 0xcf, 0xee, 0x26, 0xac, 0xd8,
0x78, 0xe8, 0x5f, 0xe3, 0x9b, 0x1c, 0xd6, 0x7a, 0x0a, 0xab, 0x1a, 0x97, 0xf2, 0x27, 0xfa, 0x12,
0x4c, 0xee, 0x73, 0x31, 0x27, 0x89, 0x18, 0xbe, 0xc7, 0x08, 0x7a, 0xcc, 0x7b, 0xcb, 0x7a, 0x01,
0x0b, 0x9c, 0xa5, 0x60, 0x28, 0x91, 0x19, 0x4a, 0xc6, 0xea, 0x7e, 0x50, 0xab, 0x42, 0x55, 0xaf,
0x0a, 0xd6, 0x1f, 0x0c, 0xb8, 0x3b, 0xf6, 0xbc, 0x94, 0xa0, 0x2f, 0xe0, 0x96, 0x24, 0x36, 0xce,
0xe5, 0x0d, 0xed, 0xe1, 0x16, 0xdb, 0x4d, 0xa1, 0x2d, 0xfb, 0x66, 0x78, 0x09, 0x1b, 0xd1, 0x54,
0x59, 0xb7, 0xde, 0x38, 0xa5, 0xa7, 0xbe, 0xcf, 0x22, 0xb3, 0x54, 0x13, 0x8f, 0x77, 0xe0, 0x4e,
0xae, 0x8c, 0xf2, 0x7e, 0xff, 0x1d, 0xac, 0x8b, 0x18, 0x92, 0xed, 0xf1, 0x41, 0xcf, 0x7c, 0x06,
0xb7, 0x73, 0x24, 0x94, 0x3f, 0xf1, 0x17, 0xbc, 0x86, 0x1f, 0xf1, 0x21, 0x5c, 0xdb, 0x73, 0xc3,
0x23, 0xdf, 0xbb, 0x70, 0x07, 0x85, 0xa2, 0x94, 0xd9, 0x2f, 0x77, 0x6f, 0xf9, 0xd3, 0xf4, 0x61,
0xa3, 0x5b, 0xf2, 0x34, 0xac, 0x55, 0xec, 0xbb, 0xb4, 0xe7, 0x5f, 0xe3, 0xa0, 0xe3, 0x0c, 0xf8,
0xf0, 0x4d, 0xd8, 0x53, 0x47, 0xb3, 0x73, 0x77, 0x3f, 0xec, 0xb9, 0xff, 0x6d, 0xf0, 0x89, 0x03,
0xf3, 0x89, 0x18, 0x92, 0xd3, 0x1b, 0xe5, 0x39, 0x6b, 0x53, 0x2f, 0x38, 0x9f, 0x68, 0xf0, 0x2a,
0xfc, 0xaf, 0xe0, 0x58, 0x4b, 0x90, 0xc2, 0x7c, 0xc8, 0x20, 0xae, 0x6d, 0x0d, 0xab, 0xf5, 0x24,
0xf5, 0x92, 0x3d, 0xc9, 0xff, 0x0c, 0x3e, 0x3f, 0x50, 0x34, 0xa4, 0x44, 0x9b, 0xc5, 0x19, 0x65,
0x67, 0x71, 0x4f, 0x62, 0x5d, 0x92, 0x4f, 0x09, 0x15, 0x5e, 0x62, 0x3e, 0xcd, 0x61, 0x75, 0x9c,
0x10, 0xda, 0xda, 0x26, 0x56, 0xe7, 0x04, 0xe6, 0x6c, 0x34, 0x8c, 0x6f, 0x49, 0x09, 0x53, 0x76,
0x74, 0xf2, 0x5d, 0xf2, 0x69, 0xa6, 0xdd, 0x7c, 0xfc, 0xf6, 0xc9, 0xd0, 0x71, 0xaf, 0x0e, 0xbd,
0x7e, 0xe7, 0x95, 0xef, 0xb1, 0x8e, 0xf5, 0x65, 0xd1, 0xce, 0x60, 0x1d, 0xea, 0x98, 0xed, 0x8d,
0x7c, 0x2d, 0x00, 0xb6, 0x8f, 0xa4, 0x9c, 0x22, 0x4f, 0xcb, 0x28, 0xeb, 0xdb, 0xe4, 0x5b, 0xcc,
0x58, 0xf1, 0x94, 0x68, 0x5d, 0x80, 0x31, 0xa5, 0x0b, 0x28, 0x5a, 0x87, 0x0f, 0xde, 0xad, 0xc0,
0x1c, 0x27, 0x3a, 0x3a, 0xed, 0xa2, 0x43, 0x80, 0xf4, 0x33, 0x27, 0x92, 0x1f, 0x80, 0xca, 0x37,
0x56, 0x73, 0x73, 0xcc, 0x0a, 0x25, 0xe8, 0x3b, 0xb8, 0x37, 0xf9, 0x6b, 0x21, 0xfa, 0x5c, 0xd9,
0x3c, 0xe5, 0xfb, 0xa5, 0xf9, 0xe0, 0x3d, 0xa8, 0x29, 0x41, 0xdf, 0x1b, 0xb0, 0x3d, 0xf5, 0x3b,
0x1e, 0xda, 0x97, 0x98, 0x16, 0xf9, 0xfa, 0x68, 0xfe, 0xf4, 0xfd, 0x36, 0x08, 0x3b, 0x4c, 0xfe,
0xc0, 0xa6, 0xd8, 0x61, 0xea, 0x97, 0x41, 0xc5, 0x0e, 0x05, 0xbe, 0xdc, 0x35, 0x61, 0x41, 0x1a,
0xc3, 0xa3, 0x4d, 0x75, 0xb7, 0xf4, 0x45, 0xcc, 0x34, 0xc7, 0x2d, 0x51, 0x82, 0x9e, 0xc2, 0xa2,
0x32, 0xde, 0x45, 0x77, 0x55, 0x62, 0x65, 0x9c, 0x6d, 0x7e, 0x32, 0x7e, 0x91, 0x12, 0x74, 0xca,
0xbf, 0xc5, 0x49, 0xf3, 0x49, 0x94, 0x4b, 0x1f, 0x8f, 0x73, 0xcd, 0x4f, 0x27, 0xac, 0x52, 0x82,
0xce, 0xf9, 0x30, 0x23, 0x33, 0xc0, 0x43, 0x96, 0xba, 0x2d, 0x6f, 0xbe, 0x68, 0xfe, 0x70, 0x2a,
0x0d, 0x25, 0xe8, 0xd7, 0xbc, 0x1e, 0x6a, 0x23, 0x26, 0xb4, 0xa5, 0x6e, 0xcd, 0x4e, 0xbf, 0xcc,
0xed, 0x29, 0x14, 0x94, 0xa0, 0x2f, 0x93, 0xcb, 0x44, 0xe2, 0xfc, 0x83, 0xac, 0x83, 0x55, 0xc6,
0x5b, 0x93, 0x09, 0x28, 0x41, 0x98, 0xdd, 0xf5, 0x79, 0x4f, 0x6b, 0x74, 0x5f, 0xd9, 0x3b, 0xe6,
0xc1, 0x6f, 0xee, 0x14, 0xa0, 0x4a, 0x2c, 0xa3, 0x3d, 0x0b, 0x75, 0xcb, 0x64, 0x9f, 0xe2, 0xba,
0x65, 0xf2, 0xde, 0x95, 0x1d, 0x58, 0xd6, 0xde, 0x52, 0x48, 0x8e, 0x83, 0xec, 0x83, 0xcd, 0xbc,
0x37, 0x69, 0x99, 0x12, 0x51, 0xd2, 0xe2, 0x47, 0x88, 0x56, 0xd2, 0xa4, 0xc7, 0x8f, 0x56, 0xd2,
0x94, 0x57, 0xcb, 0x53, 0x58, 0x54, 0x1e, 0x0e, 0x4a, 0x16, 0xe8, 0x0f, 0x13, 0x25, 0x0b, 0xb2,
0xef, 0x8d, 0x57, 0x70, 0x67, 0x4c, 0x23, 0x8e, 0x76, 0x74, 0x4d, 0x72, 0x1f, 0x17, 0xe6, 0x67,
0x45, 0xc8, 0x28, 0x41, 0x5f, 0xc1, 0x5a, 0x4e, 0xf3, 0x8b, 0xb6, 0xb3, 0xf5, 0x54, 0x97, 0x60,
0x4d, 0x23, 0x11, 0x21, 0x9c, 0x69, 0x53, 0x95, 0x10, 0xce, 0x6b, 0x93, 0x95, 0x10, 0xce, 0xef,
0x72, 0xbf, 0x82, 0xb5, 0x9c, 0x96, 0x13, 0x69, 0xa1, 0x93, 0xd3, 0x40, 0x9a, 0xd6, 0x34, 0x12,
0xc1, 0xbd, 0x3b, 0x85, 0x7b, 0x77, 0x3a, 0xf7, 0x71, 0xbd, 0xa5, 0xa8, 0x70, 0x52, 0x07, 0xa5,
0x57, 0x38, 0xb5, 0x7d, 0xd4, 0x2b, 0x9c, 0xde, 0x7a, 0xa5, 0x37, 0xc8, 0x98, 0xb6, 0x20, 0xef,
0x06, 0x19, 0xdf, 0xc0, 0xe4, 0xdd, 0x20, 0x13, 0xfa, 0x8d, 0xc7, 0x3f, 0xfa, 0xcd, 0xce, 0x33,
0x82, 0xbd, 0xf3, 0xf6, 0xa9, 0xf4, 0xef, 0xad, 0x84, 0xc3, 0xcf, 0x93, 0x5f, 0x2f, 0x67, 0xf8,
0xd2, 0xc3, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0x6d, 0x13, 0xb4, 0xc1, 0x1a, 0x26, 0x00, 0x00,
var fileDescriptor_admin_cms_49bc09b1772ecee1 = []byte{
// 2301 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x1a, 0x4d, 0x6f, 0x1c, 0x49,
0x55, 0x3d, 0x1f, 0xfe, 0x78, 0xfe, 0x2e, 0x3b, 0xce, 0xb8, 0xb3, 0x6b, 0xec, 0x26, 0x5e, 0x0c,
0xda, 0xd8, 0xc8, 0x11, 0x97, 0x45, 0x0a, 0x72, 0x3c, 0xb1, 0x99, 0xc8, 0x76, 0x86, 0x9e, 0x78,
0x25, 0x60, 0xb5, 0xa6, 0x33, 0x53, 0x9e, 0xb4, 0xec, 0xe9, 0xae, 0x74, 0xb5, 0xbd, 0xb1, 0x56,
0x7b, 0xdd, 0x0b, 0x17, 0x24, 0x24, 0x0e, 0x9c, 0xb9, 0x71, 0xe0, 0x80, 0xc4, 0x11, 0x89, 0xdf,
0xc1, 0x21, 0x42, 0xfc, 0x0a, 0x6e, 0xa8, 0xaa, 0xfa, 0xa3, 0xaa, 0xba, 0x67, 0xa6, 0xd3, 0x8e,
0x72, 0x9b, 0xf7, 0xfa, 0xd5, 0xfb, 0xae, 0x57, 0xaf, 0x5e, 0x0d, 0xac, 0x39, 0xbd, 0x81, 0xeb,
0x9d, 0x77, 0x07, 0x74, 0x37, 0xf9, 0xb5, 0x43, 0x02, 0x3f, 0xf4, 0xd1, 0x74, 0x82, 0x30, 0xb7,
0x5f, 0x10, 0xec, 0x3d, 0x6a, 0x9d, 0x3c, 0xea, 0xe0, 0xe0, 0x06, 0x07, 0xbb, 0xe4, 0xb2, 0xbf,
0xcb, 0x89, 0x76, 0x69, 0xef, 0xf2, 0xfc, 0x1b, 0xba, 0xfb, 0x4d, 0xb4, 0xc8, 0x7a, 0x02, 0x70,
0xe0, 0x0f, 0x06, 0xbe, 0x67, 0x63, 0x4a, 0x50, 0x03, 0x26, 0x71, 0x10, 0x1c, 0xf8, 0x3d, 0xdc,
0x30, 0x36, 0x8c, 0xed, 0xba, 0x1d, 0x83, 0x68, 0x15, 0x26, 0x70, 0x10, 0x9c, 0xd0, 0x7e, 0xa3,
0xb2, 0x61, 0x6c, 0x4f, 0xdb, 0x11, 0x64, 0x75, 0x61, 0x6e, 0x9f, 0x89, 0x3d, 0xf6, 0xfb, 0xae,
0x67, 0xe3, 0x37, 0x68, 0x03, 0x66, 0x7c, 0x82, 0x03, 0x27, 0x74, 0x7d, 0xaf, 0xd5, 0xe4, 0x6c,
0xa6, 0x6d, 0x19, 0xc5, 0x84, 0x70, 0x4d, 0x5b, 0xcd, 0x88, 0x57, 0x0c, 0x32, 0x21, 0x14, 0x77,
0x03, 0x1c, 0x36, 0xaa, 0x42, 0x88, 0x80, 0xac, 0x3f, 0x1a, 0x30, 0x2f, 0x4b, 0xa1, 0x04, 0xad,
0x40, 0x3d, 0xf4, 0x2f, 0xb1, 0x17, 0x09, 0x10, 0x00, 0x32, 0x61, 0xea, 0x9a, 0xe2, 0xe0, 0xd4,
0x19, 0xe0, 0x88, 0x77, 0x02, 0x33, 0xb1, 0x17, 0x4e, 0x17, 0x9f, 0xd9, 0xc7, 0x11, 0xf7, 0x18,
0x44, 0x3f, 0x03, 0xe8, 0x26, 0x3e, 0x68, 0xd4, 0x36, 0x8c, 0xed, 0x99, 0xbd, 0x7b, 0x3b, 0xa9,
0x7b, 0x53, 0x07, 0xd9, 0x12, 0xa1, 0x75, 0x09, 0x0b, 0x47, 0x38, 0x3c, 0xa3, 0x38, 0x78, 0xc9,
0x84, 0x17, 0x33, 0x7e, 0x15, 0x26, 0x98, 0x46, 0x89, 0xed, 0x11, 0x84, 0xd6, 0x01, 0xc8, 0x95,
0x13, 0x5e, 0xf8, 0xc1, 0xa0, 0xd5, 0xe4, 0x0a, 0xd6, 0x6d, 0x09, 0x63, 0xdd, 0xc2, 0xa2, 0x2a,
0x8c, 0x12, 0x4d, 0x6f, 0xa3, 0xa0, 0xde, 0xa9, 0xeb, 0x2a, 0xb2, 0xeb, 0x58, 0xe8, 0xdf, 0x92,
0x97, 0xee, 0x00, 0x73, 0xe9, 0x55, 0x3b, 0x06, 0x2d, 0x0c, 0x9b, 0xfb, 0xbd, 0x1e, 0x13, 0x6d,
0xe3, 0xbe, 0x4b, 0x43, 0x1c, 0xec, 0xf7, 0x7a, 0x87, 0x81, 0x8b, 0xbd, 0x5e, 0xab, 0x79, 0xec,
0xd2, 0xb0, 0x98, 0xe5, 0xeb, 0x00, 0xc2, 0x56, 0xb6, 0xa4, 0x51, 0xd9, 0xa8, 0x6e, 0x4f, 0xdb,
0x12, 0xc6, 0xfa, 0x2d, 0x58, 0xe3, 0xc4, 0x94, 0xb6, 0xd9, 0xfa, 0xde, 0x80, 0x87, 0x36, 0xee,
0x5d, 0x77, 0xf1, 0x9d, 0xed, 0xf8, 0x04, 0xa6, 0x13, 0x90, 0xbb, 0xb0, 0x6e, 0xa7, 0x08, 0xcd,
0xca, 0x6a, 0xc6, 0xca, 0xaf, 0x61, 0xab, 0x80, 0x1e, 0xe5, 0x0d, 0xfd, 0xbd, 0x01, 0x9b, 0x51,
0xa2, 0xdc, 0xc9, 0xca, 0x26, 0x00, 0x71, 0xfa, 0xae, 0x97, 0x9a, 0x39, 0xb3, 0xf7, 0x70, 0x87,
0xf2, 0x72, 0x72, 0xee, 0x10, 0xf7, 0x9c, 0x38, 0x81, 0x33, 0xa0, 0x3b, 0x36, 0x7e, 0x73, 0x8d,
0x69, 0xd8, 0x4e, 0x68, 0x6d, 0x69, 0x9d, 0xf5, 0x5f, 0x03, 0xac, 0x71, 0xda, 0x50, 0x82, 0x7e,
0x01, 0xb3, 0xdc, 0x45, 0xde, 0x85, 0xcf, 0xdd, 0x66, 0x6c, 0x54, 0xb7, 0x67, 0xf6, 0x1e, 0xe4,
0x88, 0x3b, 0x8b, 0xc8, 0x6c, 0x65, 0x01, 0x7a, 0x96, 0xa3, 0xed, 0x56, 0xae, 0xb6, 0x94, 0xf8,
0x1e, 0xc5, 0xf9, 0xea, 0x6a, 0x3e, 0xaf, 0x16, 0xf5, 0xf9, 0x3f, 0x2b, 0x30, 0x7f, 0x84, 0xc3,
0x83, 0xd7, 0x4e, 0x78, 0xec, 0xf7, 0x29, 0x73, 0x70, 0x03, 0x26, 0xbb, 0xbe, 0x17, 0x62, 0x2f,
0x8c, 0x9c, 0x1b, 0x83, 0xa2, 0xc6, 0x31, 0xeb, 0xe3, 0x02, 0x20, 0x20, 0x86, 0x0f, 0x70, 0xf7,
0x26, 0xda, 0xfc, 0xd3, 0x76, 0x04, 0xb1, 0x92, 0xc6, 0x28, 0xf8, 0xc6, 0xac, 0x89, 0x92, 0x16,
0xc3, 0x2c, 0x8c, 0x14, 0x53, 0xea, 0xfa, 0xde, 0xcb, 0x5b, 0x82, 0x1b, 0x75, 0x9e, 0x8c, 0x32,
0x8a, 0x51, 0x44, 0x82, 0x39, 0xc5, 0x84, 0xa0, 0x90, 0x50, 0x5a, 0xa0, 0x27, 0xcb, 0x05, 0x5a,
0x4f, 0xa8, 0xa9, 0x6c, 0x42, 0x99, 0x30, 0xe5, 0x93, 0x33, 0x51, 0xfa, 0xa6, 0x85, 0x1d, 0x31,
0x6c, 0xfd, 0xad, 0x06, 0x93, 0x91, 0xf7, 0x84, 0x4d, 0x4c, 0xf8, 0x09, 0xed, 0xa7, 0xa9, 0x29,
0xa1, 0xb8, 0x4d, 0x57, 0x2e, 0xf6, 0x42, 0x41, 0x21, 0xdc, 0x28, 0xa3, 0x24, 0x1f, 0x57, 0x87,
0xf8, 0xb8, 0xa6, 0xf8, 0xb8, 0x01, 0x93, 0xfd, 0xc0, 0xbf, 0x26, 0xad, 0x26, 0xf7, 0xe1, 0xb4,
0x1d, 0x83, 0xc8, 0x82, 0x59, 0x46, 0x73, 0xea, 0x76, 0x2f, 0x3d, 0x76, 0xa8, 0x4c, 0xf0, 0xcf,
0x0a, 0x0e, 0xfd, 0x04, 0x16, 0x19, 0x7f, 0x1c, 0xb4, 0xd3, 0x02, 0x3e, 0xc9, 0x1d, 0x9d, 0xc1,
0xa3, 0xcf, 0x60, 0x5e, 0xe0, 0x12, 0x8e, 0xc2, 0x55, 0x1a, 0x16, 0x3d, 0x84, 0x39, 0x81, 0x39,
0x8c, 0x8e, 0x2c, 0xe1, 0x32, 0x15, 0xc9, 0x4a, 0x11, 0x57, 0x94, 0x9f, 0x77, 0xc0, 0x29, 0x52,
0x84, 0x9e, 0x1d, 0x33, 0xd9, 0xec, 0x68, 0xc0, 0xe4, 0x80, 0xf6, 0x0f, 0x03, 0x7f, 0xd0, 0x98,
0x15, 0xc7, 0x7d, 0x04, 0xea, 0x79, 0x33, 0x97, 0xcd, 0x1b, 0x29, 0xc3, 0xe7, 0xb3, 0x19, 0x1e,
0x3a, 0xe1, 0x35, 0x6d, 0x2c, 0xf0, 0x65, 0x11, 0xa4, 0x64, 0xf2, 0x22, 0x3f, 0x62, 0xd2, 0x4c,
0x5e, 0x07, 0xe8, 0x06, 0xd8, 0x09, 0x31, 0xff, 0xba, 0xc4, 0xbf, 0x4a, 0x18, 0x34, 0x0f, 0x15,
0xfc, 0xb6, 0x81, 0xb8, 0xa0, 0x0a, 0x7e, 0x6b, 0xfd, 0xc7, 0xe0, 0x87, 0x6f, 0xba, 0xe5, 0x28,
0x41, 0x3b, 0x30, 0xd5, 0x8d, 0xe0, 0xa8, 0x82, 0x20, 0x79, 0xef, 0x8a, 0x4f, 0x76, 0x42, 0xf3,
0xa1, 0x8a, 0x06, 0x73, 0x55, 0xc4, 0xf2, 0xf4, 0x7a, 0x10, 0x1d, 0xdd, 0x32, 0xaa, 0x6c, 0x7f,
0xf1, 0x18, 0xe6, 0x3a, 0xa1, 0x13, 0xba, 0x34, 0x74, 0xbb, 0xbc, 0xa8, 0x20, 0xa8, 0x5d, 0xb0,
0x58, 0x89, 0x3d, 0xc1, 0x7f, 0x33, 0xc7, 0x84, 0x7e, 0xb4, 0x07, 0x2a, 0xa1, 0x6f, 0x85, 0xbc,
0x4f, 0xd8, 0xef, 0x86, 0xee, 0x4d, 0x74, 0xc4, 0xbc, 0x41, 0x4f, 0x60, 0x8e, 0xca, 0x8c, 0xa2,
0xd3, 0xa4, 0x21, 0xa9, 0xa0, 0x08, 0xb2, 0x55, 0x72, 0x7d, 0x73, 0x57, 0x32, 0x9b, 0xdb, 0xfa,
0x1a, 0xa6, 0x84, 0x30, 0x4a, 0x58, 0x98, 0x3d, 0xb7, 0x7b, 0xc9, 0x73, 0x52, 0x68, 0x9a, 0xc0,
0xa3, 0xba, 0x9f, 0x01, 0xa6, 0xd4, 0xe9, 0xe3, 0xd4, 0x85, 0x12, 0xc6, 0xba, 0x86, 0x25, 0xcd,
0x2a, 0x4a, 0xd0, 0x8f, 0xa1, 0xce, 0x7e, 0xc7, 0xc1, 0x5e, 0x96, 0xcc, 0x89, 0x69, 0x6c, 0x41,
0xa1, 0x45, 0xa0, 0x52, 0x34, 0x02, 0xb2, 0xd8, 0x23, 0xb6, 0xaf, 0x3e, 0x8e, 0x37, 0xff, 0x6c,
0xc0, 0x74, 0x24, 0x8e, 0x12, 0xb6, 0xc9, 0x8f, 0x92, 0x4d, 0x2e, 0x1c, 0x9a, 0x22, 0xd8, 0x36,
0xe4, 0x40, 0xab, 0x17, 0x37, 0xd3, 0x11, 0xc8, 0x7c, 0x7a, 0x92, 0xf1, 0x69, 0x8a, 0x29, 0x9b,
0x95, 0xb7, 0x80, 0x74, 0x9f, 0x50, 0x82, 0x3e, 0x87, 0x09, 0x0e, 0xc4, 0xc1, 0x58, 0x91, 0x18,
0x25, 0x54, 0x76, 0x44, 0x53, 0x36, 0x1c, 0x8f, 0x61, 0xa6, 0xe9, 0x84, 0x4c, 0x79, 0x7e, 0xe8,
0x23, 0xa8, 0x31, 0x30, 0xde, 0x0e, 0xec, 0x37, 0x5a, 0x84, 0x2a, 0xb3, 0x56, 0xb4, 0x65, 0xec,
0xa7, 0xf5, 0x2d, 0xdc, 0x3f, 0xc2, 0x61, 0x64, 0xb7, 0xba, 0x9f, 0x9e, 0x68, 0x1b, 0x6c, 0x7c,
0x24, 0x3b, 0x7a, 0x24, 0x5f, 0x64, 0x23, 0x29, 0xa1, 0xac, 0x7f, 0x55, 0xa0, 0x91, 0x2f, 0x9d,
0xfb, 0x6c, 0xa9, 0x1d, 0xb8, 0x37, 0x4e, 0x88, 0xa5, 0x38, 0x89, 0x6b, 0x57, 0xf6, 0x03, 0xda,
0x86, 0x05, 0xee, 0x3d, 0x89, 0x56, 0x58, 0xa9, 0xa3, 0xd1, 0x31, 0xdc, 0xcb, 0x2c, 0x4f, 0xba,
0xd1, 0x99, 0xbd, 0x55, 0xc9, 0x3c, 0xc9, 0x9d, 0x76, 0xfe, 0x22, 0xf4, 0x4b, 0x58, 0xd6, 0x04,
0x70, 0x5e, 0xb5, 0x91, 0xbc, 0xf2, 0x96, 0x68, 0x51, 0xaf, 0x17, 0x4f, 0xb8, 0x7b, 0x47, 0x38,
0xe4, 0x0c, 0x3f, 0x76, 0xf8, 0xfe, 0x5e, 0x81, 0xd5, 0x3c, 0xd9, 0x94, 0xb0, 0x43, 0xbf, 0xe5,
0xb1, 0x03, 0x8a, 0x8a, 0x5d, 0x90, 0xc6, 0x2e, 0x83, 0x67, 0x87, 0xf9, 0x4b, 0x3f, 0x74, 0xae,
0x12, 0x42, 0x11, 0x38, 0x15, 0x89, 0x9e, 0xc3, 0x8a, 0xbe, 0xb2, 0x40, 0xd4, 0x72, 0xd7, 0xa0,
0x26, 0x2c, 0x29, 0xcc, 0x0b, 0x84, 0x2c, 0xbb, 0xa0, 0x6c, 0xc0, 0xde, 0xc2, 0x4a, 0xd4, 0xf3,
0x7f, 0xec, 0x78, 0xfd, 0xa9, 0xca, 0x73, 0x45, 0x17, 0x4d, 0x09, 0xdb, 0x3d, 0xb1, 0xa3, 0xd8,
0xd7, 0x34, 0x5a, 0x3a, 0x9a, 0x05, 0x2b, 0x3d, 0x67, 0xa4, 0x60, 0x29, 0x48, 0xd6, 0x17, 0x72,
0x7f, 0xc5, 0x44, 0xa2, 0xbc, 0x2a, 0x38, 0xb6, 0x73, 0x34, 0xe6, 0x45, 0x76, 0x4e, 0xce, 0x12,
0x16, 0x4e, 0x45, 0x3c, 0xe7, 0x53, 0x1f, 0x1d, 0xce, 0xcc, 0x02, 0xf4, 0x14, 0x16, 0x65, 0xfd,
0x38, 0x93, 0x89, 0x91, 0x4c, 0x32, 0xf4, 0x5a, 0x4a, 0x4c, 0x16, 0x4d, 0x89, 0x37, 0xb0, 0x76,
0x84, 0x3d, 0x16, 0x28, 0xdc, 0xf2, 0x6e, 0xdc, 0x90, 0x07, 0xec, 0xc0, 0xef, 0xe1, 0xc2, 0x13,
0xa3, 0xae, 0xdf, 0xc3, 0xc7, 0x38, 0xbe, 0x70, 0xc7, 0x60, 0xfc, 0x25, 0x0d, 0x41, 0x0c, 0x5a,
0x1d, 0x30, 0x87, 0x89, 0x2c, 0x7f, 0xbb, 0xfe, 0xab, 0xc1, 0x13, 0x4c, 0x65, 0x48, 0x8b, 0x19,
0x81, 0xa0, 0xc6, 0x74, 0x8b, 0xf2, 0x96, 0xff, 0x96, 0x5a, 0xe5, 0xaa, 0xd2, 0x2a, 0xab, 0x97,
0xb2, 0x5a, 0xc9, 0xdb, 0xf7, 0x5f, 0x0c, 0x98, 0x77, 0x15, 0x55, 0xd9, 0xfd, 0x43, 0xc5, 0x44,
0x9a, 0xea, 0x74, 0x6a, 0x3f, 0x2e, 0x9c, 0x2e, 0xf7, 0xe3, 0x26, 0x4c, 0x5d, 0x39, 0x34, 0x4c,
0xc6, 0x45, 0x75, 0x3b, 0x81, 0xa5, 0x26, 0xaf, 0xa6, 0x34, 0x79, 0xa9, 0xb1, 0x75, 0xd9, 0x58,
0xeb, 0xdf, 0x06, 0xaf, 0xb2, 0x19, 0xa7, 0x52, 0x82, 0x0e, 0x60, 0x41, 0x55, 0x2c, 0xee, 0x2f,
0xd6, 0xa4, 0x58, 0xa9, 0x14, 0xb6, 0xbe, 0x82, 0xf5, 0xf9, 0xed, 0xb2, 0x7d, 0x7e, 0xfb, 0xce,
0xc3, 0x81, 0x43, 0x40, 0xbf, 0xba, 0xc6, 0xc1, 0x6d, 0xab, 0x1d, 0x4f, 0x40, 0x8a, 0xa5, 0xcb,
0x3c, 0x54, 0x5a, 0xed, 0xb8, 0xb1, 0x6f, 0xb5, 0xad, 0x7f, 0x18, 0xb0, 0x9c, 0x61, 0x44, 0x49,
0x44, 0x67, 0xc4, 0x74, 0x8c, 0x73, 0xfc, 0x3d, 0xad, 0x5e, 0x32, 0x8a, 0xc5, 0xa1, 0xa3, 0x24,
0x9d, 0x80, 0xb4, 0xd1, 0x55, 0x4d, 0x1f, 0x5d, 0x95, 0x3d, 0x0e, 0xce, 0x61, 0x6e, 0xbf, 0xd7,
0x6b, 0xb5, 0x8f, 0xdd, 0x81, 0x1b, 0x96, 0xb2, 0x9d, 0xb5, 0xc0, 0x57, 0x6c, 0xb5, 0x94, 0x6e,
0x29, 0xc2, 0x3a, 0x82, 0x79, 0x59, 0x40, 0xf9, 0xdd, 0xdd, 0x84, 0x45, 0x1b, 0x0f, 0xfc, 0x1b,
0x7c, 0x17, 0x65, 0xad, 0xe7, 0xb0, 0xa4, 0x71, 0x29, 0xaf, 0xd1, 0x97, 0x60, 0xf2, 0x98, 0x8b,
0x39, 0x49, 0xc4, 0xf0, 0x3d, 0x46, 0xed, 0x43, 0xee, 0x5b, 0xd6, 0x19, 0xcc, 0x70, 0x96, 0x82,
0xa1, 0x44, 0x66, 0x28, 0x3b, 0x56, 0x8f, 0x83, 0x5a, 0x15, 0xaa, 0x7a, 0x55, 0xb0, 0xfe, 0x60,
0xc0, 0x83, 0xa1, 0xfa, 0x52, 0x82, 0xbe, 0x80, 0x59, 0x49, 0x6c, 0xbc, 0x97, 0x57, 0xb5, 0x8b,
0x5b, 0xec, 0x37, 0x85, 0xb6, 0xec, 0x9d, 0xe1, 0x15, 0xac, 0x46, 0x53, 0x65, 0xdd, 0x7b, 0xc3,
0x8c, 0x1e, 0x7b, 0x3f, 0x8b, 0xdc, 0x52, 0x4d, 0x22, 0xde, 0x86, 0xfb, 0xb9, 0x32, 0xca, 0xc7,
0xfd, 0x77, 0xb0, 0x22, 0x72, 0x48, 0xf6, 0xc7, 0x07, 0xd5, 0xf9, 0x14, 0xee, 0xe5, 0x48, 0x28,
0xaf, 0xf1, 0x17, 0xbc, 0x86, 0x1f, 0xf0, 0x21, 0x5c, 0xcb, 0x73, 0xc3, 0x03, 0xdf, 0xbb, 0x70,
0xfb, 0x85, 0xb2, 0x94, 0xf9, 0x2f, 0x77, 0x6d, 0x79, 0x6d, 0x7a, 0xb0, 0xda, 0x29, 0xa9, 0x0d,
0x6b, 0x15, 0x7b, 0x2e, 0xed, 0xfa, 0x37, 0x38, 0x68, 0x3b, 0x7d, 0x3e, 0x7c, 0x13, 0xfe, 0xd4,
0xd1, 0x4c, 0xef, 0xce, 0x87, 0xd5, 0xfb, 0x9d, 0xc1, 0x27, 0x0e, 0x2c, 0x26, 0x62, 0x48, 0x4e,
0xef, 0xf6, 0xaa, 0x64, 0xc1, 0xec, 0x05, 0xe7, 0x13, 0x0d, 0x5e, 0x45, 0xfc, 0x15, 0x1c, 0x6b,
0x09, 0x52, 0x98, 0x0f, 0x19, 0xc4, 0xb1, 0xad, 0x61, 0xb5, 0x9e, 0xa4, 0x5e, 0xb2, 0x27, 0xf9,
0x9f, 0xc1, 0xe7, 0x07, 0x8a, 0x85, 0x94, 0x68, 0xb3, 0x38, 0xa3, 0xec, 0x2c, 0xee, 0x59, 0x6c,
0x4b, 0xf2, 0x94, 0x50, 0xe1, 0x25, 0xe6, 0xd3, 0x1c, 0x56, 0x87, 0x09, 0xa1, 0xad, 0x2d, 0x62,
0x75, 0x4e, 0x60, 0x4e, 0xaf, 0x07, 0xf1, 0x29, 0x29, 0x61, 0xca, 0x8e, 0x4e, 0xbe, 0x4b, 0x9e,
0x66, 0x5a, 0xcd, 0xa7, 0xb7, 0xcf, 0x06, 0x8e, 0x7b, 0xb5, 0xef, 0xf5, 0xda, 0xaf, 0x7d, 0x8f,
0x75, 0xac, 0xaf, 0x8a, 0x76, 0x06, 0x2b, 0x50, 0xc7, 0x6c, 0x6d, 0xfc, 0x7e, 0xc7, 0x01, 0xb6,
0x8e, 0xa4, 0x9c, 0xa2, 0x48, 0xcb, 0x28, 0xeb, 0xdb, 0xe4, 0x2d, 0x66, 0xa8, 0x78, 0x4a, 0xb4,
0x2e, 0xc0, 0x18, 0xd3, 0x05, 0x14, 0xad, 0xc3, 0x7b, 0xef, 0x16, 0x61, 0x8a, 0x13, 0x1d, 0x9c,
0x74, 0xd0, 0x3e, 0x40, 0xfa, 0x9c, 0x8b, 0xe4, 0x0b, 0xa0, 0xf2, 0x96, 0x6c, 0xae, 0x0d, 0xf9,
0x42, 0x09, 0xfa, 0x0e, 0xd6, 0x47, 0xbf, 0x16, 0xa2, 0xcf, 0x95, 0xc5, 0x63, 0xde, 0x2f, 0xcd,
0x47, 0xef, 0x41, 0x4d, 0x09, 0xfa, 0xde, 0x80, 0xcd, 0xb1, 0xef, 0x78, 0x68, 0x57, 0x62, 0x5a,
0xe4, 0xf5, 0xd1, 0xfc, 0xe9, 0xfb, 0x2d, 0x10, 0x7e, 0x18, 0xfd, 0xc0, 0xa6, 0xf8, 0x61, 0xec,
0xcb, 0xa0, 0xe2, 0x87, 0x02, 0x2f, 0x77, 0x4d, 0x98, 0x91, 0xc6, 0xf0, 0x68, 0x4d, 0x5d, 0x2d,
0xbd, 0x88, 0x99, 0xe6, 0xb0, 0x4f, 0x94, 0xa0, 0xe7, 0x30, 0xa7, 0x8c, 0x77, 0xd1, 0x03, 0x95,
0x58, 0x19, 0x67, 0x9b, 0x9f, 0x0c, 0xff, 0x48, 0x09, 0x3a, 0xe1, 0x6f, 0x71, 0xd2, 0x7c, 0x12,
0xe5, 0xd2, 0xc7, 0xe3, 0x5c, 0xf3, 0xd3, 0x11, 0x5f, 0x29, 0x41, 0xe7, 0x7c, 0x98, 0x91, 0x19,
0xe0, 0x21, 0x4b, 0x5d, 0x96, 0x37, 0x5f, 0x34, 0x7f, 0x38, 0x96, 0x86, 0x12, 0xf4, 0x6b, 0x5e,
0x0f, 0xb5, 0x11, 0x13, 0xda, 0x50, 0x97, 0x66, 0xa7, 0x5f, 0xe6, 0xe6, 0x18, 0x0a, 0x4a, 0xd0,
0x97, 0xc9, 0x61, 0x22, 0x71, 0xfe, 0x41, 0x36, 0xc0, 0x2a, 0xe3, 0x8d, 0xd1, 0x04, 0x94, 0x20,
0xcc, 0xce, 0xfa, 0xbc, 0xab, 0x35, 0x7a, 0xa8, 0xac, 0x1d, 0x72, 0xe1, 0x37, 0xb7, 0x0a, 0x50,
0x25, 0x9e, 0xd1, 0xae, 0x85, 0xba, 0x67, 0xb2, 0x57, 0x71, 0xdd, 0x33, 0x79, 0xf7, 0xca, 0x36,
0x2c, 0x68, 0x77, 0x29, 0x24, 0xe7, 0x41, 0xf6, 0xc2, 0x66, 0xae, 0x8f, 0xfa, 0x4c, 0x89, 0x28,
0x69, 0xf1, 0x25, 0x44, 0x2b, 0x69, 0xd2, 0xe5, 0x47, 0x2b, 0x69, 0xca, 0xad, 0xe5, 0x39, 0xcc,
0x29, 0x17, 0x07, 0x65, 0x17, 0xe8, 0x17, 0x13, 0x65, 0x17, 0x64, 0xef, 0x1b, 0xaf, 0xe1, 0xfe,
0x90, 0x46, 0x1c, 0x6d, 0xe9, 0x96, 0xe4, 0x5e, 0x2e, 0xcc, 0xcf, 0x8a, 0x90, 0x51, 0x82, 0xbe,
0x82, 0xe5, 0x9c, 0xe6, 0x17, 0x6d, 0x66, 0xeb, 0xa9, 0x2e, 0xc1, 0x1a, 0x47, 0x22, 0x52, 0x38,
0xd3, 0xa6, 0x2a, 0x29, 0x9c, 0xd7, 0x26, 0x2b, 0x29, 0x9c, 0xdf, 0xe5, 0x7e, 0x05, 0xcb, 0x39,
0x2d, 0x27, 0xd2, 0x52, 0x27, 0xa7, 0x81, 0x34, 0xad, 0x71, 0x24, 0x82, 0x7b, 0x67, 0x0c, 0xf7,
0xce, 0x78, 0xee, 0xc3, 0x7a, 0x4b, 0x51, 0xe1, 0xa4, 0x0e, 0x4a, 0xaf, 0x70, 0x6a, 0xfb, 0xa8,
0x57, 0x38, 0xbd, 0xf5, 0x4a, 0x4f, 0x90, 0x21, 0x6d, 0x41, 0xde, 0x09, 0x32, 0xbc, 0x81, 0xc9,
0x3b, 0x41, 0x46, 0xf5, 0x1b, 0x47, 0x30, 0x2b, 0xff, 0xb1, 0x09, 0x99, 0xd9, 0xe5, 0xf1, 0xdf,
0xab, 0xcc, 0x07, 0x43, 0xbf, 0x51, 0xf2, 0xf4, 0x47, 0xbf, 0xd9, 0x7a, 0x41, 0xb0, 0x77, 0xde,
0x3a, 0x91, 0xfe, 0xee, 0x96, 0xd0, 0xff, 0x3c, 0xf9, 0xf5, 0x6a, 0x82, 0x7f, 0x7a, 0xfc, 0xff,
0x00, 0x00, 0x00, 0xff, 0xff, 0x3f, 0x1c, 0xab, 0x91, 0x4b, 0x27, 0x00, 0x00,
}