From 5e7b2fbdcfad1f356699113a7e77daa3b2298127 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Mon, 25 Jul 2022 20:42:57 +0800 Subject: [PATCH 01/11] super group add verification --- cmd/Open-IM-SDK-Core | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/Open-IM-SDK-Core b/cmd/Open-IM-SDK-Core index 18c0a4485..c5e258fa8 160000 --- a/cmd/Open-IM-SDK-Core +++ b/cmd/Open-IM-SDK-Core @@ -1 +1 @@ -Subproject commit 18c0a4485c8a3116bca4b782cc3879375d00d937 +Subproject commit c5e258fa82dd11c9ca1e553a56920bad3f1a4b73 From 589ac2863cefaaa949a8ba34499e5b75fc00f55d Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Mon, 25 Jul 2022 20:59:41 +0800 Subject: [PATCH 02/11] super group add verification --- cmd/Open-IM-SDK-Core | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/Open-IM-SDK-Core b/cmd/Open-IM-SDK-Core index c5e258fa8..3c926fedd 160000 --- a/cmd/Open-IM-SDK-Core +++ b/cmd/Open-IM-SDK-Core @@ -1 +1 @@ -Subproject commit c5e258fa82dd11c9ca1e553a56920bad3f1a4b73 +Subproject commit 3c926fedd3fdeafd0fa77aa352fa3f8bd549c573 From adade8fcf175664c723f1c78be8db11fec292241 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Mon, 25 Jul 2022 21:00:02 +0800 Subject: [PATCH 03/11] super group add verification --- cmd/Open-IM-SDK-Core | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/Open-IM-SDK-Core b/cmd/Open-IM-SDK-Core index 3c926fedd..a04e30059 160000 --- a/cmd/Open-IM-SDK-Core +++ b/cmd/Open-IM-SDK-Core @@ -1 +1 @@ -Subproject commit 3c926fedd3fdeafd0fa77aa352fa3f8bd549c573 +Subproject commit a04e30059af56490abfbb9f53dac334106f34041 From 8dca55aac813826e561279bb87599982ed980ddc Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Mon, 25 Jul 2022 21:05:44 +0800 Subject: [PATCH 04/11] super group add verification --- cmd/Open-IM-SDK-Core | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/Open-IM-SDK-Core b/cmd/Open-IM-SDK-Core index a04e30059..1667b0f4e 160000 --- a/cmd/Open-IM-SDK-Core +++ b/cmd/Open-IM-SDK-Core @@ -1 +1 @@ -Subproject commit a04e30059af56490abfbb9f53dac334106f34041 +Subproject commit 1667b0f4e205fc4ed7c690ab55b662087d61c277 From a425c6215664822c177678024417ff4fcdd086a5 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Mon, 1 Aug 2022 16:01:10 +0800 Subject: [PATCH 05/11] config file update --- pkg/common/config/config.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkg/common/config/config.go b/pkg/common/config/config.go index 6c0e1a499..6addffc22 100644 --- a/pkg/common/config/config.go +++ b/pkg/common/config/config.go @@ -511,13 +511,13 @@ type PDefaultTips struct { func init() { cfgName := os.Getenv("CONFIG_NAME") - fmt.Println(Root, cfgName) + fmt.Println("get config path is:", Root, cfgName) - if len(cfgName) == 0 { - cfgName = Root + "/config/config.yaml" + if len(cfgName) != 0 { + Root = cfgName } - bytes, err := ioutil.ReadFile(cfgName) + bytes, err := ioutil.ReadFile(filepath.Join(Root, "config", "config.yaml")) if err != nil { panic(err.Error()) } From f202d5f54a7fde0c8742a72ae40066cdd793940d Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Mon, 1 Aug 2022 17:44:40 +0800 Subject: [PATCH 06/11] fix bug --- internal/api/group/group.go | 4 +++- internal/rpc/group/group.go | 4 ++-- pkg/common/constant/constant.go | 5 +++++ pkg/common/db/mongoModel.go | 3 ++- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/internal/api/group/group.go b/internal/api/group/group.go index 81e3a4ad7..8d95af41a 100644 --- a/internal/api/group/group.go +++ b/internal/api/group/group.go @@ -12,6 +12,7 @@ import ( "Open_IM/pkg/utils" "context" "github.com/golang/protobuf/ptypes/wrappers" + "google.golang.org/grpc" "github.com/gin-gonic/gin" @@ -227,8 +228,9 @@ func GetGroupAllMemberList(c *gin.Context) { c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + maxSizeOption := grpc.MaxCallRecvMsgSize(1024 * 1024 * constant.GroupRPCRecvSize) client := rpc.NewGroupClient(etcdConn) - RpcResp, err := client.GetGroupAllMember(context.Background(), req) + RpcResp, err := client.GetGroupAllMember(context.Background(), req, maxSizeOption) if err != nil { log.NewError(req.OperationID, "GetGroupAllMember failed err", err.Error(), req.String()) c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()}) diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index a36da065b..d6d9e2a9f 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -61,8 +61,8 @@ func (s *groupServer) Run() { log.NewInfo("", "listen network success, ", address, listener) defer listener.Close() //grpc server - recvSize := 1024 * 1024 * 30 - sendSize := 1024 * 1024 * 30 + recvSize := 1024 * 1024 * constant.GroupRPCRecvSize + sendSize := 1024 * 1024 * constant.GroupRPCSendSize var options = []grpc.ServerOption{ grpc.MaxRecvMsgSize(recvSize), grpc.MaxSendMsgSize(sendSize), diff --git a/pkg/common/constant/constant.go b/pkg/common/constant/constant.go index ad5caf19f..25e2fe3dc 100644 --- a/pkg/common/constant/constant.go +++ b/pkg/common/constant/constant.go @@ -287,6 +287,11 @@ const ( Directly = 2 //直接进群 ) +const ( + GroupRPCRecvSize = 30 + GroupRPCSendSize = 30 +) + const FriendAcceptTip = "You have successfully become friends, so start chatting" func GroupIsBanChat(status int32) bool { diff --git a/pkg/common/db/mongoModel.go b/pkg/common/db/mongoModel.go index a5e0c37b0..fdecf5e8f 100644 --- a/pkg/common/db/mongoModel.go +++ b/pkg/common/db/mongoModel.go @@ -1074,7 +1074,8 @@ func (d *DataBases) GetSuperGroupByUserID(userID string) (UserToSuperGroup, erro ctx, _ := context.WithTimeout(context.Background(), time.Duration(config.Config.Mongo.DBTimeout)*time.Second) c := d.mongoClient.Database(config.Config.Mongo.DBDatabase).Collection(cUserToSuperGroup) var user UserToSuperGroup - return user, c.FindOne(ctx, bson.M{"user_id": userID}).Decode(&user) + _ = c.FindOne(ctx, bson.M{"user_id": userID}).Decode(&user) + return user, nil } func (d *DataBases) DeleteSuperGroup(groupID string) error { From d99b0893df91841935f19b9ed74f4a2f320c595b Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Mon, 1 Aug 2022 19:13:26 +0800 Subject: [PATCH 07/11] fix bug --- internal/rpc/msg/send_msg.go | 54 +++++++++++++++++++++--------------- 1 file changed, 31 insertions(+), 23 deletions(-) diff --git a/internal/rpc/msg/send_msg.go b/internal/rpc/msg/send_msg.go index e1fa4b0de..efd2d4d8e 100644 --- a/internal/rpc/msg/send_msg.go +++ b/internal/rpc/msg/send_msg.go @@ -4,6 +4,7 @@ import ( "Open_IM/pkg/common/config" "Open_IM/pkg/common/constant" "Open_IM/pkg/common/db" + rocksCache "Open_IM/pkg/common/db/rocks_cache" "Open_IM/pkg/common/log" "Open_IM/pkg/common/token_verify" "Open_IM/pkg/grpc-etcdv3/getcdv3" @@ -128,34 +129,41 @@ func messageVerification(data *pbChat.SendMsgReq) (bool, int32, string, []string case constant.GroupChatType: fallthrough case constant.SuperGroupChatType: - getGroupMemberIDListFromCacheReq := &pbCache.GetGroupMemberIDListFromCacheReq{OperationID: data.OperationID, GroupID: data.MsgData.GroupID} - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCacheName, data.OperationID) - if etcdConn == nil { - errMsg := data.OperationID + "getcdv3.GetConn == nil" - log.NewError(data.OperationID, errMsg) - //return returnMsg(&replay, pb, 201, errMsg, "", 0) - return false, 201, errMsg, nil - } - client := pbCache.NewCacheClient(etcdConn) - cacheResp, err := client.GetGroupMemberIDListFromCache(context.Background(), getGroupMemberIDListFromCacheReq) + groupInfo, err := rocksCache.GetGroupInfoFromCache(data.MsgData.GroupID) if err != nil { - log.NewError(data.OperationID, "GetGroupMemberIDListFromCache rpc call failed ", err.Error()) - //return returnMsg(&replay, pb, 201, "GetGroupMemberIDListFromCache failed", "", 0) return false, 201, err.Error(), nil } - if cacheResp.CommonResp.ErrCode != 0 { - log.NewError(data.OperationID, "GetGroupMemberIDListFromCache rpc logic call failed ", cacheResp.String()) - //return returnMsg(&replay, pb, 201, "GetGroupMemberIDListFromCache logic failed", "", 0) - return false, cacheResp.CommonResp.ErrCode, cacheResp.CommonResp.ErrMsg, nil - } - if !token_verify.IsManagerUserID(data.MsgData.SendID) { - if !utils.IsContain(data.MsgData.SendID, cacheResp.UserIDList) { - //return returnMsg(&replay, pb, 202, "you are not in group", "", 0) - return false, 202, "you are not in group", nil + if groupInfo.GroupType == constant.SuperGroup { + return true, 0, "", nil + } else { + getGroupMemberIDListFromCacheReq := &pbCache.GetGroupMemberIDListFromCacheReq{OperationID: data.OperationID, GroupID: data.MsgData.GroupID} + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCacheName, data.OperationID) + if etcdConn == nil { + errMsg := data.OperationID + "getcdv3.GetConn == nil" + log.NewError(data.OperationID, errMsg) + //return returnMsg(&replay, pb, 201, errMsg, "", 0) + return false, 201, errMsg, nil } + client := pbCache.NewCacheClient(etcdConn) + cacheResp, err := client.GetGroupMemberIDListFromCache(context.Background(), getGroupMemberIDListFromCacheReq) + if err != nil { + log.NewError(data.OperationID, "GetGroupMemberIDListFromCache rpc call failed ", err.Error()) + //return returnMsg(&replay, pb, 201, "GetGroupMemberIDListFromCache failed", "", 0) + return false, 201, err.Error(), nil + } + if cacheResp.CommonResp.ErrCode != 0 { + log.NewError(data.OperationID, "GetGroupMemberIDListFromCache rpc logic call failed ", cacheResp.String()) + //return returnMsg(&replay, pb, 201, "GetGroupMemberIDListFromCache logic failed", "", 0) + return false, cacheResp.CommonResp.ErrCode, cacheResp.CommonResp.ErrMsg, nil + } + if !token_verify.IsManagerUserID(data.MsgData.SendID) { + if !utils.IsContain(data.MsgData.SendID, cacheResp.UserIDList) { + //return returnMsg(&replay, pb, 202, "you are not in group", "", 0) + return false, 202, "you are not in group", nil + } + } + return true, 0, "", cacheResp.UserIDList } - return true, 0, "", cacheResp.UserIDList - default: return true, 0, "", nil } From 7057d7fffbef7b8abc08d6c2cc756582846f9ef1 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Tue, 2 Aug 2022 18:11:40 +0800 Subject: [PATCH 08/11] pb add fields --- pkg/proto/sdk_ws/ws.pb.go | 603 ++++++++++++++++++++------------------ pkg/proto/sdk_ws/ws.proto | 2 + 2 files changed, 312 insertions(+), 293 deletions(-) diff --git a/pkg/proto/sdk_ws/ws.pb.go b/pkg/proto/sdk_ws/ws.pb.go index d6c81186b..1c768edac 100644 --- a/pkg/proto/sdk_ws/ws.pb.go +++ b/pkg/proto/sdk_ws/ws.pb.go @@ -46,7 +46,7 @@ func (m *GroupInfo) Reset() { *m = GroupInfo{} } func (m *GroupInfo) String() string { return proto.CompactTextString(m) } func (*GroupInfo) ProtoMessage() {} func (*GroupInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{0} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{0} } func (m *GroupInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupInfo.Unmarshal(m, b) @@ -204,7 +204,7 @@ func (m *GroupInfoForSet) Reset() { *m = GroupInfoForSet{} } func (m *GroupInfoForSet) String() string { return proto.CompactTextString(m) } func (*GroupInfoForSet) ProtoMessage() {} func (*GroupInfoForSet) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{1} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{1} } func (m *GroupInfoForSet) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupInfoForSet.Unmarshal(m, b) @@ -309,7 +309,7 @@ func (m *GroupMemberFullInfo) Reset() { *m = GroupMemberFullInfo{} } func (m *GroupMemberFullInfo) String() string { return proto.CompactTextString(m) } func (*GroupMemberFullInfo) ProtoMessage() {} func (*GroupMemberFullInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{2} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{2} } func (m *GroupMemberFullInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupMemberFullInfo.Unmarshal(m, b) @@ -428,7 +428,7 @@ func (m *PublicUserInfo) Reset() { *m = PublicUserInfo{} } func (m *PublicUserInfo) String() string { return proto.CompactTextString(m) } func (*PublicUserInfo) ProtoMessage() {} func (*PublicUserInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{3} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{3} } func (m *PublicUserInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PublicUserInfo.Unmarshal(m, b) @@ -504,7 +504,7 @@ func (m *UserInfo) Reset() { *m = UserInfo{} } func (m *UserInfo) String() string { return proto.CompactTextString(m) } func (*UserInfo) ProtoMessage() {} func (*UserInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{4} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{4} } func (m *UserInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UserInfo.Unmarshal(m, b) @@ -618,7 +618,7 @@ func (m *FriendInfo) Reset() { *m = FriendInfo{} } func (m *FriendInfo) String() string { return proto.CompactTextString(m) } func (*FriendInfo) ProtoMessage() {} func (*FriendInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{5} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{5} } func (m *FriendInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendInfo.Unmarshal(m, b) @@ -703,7 +703,7 @@ func (m *BlackInfo) Reset() { *m = BlackInfo{} } func (m *BlackInfo) String() string { return proto.CompactTextString(m) } func (*BlackInfo) ProtoMessage() {} func (*BlackInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{6} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{6} } func (m *BlackInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_BlackInfo.Unmarshal(m, b) @@ -786,7 +786,7 @@ func (m *GroupRequest) Reset() { *m = GroupRequest{} } func (m *GroupRequest) String() string { return proto.CompactTextString(m) } func (*GroupRequest) ProtoMessage() {} func (*GroupRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{7} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{7} } func (m *GroupRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupRequest.Unmarshal(m, b) @@ -908,7 +908,7 @@ func (m *FriendRequest) Reset() { *m = FriendRequest{} } func (m *FriendRequest) String() string { return proto.CompactTextString(m) } func (*FriendRequest) ProtoMessage() {} func (*FriendRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{8} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{8} } func (m *FriendRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendRequest.Unmarshal(m, b) @@ -1053,7 +1053,7 @@ func (m *Department) Reset() { *m = Department{} } func (m *Department) String() string { return proto.CompactTextString(m) } func (*Department) ProtoMessage() {} func (*Department) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{9} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{9} } func (m *Department) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Department.Unmarshal(m, b) @@ -1164,7 +1164,7 @@ func (m *OrganizationUser) Reset() { *m = OrganizationUser{} } func (m *OrganizationUser) String() string { return proto.CompactTextString(m) } func (*OrganizationUser) ProtoMessage() {} func (*OrganizationUser) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{10} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{10} } func (m *OrganizationUser) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_OrganizationUser.Unmarshal(m, b) @@ -1278,7 +1278,7 @@ func (m *DepartmentMember) Reset() { *m = DepartmentMember{} } func (m *DepartmentMember) String() string { return proto.CompactTextString(m) } func (*DepartmentMember) ProtoMessage() {} func (*DepartmentMember) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{11} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{11} } func (m *DepartmentMember) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DepartmentMember.Unmarshal(m, b) @@ -1359,7 +1359,7 @@ func (m *UserDepartmentMember) Reset() { *m = UserDepartmentMember{} } func (m *UserDepartmentMember) String() string { return proto.CompactTextString(m) } func (*UserDepartmentMember) ProtoMessage() {} func (*UserDepartmentMember) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{12} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{12} } func (m *UserDepartmentMember) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UserDepartmentMember.Unmarshal(m, b) @@ -1405,7 +1405,7 @@ func (m *UserInDepartment) Reset() { *m = UserInDepartment{} } func (m *UserInDepartment) String() string { return proto.CompactTextString(m) } func (*UserInDepartment) ProtoMessage() {} func (*UserInDepartment) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{13} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{13} } func (m *UserInDepartment) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UserInDepartment.Unmarshal(m, b) @@ -1454,7 +1454,7 @@ func (m *PullMessageBySeqListReq) Reset() { *m = PullMessageBySeqListReq func (m *PullMessageBySeqListReq) String() string { return proto.CompactTextString(m) } func (*PullMessageBySeqListReq) ProtoMessage() {} func (*PullMessageBySeqListReq) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{14} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{14} } func (m *PullMessageBySeqListReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PullMessageBySeqListReq.Unmarshal(m, b) @@ -1513,7 +1513,7 @@ func (m *SeqList) Reset() { *m = SeqList{} } func (m *SeqList) String() string { return proto.CompactTextString(m) } func (*SeqList) ProtoMessage() {} func (*SeqList) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{15} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{15} } func (m *SeqList) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SeqList.Unmarshal(m, b) @@ -1551,7 +1551,7 @@ func (m *MsgDataList) Reset() { *m = MsgDataList{} } func (m *MsgDataList) String() string { return proto.CompactTextString(m) } func (*MsgDataList) ProtoMessage() {} func (*MsgDataList) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{16} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{16} } func (m *MsgDataList) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MsgDataList.Unmarshal(m, b) @@ -1592,7 +1592,7 @@ func (m *PullMessageBySeqListResp) Reset() { *m = PullMessageBySeqListRe func (m *PullMessageBySeqListResp) String() string { return proto.CompactTextString(m) } func (*PullMessageBySeqListResp) ProtoMessage() {} func (*PullMessageBySeqListResp) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{17} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{17} } func (m *PullMessageBySeqListResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PullMessageBySeqListResp.Unmarshal(m, b) @@ -1653,7 +1653,7 @@ func (m *GetMaxAndMinSeqReq) Reset() { *m = GetMaxAndMinSeqReq{} } func (m *GetMaxAndMinSeqReq) String() string { return proto.CompactTextString(m) } func (*GetMaxAndMinSeqReq) ProtoMessage() {} func (*GetMaxAndMinSeqReq) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{18} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{18} } func (m *GetMaxAndMinSeqReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetMaxAndMinSeqReq.Unmarshal(m, b) @@ -1706,7 +1706,7 @@ func (m *MaxAndMinSeq) Reset() { *m = MaxAndMinSeq{} } func (m *MaxAndMinSeq) String() string { return proto.CompactTextString(m) } func (*MaxAndMinSeq) ProtoMessage() {} func (*MaxAndMinSeq) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{19} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{19} } func (m *MaxAndMinSeq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MaxAndMinSeq.Unmarshal(m, b) @@ -1755,7 +1755,7 @@ func (m *GetMaxAndMinSeqResp) Reset() { *m = GetMaxAndMinSeqResp{} } func (m *GetMaxAndMinSeqResp) String() string { return proto.CompactTextString(m) } func (*GetMaxAndMinSeqResp) ProtoMessage() {} func (*GetMaxAndMinSeqResp) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{20} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{20} } func (m *GetMaxAndMinSeqResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetMaxAndMinSeqResp.Unmarshal(m, b) @@ -1823,7 +1823,7 @@ func (m *UserSendMsgResp) Reset() { *m = UserSendMsgResp{} } func (m *UserSendMsgResp) String() string { return proto.CompactTextString(m) } func (*UserSendMsgResp) ProtoMessage() {} func (*UserSendMsgResp) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{21} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{21} } func (m *UserSendMsgResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UserSendMsgResp.Unmarshal(m, b) @@ -1885,6 +1885,8 @@ type MsgData struct { OfflinePushInfo *OfflinePushInfo `protobuf:"bytes,19,opt,name=offlinePushInfo" json:"offlinePushInfo,omitempty"` AtUserIDList []string `protobuf:"bytes,20,rep,name=atUserIDList" json:"atUserIDList,omitempty"` MsgDataList []byte `protobuf:"bytes,21,opt,name=msgDataList,proto3" json:"msgDataList,omitempty"` + AttachedInfo string `protobuf:"bytes,22,opt,name=attachedInfo" json:"attachedInfo,omitempty"` + Ex string `protobuf:"bytes,23,opt,name=ex" json:"ex,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -1894,7 +1896,7 @@ func (m *MsgData) Reset() { *m = MsgData{} } func (m *MsgData) String() string { return proto.CompactTextString(m) } func (*MsgData) ProtoMessage() {} func (*MsgData) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{22} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{22} } func (m *MsgData) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MsgData.Unmarshal(m, b) @@ -2054,6 +2056,20 @@ func (m *MsgData) GetMsgDataList() []byte { return nil } +func (m *MsgData) GetAttachedInfo() string { + if m != nil { + return m.AttachedInfo + } + return "" +} + +func (m *MsgData) GetEx() string { + if m != nil { + return m.Ex + } + return "" +} + type OfflinePushInfo struct { Title string `protobuf:"bytes,1,opt,name=title" json:"title,omitempty"` Desc string `protobuf:"bytes,2,opt,name=desc" json:"desc,omitempty"` @@ -2069,7 +2085,7 @@ func (m *OfflinePushInfo) Reset() { *m = OfflinePushInfo{} } func (m *OfflinePushInfo) String() string { return proto.CompactTextString(m) } func (*OfflinePushInfo) ProtoMessage() {} func (*OfflinePushInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{23} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{23} } func (m *OfflinePushInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_OfflinePushInfo.Unmarshal(m, b) @@ -2137,7 +2153,7 @@ func (m *TipsComm) Reset() { *m = TipsComm{} } func (m *TipsComm) String() string { return proto.CompactTextString(m) } func (*TipsComm) ProtoMessage() {} func (*TipsComm) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{24} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{24} } func (m *TipsComm) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_TipsComm.Unmarshal(m, b) @@ -2194,7 +2210,7 @@ func (m *GroupCreatedTips) Reset() { *m = GroupCreatedTips{} } func (m *GroupCreatedTips) String() string { return proto.CompactTextString(m) } func (*GroupCreatedTips) ProtoMessage() {} func (*GroupCreatedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{25} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{25} } func (m *GroupCreatedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupCreatedTips.Unmarshal(m, b) @@ -2263,7 +2279,7 @@ func (m *GroupInfoSetTips) Reset() { *m = GroupInfoSetTips{} } func (m *GroupInfoSetTips) String() string { return proto.CompactTextString(m) } func (*GroupInfoSetTips) ProtoMessage() {} func (*GroupInfoSetTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{26} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{26} } func (m *GroupInfoSetTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupInfoSetTips.Unmarshal(m, b) @@ -2318,7 +2334,7 @@ func (m *JoinGroupApplicationTips) Reset() { *m = JoinGroupApplicationTi func (m *JoinGroupApplicationTips) String() string { return proto.CompactTextString(m) } func (*JoinGroupApplicationTips) ProtoMessage() {} func (*JoinGroupApplicationTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{27} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{27} } func (m *JoinGroupApplicationTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_JoinGroupApplicationTips.Unmarshal(m, b) @@ -2374,7 +2390,7 @@ func (m *MemberQuitTips) Reset() { *m = MemberQuitTips{} } func (m *MemberQuitTips) String() string { return proto.CompactTextString(m) } func (*MemberQuitTips) ProtoMessage() {} func (*MemberQuitTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{28} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{28} } func (m *MemberQuitTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MemberQuitTips.Unmarshal(m, b) @@ -2429,7 +2445,7 @@ func (m *GroupApplicationAcceptedTips) Reset() { *m = GroupApplicationAc func (m *GroupApplicationAcceptedTips) String() string { return proto.CompactTextString(m) } func (*GroupApplicationAcceptedTips) ProtoMessage() {} func (*GroupApplicationAcceptedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{29} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{29} } func (m *GroupApplicationAcceptedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupApplicationAcceptedTips.Unmarshal(m, b) @@ -2484,7 +2500,7 @@ func (m *GroupApplicationRejectedTips) Reset() { *m = GroupApplicationRe func (m *GroupApplicationRejectedTips) String() string { return proto.CompactTextString(m) } func (*GroupApplicationRejectedTips) ProtoMessage() {} func (*GroupApplicationRejectedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{30} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{30} } func (m *GroupApplicationRejectedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupApplicationRejectedTips.Unmarshal(m, b) @@ -2540,7 +2556,7 @@ func (m *GroupOwnerTransferredTips) Reset() { *m = GroupOwnerTransferred func (m *GroupOwnerTransferredTips) String() string { return proto.CompactTextString(m) } func (*GroupOwnerTransferredTips) ProtoMessage() {} func (*GroupOwnerTransferredTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{31} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{31} } func (m *GroupOwnerTransferredTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupOwnerTransferredTips.Unmarshal(m, b) @@ -2603,7 +2619,7 @@ func (m *MemberKickedTips) Reset() { *m = MemberKickedTips{} } func (m *MemberKickedTips) String() string { return proto.CompactTextString(m) } func (*MemberKickedTips) ProtoMessage() {} func (*MemberKickedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{32} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{32} } func (m *MemberKickedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MemberKickedTips.Unmarshal(m, b) @@ -2666,7 +2682,7 @@ func (m *MemberInvitedTips) Reset() { *m = MemberInvitedTips{} } func (m *MemberInvitedTips) String() string { return proto.CompactTextString(m) } func (*MemberInvitedTips) ProtoMessage() {} func (*MemberInvitedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{33} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{33} } func (m *MemberInvitedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MemberInvitedTips.Unmarshal(m, b) @@ -2728,7 +2744,7 @@ func (m *MemberEnterTips) Reset() { *m = MemberEnterTips{} } func (m *MemberEnterTips) String() string { return proto.CompactTextString(m) } func (*MemberEnterTips) ProtoMessage() {} func (*MemberEnterTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{34} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{34} } func (m *MemberEnterTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MemberEnterTips.Unmarshal(m, b) @@ -2782,7 +2798,7 @@ func (m *GroupDismissedTips) Reset() { *m = GroupDismissedTips{} } func (m *GroupDismissedTips) String() string { return proto.CompactTextString(m) } func (*GroupDismissedTips) ProtoMessage() {} func (*GroupDismissedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{35} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{35} } func (m *GroupDismissedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupDismissedTips.Unmarshal(m, b) @@ -2838,7 +2854,7 @@ func (m *GroupMemberMutedTips) Reset() { *m = GroupMemberMutedTips{} } func (m *GroupMemberMutedTips) String() string { return proto.CompactTextString(m) } func (*GroupMemberMutedTips) ProtoMessage() {} func (*GroupMemberMutedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{36} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{36} } func (m *GroupMemberMutedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupMemberMutedTips.Unmarshal(m, b) @@ -2907,7 +2923,7 @@ func (m *GroupMemberCancelMutedTips) Reset() { *m = GroupMemberCancelMut func (m *GroupMemberCancelMutedTips) String() string { return proto.CompactTextString(m) } func (*GroupMemberCancelMutedTips) ProtoMessage() {} func (*GroupMemberCancelMutedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{37} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{37} } func (m *GroupMemberCancelMutedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupMemberCancelMutedTips.Unmarshal(m, b) @@ -2968,7 +2984,7 @@ func (m *GroupMutedTips) Reset() { *m = GroupMutedTips{} } func (m *GroupMutedTips) String() string { return proto.CompactTextString(m) } func (*GroupMutedTips) ProtoMessage() {} func (*GroupMutedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{38} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{38} } func (m *GroupMutedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupMutedTips.Unmarshal(m, b) @@ -3022,7 +3038,7 @@ func (m *GroupCancelMutedTips) Reset() { *m = GroupCancelMutedTips{} } func (m *GroupCancelMutedTips) String() string { return proto.CompactTextString(m) } func (*GroupCancelMutedTips) ProtoMessage() {} func (*GroupCancelMutedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{39} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{39} } func (m *GroupCancelMutedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupCancelMutedTips.Unmarshal(m, b) @@ -3077,7 +3093,7 @@ func (m *GroupMemberInfoSetTips) Reset() { *m = GroupMemberInfoSetTips{} func (m *GroupMemberInfoSetTips) String() string { return proto.CompactTextString(m) } func (*GroupMemberInfoSetTips) ProtoMessage() {} func (*GroupMemberInfoSetTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{40} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{40} } func (m *GroupMemberInfoSetTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupMemberInfoSetTips.Unmarshal(m, b) @@ -3137,7 +3153,7 @@ func (m *OrganizationChangedTips) Reset() { *m = OrganizationChangedTips func (m *OrganizationChangedTips) String() string { return proto.CompactTextString(m) } func (*OrganizationChangedTips) ProtoMessage() {} func (*OrganizationChangedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{41} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{41} } func (m *OrganizationChangedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_OrganizationChangedTips.Unmarshal(m, b) @@ -3184,7 +3200,7 @@ func (m *FriendApplication) Reset() { *m = FriendApplication{} } func (m *FriendApplication) String() string { return proto.CompactTextString(m) } func (*FriendApplication) ProtoMessage() {} func (*FriendApplication) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{42} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{42} } func (m *FriendApplication) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendApplication.Unmarshal(m, b) @@ -3237,7 +3253,7 @@ func (m *FromToUserID) Reset() { *m = FromToUserID{} } func (m *FromToUserID) String() string { return proto.CompactTextString(m) } func (*FromToUserID) ProtoMessage() {} func (*FromToUserID) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{43} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{43} } func (m *FromToUserID) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FromToUserID.Unmarshal(m, b) @@ -3283,7 +3299,7 @@ func (m *FriendApplicationTips) Reset() { *m = FriendApplicationTips{} } func (m *FriendApplicationTips) String() string { return proto.CompactTextString(m) } func (*FriendApplicationTips) ProtoMessage() {} func (*FriendApplicationTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{44} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{44} } func (m *FriendApplicationTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendApplicationTips.Unmarshal(m, b) @@ -3323,7 +3339,7 @@ func (m *FriendApplicationApprovedTips) Reset() { *m = FriendApplication func (m *FriendApplicationApprovedTips) String() string { return proto.CompactTextString(m) } func (*FriendApplicationApprovedTips) ProtoMessage() {} func (*FriendApplicationApprovedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{45} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{45} } func (m *FriendApplicationApprovedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendApplicationApprovedTips.Unmarshal(m, b) @@ -3370,7 +3386,7 @@ func (m *FriendApplicationRejectedTips) Reset() { *m = FriendApplication func (m *FriendApplicationRejectedTips) String() string { return proto.CompactTextString(m) } func (*FriendApplicationRejectedTips) ProtoMessage() {} func (*FriendApplicationRejectedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{46} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{46} } func (m *FriendApplicationRejectedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendApplicationRejectedTips.Unmarshal(m, b) @@ -3418,7 +3434,7 @@ func (m *FriendAddedTips) Reset() { *m = FriendAddedTips{} } func (m *FriendAddedTips) String() string { return proto.CompactTextString(m) } func (*FriendAddedTips) ProtoMessage() {} func (*FriendAddedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{47} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{47} } func (m *FriendAddedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendAddedTips.Unmarshal(m, b) @@ -3471,7 +3487,7 @@ func (m *FriendDeletedTips) Reset() { *m = FriendDeletedTips{} } func (m *FriendDeletedTips) String() string { return proto.CompactTextString(m) } func (*FriendDeletedTips) ProtoMessage() {} func (*FriendDeletedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{48} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{48} } func (m *FriendDeletedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendDeletedTips.Unmarshal(m, b) @@ -3509,7 +3525,7 @@ func (m *BlackAddedTips) Reset() { *m = BlackAddedTips{} } func (m *BlackAddedTips) String() string { return proto.CompactTextString(m) } func (*BlackAddedTips) ProtoMessage() {} func (*BlackAddedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{49} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{49} } func (m *BlackAddedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_BlackAddedTips.Unmarshal(m, b) @@ -3547,7 +3563,7 @@ func (m *BlackDeletedTips) Reset() { *m = BlackDeletedTips{} } func (m *BlackDeletedTips) String() string { return proto.CompactTextString(m) } func (*BlackDeletedTips) ProtoMessage() {} func (*BlackDeletedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{50} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{50} } func (m *BlackDeletedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_BlackDeletedTips.Unmarshal(m, b) @@ -3585,7 +3601,7 @@ func (m *FriendInfoChangedTips) Reset() { *m = FriendInfoChangedTips{} } func (m *FriendInfoChangedTips) String() string { return proto.CompactTextString(m) } func (*FriendInfoChangedTips) ProtoMessage() {} func (*FriendInfoChangedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{51} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{51} } func (m *FriendInfoChangedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendInfoChangedTips.Unmarshal(m, b) @@ -3624,7 +3640,7 @@ func (m *UserInfoUpdatedTips) Reset() { *m = UserInfoUpdatedTips{} } func (m *UserInfoUpdatedTips) String() string { return proto.CompactTextString(m) } func (*UserInfoUpdatedTips) ProtoMessage() {} func (*UserInfoUpdatedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{52} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{52} } func (m *UserInfoUpdatedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UserInfoUpdatedTips.Unmarshal(m, b) @@ -3663,7 +3679,7 @@ func (m *ConversationUpdateTips) Reset() { *m = ConversationUpdateTips{} func (m *ConversationUpdateTips) String() string { return proto.CompactTextString(m) } func (*ConversationUpdateTips) ProtoMessage() {} func (*ConversationUpdateTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{53} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{53} } func (m *ConversationUpdateTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ConversationUpdateTips.Unmarshal(m, b) @@ -3703,7 +3719,7 @@ func (m *ConversationSetPrivateTips) Reset() { *m = ConversationSetPriva func (m *ConversationSetPrivateTips) String() string { return proto.CompactTextString(m) } func (*ConversationSetPrivateTips) ProtoMessage() {} func (*ConversationSetPrivateTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{54} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{54} } func (m *ConversationSetPrivateTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ConversationSetPrivateTips.Unmarshal(m, b) @@ -3758,7 +3774,7 @@ func (m *DeleteMessageTips) Reset() { *m = DeleteMessageTips{} } func (m *DeleteMessageTips) String() string { return proto.CompactTextString(m) } func (*DeleteMessageTips) ProtoMessage() {} func (*DeleteMessageTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{55} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{55} } func (m *DeleteMessageTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DeleteMessageTips.Unmarshal(m, b) @@ -3812,7 +3828,7 @@ func (m *RequestPagination) Reset() { *m = RequestPagination{} } func (m *RequestPagination) String() string { return proto.CompactTextString(m) } func (*RequestPagination) ProtoMessage() {} func (*RequestPagination) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{56} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{56} } func (m *RequestPagination) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_RequestPagination.Unmarshal(m, b) @@ -3858,7 +3874,7 @@ func (m *ResponsePagination) Reset() { *m = ResponsePagination{} } func (m *ResponsePagination) String() string { return proto.CompactTextString(m) } func (*ResponsePagination) ProtoMessage() {} func (*ResponsePagination) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{57} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{57} } func (m *ResponsePagination) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ResponsePagination.Unmarshal(m, b) @@ -3911,7 +3927,7 @@ func (m *SignalReq) Reset() { *m = SignalReq{} } func (m *SignalReq) String() string { return proto.CompactTextString(m) } func (*SignalReq) ProtoMessage() {} func (*SignalReq) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{58} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{58} } func (m *SignalReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalReq.Unmarshal(m, b) @@ -4178,7 +4194,7 @@ func (m *SignalResp) Reset() { *m = SignalResp{} } func (m *SignalResp) String() string { return proto.CompactTextString(m) } func (*SignalResp) ProtoMessage() {} func (*SignalResp) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{59} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{59} } func (m *SignalResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalResp.Unmarshal(m, b) @@ -4447,7 +4463,7 @@ func (m *InvitationInfo) Reset() { *m = InvitationInfo{} } func (m *InvitationInfo) String() string { return proto.CompactTextString(m) } func (*InvitationInfo) ProtoMessage() {} func (*InvitationInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{60} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{60} } func (m *InvitationInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_InvitationInfo.Unmarshal(m, b) @@ -4550,7 +4566,7 @@ func (m *ParticipantMetaData) Reset() { *m = ParticipantMetaData{} } func (m *ParticipantMetaData) String() string { return proto.CompactTextString(m) } func (*ParticipantMetaData) ProtoMessage() {} func (*ParticipantMetaData) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{61} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{61} } func (m *ParticipantMetaData) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ParticipantMetaData.Unmarshal(m, b) @@ -4605,7 +4621,7 @@ func (m *SignalInviteReq) Reset() { *m = SignalInviteReq{} } func (m *SignalInviteReq) String() string { return proto.CompactTextString(m) } func (*SignalInviteReq) ProtoMessage() {} func (*SignalInviteReq) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{62} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{62} } func (m *SignalInviteReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalInviteReq.Unmarshal(m, b) @@ -4666,7 +4682,7 @@ func (m *SignalInviteReply) Reset() { *m = SignalInviteReply{} } func (m *SignalInviteReply) String() string { return proto.CompactTextString(m) } func (*SignalInviteReply) ProtoMessage() {} func (*SignalInviteReply) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{63} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{63} } func (m *SignalInviteReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalInviteReply.Unmarshal(m, b) @@ -4721,7 +4737,7 @@ func (m *SignalInviteInGroupReq) Reset() { *m = SignalInviteInGroupReq{} func (m *SignalInviteInGroupReq) String() string { return proto.CompactTextString(m) } func (*SignalInviteInGroupReq) ProtoMessage() {} func (*SignalInviteInGroupReq) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{64} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{64} } func (m *SignalInviteInGroupReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalInviteInGroupReq.Unmarshal(m, b) @@ -4782,7 +4798,7 @@ func (m *SignalInviteInGroupReply) Reset() { *m = SignalInviteInGroupRep func (m *SignalInviteInGroupReply) String() string { return proto.CompactTextString(m) } func (*SignalInviteInGroupReply) ProtoMessage() {} func (*SignalInviteInGroupReply) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{65} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{65} } func (m *SignalInviteInGroupReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalInviteInGroupReply.Unmarshal(m, b) @@ -4837,7 +4853,7 @@ func (m *SignalCancelReq) Reset() { *m = SignalCancelReq{} } func (m *SignalCancelReq) String() string { return proto.CompactTextString(m) } func (*SignalCancelReq) ProtoMessage() {} func (*SignalCancelReq) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{66} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{66} } func (m *SignalCancelReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalCancelReq.Unmarshal(m, b) @@ -4895,7 +4911,7 @@ func (m *SignalCancelReply) Reset() { *m = SignalCancelReply{} } func (m *SignalCancelReply) String() string { return proto.CompactTextString(m) } func (*SignalCancelReply) ProtoMessage() {} func (*SignalCancelReply) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{67} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{67} } func (m *SignalCancelReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalCancelReply.Unmarshal(m, b) @@ -4930,7 +4946,7 @@ func (m *SignalAcceptReq) Reset() { *m = SignalAcceptReq{} } func (m *SignalAcceptReq) String() string { return proto.CompactTextString(m) } func (*SignalAcceptReq) ProtoMessage() {} func (*SignalAcceptReq) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{68} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{68} } func (m *SignalAcceptReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalAcceptReq.Unmarshal(m, b) @@ -4998,7 +5014,7 @@ func (m *SignalAcceptReply) Reset() { *m = SignalAcceptReply{} } func (m *SignalAcceptReply) String() string { return proto.CompactTextString(m) } func (*SignalAcceptReply) ProtoMessage() {} func (*SignalAcceptReply) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{69} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{69} } func (m *SignalAcceptReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalAcceptReply.Unmarshal(m, b) @@ -5052,7 +5068,7 @@ func (m *SignalHungUpReq) Reset() { *m = SignalHungUpReq{} } func (m *SignalHungUpReq) String() string { return proto.CompactTextString(m) } func (*SignalHungUpReq) ProtoMessage() {} func (*SignalHungUpReq) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{70} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{70} } func (m *SignalHungUpReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalHungUpReq.Unmarshal(m, b) @@ -5103,7 +5119,7 @@ func (m *SignalHungUpReply) Reset() { *m = SignalHungUpReply{} } func (m *SignalHungUpReply) String() string { return proto.CompactTextString(m) } func (*SignalHungUpReply) ProtoMessage() {} func (*SignalHungUpReply) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{71} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{71} } func (m *SignalHungUpReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalHungUpReply.Unmarshal(m, b) @@ -5138,7 +5154,7 @@ func (m *SignalRejectReq) Reset() { *m = SignalRejectReq{} } func (m *SignalRejectReq) String() string { return proto.CompactTextString(m) } func (*SignalRejectReq) ProtoMessage() {} func (*SignalRejectReq) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{72} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{72} } func (m *SignalRejectReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalRejectReq.Unmarshal(m, b) @@ -5203,7 +5219,7 @@ func (m *SignalRejectReply) Reset() { *m = SignalRejectReply{} } func (m *SignalRejectReply) String() string { return proto.CompactTextString(m) } func (*SignalRejectReply) ProtoMessage() {} func (*SignalRejectReply) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{73} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{73} } func (m *SignalRejectReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalRejectReply.Unmarshal(m, b) @@ -5237,7 +5253,7 @@ func (m *DelMsgListReq) Reset() { *m = DelMsgListReq{} } func (m *DelMsgListReq) String() string { return proto.CompactTextString(m) } func (*DelMsgListReq) ProtoMessage() {} func (*DelMsgListReq) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{74} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{74} } func (m *DelMsgListReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DelMsgListReq.Unmarshal(m, b) @@ -5297,7 +5313,7 @@ func (m *DelMsgListResp) Reset() { *m = DelMsgListResp{} } func (m *DelMsgListResp) String() string { return proto.CompactTextString(m) } func (*DelMsgListResp) ProtoMessage() {} func (*DelMsgListResp) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_63960bbd3e4ca6d2, []int{75} + return fileDescriptor_ws_860ddb8af4f21a5d, []int{75} } func (m *DelMsgListResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DelMsgListResp.Unmarshal(m, b) @@ -5414,226 +5430,227 @@ func init() { proto.RegisterType((*DelMsgListResp)(nil), "server_api_params.DelMsgListResp") } -func init() { proto.RegisterFile("sdk_ws/ws.proto", fileDescriptor_ws_63960bbd3e4ca6d2) } +func init() { proto.RegisterFile("sdk_ws/ws.proto", fileDescriptor_ws_860ddb8af4f21a5d) } -var fileDescriptor_ws_63960bbd3e4ca6d2 = []byte{ - // 3479 bytes of a gzipped FileDescriptorProto +var fileDescriptor_ws_860ddb8af4f21a5d = []byte{ + // 3499 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x3b, 0xcd, 0x6f, 0x24, 0x47, 0xf5, 0xbf, 0xee, 0xf1, 0x8c, 0x3d, 0x6f, 0xfc, 0x31, 0xee, 0xdd, 0x38, 0xf3, 0x33, 0x9b, 0xc5, 0x74, 0xac, 0x24, 0x2c, 0xc1, 0x1b, 0x6d, 0x08, 0x82, 0x7c, 0x2c, 0xf2, 0x47, 0xf6, 0x23, 0xd9, 0xb1, 0x9d, 0x9e, 0xdd, 0x04, 0x11, 0xa4, 0xa5, 0x3d, 0x5d, 0x1e, 0xf7, 0xba, 0xa7, 0xab, 0xdd, - 0x1f, 0xde, 0x35, 0x17, 0xa4, 0x20, 0x21, 0x6e, 0x5c, 0x40, 0x48, 0x5c, 0x90, 0xb8, 0x20, 0x50, - 0x14, 0x21, 0x04, 0x12, 0x07, 0x84, 0x10, 0xe2, 0xc6, 0x85, 0x03, 0x37, 0x0e, 0x48, 0x9c, 0xf9, - 0x07, 0x90, 0x90, 0x82, 0xaa, 0x5e, 0x75, 0x77, 0x55, 0x77, 0x8f, 0x3d, 0x6b, 0x59, 0xd9, 0x8d, - 0x96, 0xdb, 0xbc, 0xd7, 0xf5, 0x5e, 0xbd, 0xef, 0x7a, 0xf5, 0x31, 0x30, 0x17, 0x39, 0xfb, 0x77, - 0xef, 0x47, 0x97, 0xef, 0x47, 0x2b, 0x41, 0x48, 0x63, 0x6a, 0xcc, 0x47, 0x24, 0x3c, 0x24, 0xe1, - 0x5d, 0x3b, 0x70, 0xef, 0x06, 0x76, 0x68, 0x0f, 0xa3, 0xc5, 0xe7, 0xb7, 0x02, 0xe2, 0xdf, 0xbd, - 0xd9, 0xbd, 0x1c, 0xec, 0x0f, 0x2e, 0xf3, 0x51, 0x97, 0x53, 0xaa, 0xd0, 0x0e, 0x02, 0x12, 0x0a, - 0x5a, 0xf3, 0x1f, 0x13, 0xd0, 0xbc, 0x1e, 0xd2, 0x24, 0xb8, 0xe9, 0xef, 0x52, 0xa3, 0x03, 0x93, - 0x03, 0x0e, 0x6c, 0x74, 0xb4, 0x25, 0xed, 0x85, 0xa6, 0x95, 0x82, 0xc6, 0x05, 0x68, 0xf2, 0x9f, - 0x9b, 0xf6, 0x90, 0x74, 0x74, 0xfe, 0x2d, 0x47, 0x18, 0x26, 0x4c, 0xfb, 0x34, 0x76, 0x77, 0xdd, - 0xbe, 0x1d, 0xbb, 0xd4, 0xef, 0xd4, 0xf8, 0x00, 0x05, 0xc7, 0xc6, 0xb8, 0x7e, 0x1c, 0x52, 0x27, - 0xe9, 0xf3, 0x31, 0x13, 0x38, 0x46, 0xc6, 0xb1, 0xf9, 0x77, 0xed, 0x3e, 0xb9, 0x63, 0xdd, 0xea, - 0xd4, 0x71, 0x7e, 0x01, 0x1a, 0x4b, 0xd0, 0xa2, 0xf7, 0x7d, 0x12, 0xde, 0x89, 0x48, 0x78, 0x73, - 0xa3, 0xd3, 0xe0, 0x5f, 0x65, 0x94, 0x71, 0x11, 0xa0, 0x1f, 0x12, 0x3b, 0x26, 0xb7, 0xdd, 0x21, - 0xe9, 0x4c, 0x2e, 0x69, 0x2f, 0xcc, 0x58, 0x12, 0x86, 0x71, 0x18, 0x92, 0xe1, 0x0e, 0x09, 0xd7, - 0x69, 0xe2, 0xc7, 0x9d, 0x29, 0x3e, 0x40, 0x46, 0x19, 0xb3, 0xa0, 0x93, 0x07, 0x9d, 0x26, 0x67, - 0xad, 0x93, 0x07, 0xc6, 0x02, 0x34, 0xa2, 0xd8, 0x8e, 0x93, 0xa8, 0x03, 0x4b, 0xda, 0x0b, 0x75, - 0x4b, 0x40, 0xc6, 0x32, 0xcc, 0x70, 0xbe, 0x34, 0x95, 0xa6, 0xc5, 0x49, 0x54, 0x64, 0x66, 0xb1, - 0xdb, 0x47, 0x01, 0xe9, 0x4c, 0x73, 0x06, 0x39, 0xc2, 0xb8, 0x04, 0x6d, 0x9f, 0x10, 0xe7, 0x5d, - 0x12, 0xe6, 0x56, 0x9b, 0xe1, 0x83, 0x4a, 0x78, 0xe3, 0x39, 0x98, 0xf5, 0x28, 0xdd, 0xef, 0x72, - 0x51, 0x99, 0x9f, 0x3a, 0xb3, 0x7c, 0x64, 0x01, 0x6b, 0xbc, 0x08, 0xf3, 0x76, 0x10, 0x78, 0x47, - 0x88, 0xba, 0x16, 0xba, 0xc4, 0x77, 0x3a, 0x73, 0x7c, 0x68, 0xf9, 0x83, 0xf1, 0x65, 0x58, 0x90, - 0xfd, 0x73, 0x27, 0x70, 0x52, 0xdb, 0xb5, 0xb9, 0x69, 0x46, 0x7c, 0x35, 0x56, 0xc0, 0x50, 0xbe, - 0xa0, 0x09, 0xe6, 0xb9, 0x09, 0x2a, 0xbe, 0x98, 0x3f, 0xac, 0xc1, 0x5c, 0x16, 0x61, 0xd7, 0x68, - 0xd8, 0x23, 0xf1, 0x63, 0x1c, 0x67, 0x18, 0x03, 0x8d, 0x2c, 0x06, 0xae, 0x57, 0xf8, 0x89, 0xc5, - 0x56, 0xeb, 0xca, 0x67, 0x56, 0x06, 0x94, 0x0e, 0x3c, 0x82, 0x89, 0xb4, 0x93, 0xec, 0xae, 0xdc, - 0xf4, 0xe3, 0x97, 0xaf, 0xbc, 0x6b, 0x7b, 0x09, 0xa9, 0x70, 0xe2, 0x7a, 0xc9, 0x89, 0x53, 0x27, - 0xb3, 0x29, 0x7a, 0xf8, 0x66, 0x95, 0x87, 0x9b, 0x27, 0xf3, 0x29, 0x53, 0x99, 0x1f, 0xeb, 0x70, - 0x8e, 0xbb, 0x45, 0x60, 0x13, 0xcf, 0x3b, 0xa1, 0x04, 0x2c, 0x40, 0x23, 0x41, 0x67, 0xa3, 0x5f, - 0x04, 0xc4, 0x5c, 0x16, 0x52, 0x8f, 0xdc, 0x22, 0x87, 0xc4, 0xe3, 0x1e, 0xa9, 0x5b, 0x39, 0xc2, - 0x58, 0x84, 0xa9, 0x7b, 0xd4, 0xf5, 0x79, 0x60, 0x4d, 0xf0, 0x8f, 0x19, 0xcc, 0xbe, 0xf9, 0x6e, - 0x7f, 0xdf, 0x67, 0xbe, 0x46, 0x3f, 0x64, 0xb0, 0xec, 0xa2, 0x86, 0xea, 0xa2, 0xe7, 0x60, 0xd6, - 0x0e, 0x82, 0xae, 0xed, 0x0f, 0x48, 0x88, 0x93, 0x4e, 0x62, 0x3a, 0xa8, 0x58, 0x56, 0x10, 0xd8, - 0x4c, 0x3d, 0x9a, 0x84, 0x7d, 0xc2, 0xad, 0x5d, 0xb7, 0x24, 0x0c, 0xe3, 0x43, 0x03, 0x12, 0x4a, - 0x79, 0x8c, 0xa9, 0x5f, 0xc0, 0x8a, 0x90, 0x80, 0x2c, 0x24, 0x58, 0x21, 0x49, 0x62, 0xf2, 0xa6, - 0xef, 0x70, 0xa5, 0x5a, 0xa2, 0x90, 0xe4, 0x28, 0x56, 0x20, 0x5c, 0xff, 0xd0, 0x8d, 0xb3, 0x72, - 0x35, 0x8d, 0x05, 0x42, 0x41, 0x9a, 0xdf, 0xd3, 0x60, 0x76, 0x3b, 0xd9, 0xf1, 0xdc, 0x3e, 0x47, - 0x30, 0xe3, 0xe7, 0x26, 0xd6, 0x14, 0x13, 0xcb, 0x86, 0xd2, 0x47, 0x1b, 0xaa, 0xa6, 0x1a, 0x6a, - 0x01, 0x1a, 0x03, 0xe2, 0x3b, 0x24, 0x14, 0x86, 0x17, 0x90, 0x50, 0xa8, 0x9e, 0x2a, 0x64, 0xfe, - 0x49, 0x87, 0xa9, 0x4f, 0x58, 0x84, 0x25, 0x68, 0x05, 0x7b, 0xd4, 0x27, 0x9b, 0x09, 0x0b, 0x3e, - 0x21, 0x8b, 0x8c, 0x32, 0xce, 0x43, 0x7d, 0xc7, 0x0d, 0xe3, 0x3d, 0xee, 0xfd, 0x19, 0x0b, 0x01, - 0x86, 0x25, 0x43, 0xdb, 0x45, 0x97, 0x37, 0x2d, 0x04, 0x84, 0x42, 0x53, 0x99, 0x87, 0xd4, 0xa5, - 0xa0, 0x59, 0x5a, 0x0a, 0xca, 0x11, 0x04, 0x95, 0x11, 0x74, 0x09, 0xda, 0x03, 0x8f, 0xee, 0xd8, - 0x9e, 0x45, 0xfa, 0x87, 0xdd, 0x68, 0xb0, 0x15, 0xc4, 0xdc, 0xdd, 0x75, 0xab, 0x84, 0x37, 0xff, - 0xad, 0x01, 0x60, 0x6a, 0x71, 0x33, 0x16, 0xd6, 0x2b, 0xad, 0xbc, 0x5e, 0x2d, 0x40, 0x23, 0x24, - 0x43, 0x3b, 0xdc, 0x4f, 0xd3, 0x09, 0xa1, 0x82, 0xf0, 0xb5, 0x92, 0xf0, 0xaf, 0x01, 0xec, 0xf2, - 0x79, 0x18, 0x1f, 0x6e, 0x56, 0x96, 0xfc, 0xa5, 0x16, 0x60, 0x25, 0xf5, 0xa8, 0x25, 0x0d, 0x67, - 0xb9, 0x6a, 0x3b, 0x8e, 0x48, 0x89, 0x3a, 0xe6, 0x6a, 0x86, 0xa8, 0xc8, 0x88, 0xc6, 0x31, 0x19, - 0x31, 0x99, 0x05, 0xd0, 0xbf, 0x34, 0x68, 0xae, 0x79, 0x76, 0x7f, 0x7f, 0x4c, 0xd5, 0x55, 0x15, - 0xf5, 0x92, 0x8a, 0xd7, 0x61, 0x66, 0x87, 0xb1, 0x4b, 0x55, 0xe0, 0x56, 0x68, 0x5d, 0xf9, 0x5c, - 0x85, 0x96, 0x6a, 0x02, 0x59, 0x2a, 0x9d, 0xaa, 0xee, 0xc4, 0xc9, 0xea, 0xd6, 0x8f, 0x51, 0x37, - 0x5b, 0x13, 0xcc, 0x1f, 0xd7, 0x60, 0x9a, 0x97, 0x4e, 0x8b, 0x1c, 0x24, 0x24, 0x8a, 0x8d, 0x37, - 0x60, 0x2a, 0x49, 0x45, 0xd5, 0xc6, 0x15, 0x35, 0x23, 0x31, 0x5e, 0x15, 0x6b, 0x1e, 0xa7, 0xd7, - 0x39, 0xfd, 0x85, 0x0a, 0xfa, 0x6c, 0x11, 0xb5, 0xf2, 0xe1, 0x6c, 0xb5, 0xdb, 0xb3, 0x7d, 0xc7, - 0x23, 0x16, 0x89, 0x12, 0x2f, 0x16, 0xf5, 0x57, 0xc1, 0x61, 0xa4, 0x1d, 0x74, 0xa3, 0x81, 0x58, - 0x0b, 0x05, 0xc4, 0xac, 0x83, 0xe3, 0xd8, 0x27, 0x54, 0x3d, 0x47, 0xb0, 0xa4, 0x0e, 0xc9, 0x01, - 0xf7, 0x10, 0xa6, 0x60, 0x0a, 0xe6, 0x73, 0x0a, 0xab, 0x61, 0x20, 0x28, 0x38, 0xe6, 0x62, 0x84, - 0x39, 0x03, 0x6c, 0xb6, 0x24, 0x4c, 0xa9, 0xd7, 0x52, 0x8b, 0x35, 0x94, 0x8a, 0x75, 0xa9, 0xa4, - 0xb6, 0xaa, 0x4a, 0xea, 0xdf, 0x6b, 0x30, 0x83, 0x49, 0x98, 0xba, 0xe6, 0x22, 0xcb, 0x16, 0x3a, - 0x54, 0x62, 0x51, 0xc2, 0x30, 0x5d, 0x18, 0xb4, 0xa9, 0x96, 0x36, 0x05, 0xc7, 0x02, 0x9a, 0xc1, - 0xd7, 0x94, 0x12, 0x27, 0xa3, 0xd2, 0x59, 0xae, 0xcb, 0xa5, 0x4e, 0xc2, 0xb0, 0xe2, 0x19, 0x53, - 0x25, 0xc6, 0x32, 0x98, 0xd1, 0xc6, 0x34, 0x9b, 0x1f, 0xa3, 0x4c, 0xc2, 0x30, 0x2f, 0xc5, 0x34, - 0x9d, 0x1b, 0x4d, 0x9d, 0x23, 0x90, 0xb3, 0x98, 0x17, 0x97, 0xb8, 0x0c, 0x2e, 0xc5, 0x46, 0xf3, - 0xd8, 0xd8, 0x00, 0x25, 0x36, 0xd4, 0x14, 0x6d, 0x95, 0x52, 0x74, 0x19, 0x66, 0x90, 0x4f, 0x61, - 0x89, 0x53, 0x90, 0x6a, 0x84, 0xcd, 0x14, 0x23, 0x4c, 0x8d, 0x91, 0xd9, 0x11, 0x31, 0x32, 0x97, - 0xe5, 0xdd, 0xaf, 0x75, 0x80, 0x0d, 0x12, 0xd8, 0x61, 0x3c, 0x24, 0x7e, 0xcc, 0xd4, 0x73, 0x32, - 0x28, 0x73, 0xae, 0x82, 0x93, 0x57, 0x26, 0x5d, 0x5d, 0x99, 0x0c, 0x98, 0xe0, 0x06, 0x47, 0x6f, - 0xf2, 0xdf, 0xcc, 0x98, 0x81, 0x1d, 0x22, 0x37, 0x4c, 0x95, 0x0c, 0x66, 0x2b, 0x0f, 0x0d, 0x1d, - 0xb1, 0x56, 0xd5, 0x2d, 0x04, 0x58, 0x09, 0xc9, 0xe7, 0xe3, 0x9d, 0x7e, 0x03, 0x57, 0x12, 0x15, - 0x7b, 0xe2, 0xe6, 0xe4, 0x12, 0xb4, 0xa3, 0x64, 0x27, 0x57, 0x6e, 0x33, 0x19, 0x8a, 0xa4, 0x29, - 0xe1, 0x99, 0x51, 0x71, 0xd7, 0xc2, 0x06, 0xe1, 0xe2, 0x96, 0x23, 0x8a, 0xdd, 0x8a, 0xf9, 0xa1, - 0x0e, 0xed, 0xad, 0x70, 0x60, 0xfb, 0xee, 0xb7, 0xb3, 0xae, 0xfc, 0x54, 0x8b, 0xfc, 0x12, 0xb4, - 0x88, 0x3f, 0xf0, 0xdc, 0x68, 0x6f, 0x33, 0xb7, 0x9b, 0x8c, 0x92, 0x8d, 0x3d, 0x31, 0xaa, 0x0d, - 0xa8, 0x2b, 0x6d, 0xc0, 0x02, 0x34, 0x86, 0x74, 0xc7, 0xf5, 0xd2, 0xb8, 0x17, 0x10, 0x8f, 0x79, - 0xe2, 0x11, 0xde, 0x0f, 0x64, 0x31, 0x9f, 0x22, 0xf2, 0xd6, 0x60, 0xaa, 0xb2, 0x35, 0x68, 0xca, - 0xad, 0x81, 0x6a, 0x78, 0x28, 0x19, 0x1e, 0xcd, 0xd5, 0xca, 0xcc, 0xf5, 0x47, 0x0d, 0xda, 0xb9, - 0xb9, 0xb1, 0x37, 0x1e, 0x69, 0xae, 0x62, 0x04, 0xea, 0x15, 0x11, 0x98, 0xc5, 0x4d, 0x4d, 0x8e, - 0x1b, 0x16, 0x69, 0x34, 0x72, 0xa5, 0x0d, 0x4a, 0x06, 0xb3, 0xd9, 0x3c, 0x62, 0x4b, 0xc6, 0x42, - 0x48, 0xda, 0x8e, 0x36, 0x94, 0xed, 0x68, 0x71, 0x35, 0xfe, 0x9d, 0x06, 0xe7, 0x99, 0x97, 0x4b, - 0x6a, 0x6c, 0x41, 0x9b, 0x16, 0x22, 0x41, 0x2c, 0x57, 0xcf, 0x56, 0x2c, 0x37, 0xc5, 0xa0, 0xb1, - 0x4a, 0xc4, 0x8c, 0xa1, 0x53, 0x98, 0x44, 0xac, 0x5f, 0x55, 0x0c, 0x8b, 0xf2, 0x58, 0x25, 0x62, - 0xf3, 0xf7, 0x1a, 0xb4, 0x71, 0x81, 0x94, 0xf2, 0xfc, 0xcc, 0xc5, 0x7e, 0x0f, 0xce, 0x17, 0x67, - 0xbe, 0xe5, 0x46, 0x71, 0x47, 0x5f, 0xaa, 0x8d, 0x2b, 0x7a, 0x25, 0x03, 0x96, 0x6b, 0x4f, 0x6f, - 0x27, 0x9e, 0xd7, 0x25, 0x51, 0x64, 0x0f, 0xc8, 0xda, 0x51, 0x8f, 0x1c, 0xb0, 0x0f, 0x16, 0x39, - 0x18, 0x19, 0x43, 0xac, 0x5b, 0xe2, 0xed, 0x86, 0x4b, 0xfd, 0x2c, 0x84, 0x64, 0x14, 0x4b, 0xab, - 0x08, 0xf9, 0x74, 0x6a, 0x4b, 0x35, 0xb6, 0x10, 0x0b, 0xd0, 0xf8, 0x16, 0x4c, 0xf3, 0x4e, 0x40, - 0x4c, 0xd3, 0x99, 0xe0, 0x0a, 0xbc, 0x5e, 0xd9, 0x7b, 0x54, 0x4a, 0x85, 0x3d, 0x85, 0x80, 0xdf, - 0xf4, 0xe3, 0xf0, 0xc8, 0x52, 0x38, 0x2e, 0xbe, 0x0f, 0xf3, 0xa5, 0x21, 0x46, 0x1b, 0x6a, 0xfb, - 0xe4, 0x48, 0xe8, 0xc1, 0x7e, 0x1a, 0x2f, 0x41, 0xfd, 0x90, 0x6d, 0x34, 0x85, 0xf7, 0x17, 0x2b, - 0x24, 0x10, 0x32, 0x5b, 0x38, 0xf0, 0x55, 0xfd, 0x2b, 0x9a, 0xf9, 0x6c, 0xa6, 0x98, 0xac, 0xa3, - 0xa6, 0xe8, 0x68, 0xbe, 0x0d, 0xad, 0x6e, 0x34, 0xd8, 0xb0, 0x63, 0x9b, 0x0f, 0x7c, 0x1d, 0x5a, - 0xc3, 0x1c, 0xe4, 0x83, 0xab, 0xe7, 0x13, 0x44, 0x96, 0x3c, 0xdc, 0xfc, 0xab, 0x0e, 0x9d, 0x6a, - 0x53, 0x44, 0x01, 0x93, 0x81, 0x84, 0xe1, 0x3a, 0x75, 0x08, 0x57, 0xad, 0x6e, 0xa5, 0x20, 0xf3, - 0x1d, 0x09, 0x43, 0xb6, 0x86, 0x89, 0x56, 0x1d, 0x21, 0x63, 0x05, 0x26, 0xbc, 0xd4, 0x2d, 0xc7, - 0x4b, 0xc1, 0xc7, 0x19, 0x43, 0x68, 0x73, 0xeb, 0x4a, 0x0a, 0x09, 0x9f, 0xad, 0x8e, 0xed, 0xb3, - 0x28, 0x40, 0xa7, 0x49, 0x3c, 0xd0, 0x71, 0x25, 0xd6, 0x8b, 0x7d, 0x78, 0xaa, 0x72, 0x68, 0x85, - 0x03, 0xbf, 0xa4, 0x3a, 0xf0, 0xe2, 0x68, 0x55, 0x8a, 0x4e, 0x0c, 0xc0, 0xb8, 0x4e, 0xe2, 0xae, - 0xfd, 0x60, 0xd5, 0x77, 0xba, 0xae, 0xdf, 0x23, 0x07, 0x2c, 0xda, 0x97, 0xa0, 0x25, 0x8e, 0x0d, - 0x32, 0x37, 0x35, 0x2d, 0x19, 0x35, 0xf2, 0x34, 0xa1, 0x90, 0x0f, 0xb5, 0x52, 0x3e, 0x98, 0x57, - 0x61, 0x5a, 0x9e, 0x8e, 0x2f, 0x22, 0xf6, 0x83, 0x1e, 0x39, 0xe0, 0x0a, 0xcd, 0x58, 0x02, 0xe2, - 0x78, 0x3e, 0x42, 0xec, 0x30, 0x04, 0x64, 0xfe, 0x45, 0x87, 0x73, 0x25, 0x91, 0xa3, 0xe0, 0x61, - 0xf9, 0xc8, 0xf1, 0x52, 0x1b, 0x15, 0x2f, 0x13, 0x4a, 0xbc, 0xec, 0xc3, 0x3c, 0x3a, 0x49, 0x9a, - 0xba, 0x53, 0xe7, 0x01, 0xf0, 0x46, 0x55, 0xc3, 0x5f, 0x16, 0x52, 0xf8, 0x5e, 0xc2, 0xa2, 0xf3, - 0xcb, 0x7c, 0x17, 0x09, 0x2c, 0x54, 0x0f, 0xae, 0x70, 0xff, 0x2b, 0xaa, 0xfb, 0x3f, 0x5b, 0xe5, - 0x7e, 0x59, 0x12, 0xc9, 0xff, 0x07, 0x30, 0xc7, 0x8a, 0x6a, 0x8f, 0xf8, 0x4e, 0x37, 0x1a, 0x70, - 0x43, 0x2e, 0x41, 0x0b, 0xe9, 0xbb, 0xd1, 0x20, 0xdf, 0x00, 0x4a, 0x28, 0x36, 0xa2, 0xef, 0xb9, - 0xac, 0x78, 0xf2, 0x11, 0xa2, 0xe8, 0x49, 0x28, 0xb6, 0x40, 0x46, 0x44, 0x9c, 0xb0, 0x30, 0xeb, - 0xd6, 0xac, 0x0c, 0x36, 0x3f, 0x68, 0xc0, 0xa4, 0x88, 0x46, 0xbe, 0x28, 0xb2, 0x3d, 0x77, 0x56, - 0x56, 0x11, 0xc2, 0xbe, 0xb6, 0x7f, 0x98, 0x87, 0x17, 0x42, 0xf2, 0xf1, 0x56, 0x4d, 0x3d, 0xde, - 0x2a, 0xc8, 0x34, 0x51, 0x96, 0xa9, 0xa0, 0x57, 0xbd, 0xac, 0x17, 0x6b, 0xe3, 0x78, 0x67, 0xb3, - 0xed, 0xd9, 0xf1, 0x2e, 0x0d, 0x87, 0x62, 0x0b, 0x5d, 0xb7, 0x4a, 0x78, 0xd6, 0x3a, 0x22, 0x2e, - 0xeb, 0xfd, 0x71, 0x09, 0x2f, 0x60, 0x59, 0xa7, 0x8d, 0x98, 0x74, 0x0f, 0x80, 0xe7, 0x1c, 0x2a, - 0x12, 0x65, 0x8b, 0x22, 0x97, 0xfa, 0xbc, 0x0b, 0xc5, 0x56, 0x5f, 0x46, 0x31, 0xcd, 0x87, 0xd1, - 0xe0, 0x5a, 0x48, 0x87, 0x62, 0x7b, 0x95, 0x82, 0x5c, 0x73, 0xea, 0xc7, 0x69, 0x07, 0x8b, 0x27, - 0x1c, 0x32, 0x8a, 0xd1, 0x0a, 0x90, 0xf7, 0xf9, 0xd3, 0x56, 0x0a, 0xb2, 0x58, 0x8a, 0xc8, 0x81, - 0x68, 0xde, 0xd9, 0x4f, 0xc5, 0x73, 0x73, 0xaa, 0xe7, 0x0a, 0xdd, 0x58, 0x9b, 0x7f, 0x95, 0xbb, - 0xb1, 0xbc, 0xc5, 0x99, 0x57, 0x5a, 0x9c, 0x55, 0x98, 0xa4, 0x01, 0x4b, 0xff, 0xa8, 0x63, 0xf0, - 0x74, 0x79, 0x7e, 0x74, 0x81, 0x5a, 0xd9, 0xc2, 0x91, 0x98, 0x18, 0x29, 0x9d, 0x71, 0x0b, 0xe6, - 0xe8, 0xee, 0xae, 0xe7, 0xfa, 0x64, 0x3b, 0x89, 0xf6, 0xf8, 0x56, 0xfb, 0x1c, 0x0f, 0x76, 0xb3, - 0xaa, 0x89, 0x50, 0x47, 0x5a, 0x45, 0x52, 0xd6, 0xf9, 0xd9, 0x31, 0x6e, 0x72, 0x78, 0x81, 0x3b, - 0xcf, 0x0b, 0x9c, 0x82, 0xe3, 0xe7, 0x84, 0x52, 0xa1, 0x7f, 0x8a, 0x1b, 0x4e, 0x46, 0x2d, 0xbe, - 0x0a, 0xd3, 0xb2, 0xb0, 0x15, 0x89, 0x79, 0x5e, 0x4e, 0xcc, 0x29, 0x39, 0xef, 0x7e, 0xa4, 0xc1, - 0x5c, 0x41, 0x4c, 0x36, 0x3a, 0x76, 0x63, 0x8f, 0x08, 0x0e, 0x08, 0xb0, 0x9d, 0x8e, 0x43, 0xa2, - 0xbe, 0x48, 0x04, 0xfe, 0x5b, 0xf4, 0x8c, 0xb5, 0x6c, 0xfb, 0x6d, 0xc2, 0xb4, 0xbb, 0xd5, 0x63, - 0x8c, 0x7a, 0x34, 0xf1, 0x9d, 0xec, 0xd0, 0x5c, 0xc2, 0xf1, 0x2d, 0xf8, 0x56, 0x6f, 0xcd, 0x76, - 0x06, 0x04, 0xaf, 0x50, 0xea, 0x5c, 0x26, 0x15, 0x69, 0x3a, 0x30, 0x75, 0xdb, 0x0d, 0xa2, 0x75, - 0x3a, 0x1c, 0x32, 0x77, 0x3a, 0x24, 0x66, 0x3d, 0xb9, 0xc6, 0x95, 0x17, 0x10, 0xb3, 0x8c, 0x43, - 0x76, 0xed, 0xc4, 0x8b, 0xd9, 0xd0, 0x34, 0xfd, 0x25, 0x14, 0x3f, 0x0e, 0x88, 0xa8, 0xbf, 0x81, - 0xd4, 0x28, 0xa7, 0x84, 0x31, 0xff, 0xac, 0x43, 0x9b, 0x57, 0xb7, 0x75, 0x1e, 0x3c, 0x0e, 0x27, - 0xba, 0x02, 0x75, 0x9e, 0xcc, 0xa2, 0x3b, 0x3c, 0xfe, 0x0c, 0x05, 0x87, 0x1a, 0x57, 0xa1, 0x41, - 0x03, 0xde, 0x52, 0x62, 0xe9, 0x7b, 0x6e, 0x14, 0x91, 0x7a, 0x4c, 0x6e, 0x09, 0x2a, 0xe3, 0x1a, - 0xc0, 0x30, 0xef, 0x20, 0xb1, 0x11, 0x18, 0x97, 0x87, 0x44, 0xc9, 0x8c, 0x9b, 0xad, 0x71, 0xd9, - 0x59, 0x79, 0xcd, 0x52, 0x91, 0xc6, 0x26, 0xcc, 0x72, 0xb1, 0xb7, 0xd2, 0xc3, 0x34, 0xee, 0x83, - 0xf1, 0x67, 0x2c, 0x50, 0x9b, 0x3f, 0xd3, 0x84, 0x19, 0xd9, 0xd7, 0x1e, 0x41, 0xdb, 0xe7, 0x26, - 0xd1, 0x4e, 0x65, 0x92, 0x45, 0x98, 0x1a, 0x26, 0xd2, 0xd9, 0x5e, 0xcd, 0xca, 0xe0, 0xdc, 0x45, - 0xb5, 0xb1, 0x5d, 0x64, 0xfe, 0x5c, 0x83, 0xce, 0x5b, 0xd4, 0xf5, 0xf9, 0x87, 0xd5, 0x20, 0xf0, - 0xc4, 0x95, 0xca, 0xa9, 0x7d, 0xfe, 0x35, 0x68, 0xda, 0xc8, 0xc6, 0x8f, 0x85, 0xdb, 0xc7, 0x38, - 0xaf, 0xcb, 0x69, 0xa4, 0x43, 0x93, 0x9a, 0x7c, 0x68, 0x62, 0x7e, 0xa4, 0xc1, 0x2c, 0x1a, 0xe5, - 0x9d, 0xc4, 0x8d, 0x4f, 0x2d, 0xdf, 0x1a, 0x4c, 0x1d, 0x24, 0x6e, 0x7c, 0x8a, 0xa8, 0xcc, 0xe8, - 0xca, 0xf1, 0x54, 0xab, 0x88, 0x27, 0xf3, 0x57, 0x1a, 0x5c, 0x28, 0x9a, 0x75, 0xb5, 0xdf, 0x27, - 0xc1, 0xa3, 0x4c, 0x29, 0xe5, 0xd0, 0x68, 0xa2, 0x70, 0x68, 0x54, 0x29, 0xb2, 0x45, 0xee, 0x91, - 0xfe, 0xe3, 0x2b, 0xf2, 0x77, 0x75, 0xf8, 0xff, 0xeb, 0x59, 0xe2, 0xdd, 0x0e, 0x6d, 0x3f, 0xda, - 0x25, 0x61, 0xf8, 0x08, 0xe5, 0xbd, 0x05, 0x33, 0x3e, 0xb9, 0x9f, 0xcb, 0x24, 0xd2, 0x71, 0x5c, - 0x36, 0x2a, 0xf1, 0x78, 0xb5, 0xcb, 0xfc, 0x8f, 0x06, 0x6d, 0xe4, 0xf3, 0xb6, 0xdb, 0xdf, 0x7f, - 0x84, 0xca, 0x6f, 0xc2, 0xec, 0x3e, 0x97, 0x80, 0x41, 0xa7, 0x28, 0xdb, 0x05, 0xea, 0x31, 0xd5, - 0xff, 0x58, 0x83, 0xf9, 0xf4, 0x26, 0xf7, 0xd0, 0x7d, 0x94, 0xc1, 0xba, 0x0d, 0x73, 0x78, 0x6a, - 0x7e, 0x5a, 0x03, 0x14, 0xc9, 0xc7, 0xb4, 0xc0, 0x6f, 0x35, 0x98, 0x43, 0x4e, 0x6f, 0xfa, 0x31, - 0x09, 0x4f, 0xad, 0xff, 0x0d, 0x68, 0x11, 0x3f, 0x0e, 0x6d, 0xff, 0x34, 0x15, 0x52, 0x26, 0x1d, - 0xb3, 0x48, 0x7e, 0xa4, 0x81, 0xc1, 0x59, 0x6d, 0xb8, 0xd1, 0xd0, 0x8d, 0xa2, 0x47, 0xe8, 0xba, - 0xf1, 0x04, 0xfe, 0x89, 0x0e, 0xe7, 0x25, 0x2e, 0xdd, 0x24, 0x7e, 0xdc, 0x45, 0x36, 0x36, 0xa0, - 0xc9, 0x7a, 0x04, 0xf9, 0x4e, 0x73, 0xdc, 0x89, 0x72, 0x42, 0xd6, 0xc5, 0x72, 0xa0, 0x47, 0xfa, - 0xd4, 0x77, 0x22, 0xde, 0x1c, 0xcd, 0x58, 0x0a, 0x8e, 0x95, 0xa1, 0x45, 0x89, 0xcd, 0xba, 0xed, - 0xf7, 0x89, 0xf7, 0xc4, 0x98, 0xc8, 0xfc, 0xa5, 0x06, 0xb3, 0x38, 0xe4, 0xf1, 0x57, 0x99, 0xad, - 0xf5, 0x18, 0xc8, 0x9f, 0x1a, 0x2f, 0xb1, 0xf0, 0x5a, 0x90, 0xb8, 0xc8, 0x7d, 0xf5, 0xe3, 0x1b, - 0x5a, 0x37, 0xa0, 0xd5, 0xdf, 0xb3, 0xfd, 0xc1, 0xa9, 0x82, 0x4b, 0x26, 0x35, 0x63, 0x78, 0x5a, - 0x3e, 0x80, 0x5f, 0xc7, 0x4f, 0x5c, 0xfd, 0x97, 0x0b, 0xaa, 0x1c, 0xfb, 0x66, 0xe1, 0xe1, 0x8c, - 0xbe, 0x0f, 0xf3, 0x78, 0xeb, 0x2b, 0xf5, 0x84, 0x46, 0x07, 0x26, 0x6d, 0x07, 0x8f, 0x21, 0x34, - 0x4e, 0x94, 0x82, 0xea, 0xab, 0x00, 0xf1, 0xc6, 0x2c, 0x7f, 0x15, 0x70, 0x11, 0xc0, 0x76, 0x9c, - 0xf7, 0x68, 0xe8, 0xb8, 0x7e, 0xda, 0xe0, 0x4b, 0x18, 0xf3, 0x2d, 0x98, 0xbe, 0x16, 0xd2, 0xe1, - 0x6d, 0xe9, 0xfe, 0xf6, 0xd8, 0x1b, 0x66, 0xf9, 0xee, 0x57, 0x57, 0xef, 0x7e, 0xcd, 0x6f, 0xc2, - 0x53, 0x25, 0xc1, 0xb9, 0xb1, 0xd6, 0xf1, 0x5a, 0x3a, 0x9d, 0x44, 0x84, 0x4c, 0xd5, 0xb9, 0x9c, - 0x2c, 0x8b, 0xa5, 0x10, 0x99, 0x1f, 0x68, 0xf0, 0x4c, 0x89, 0xfd, 0x6a, 0x10, 0x84, 0xf4, 0x50, - 0xf8, 0xe4, 0x2c, 0xa6, 0x51, 0x9b, 0x5f, 0xbd, 0xd8, 0xfc, 0x56, 0x0a, 0xa1, 0x34, 0xec, 0x9f, - 0x80, 0x10, 0xbf, 0xd0, 0x60, 0x4e, 0x08, 0xe1, 0x38, 0x62, 0xda, 0x57, 0xa0, 0x81, 0x0f, 0x63, - 0xc4, 0x84, 0xcf, 0x54, 0x4e, 0x98, 0x3e, 0xe8, 0xb1, 0xc4, 0xe0, 0x72, 0x44, 0xea, 0x55, 0x19, - 0xf5, 0xd5, 0x2c, 0xd8, 0xc7, 0x7e, 0xba, 0x22, 0x08, 0xcc, 0xaf, 0xa7, 0xc1, 0xbc, 0x41, 0x3c, - 0x72, 0x96, 0x36, 0x32, 0xef, 0xc0, 0x2c, 0x7f, 0xa5, 0x93, 0xdb, 0xe0, 0x4c, 0xd8, 0xbe, 0x07, - 0x6d, 0xce, 0xf6, 0xcc, 0xe5, 0xcd, 0xb2, 0x83, 0xd9, 0x47, 0x2e, 0x25, 0x67, 0xc2, 0xfd, 0x8b, - 0x70, 0x2e, 0xb5, 0x3d, 0xbe, 0x6e, 0x45, 0xde, 0x23, 0xee, 0xe9, 0xcc, 0x97, 0x60, 0x61, 0x9d, - 0xfa, 0x87, 0x24, 0x8c, 0x94, 0x07, 0xb1, 0x48, 0xa1, 0x24, 0xbf, 0x80, 0xcc, 0x7b, 0xb0, 0x28, - 0x53, 0xf4, 0x48, 0xbc, 0x1d, 0xba, 0x87, 0x12, 0x95, 0x38, 0xa0, 0xd6, 0x94, 0x03, 0xea, 0xfc, - 0x40, 0x5b, 0x57, 0x0e, 0xb4, 0x2f, 0x40, 0xd3, 0x8d, 0x04, 0x03, 0x1e, 0x54, 0x53, 0x56, 0x8e, - 0x30, 0x6d, 0x98, 0x47, 0xf3, 0x8b, 0x0b, 0x23, 0x3e, 0xc5, 0x22, 0x4c, 0x61, 0x4c, 0x65, 0x93, - 0x64, 0xf0, 0xc8, 0xeb, 0x97, 0x91, 0x97, 0x8d, 0x66, 0x0f, 0xe6, 0xc5, 0xa3, 0x9a, 0x6d, 0x7b, - 0xe0, 0xfa, 0x58, 0x64, 0x2f, 0x02, 0x04, 0xf6, 0x20, 0x7d, 0xc6, 0x87, 0xd7, 0x66, 0x12, 0x86, - 0x7d, 0x8f, 0xf6, 0xe8, 0x7d, 0xf1, 0x5d, 0xc7, 0xef, 0x39, 0xc6, 0x7c, 0x17, 0x0c, 0x8b, 0x44, - 0x01, 0xf5, 0x23, 0x22, 0x71, 0x5d, 0x82, 0xd6, 0x7a, 0x12, 0x86, 0xc4, 0x67, 0x53, 0xa5, 0xef, - 0xd4, 0x64, 0x14, 0xe3, 0xdb, 0xcb, 0xf9, 0xe2, 0x11, 0xbb, 0x84, 0x31, 0x7f, 0x5a, 0x83, 0x66, - 0xcf, 0x1d, 0xf8, 0xb6, 0x67, 0x91, 0x03, 0xe3, 0x75, 0x68, 0xe0, 0x96, 0x45, 0x44, 0x4a, 0xd5, - 0x91, 0x2f, 0x8e, 0xc6, 0xbd, 0x99, 0x45, 0x0e, 0x6e, 0xfc, 0x9f, 0x25, 0x68, 0x8c, 0x77, 0xd2, - 0xa7, 0x47, 0x37, 0xf1, 0x08, 0x4a, 0xac, 0x5f, 0x9f, 0x3f, 0x81, 0x89, 0x18, 0x8d, 0xbc, 0x54, - 0x0e, 0x4c, 0xa0, 0x3e, 0x6f, 0x69, 0x44, 0x79, 0x18, 0x2d, 0x10, 0x76, 0x3e, 0x42, 0x20, 0xa4, - 0x61, 0xd4, 0x36, 0x3f, 0xa4, 0x11, 0x2b, 0xf5, 0x68, 0x6a, 0x3c, 0xcb, 0x11, 0xd4, 0x48, 0xc3, - 0xa8, 0xf7, 0x12, 0x7f, 0x70, 0x27, 0x10, 0x67, 0x87, 0xa3, 0xa9, 0x6f, 0xf0, 0x61, 0x82, 0x1a, - 0x69, 0x18, 0x75, 0xc8, 0x8b, 0x37, 0x37, 0xfa, 0x71, 0xd4, 0x58, 0xe3, 0x05, 0x35, 0xd2, 0xac, - 0x35, 0x61, 0x32, 0xb0, 0x8f, 0x3c, 0x6a, 0x3b, 0xe6, 0x87, 0x35, 0x80, 0x74, 0x60, 0xc4, 0x1b, - 0x1d, 0xc5, 0x45, 0xcb, 0x27, 0xba, 0x28, 0xf0, 0x8e, 0x24, 0x27, 0xf5, 0xaa, 0x9d, 0xf4, 0x85, - 0x71, 0x9d, 0x84, 0xdc, 0x0a, 0x6e, 0xba, 0x5a, 0x70, 0xd3, 0xf2, 0x89, 0x6e, 0x12, 0x42, 0x09, - 0x47, 0x5d, 0x2d, 0x38, 0x6a, 0xf9, 0x44, 0x47, 0x09, 0x7a, 0xe1, 0xaa, 0xab, 0x05, 0x57, 0x2d, - 0x9f, 0xe8, 0x2a, 0x41, 0x2f, 0x9c, 0x75, 0xb5, 0xe0, 0xac, 0xe5, 0x13, 0x9d, 0x25, 0xe8, 0xcb, - 0xee, 0xfa, 0x9b, 0x0e, 0xb3, 0xdc, 0x64, 0x78, 0x0b, 0xeb, 0xef, 0xd2, 0xf2, 0x93, 0x3c, 0xad, - 0xe2, 0x49, 0x9e, 0xf1, 0x22, 0xcc, 0x23, 0x82, 0x48, 0xd7, 0x25, 0x3a, 0xbf, 0x2e, 0x29, 0x7f, - 0xe0, 0x17, 0x44, 0x49, 0x14, 0xd3, 0xe1, 0x86, 0x1d, 0xdb, 0x69, 0xf3, 0x95, 0x63, 0xe4, 0xeb, - 0xbb, 0x89, 0xd2, 0xeb, 0xf4, 0x90, 0xd2, 0x61, 0x76, 0x2f, 0x27, 0x20, 0x46, 0x11, 0xbb, 0x43, - 0x42, 0x93, 0x58, 0x94, 0x89, 0x14, 0xc4, 0x77, 0x54, 0x8e, 0x6b, 0xf3, 0x4b, 0x2f, 0xf1, 0xc8, - 0x28, 0x43, 0xf0, 0xca, 0x96, 0x5f, 0xe2, 0x89, 0xd7, 0xe3, 0x39, 0x66, 0x8c, 0x0b, 0x37, 0xfe, - 0x47, 0x04, 0x37, 0x76, 0xe5, 0xc7, 0x47, 0x75, 0x4b, 0xc1, 0x99, 0xff, 0xd4, 0xe0, 0xdc, 0xb6, - 0x1d, 0xc6, 0x6e, 0xdf, 0x0d, 0x6c, 0x3f, 0xee, 0x92, 0xd8, 0xe6, 0x7a, 0x2a, 0x4f, 0x42, 0xb5, - 0x87, 0x7b, 0x12, 0xba, 0x0d, 0x73, 0x03, 0x75, 0x07, 0xf2, 0x90, 0x9b, 0x87, 0x22, 0xb9, 0xf2, - 0xbe, 0xb5, 0xf6, 0xd0, 0xef, 0x5b, 0xcd, 0xef, 0xeb, 0x30, 0x57, 0x28, 0xaf, 0xc7, 0xae, 0x4d, - 0xab, 0x00, 0x6e, 0x16, 0x6a, 0xc7, 0x1c, 0xd0, 0xab, 0xf1, 0x68, 0x49, 0x44, 0x55, 0xb7, 0x7d, - 0xb5, 0xd3, 0xdf, 0xf6, 0xdd, 0x80, 0x56, 0x90, 0x3b, 0xe9, 0x98, 0xfd, 0x51, 0x85, 0x2b, 0x2d, - 0x99, 0xd4, 0x7c, 0x1f, 0xe6, 0x4b, 0x55, 0x8c, 0x5f, 0xdb, 0xd1, 0x7d, 0xe2, 0x67, 0xd7, 0x76, - 0x0c, 0x90, 0x02, 0x5a, 0x2f, 0x06, 0xb4, 0xe7, 0x1e, 0xca, 0x8f, 0xed, 0x05, 0x68, 0xfe, 0x40, - 0x87, 0x85, 0xea, 0x15, 0xe8, 0x49, 0x35, 0xf7, 0x0e, 0x74, 0x46, 0x55, 0xfb, 0x33, 0xb3, 0x7a, - 0x1e, 0xdd, 0xd9, 0x5a, 0xfd, 0xa4, 0x9a, 0xfb, 0x5c, 0x1a, 0xdd, 0xd2, 0x72, 0x68, 0xfe, 0x26, - 0xb3, 0x4f, 0xd6, 0x8d, 0x3c, 0xa1, 0xf6, 0x31, 0x2e, 0x41, 0x1b, 0xd5, 0x94, 0x9e, 0x87, 0x60, - 0x73, 0x5b, 0xc2, 0xe7, 0x95, 0x42, 0x6a, 0x0d, 0xce, 0x2c, 0x66, 0xff, 0xa0, 0xa5, 0x3e, 0xc9, - 0x7a, 0xbc, 0x4f, 0x95, 0x4f, 0xf2, 0x48, 0x93, 0x1a, 0x1f, 0x29, 0xd2, 0xb2, 0xde, 0xf3, 0x7f, - 0x91, 0x76, 0x72, 0xa4, 0x65, 0xb6, 0x94, 0x9a, 0x40, 0xf3, 0x3b, 0x30, 0xb3, 0x41, 0xbc, 0x6e, - 0x34, 0x48, 0xdf, 0xaf, 0x9e, 0xe9, 0x66, 0xb2, 0xf8, 0xca, 0x6f, 0xa2, 0xfc, 0xca, 0x6f, 0x0d, - 0x66, 0x65, 0x01, 0x4e, 0xf3, 0x3e, 0x73, 0xed, 0xc2, 0x37, 0x16, 0x57, 0xc4, 0xff, 0x9e, 0x5f, - 0x2b, 0x19, 0x71, 0xa7, 0xc1, 0xff, 0x29, 0xf9, 0xf2, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0xf7, - 0x54, 0x7e, 0x19, 0x50, 0x3d, 0x00, 0x00, + 0x1f, 0xde, 0x35, 0x17, 0x24, 0x90, 0x10, 0x37, 0x2e, 0x20, 0x24, 0x2e, 0x48, 0x5c, 0x10, 0x28, + 0x8a, 0x10, 0x02, 0xc4, 0x01, 0x21, 0x84, 0xb8, 0x71, 0xe1, 0xc0, 0x8d, 0x03, 0x12, 0x67, 0xfe, + 0x01, 0x24, 0xa4, 0xa0, 0xaa, 0x57, 0xdd, 0x5d, 0xd5, 0xdd, 0x63, 0xcf, 0x5a, 0x56, 0x76, 0xa3, + 0xe5, 0x36, 0xef, 0x75, 0xbd, 0x57, 0xef, 0xbb, 0x5e, 0x7d, 0x0c, 0xcc, 0x45, 0xce, 0xfe, 0xdd, + 0xfb, 0xd1, 0xe5, 0xfb, 0xd1, 0x4a, 0x10, 0xd2, 0x98, 0x1a, 0xf3, 0x11, 0x09, 0x0f, 0x49, 0x78, + 0xd7, 0x0e, 0xdc, 0xbb, 0x81, 0x1d, 0xda, 0xc3, 0x68, 0xf1, 0xf9, 0xad, 0x80, 0xf8, 0x77, 0x6f, + 0x76, 0x2f, 0x07, 0xfb, 0x83, 0xcb, 0x7c, 0xd4, 0xe5, 0x94, 0x2a, 0xb4, 0x83, 0x80, 0x84, 0x82, + 0xd6, 0xfc, 0xc7, 0x04, 0x34, 0xaf, 0x87, 0x34, 0x09, 0x6e, 0xfa, 0xbb, 0xd4, 0xe8, 0xc0, 0xe4, + 0x80, 0x03, 0x1b, 0x1d, 0x6d, 0x49, 0x7b, 0xa1, 0x69, 0xa5, 0xa0, 0x71, 0x01, 0x9a, 0xfc, 0xe7, + 0xa6, 0x3d, 0x24, 0x1d, 0x9d, 0x7f, 0xcb, 0x11, 0x86, 0x09, 0xd3, 0x3e, 0x8d, 0xdd, 0x5d, 0xb7, + 0x6f, 0xc7, 0x2e, 0xf5, 0x3b, 0x35, 0x3e, 0x40, 0xc1, 0xb1, 0x31, 0xae, 0x1f, 0x87, 0xd4, 0x49, + 0xfa, 0x7c, 0xcc, 0x04, 0x8e, 0x91, 0x71, 0x6c, 0xfe, 0x5d, 0xbb, 0x4f, 0xee, 0x58, 0xb7, 0x3a, + 0x75, 0x9c, 0x5f, 0x80, 0xc6, 0x12, 0xb4, 0xe8, 0x7d, 0x9f, 0x84, 0x77, 0x22, 0x12, 0xde, 0xdc, + 0xe8, 0x34, 0xf8, 0x57, 0x19, 0x65, 0x5c, 0x04, 0xe8, 0x87, 0xc4, 0x8e, 0xc9, 0x6d, 0x77, 0x48, + 0x3a, 0x93, 0x4b, 0xda, 0x0b, 0x33, 0x96, 0x84, 0x61, 0x1c, 0x86, 0x64, 0xb8, 0x43, 0xc2, 0x75, + 0x9a, 0xf8, 0x71, 0x67, 0x8a, 0x0f, 0x90, 0x51, 0xc6, 0x2c, 0xe8, 0xe4, 0x41, 0xa7, 0xc9, 0x59, + 0xeb, 0xe4, 0x81, 0xb1, 0x00, 0x8d, 0x28, 0xb6, 0xe3, 0x24, 0xea, 0xc0, 0x92, 0xf6, 0x42, 0xdd, + 0x12, 0x90, 0xb1, 0x0c, 0x33, 0x9c, 0x2f, 0x4d, 0xa5, 0x69, 0x71, 0x12, 0x15, 0x99, 0x59, 0xec, + 0xf6, 0x51, 0x40, 0x3a, 0xd3, 0x9c, 0x41, 0x8e, 0x30, 0x2e, 0x41, 0xdb, 0x27, 0xc4, 0x79, 0x97, + 0x84, 0xb9, 0xd5, 0x66, 0xf8, 0xa0, 0x12, 0xde, 0x78, 0x0e, 0x66, 0x3d, 0x4a, 0xf7, 0xbb, 0x5c, + 0x54, 0xe6, 0xa7, 0xce, 0x2c, 0x1f, 0x59, 0xc0, 0x1a, 0x2f, 0xc2, 0xbc, 0x1d, 0x04, 0xde, 0x11, + 0xa2, 0xae, 0x85, 0x2e, 0xf1, 0x9d, 0xce, 0x1c, 0x1f, 0x5a, 0xfe, 0x60, 0x7c, 0x11, 0x16, 0x64, + 0xff, 0xdc, 0x09, 0x9c, 0xd4, 0x76, 0x6d, 0x6e, 0x9a, 0x11, 0x5f, 0x8d, 0x15, 0x30, 0x94, 0x2f, + 0x68, 0x82, 0x79, 0x6e, 0x82, 0x8a, 0x2f, 0xe6, 0x0f, 0x6a, 0x30, 0x97, 0x45, 0xd8, 0x35, 0x1a, + 0xf6, 0x48, 0xfc, 0x18, 0xc7, 0x19, 0xc6, 0x40, 0x23, 0x8b, 0x81, 0xeb, 0x15, 0x7e, 0x62, 0xb1, + 0xd5, 0xba, 0xf2, 0xa9, 0x95, 0x01, 0xa5, 0x03, 0x8f, 0x60, 0x22, 0xed, 0x24, 0xbb, 0x2b, 0x37, + 0xfd, 0xf8, 0xe5, 0x2b, 0xef, 0xda, 0x5e, 0x42, 0x2a, 0x9c, 0xb8, 0x5e, 0x72, 0xe2, 0xd4, 0xc9, + 0x6c, 0x8a, 0x1e, 0xbe, 0x59, 0xe5, 0xe1, 0xe6, 0xc9, 0x7c, 0xca, 0x54, 0xe6, 0x47, 0x3a, 0x9c, + 0xe3, 0x6e, 0x11, 0xd8, 0xc4, 0xf3, 0x4e, 0x28, 0x01, 0x0b, 0xd0, 0x48, 0xd0, 0xd9, 0xe8, 0x17, + 0x01, 0x31, 0x97, 0x85, 0xd4, 0x23, 0xb7, 0xc8, 0x21, 0xf1, 0xb8, 0x47, 0xea, 0x56, 0x8e, 0x30, + 0x16, 0x61, 0xea, 0x1e, 0x75, 0x7d, 0x1e, 0x58, 0x13, 0xfc, 0x63, 0x06, 0xb3, 0x6f, 0xbe, 0xdb, + 0xdf, 0xf7, 0x99, 0xaf, 0xd1, 0x0f, 0x19, 0x2c, 0xbb, 0xa8, 0xa1, 0xba, 0xe8, 0x39, 0x98, 0xb5, + 0x83, 0xa0, 0x6b, 0xfb, 0x03, 0x12, 0xe2, 0xa4, 0x93, 0x98, 0x0e, 0x2a, 0x96, 0x15, 0x04, 0x36, + 0x53, 0x8f, 0x26, 0x61, 0x9f, 0x70, 0x6b, 0xd7, 0x2d, 0x09, 0xc3, 0xf8, 0xd0, 0x80, 0x84, 0x52, + 0x1e, 0x63, 0xea, 0x17, 0xb0, 0x22, 0x24, 0x20, 0x0b, 0x09, 0x56, 0x48, 0x92, 0x98, 0xbc, 0xe9, + 0x3b, 0x5c, 0xa9, 0x96, 0x28, 0x24, 0x39, 0x8a, 0x15, 0x08, 0xd7, 0x3f, 0x74, 0xe3, 0xac, 0x5c, + 0x4d, 0x63, 0x81, 0x50, 0x90, 0xe6, 0x77, 0x35, 0x98, 0xdd, 0x4e, 0x76, 0x3c, 0xb7, 0xcf, 0x11, + 0xcc, 0xf8, 0xb9, 0x89, 0x35, 0xc5, 0xc4, 0xb2, 0xa1, 0xf4, 0xd1, 0x86, 0xaa, 0xa9, 0x86, 0x5a, + 0x80, 0xc6, 0x80, 0xf8, 0x0e, 0x09, 0x85, 0xe1, 0x05, 0x24, 0x14, 0xaa, 0xa7, 0x0a, 0x99, 0x7f, + 0xd2, 0x61, 0xea, 0x63, 0x16, 0x61, 0x09, 0x5a, 0xc1, 0x1e, 0xf5, 0xc9, 0x66, 0xc2, 0x82, 0x4f, + 0xc8, 0x22, 0xa3, 0x8c, 0xf3, 0x50, 0xdf, 0x71, 0xc3, 0x78, 0x8f, 0x7b, 0x7f, 0xc6, 0x42, 0x80, + 0x61, 0xc9, 0xd0, 0x76, 0xd1, 0xe5, 0x4d, 0x0b, 0x01, 0xa1, 0xd0, 0x54, 0xe6, 0x21, 0x75, 0x29, + 0x68, 0x96, 0x96, 0x82, 0x72, 0x04, 0x41, 0x65, 0x04, 0x5d, 0x82, 0xf6, 0xc0, 0xa3, 0x3b, 0xb6, + 0x67, 0x91, 0xfe, 0x61, 0x37, 0x1a, 0x6c, 0x05, 0x31, 0x77, 0x77, 0xdd, 0x2a, 0xe1, 0xcd, 0x7f, + 0x6b, 0x00, 0x98, 0x5a, 0xdc, 0x8c, 0x85, 0xf5, 0x4a, 0x2b, 0xaf, 0x57, 0x0b, 0xd0, 0x08, 0xc9, + 0xd0, 0x0e, 0xf7, 0xd3, 0x74, 0x42, 0xa8, 0x20, 0x7c, 0xad, 0x24, 0xfc, 0x6b, 0x00, 0xbb, 0x7c, + 0x1e, 0xc6, 0x87, 0x9b, 0x95, 0x25, 0x7f, 0xa9, 0x05, 0x58, 0x49, 0x3d, 0x6a, 0x49, 0xc3, 0x59, + 0xae, 0xda, 0x8e, 0x23, 0x52, 0xa2, 0x8e, 0xb9, 0x9a, 0x21, 0x2a, 0x32, 0xa2, 0x71, 0x4c, 0x46, + 0x4c, 0x66, 0x01, 0xf4, 0x2f, 0x0d, 0x9a, 0x6b, 0x9e, 0xdd, 0xdf, 0x1f, 0x53, 0x75, 0x55, 0x45, + 0xbd, 0xa4, 0xe2, 0x75, 0x98, 0xd9, 0x61, 0xec, 0x52, 0x15, 0xb8, 0x15, 0x5a, 0x57, 0x3e, 0x53, + 0xa1, 0xa5, 0x9a, 0x40, 0x96, 0x4a, 0xa7, 0xaa, 0x3b, 0x71, 0xb2, 0xba, 0xf5, 0x63, 0xd4, 0xcd, + 0xd6, 0x04, 0xf3, 0x47, 0x35, 0x98, 0xe6, 0xa5, 0xd3, 0x22, 0x07, 0x09, 0x89, 0x62, 0xe3, 0x0d, + 0x98, 0x4a, 0x52, 0x51, 0xb5, 0x71, 0x45, 0xcd, 0x48, 0x8c, 0x57, 0xc5, 0x9a, 0xc7, 0xe9, 0x75, + 0x4e, 0x7f, 0xa1, 0x82, 0x3e, 0x5b, 0x44, 0xad, 0x7c, 0x38, 0x5b, 0xed, 0xf6, 0x6c, 0xdf, 0xf1, + 0x88, 0x45, 0xa2, 0xc4, 0x8b, 0x45, 0xfd, 0x55, 0x70, 0x18, 0x69, 0x07, 0xdd, 0x68, 0x20, 0xd6, + 0x42, 0x01, 0x31, 0xeb, 0xe0, 0x38, 0xf6, 0x09, 0x55, 0xcf, 0x11, 0x2c, 0xa9, 0x43, 0x72, 0xc0, + 0x3d, 0x84, 0x29, 0x98, 0x82, 0xf9, 0x9c, 0xc2, 0x6a, 0x18, 0x08, 0x0a, 0x8e, 0xb9, 0x18, 0x61, + 0xce, 0x00, 0x9b, 0x2d, 0x09, 0x53, 0xea, 0xb5, 0xd4, 0x62, 0x0d, 0xa5, 0x62, 0x5d, 0x2a, 0xa9, + 0xad, 0xaa, 0x92, 0xfa, 0xf7, 0x1a, 0xcc, 0x60, 0x12, 0xa6, 0xae, 0xb9, 0xc8, 0xb2, 0x85, 0x0e, + 0x95, 0x58, 0x94, 0x30, 0x4c, 0x17, 0x06, 0x6d, 0xaa, 0xa5, 0x4d, 0xc1, 0xb1, 0x80, 0x66, 0xf0, + 0x35, 0xa5, 0xc4, 0xc9, 0xa8, 0x74, 0x96, 0xeb, 0x72, 0xa9, 0x93, 0x30, 0xac, 0x78, 0xc6, 0x54, + 0x89, 0xb1, 0x0c, 0x66, 0xb4, 0x31, 0xcd, 0xe6, 0xc7, 0x28, 0x93, 0x30, 0xcc, 0x4b, 0x31, 0x4d, + 0xe7, 0x46, 0x53, 0xe7, 0x08, 0xe4, 0x2c, 0xe6, 0xc5, 0x25, 0x2e, 0x83, 0x4b, 0xb1, 0xd1, 0x3c, + 0x36, 0x36, 0x40, 0x89, 0x0d, 0x35, 0x45, 0x5b, 0xa5, 0x14, 0x5d, 0x86, 0x19, 0xe4, 0x53, 0x58, + 0xe2, 0x14, 0xa4, 0x1a, 0x61, 0x33, 0xc5, 0x08, 0x53, 0x63, 0x64, 0x76, 0x44, 0x8c, 0xcc, 0x65, + 0x79, 0xf7, 0x2b, 0x1d, 0x60, 0x83, 0x04, 0x76, 0x18, 0x0f, 0x89, 0x1f, 0x33, 0xf5, 0x9c, 0x0c, + 0xca, 0x9c, 0xab, 0xe0, 0xe4, 0x95, 0x49, 0x57, 0x57, 0x26, 0x03, 0x26, 0xb8, 0xc1, 0xd1, 0x9b, + 0xfc, 0x37, 0x33, 0x66, 0x60, 0x87, 0xc8, 0x0d, 0x53, 0x25, 0x83, 0xd9, 0xca, 0x43, 0x43, 0x47, + 0xac, 0x55, 0x75, 0x0b, 0x01, 0x56, 0x42, 0xf2, 0xf9, 0x78, 0xa7, 0xdf, 0xc0, 0x95, 0x44, 0xc5, + 0x9e, 0xb8, 0x39, 0xb9, 0x04, 0xed, 0x28, 0xd9, 0xc9, 0x95, 0xdb, 0x4c, 0x86, 0x22, 0x69, 0x4a, + 0x78, 0x66, 0x54, 0xdc, 0xb5, 0xb0, 0x41, 0xb8, 0xb8, 0xe5, 0x88, 0x62, 0xb7, 0x62, 0x7e, 0xa0, + 0x43, 0x7b, 0x2b, 0x1c, 0xd8, 0xbe, 0xfb, 0xcd, 0xac, 0x2b, 0x3f, 0xd5, 0x22, 0xbf, 0x04, 0x2d, + 0xe2, 0x0f, 0x3c, 0x37, 0xda, 0xdb, 0xcc, 0xed, 0x26, 0xa3, 0x64, 0x63, 0x4f, 0x8c, 0x6a, 0x03, + 0xea, 0x4a, 0x1b, 0xb0, 0x00, 0x8d, 0x21, 0xdd, 0x71, 0xbd, 0x34, 0xee, 0x05, 0xc4, 0x63, 0x9e, + 0x78, 0x84, 0xf7, 0x03, 0x59, 0xcc, 0xa7, 0x88, 0xbc, 0x35, 0x98, 0xaa, 0x6c, 0x0d, 0x9a, 0x72, + 0x6b, 0xa0, 0x1a, 0x1e, 0x4a, 0x86, 0x47, 0x73, 0xb5, 0x32, 0x73, 0xfd, 0x51, 0x83, 0x76, 0x6e, + 0x6e, 0xec, 0x8d, 0x47, 0x9a, 0xab, 0x18, 0x81, 0x7a, 0x45, 0x04, 0x66, 0x71, 0x53, 0x93, 0xe3, + 0x86, 0x45, 0x1a, 0x8d, 0x5c, 0x69, 0x83, 0x92, 0xc1, 0x6c, 0x36, 0x8f, 0xd8, 0x92, 0xb1, 0x10, + 0x92, 0xb6, 0xa3, 0x0d, 0x65, 0x3b, 0x5a, 0x5c, 0x8d, 0x7f, 0xa7, 0xc1, 0x79, 0xe6, 0xe5, 0x92, + 0x1a, 0x5b, 0xd0, 0xa6, 0x85, 0x48, 0x10, 0xcb, 0xd5, 0xb3, 0x15, 0xcb, 0x4d, 0x31, 0x68, 0xac, + 0x12, 0x31, 0x63, 0xe8, 0x14, 0x26, 0x11, 0xeb, 0x57, 0x15, 0xc3, 0xa2, 0x3c, 0x56, 0x89, 0xd8, + 0xfc, 0xbd, 0x06, 0x6d, 0x5c, 0x20, 0xa5, 0x3c, 0x3f, 0x73, 0xb1, 0xdf, 0x83, 0xf3, 0xc5, 0x99, + 0x6f, 0xb9, 0x51, 0xdc, 0xd1, 0x97, 0x6a, 0xe3, 0x8a, 0x5e, 0xc9, 0x80, 0xe5, 0xda, 0xd3, 0xdb, + 0x89, 0xe7, 0x75, 0x49, 0x14, 0xd9, 0x03, 0xb2, 0x76, 0xd4, 0x23, 0x07, 0xec, 0x83, 0x45, 0x0e, + 0x46, 0xc6, 0x10, 0xeb, 0x96, 0x78, 0xbb, 0xe1, 0x52, 0x3f, 0x0b, 0x21, 0x19, 0xc5, 0xd2, 0x2a, + 0x42, 0x3e, 0x9d, 0xda, 0x52, 0x8d, 0x2d, 0xc4, 0x02, 0x34, 0xbe, 0x01, 0xd3, 0xbc, 0x13, 0x10, + 0xd3, 0x74, 0x26, 0xb8, 0x02, 0xaf, 0x57, 0xf6, 0x1e, 0x95, 0x52, 0x61, 0x4f, 0x21, 0xe0, 0x37, + 0xfd, 0x38, 0x3c, 0xb2, 0x14, 0x8e, 0x8b, 0xef, 0xc3, 0x7c, 0x69, 0x88, 0xd1, 0x86, 0xda, 0x3e, + 0x39, 0x12, 0x7a, 0xb0, 0x9f, 0xc6, 0x4b, 0x50, 0x3f, 0x64, 0x1b, 0x4d, 0xe1, 0xfd, 0xc5, 0x0a, + 0x09, 0x84, 0xcc, 0x16, 0x0e, 0x7c, 0x55, 0xff, 0x92, 0x66, 0x3e, 0x9b, 0x29, 0x26, 0xeb, 0xa8, + 0x29, 0x3a, 0x9a, 0x6f, 0x43, 0xab, 0x1b, 0x0d, 0x36, 0xec, 0xd8, 0xe6, 0x03, 0x5f, 0x87, 0xd6, + 0x30, 0x07, 0xf9, 0xe0, 0xea, 0xf9, 0x04, 0x91, 0x25, 0x0f, 0x37, 0xff, 0xaa, 0x43, 0xa7, 0xda, + 0x14, 0x51, 0xc0, 0x64, 0x20, 0x61, 0xb8, 0x4e, 0x1d, 0xc2, 0x55, 0xab, 0x5b, 0x29, 0xc8, 0x7c, + 0x47, 0xc2, 0x90, 0xad, 0x61, 0xa2, 0x55, 0x47, 0xc8, 0x58, 0x81, 0x09, 0x2f, 0x75, 0xcb, 0xf1, + 0x52, 0xf0, 0x71, 0xc6, 0x10, 0xda, 0xdc, 0xba, 0x92, 0x42, 0xc2, 0x67, 0xab, 0x63, 0xfb, 0x2c, + 0x0a, 0xd0, 0x69, 0x12, 0x0f, 0x74, 0x5c, 0x89, 0xf5, 0x62, 0x1f, 0x9e, 0xaa, 0x1c, 0x5a, 0xe1, + 0xc0, 0x2f, 0xa8, 0x0e, 0xbc, 0x38, 0x5a, 0x95, 0xa2, 0x13, 0x03, 0x30, 0xae, 0x93, 0xb8, 0x6b, + 0x3f, 0x58, 0xf5, 0x9d, 0xae, 0xeb, 0xf7, 0xc8, 0x01, 0x8b, 0xf6, 0x25, 0x68, 0x89, 0x63, 0x83, + 0xcc, 0x4d, 0x4d, 0x4b, 0x46, 0x8d, 0x3c, 0x4d, 0x28, 0xe4, 0x43, 0xad, 0x94, 0x0f, 0xe6, 0x55, + 0x98, 0x96, 0xa7, 0xe3, 0x8b, 0x88, 0xfd, 0xa0, 0x47, 0x0e, 0xb8, 0x42, 0x33, 0x96, 0x80, 0x38, + 0x9e, 0x8f, 0x10, 0x3b, 0x0c, 0x01, 0x99, 0x7f, 0xd1, 0xe1, 0x5c, 0x49, 0xe4, 0x28, 0x78, 0x58, + 0x3e, 0x72, 0xbc, 0xd4, 0x46, 0xc5, 0xcb, 0x84, 0x12, 0x2f, 0xfb, 0x30, 0x8f, 0x4e, 0x92, 0xa6, + 0xee, 0xd4, 0x79, 0x00, 0xbc, 0x51, 0xd5, 0xf0, 0x97, 0x85, 0x14, 0xbe, 0x97, 0xb0, 0xe8, 0xfc, + 0x32, 0xdf, 0x45, 0x02, 0x0b, 0xd5, 0x83, 0x2b, 0xdc, 0xff, 0x8a, 0xea, 0xfe, 0x4f, 0x57, 0xb9, + 0x5f, 0x96, 0x44, 0xf2, 0xff, 0x01, 0xcc, 0xb1, 0xa2, 0xda, 0x23, 0xbe, 0xd3, 0x8d, 0x06, 0xdc, + 0x90, 0x4b, 0xd0, 0x42, 0xfa, 0x6e, 0x34, 0xc8, 0x37, 0x80, 0x12, 0x8a, 0x8d, 0xe8, 0x7b, 0x2e, + 0x2b, 0x9e, 0x7c, 0x84, 0x28, 0x7a, 0x12, 0x8a, 0x2d, 0x90, 0x11, 0x11, 0x27, 0x2c, 0xcc, 0xba, + 0x35, 0x2b, 0x83, 0xcd, 0xdf, 0x36, 0x60, 0x52, 0x44, 0x23, 0x5f, 0x14, 0xd9, 0x9e, 0x3b, 0x2b, + 0xab, 0x08, 0x61, 0x5f, 0xdb, 0x3f, 0xcc, 0xc3, 0x0b, 0x21, 0xf9, 0x78, 0xab, 0xa6, 0x1e, 0x6f, + 0x15, 0x64, 0x9a, 0x28, 0xcb, 0x54, 0xd0, 0xab, 0x5e, 0xd6, 0x8b, 0xb5, 0x71, 0xbc, 0xb3, 0xd9, + 0xf6, 0xec, 0x78, 0x97, 0x86, 0x43, 0xb1, 0x85, 0xae, 0x5b, 0x25, 0x3c, 0x6b, 0x1d, 0x11, 0x97, + 0xf5, 0xfe, 0xb8, 0x84, 0x17, 0xb0, 0xac, 0xd3, 0x46, 0x4c, 0xba, 0x07, 0xc0, 0x73, 0x0e, 0x15, + 0x89, 0xb2, 0x45, 0x91, 0x4b, 0x7d, 0xde, 0x85, 0x62, 0xab, 0x2f, 0xa3, 0x98, 0xe6, 0xc3, 0x68, + 0x70, 0x2d, 0xa4, 0x43, 0xb1, 0xbd, 0x4a, 0x41, 0xae, 0x39, 0xf5, 0xe3, 0xb4, 0x83, 0xc5, 0x13, + 0x0e, 0x19, 0xc5, 0x68, 0x05, 0xc8, 0xfb, 0xfc, 0x69, 0x2b, 0x05, 0x59, 0x2c, 0x45, 0xe4, 0x40, + 0x34, 0xef, 0xec, 0xa7, 0xe2, 0xb9, 0x39, 0xd5, 0x73, 0x85, 0x6e, 0xac, 0xcd, 0xbf, 0xca, 0xdd, + 0x58, 0xde, 0xe2, 0xcc, 0x2b, 0x2d, 0xce, 0x2a, 0x4c, 0xd2, 0x80, 0xa5, 0x7f, 0xd4, 0x31, 0x78, + 0xba, 0x3c, 0x3f, 0xba, 0x40, 0xad, 0x6c, 0xe1, 0x48, 0x4c, 0x8c, 0x94, 0xce, 0xb8, 0x05, 0x73, + 0x74, 0x77, 0xd7, 0x73, 0x7d, 0xb2, 0x9d, 0x44, 0x7b, 0x7c, 0xab, 0x7d, 0x8e, 0x07, 0xbb, 0x59, + 0xd5, 0x44, 0xa8, 0x23, 0xad, 0x22, 0x29, 0xeb, 0xfc, 0xec, 0x18, 0x37, 0x39, 0xbc, 0xc0, 0x9d, + 0xe7, 0x05, 0x4e, 0xc1, 0xf1, 0x73, 0x42, 0xa9, 0xd0, 0x3f, 0xc5, 0x0d, 0x27, 0xa3, 0x90, 0x4b, + 0x6c, 0xf7, 0xf7, 0x08, 0x3f, 0x34, 0xea, 0x2c, 0x60, 0xff, 0x28, 0xe3, 0x44, 0x77, 0xf7, 0x74, + 0xda, 0xdd, 0x2d, 0xbe, 0x0a, 0xd3, 0xb2, 0x82, 0x15, 0xc9, 0x7c, 0x5e, 0x4e, 0xe6, 0x29, 0x39, + 0x57, 0x7f, 0xa8, 0xc1, 0x5c, 0x41, 0x35, 0x36, 0x3a, 0x76, 0x63, 0x8f, 0x08, 0x0e, 0x08, 0xb0, + 0xdd, 0x91, 0x43, 0xa2, 0xbe, 0x48, 0x1e, 0xfe, 0x5b, 0x48, 0x52, 0xcb, 0xb6, 0xec, 0x26, 0x4c, + 0xbb, 0x5b, 0x3d, 0xc6, 0xa8, 0x47, 0x13, 0xdf, 0xc9, 0x0e, 0xda, 0x25, 0x1c, 0xdf, 0xb6, 0x6f, + 0xf5, 0xd6, 0x6c, 0x67, 0x40, 0xf0, 0xda, 0xa5, 0xce, 0x65, 0x52, 0x91, 0xa6, 0x03, 0x53, 0xb7, + 0xdd, 0x20, 0x5a, 0xa7, 0xc3, 0x21, 0x0b, 0x01, 0x87, 0xc4, 0xac, 0x8f, 0xd7, 0xb8, 0xc1, 0x04, + 0xc4, 0xac, 0xe9, 0x90, 0x5d, 0x3b, 0xf1, 0x62, 0x36, 0x34, 0x2d, 0x19, 0x12, 0x8a, 0x1f, 0x21, + 0x44, 0xd4, 0xdf, 0x40, 0x6a, 0x94, 0x53, 0xc2, 0x98, 0x7f, 0xd6, 0xa1, 0xcd, 0x2b, 0xe2, 0x3a, + 0x0f, 0x38, 0x87, 0x13, 0x5d, 0x81, 0x3a, 0x2f, 0x00, 0xa2, 0xa3, 0x3c, 0xfe, 0xdc, 0x05, 0x87, + 0x1a, 0x57, 0xa1, 0x41, 0x03, 0xde, 0x86, 0x62, 0xb9, 0x7c, 0x6e, 0x14, 0x91, 0x7a, 0xb4, 0x6e, + 0x09, 0x2a, 0xe3, 0x1a, 0xc0, 0x30, 0xef, 0x3a, 0xb1, 0x79, 0x18, 0x97, 0x87, 0x44, 0xc9, 0x8c, + 0x9b, 0xad, 0x8b, 0xd9, 0xf9, 0x7a, 0xcd, 0x52, 0x91, 0xc6, 0x26, 0xcc, 0x72, 0xb1, 0xb7, 0xd2, + 0x03, 0x38, 0xee, 0x83, 0xf1, 0x67, 0x2c, 0x50, 0x9b, 0x3f, 0xd5, 0x84, 0x19, 0xd9, 0xd7, 0x1e, + 0x41, 0xdb, 0xe7, 0x26, 0xd1, 0x4e, 0x65, 0x92, 0x45, 0x98, 0x1a, 0x26, 0xd2, 0x79, 0x60, 0xcd, + 0xca, 0xe0, 0xdc, 0x45, 0xb5, 0xb1, 0x5d, 0x64, 0xfe, 0x4c, 0x83, 0xce, 0x5b, 0xd4, 0xf5, 0xf9, + 0x87, 0xd5, 0x20, 0xf0, 0xc4, 0x35, 0xcc, 0xa9, 0x7d, 0xfe, 0x15, 0x68, 0xda, 0xc8, 0xc6, 0x8f, + 0x85, 0xdb, 0xc7, 0x38, 0xe3, 0xcb, 0x69, 0xa4, 0x83, 0x96, 0x9a, 0x7c, 0xd0, 0x62, 0x7e, 0xa8, + 0xc1, 0x2c, 0x1a, 0xe5, 0x9d, 0xc4, 0x8d, 0x4f, 0x2d, 0xdf, 0x1a, 0x4c, 0x1d, 0x24, 0x6e, 0x7c, + 0x8a, 0xa8, 0xcc, 0xe8, 0xca, 0xf1, 0x54, 0xab, 0x88, 0x27, 0xf3, 0x97, 0x1a, 0x5c, 0x28, 0x9a, + 0x75, 0xb5, 0xdf, 0x27, 0xc1, 0xa3, 0x4c, 0x29, 0xe5, 0xa0, 0x69, 0xa2, 0x70, 0xd0, 0x54, 0x29, + 0xb2, 0x45, 0xee, 0x91, 0xfe, 0xe3, 0x2b, 0xf2, 0x77, 0x74, 0xf8, 0xff, 0xeb, 0x59, 0xe2, 0xdd, + 0x0e, 0x6d, 0x3f, 0xda, 0x25, 0x61, 0xf8, 0x08, 0xe5, 0xbd, 0x05, 0x33, 0x3e, 0xb9, 0x9f, 0xcb, + 0x24, 0xd2, 0x71, 0x5c, 0x36, 0x2a, 0xf1, 0x78, 0xb5, 0xcb, 0xfc, 0x8f, 0x06, 0x6d, 0xe4, 0xf3, + 0xb6, 0xdb, 0xdf, 0x7f, 0x84, 0xca, 0x6f, 0xc2, 0xec, 0x3e, 0x97, 0x80, 0x41, 0xa7, 0x28, 0xdb, + 0x05, 0xea, 0x31, 0xd5, 0xff, 0x48, 0x83, 0xf9, 0xf4, 0xf6, 0xf7, 0xd0, 0x7d, 0x94, 0xc1, 0xba, + 0x0d, 0x73, 0x78, 0xd2, 0x7e, 0x5a, 0x03, 0x14, 0xc9, 0xc7, 0xb4, 0xc0, 0x6f, 0x34, 0x98, 0x43, + 0x4e, 0x6f, 0xfa, 0x31, 0x09, 0x4f, 0xad, 0xff, 0x0d, 0x68, 0x11, 0x3f, 0x0e, 0x6d, 0xff, 0x34, + 0x15, 0x52, 0x26, 0x1d, 0xb3, 0x48, 0x7e, 0xa8, 0x81, 0xc1, 0x59, 0x6d, 0xb8, 0xd1, 0xd0, 0x8d, + 0xa2, 0x47, 0xe8, 0xba, 0xf1, 0x04, 0xfe, 0xb1, 0x0e, 0xe7, 0x25, 0x2e, 0xdd, 0x24, 0x7e, 0xdc, + 0x45, 0x36, 0x36, 0xa0, 0xc9, 0x7a, 0x04, 0xf9, 0x1e, 0x74, 0xdc, 0x89, 0x72, 0x42, 0xd6, 0xc5, + 0x72, 0xa0, 0x47, 0xfa, 0xd4, 0x77, 0x22, 0xde, 0x1c, 0xcd, 0x58, 0x0a, 0x8e, 0x95, 0xa1, 0x45, + 0x89, 0xcd, 0xba, 0xed, 0xf7, 0x89, 0xf7, 0xc4, 0x98, 0xc8, 0xfc, 0x85, 0x06, 0xb3, 0x38, 0xe4, + 0xf1, 0x57, 0x99, 0xad, 0xf5, 0x18, 0xc8, 0x9f, 0x18, 0x2f, 0xb1, 0xf0, 0x5a, 0x90, 0xb8, 0xc8, + 0x7d, 0xf5, 0xe3, 0x1b, 0x5a, 0x37, 0xa0, 0xd5, 0xdf, 0xb3, 0xfd, 0xc1, 0xa9, 0x82, 0x4b, 0x26, + 0x35, 0x63, 0x78, 0x5a, 0x3e, 0xb4, 0x5f, 0xc7, 0x4f, 0x5c, 0xfd, 0x97, 0x0b, 0xaa, 0x1c, 0xfb, + 0xce, 0xe1, 0xe1, 0x8c, 0xbe, 0x0f, 0xf3, 0x78, 0x53, 0x2c, 0xf5, 0x84, 0x46, 0x07, 0x26, 0x6d, + 0x07, 0x8f, 0x2e, 0x34, 0x4e, 0x94, 0x82, 0xea, 0x4b, 0x02, 0xf1, 0x2e, 0x2d, 0x7f, 0x49, 0x70, + 0x11, 0xc0, 0x76, 0x9c, 0xf7, 0x68, 0xe8, 0xb8, 0x7e, 0xda, 0xe0, 0x4b, 0x18, 0xf3, 0x2d, 0x98, + 0xbe, 0x16, 0xd2, 0xe1, 0x6d, 0xe9, 0xce, 0xf7, 0xd8, 0x5b, 0x69, 0xf9, 0xbe, 0x58, 0x57, 0xef, + 0x8b, 0xcd, 0xaf, 0xc3, 0x53, 0x25, 0xc1, 0xb9, 0xb1, 0xd6, 0xf1, 0x2a, 0x3b, 0x9d, 0x44, 0x84, + 0x4c, 0xd5, 0x59, 0x9e, 0x2c, 0x8b, 0xa5, 0x10, 0x99, 0xdf, 0xd6, 0xe0, 0x99, 0x12, 0xfb, 0xd5, + 0x20, 0x08, 0xe9, 0xa1, 0xf0, 0xc9, 0x59, 0x4c, 0xa3, 0x36, 0xbf, 0x7a, 0xb1, 0xf9, 0xad, 0x14, + 0x42, 0x69, 0xd8, 0x3f, 0x06, 0x21, 0x7e, 0xae, 0xc1, 0x9c, 0x10, 0xc2, 0x71, 0xc4, 0xb4, 0xaf, + 0x40, 0x03, 0x1f, 0xd3, 0x88, 0x09, 0x9f, 0xa9, 0x9c, 0x30, 0x7d, 0x04, 0x64, 0x89, 0xc1, 0xe5, + 0x88, 0xd4, 0xab, 0x32, 0xea, 0xcb, 0x59, 0xb0, 0x8f, 0xfd, 0xdc, 0x45, 0x10, 0x98, 0x5f, 0x4d, + 0x83, 0x79, 0x83, 0x78, 0xe4, 0x2c, 0x6d, 0x64, 0xde, 0x81, 0x59, 0xfe, 0xb2, 0x27, 0xb7, 0xc1, + 0x99, 0xb0, 0x7d, 0x0f, 0xda, 0x9c, 0xed, 0x99, 0xcb, 0x9b, 0x65, 0x07, 0xb3, 0x8f, 0x5c, 0x4a, + 0xce, 0x84, 0xfb, 0xe7, 0xe1, 0x5c, 0x6a, 0x7b, 0x7c, 0x11, 0x8b, 0xbc, 0x47, 0xdc, 0xed, 0x99, + 0x2f, 0xc1, 0xc2, 0x3a, 0xf5, 0x0f, 0x49, 0x18, 0x29, 0x8f, 0x68, 0x91, 0x42, 0x49, 0x7e, 0x01, + 0x99, 0xf7, 0x60, 0x51, 0xa6, 0xe8, 0x91, 0x78, 0x3b, 0x74, 0x0f, 0x25, 0x2a, 0x71, 0xa8, 0xad, + 0x29, 0x87, 0xda, 0xf9, 0x21, 0xb8, 0xae, 0x1c, 0x82, 0x5f, 0x80, 0xa6, 0x1b, 0x09, 0x06, 0x3c, + 0xa8, 0xa6, 0xac, 0x1c, 0x61, 0xda, 0x30, 0x8f, 0xe6, 0x17, 0x97, 0x4c, 0x7c, 0x8a, 0x45, 0x98, + 0xc2, 0x98, 0xca, 0x26, 0xc9, 0xe0, 0x91, 0x57, 0x36, 0x23, 0x2f, 0x28, 0xcd, 0x1e, 0xcc, 0x8b, + 0x87, 0x38, 0xdb, 0xf6, 0xc0, 0xf5, 0xb1, 0xc8, 0x5e, 0x04, 0x08, 0xec, 0x41, 0xfa, 0xf4, 0x0f, + 0xaf, 0xda, 0x24, 0x0c, 0xfb, 0x1e, 0xed, 0xd1, 0xfb, 0xe2, 0xbb, 0x8e, 0xdf, 0x73, 0x8c, 0xf9, + 0x2e, 0x18, 0x16, 0x89, 0x02, 0xea, 0x47, 0x44, 0xe2, 0xba, 0x04, 0xad, 0xf5, 0x24, 0x0c, 0x89, + 0xcf, 0xa6, 0x4a, 0xdf, 0xb6, 0xc9, 0x28, 0xc6, 0xb7, 0x97, 0xf3, 0xc5, 0x63, 0x79, 0x09, 0x63, + 0xfe, 0xa4, 0x06, 0xcd, 0x9e, 0x3b, 0xf0, 0x6d, 0xcf, 0x22, 0x07, 0xc6, 0xeb, 0xd0, 0xc0, 0x2d, + 0x8b, 0x88, 0x94, 0xaa, 0x63, 0x62, 0x1c, 0x8d, 0x7b, 0x33, 0x8b, 0x1c, 0xdc, 0xf8, 0x3f, 0x4b, + 0xd0, 0x18, 0xef, 0xa4, 0xcf, 0x95, 0x6e, 0xe2, 0x11, 0x94, 0x58, 0xbf, 0x3e, 0x7b, 0x02, 0x13, + 0x31, 0x1a, 0x79, 0xa9, 0x1c, 0x98, 0x40, 0x7d, 0xde, 0xd2, 0x88, 0xf2, 0x30, 0x5a, 0x20, 0xec, + 0x7c, 0x84, 0x40, 0x48, 0xc3, 0xa8, 0x6d, 0x7e, 0x48, 0x23, 0x56, 0xea, 0xd1, 0xd4, 0x78, 0x96, + 0x23, 0xa8, 0x91, 0x86, 0x51, 0xef, 0x25, 0xfe, 0xe0, 0x4e, 0x20, 0xce, 0x0e, 0x47, 0x53, 0xdf, + 0xe0, 0xc3, 0x04, 0x35, 0xd2, 0x30, 0xea, 0x90, 0x17, 0x6f, 0x6e, 0xf4, 0xe3, 0xa8, 0xb1, 0xc6, + 0x0b, 0x6a, 0xa4, 0x59, 0x6b, 0xc2, 0x64, 0x60, 0x1f, 0x79, 0xd4, 0x76, 0xcc, 0x0f, 0x6a, 0x00, + 0xe9, 0xc0, 0x88, 0x37, 0x3a, 0x8a, 0x8b, 0x96, 0x4f, 0x74, 0x51, 0xe0, 0x1d, 0x49, 0x4e, 0xea, + 0x55, 0x3b, 0xe9, 0x73, 0xe3, 0x3a, 0x09, 0xb9, 0x15, 0xdc, 0x74, 0xb5, 0xe0, 0xa6, 0xe5, 0x13, + 0xdd, 0x24, 0x84, 0x12, 0x8e, 0xba, 0x5a, 0x70, 0xd4, 0xf2, 0x89, 0x8e, 0x12, 0xf4, 0xc2, 0x55, + 0x57, 0x0b, 0xae, 0x5a, 0x3e, 0xd1, 0x55, 0x82, 0x5e, 0x38, 0xeb, 0x6a, 0xc1, 0x59, 0xcb, 0x27, + 0x3a, 0x4b, 0xd0, 0x97, 0xdd, 0xf5, 0x37, 0x1d, 0x66, 0xb9, 0xc9, 0xf0, 0xe6, 0xd6, 0xdf, 0xa5, + 0xe5, 0x67, 0x7c, 0x5a, 0xc5, 0x33, 0x3e, 0xe3, 0x45, 0x98, 0x47, 0x04, 0x91, 0xae, 0x58, 0x74, + 0x7e, 0xc5, 0x52, 0xfe, 0xc0, 0x2f, 0x95, 0x92, 0x28, 0xa6, 0xc3, 0x0d, 0x3b, 0xb6, 0xd3, 0xe6, + 0x2b, 0xc7, 0xc8, 0x57, 0x7e, 0x13, 0xa5, 0x17, 0xed, 0x21, 0xa5, 0xc3, 0xec, 0x2e, 0x4f, 0x40, + 0x8c, 0x22, 0x76, 0x87, 0x84, 0x26, 0xb1, 0x28, 0x13, 0x29, 0x88, 0x6f, 0xaf, 0x1c, 0xd7, 0xe6, + 0x17, 0x65, 0xe2, 0x61, 0x52, 0x86, 0xe0, 0x95, 0x2d, 0xbf, 0xf8, 0x13, 0x2f, 0xce, 0x73, 0xcc, + 0x18, 0x97, 0x74, 0xfc, 0xcf, 0x0b, 0x6e, 0xec, 0xca, 0x0f, 0x96, 0xea, 0x96, 0x82, 0x33, 0xff, + 0xa9, 0xc1, 0xb9, 0x6d, 0x3b, 0x8c, 0xdd, 0xbe, 0x1b, 0xd8, 0x7e, 0xdc, 0x25, 0xb1, 0xcd, 0xf5, + 0x54, 0x9e, 0x91, 0x6a, 0x0f, 0xf7, 0x8c, 0x74, 0x1b, 0xe6, 0x06, 0xea, 0x0e, 0xe4, 0x21, 0x37, + 0x0f, 0x45, 0x72, 0xe5, 0x4d, 0x6c, 0xed, 0xa1, 0xdf, 0xc4, 0x9a, 0xdf, 0xd3, 0x61, 0xae, 0x50, + 0x5e, 0x8f, 0x5d, 0x9b, 0x56, 0x01, 0xdc, 0x2c, 0xd4, 0x8e, 0x39, 0xa0, 0x57, 0xe3, 0xd1, 0x92, + 0x88, 0xaa, 0x6e, 0x08, 0x6b, 0xa7, 0xbf, 0x21, 0xbc, 0x01, 0xad, 0x20, 0x77, 0xd2, 0x31, 0xfb, + 0xa3, 0x0a, 0x57, 0x5a, 0x32, 0xa9, 0xf9, 0x3e, 0xcc, 0x97, 0xaa, 0x18, 0xbf, 0xb6, 0xa3, 0xfb, + 0xc4, 0xcf, 0xae, 0xed, 0x18, 0x20, 0x05, 0xb4, 0x5e, 0x0c, 0x68, 0xcf, 0x3d, 0x94, 0x1f, 0xe8, + 0x0b, 0xd0, 0xfc, 0xbe, 0x0e, 0x0b, 0xd5, 0x2b, 0xd0, 0x93, 0x6a, 0xee, 0x1d, 0xe8, 0x8c, 0xaa, + 0xf6, 0x67, 0x66, 0xf5, 0x3c, 0xba, 0xb3, 0xb5, 0xfa, 0x49, 0x35, 0xf7, 0xb9, 0x34, 0xba, 0xa5, + 0xe5, 0xd0, 0xfc, 0x75, 0x66, 0x9f, 0xac, 0x1b, 0x79, 0x42, 0xed, 0x63, 0x5c, 0x82, 0x36, 0xaa, + 0x29, 0x3d, 0x29, 0xc1, 0xe6, 0xb6, 0x84, 0xcf, 0x2b, 0x85, 0xd4, 0x1a, 0x9c, 0x59, 0xcc, 0xfe, + 0x41, 0x4b, 0x7d, 0x92, 0xf5, 0x78, 0x9f, 0x28, 0x9f, 0xe4, 0x91, 0x26, 0x35, 0x3e, 0x52, 0xa4, + 0x65, 0xbd, 0xe7, 0xff, 0x22, 0xed, 0xe4, 0x48, 0xcb, 0x6c, 0x29, 0x35, 0x81, 0xe6, 0xb7, 0x60, + 0x66, 0x83, 0x78, 0xdd, 0x68, 0x90, 0xbe, 0x79, 0x3d, 0xd3, 0xcd, 0x64, 0xf1, 0x65, 0xe0, 0x44, + 0xf9, 0x65, 0xe0, 0x1a, 0xcc, 0xca, 0x02, 0x9c, 0xe6, 0x4d, 0xe7, 0xda, 0x85, 0xaf, 0x2d, 0xae, + 0x88, 0xff, 0x4a, 0xbf, 0x56, 0x32, 0xe2, 0x4e, 0x83, 0xff, 0xbb, 0xf2, 0xe5, 0xff, 0x06, 0x00, + 0x00, 0xff, 0xff, 0x8e, 0xa2, 0xa5, 0x98, 0x84, 0x3d, 0x00, 0x00, } diff --git a/pkg/proto/sdk_ws/ws.proto b/pkg/proto/sdk_ws/ws.proto index 9783c2bd7..225a93c39 100644 --- a/pkg/proto/sdk_ws/ws.proto +++ b/pkg/proto/sdk_ws/ws.proto @@ -262,6 +262,8 @@ message MsgData { OfflinePushInfo offlinePushInfo = 19; repeated string atUserIDList = 20; bytes msgDataList = 21; + string attachedInfo = 22; + string ex = 23; } message OfflinePushInfo{ From f687f2eafb95870e03af4efe775891f7091330ae Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Wed, 3 Aug 2022 19:34:46 +0800 Subject: [PATCH 09/11] fix bug --- docker-compose.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yaml b/docker-compose.yaml index 70e5cd6a8..aeac41995 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -126,7 +126,7 @@ services: # STORE_PORT: 3306 open_im_server: - image: openim/open_im_server:v2.3.0-rc2 + image: openim/open_im_server:v2.3.0 container_name: open_im_server volumes: - ./logs:/Open-IM-Server/logs From 6417977617197a6622b7c856952e08d41300c3b3 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Wed, 3 Aug 2022 21:05:56 +0800 Subject: [PATCH 10/11] docker-compose file update --- config/config.yaml | 2 +- docker-compose.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/config/config.yaml b/config/config.yaml index 680747d01..1eb0122ce 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -2,7 +2,7 @@ # The class cannot be named by Pascal or camel case. # If it is not used, the corresponding structure will not be set, # and it will not be read naturally. -serverversion: 2.3.0-rc2 +serverversion: 2.3.0 #---------------Infrastructure configuration---------------------# etcd: etcdSchema: openim #默认即可 diff --git a/docker-compose.yaml b/docker-compose.yaml index 70e5cd6a8..aeac41995 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -126,7 +126,7 @@ services: # STORE_PORT: 3306 open_im_server: - image: openim/open_im_server:v2.3.0-rc2 + image: openim/open_im_server:v2.3.0 container_name: open_im_server volumes: - ./logs:/Open-IM-Server/logs From c4ee2933882b7b960e79472d0148675d76f597de Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Thu, 4 Aug 2022 10:00:32 +0800 Subject: [PATCH 11/11] docker-compose file update --- internal/rpc/msg/send_msg.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/internal/rpc/msg/send_msg.go b/internal/rpc/msg/send_msg.go index e1fa4b0de..7865ad564 100644 --- a/internal/rpc/msg/send_msg.go +++ b/internal/rpc/msg/send_msg.go @@ -69,14 +69,14 @@ func isMessageHasReadEnabled(pb *pbChat.SendMsgReq) (bool, int32, string) { } func messageVerification(data *pbChat.SendMsgReq) (bool, int32, string, []string) { + if utils.IsContain(data.MsgData.SendID, config.Config.Manager.AppManagerUid) { + return true, 0, "", nil + } + if data.MsgData.ContentType <= constant.NotificationEnd && data.MsgData.ContentType >= constant.NotificationBegin { + return true, 0, "", nil + } switch data.MsgData.SessionType { case constant.SingleChatType: - if utils.IsContain(data.MsgData.SendID, config.Config.Manager.AppManagerUid) { - return true, 0, "", nil - } - if data.MsgData.ContentType <= constant.NotificationEnd && data.MsgData.ContentType >= constant.NotificationBegin { - return true, 0, "", nil - } log.NewDebug(data.OperationID, config.Config.MessageVerify.FriendVerify) reqGetBlackIDListFromCache := &cacheRpc.GetBlackIDListFromCacheReq{UserID: data.MsgData.RecvID, OperationID: data.OperationID} etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCacheName, data.OperationID)