// Copyright © 2023 OpenIM open source community. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.33.0 // protoc v6.33.0 // source: chat/chat.proto package chat import ( common "git.imall.cloud/openim/chat/pkg/protocol/common" sdkws "git.imall.cloud/openim/protocol/sdkws" wrapperspb "git.imall.cloud/openim/protocol/wrapperspb" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" ) const ( // Verify that this generated code is sufficiently up-to-date. _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) // Verify that runtime/protoimpl is sufficiently up-to-date. _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) type UserIdentity struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Email string `protobuf:"bytes,1,opt,name=email,proto3" json:"email"` AreaCode string `protobuf:"bytes,2,opt,name=areaCode,proto3" json:"areaCode"` PhoneNumber string `protobuf:"bytes,3,opt,name=phoneNumber,proto3" json:"phoneNumber"` DeviceID string `protobuf:"bytes,4,opt,name=deviceID,proto3" json:"deviceID"` Platform int32 `protobuf:"varint,5,opt,name=platform,proto3" json:"platform"` Account string `protobuf:"bytes,6,opt,name=account,proto3" json:"account"` } func (x *UserIdentity) Reset() { *x = UserIdentity{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserIdentity) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserIdentity) ProtoMessage() {} func (x *UserIdentity) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use UserIdentity.ProtoReflect.Descriptor instead. func (*UserIdentity) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{0} } func (x *UserIdentity) GetEmail() string { if x != nil { return x.Email } return "" } func (x *UserIdentity) GetAreaCode() string { if x != nil { return x.AreaCode } return "" } func (x *UserIdentity) GetPhoneNumber() string { if x != nil { return x.PhoneNumber } return "" } func (x *UserIdentity) GetDeviceID() string { if x != nil { return x.DeviceID } return "" } func (x *UserIdentity) GetPlatform() int32 { if x != nil { return x.Platform } return 0 } func (x *UserIdentity) GetAccount() string { if x != nil { return x.Account } return "" } type UpdateUserInfoReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` Account *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=account,proto3" json:"account"` PhoneNumber *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=phoneNumber,proto3" json:"phoneNumber"` AreaCode *wrapperspb.StringValue `protobuf:"bytes,4,opt,name=areaCode,proto3" json:"areaCode"` Email *wrapperspb.StringValue `protobuf:"bytes,5,opt,name=email,proto3" json:"email"` Nickname *wrapperspb.StringValue `protobuf:"bytes,6,opt,name=nickname,proto3" json:"nickname"` FaceURL *wrapperspb.StringValue `protobuf:"bytes,7,opt,name=faceURL,proto3" json:"faceURL"` Gender *wrapperspb.Int32Value `protobuf:"bytes,8,opt,name=gender,proto3" json:"gender"` Level *wrapperspb.Int32Value `protobuf:"bytes,9,opt,name=level,proto3" json:"level"` Birth *wrapperspb.Int64Value `protobuf:"bytes,10,opt,name=birth,proto3" json:"birth"` AllowAddFriend *wrapperspb.Int32Value `protobuf:"bytes,11,opt,name=allowAddFriend,proto3" json:"allowAddFriend"` AllowBeep *wrapperspb.Int32Value `protobuf:"bytes,12,opt,name=allowBeep,proto3" json:"allowBeep"` AllowVibration *wrapperspb.Int32Value `protobuf:"bytes,13,opt,name=allowVibration,proto3" json:"allowVibration"` GlobalRecvMsgOpt *wrapperspb.Int32Value `protobuf:"bytes,14,opt,name=globalRecvMsgOpt,proto3" json:"globalRecvMsgOpt"` RegisterType *wrapperspb.Int32Value `protobuf:"bytes,15,opt,name=RegisterType,proto3" json:"RegisterType"` UserType int32 `protobuf:"varint,16,opt,name=userType,proto3" json:"userType"` // 用户类型: 0=普通用户, 1=企业用户, 2=机器人, 3=管理员 UserFlag *wrapperspb.StringValue `protobuf:"bytes,17,opt,name=userFlag,proto3" json:"userFlag"` // 用户标签/标识,类似UserType的字符串版本 } func (x *UpdateUserInfoReq) Reset() { *x = UpdateUserInfoReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateUserInfoReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateUserInfoReq) ProtoMessage() {} func (x *UpdateUserInfoReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use UpdateUserInfoReq.ProtoReflect.Descriptor instead. func (*UpdateUserInfoReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{1} } func (x *UpdateUserInfoReq) GetUserID() string { if x != nil { return x.UserID } return "" } func (x *UpdateUserInfoReq) GetAccount() *wrapperspb.StringValue { if x != nil { return x.Account } return nil } func (x *UpdateUserInfoReq) GetPhoneNumber() *wrapperspb.StringValue { if x != nil { return x.PhoneNumber } return nil } func (x *UpdateUserInfoReq) GetAreaCode() *wrapperspb.StringValue { if x != nil { return x.AreaCode } return nil } func (x *UpdateUserInfoReq) GetEmail() *wrapperspb.StringValue { if x != nil { return x.Email } return nil } func (x *UpdateUserInfoReq) GetNickname() *wrapperspb.StringValue { if x != nil { return x.Nickname } return nil } func (x *UpdateUserInfoReq) GetFaceURL() *wrapperspb.StringValue { if x != nil { return x.FaceURL } return nil } func (x *UpdateUserInfoReq) GetGender() *wrapperspb.Int32Value { if x != nil { return x.Gender } return nil } func (x *UpdateUserInfoReq) GetLevel() *wrapperspb.Int32Value { if x != nil { return x.Level } return nil } func (x *UpdateUserInfoReq) GetBirth() *wrapperspb.Int64Value { if x != nil { return x.Birth } return nil } func (x *UpdateUserInfoReq) GetAllowAddFriend() *wrapperspb.Int32Value { if x != nil { return x.AllowAddFriend } return nil } func (x *UpdateUserInfoReq) GetAllowBeep() *wrapperspb.Int32Value { if x != nil { return x.AllowBeep } return nil } func (x *UpdateUserInfoReq) GetAllowVibration() *wrapperspb.Int32Value { if x != nil { return x.AllowVibration } return nil } func (x *UpdateUserInfoReq) GetGlobalRecvMsgOpt() *wrapperspb.Int32Value { if x != nil { return x.GlobalRecvMsgOpt } return nil } func (x *UpdateUserInfoReq) GetRegisterType() *wrapperspb.Int32Value { if x != nil { return x.RegisterType } return nil } func (x *UpdateUserInfoReq) GetUserType() int32 { if x != nil { return x.UserType } return 0 } func (x *UpdateUserInfoReq) GetUserFlag() *wrapperspb.StringValue { if x != nil { return x.UserFlag } return nil } type UpdateUserInfoResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields FaceUrl string `protobuf:"bytes,1,opt,name=faceUrl,proto3" json:"faceUrl"` NickName string `protobuf:"bytes,2,opt,name=nickName,proto3" json:"nickName"` } func (x *UpdateUserInfoResp) Reset() { *x = UpdateUserInfoResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateUserInfoResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateUserInfoResp) ProtoMessage() {} func (x *UpdateUserInfoResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use UpdateUserInfoResp.ProtoReflect.Descriptor instead. func (*UpdateUserInfoResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{2} } func (x *UpdateUserInfoResp) GetFaceUrl() string { if x != nil { return x.FaceUrl } return "" } func (x *UpdateUserInfoResp) GetNickName() string { if x != nil { return x.NickName } return "" } type FindUserPublicInfoReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserIDs []string `protobuf:"bytes,1,rep,name=userIDs,proto3" json:"userIDs"` } func (x *FindUserPublicInfoReq) Reset() { *x = FindUserPublicInfoReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *FindUserPublicInfoReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*FindUserPublicInfoReq) ProtoMessage() {} func (x *FindUserPublicInfoReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use FindUserPublicInfoReq.ProtoReflect.Descriptor instead. func (*FindUserPublicInfoReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{3} } func (x *FindUserPublicInfoReq) GetUserIDs() []string { if x != nil { return x.UserIDs } return nil } type FindUserPublicInfoResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Users []*common.UserPublicInfo `protobuf:"bytes,1,rep,name=users,proto3" json:"users"` } func (x *FindUserPublicInfoResp) Reset() { *x = FindUserPublicInfoResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *FindUserPublicInfoResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*FindUserPublicInfoResp) ProtoMessage() {} func (x *FindUserPublicInfoResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use FindUserPublicInfoResp.ProtoReflect.Descriptor instead. func (*FindUserPublicInfoResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{4} } func (x *FindUserPublicInfoResp) GetUsers() []*common.UserPublicInfo { if x != nil { return x.Users } return nil } type SearchUserPublicInfoReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword"` Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination"` Genders int32 `protobuf:"varint,3,opt,name=genders,proto3" json:"genders"` } func (x *SearchUserPublicInfoReq) Reset() { *x = SearchUserPublicInfoReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SearchUserPublicInfoReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*SearchUserPublicInfoReq) ProtoMessage() {} func (x *SearchUserPublicInfoReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SearchUserPublicInfoReq.ProtoReflect.Descriptor instead. func (*SearchUserPublicInfoReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{5} } func (x *SearchUserPublicInfoReq) GetKeyword() string { if x != nil { return x.Keyword } return "" } func (x *SearchUserPublicInfoReq) GetPagination() *sdkws.RequestPagination { if x != nil { return x.Pagination } return nil } func (x *SearchUserPublicInfoReq) GetGenders() int32 { if x != nil { return x.Genders } return 0 } type SearchUserPublicInfoResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` Users []*common.UserPublicInfo `protobuf:"bytes,2,rep,name=users,proto3" json:"users"` } func (x *SearchUserPublicInfoResp) Reset() { *x = SearchUserPublicInfoResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SearchUserPublicInfoResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*SearchUserPublicInfoResp) ProtoMessage() {} func (x *SearchUserPublicInfoResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SearchUserPublicInfoResp.ProtoReflect.Descriptor instead. func (*SearchUserPublicInfoResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{6} } func (x *SearchUserPublicInfoResp) GetTotal() uint32 { if x != nil { return x.Total } return 0 } func (x *SearchUserPublicInfoResp) GetUsers() []*common.UserPublicInfo { if x != nil { return x.Users } return nil } type FindUserFullInfoReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserIDs []string `protobuf:"bytes,1,rep,name=userIDs,proto3" json:"userIDs"` } func (x *FindUserFullInfoReq) Reset() { *x = FindUserFullInfoReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *FindUserFullInfoReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*FindUserFullInfoReq) ProtoMessage() {} func (x *FindUserFullInfoReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use FindUserFullInfoReq.ProtoReflect.Descriptor instead. func (*FindUserFullInfoReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{7} } func (x *FindUserFullInfoReq) GetUserIDs() []string { if x != nil { return x.UserIDs } return nil } type FindUserFullInfoResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Users []*common.UserFullInfo `protobuf:"bytes,1,rep,name=users,proto3" json:"users"` } func (x *FindUserFullInfoResp) Reset() { *x = FindUserFullInfoResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *FindUserFullInfoResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*FindUserFullInfoResp) ProtoMessage() {} func (x *FindUserFullInfoResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use FindUserFullInfoResp.ProtoReflect.Descriptor instead. func (*FindUserFullInfoResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{8} } func (x *FindUserFullInfoResp) GetUsers() []*common.UserFullInfo { if x != nil { return x.Users } return nil } type SendVerifyCodeReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UsedFor int32 `protobuf:"varint,1,opt,name=usedFor,proto3" json:"usedFor"` Ip string `protobuf:"bytes,2,opt,name=ip,proto3" json:"ip"` InvitationCode string `protobuf:"bytes,3,opt,name=invitationCode,proto3" json:"invitationCode"` DeviceID string `protobuf:"bytes,4,opt,name=deviceID,proto3" json:"deviceID"` Platform int32 `protobuf:"varint,5,opt,name=platform,proto3" json:"platform"` AreaCode string `protobuf:"bytes,6,opt,name=areaCode,proto3" json:"areaCode"` PhoneNumber string `protobuf:"bytes,7,opt,name=phoneNumber,proto3" json:"phoneNumber"` Email string `protobuf:"bytes,8,opt,name=email,proto3" json:"email"` } func (x *SendVerifyCodeReq) Reset() { *x = SendVerifyCodeReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SendVerifyCodeReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*SendVerifyCodeReq) ProtoMessage() {} func (x *SendVerifyCodeReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SendVerifyCodeReq.ProtoReflect.Descriptor instead. func (*SendVerifyCodeReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{9} } func (x *SendVerifyCodeReq) GetUsedFor() int32 { if x != nil { return x.UsedFor } return 0 } func (x *SendVerifyCodeReq) GetIp() string { if x != nil { return x.Ip } return "" } func (x *SendVerifyCodeReq) GetInvitationCode() string { if x != nil { return x.InvitationCode } return "" } func (x *SendVerifyCodeReq) GetDeviceID() string { if x != nil { return x.DeviceID } return "" } func (x *SendVerifyCodeReq) GetPlatform() int32 { if x != nil { return x.Platform } return 0 } func (x *SendVerifyCodeReq) GetAreaCode() string { if x != nil { return x.AreaCode } return "" } func (x *SendVerifyCodeReq) GetPhoneNumber() string { if x != nil { return x.PhoneNumber } return "" } func (x *SendVerifyCodeReq) GetEmail() string { if x != nil { return x.Email } return "" } type SendVerifyCodeResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *SendVerifyCodeResp) Reset() { *x = SendVerifyCodeResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SendVerifyCodeResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*SendVerifyCodeResp) ProtoMessage() {} func (x *SendVerifyCodeResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SendVerifyCodeResp.ProtoReflect.Descriptor instead. func (*SendVerifyCodeResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{10} } type VerifyCodeReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields AreaCode string `protobuf:"bytes,1,opt,name=areaCode,proto3" json:"areaCode"` PhoneNumber string `protobuf:"bytes,2,opt,name=phoneNumber,proto3" json:"phoneNumber"` VerifyCode string `protobuf:"bytes,3,opt,name=verifyCode,proto3" json:"verifyCode"` Email string `protobuf:"bytes,4,opt,name=email,proto3" json:"email"` CaptchaID string `protobuf:"bytes,5,opt,name=captchaID,proto3" json:"captchaID"` // 图片验证码ID(可选,如果提供则验证图片验证码) Account string `protobuf:"bytes,6,opt,name=account,proto3" json:"account"` // 用户名(用于账号注册验证) } func (x *VerifyCodeReq) Reset() { *x = VerifyCodeReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *VerifyCodeReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*VerifyCodeReq) ProtoMessage() {} func (x *VerifyCodeReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use VerifyCodeReq.ProtoReflect.Descriptor instead. func (*VerifyCodeReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{11} } func (x *VerifyCodeReq) GetAreaCode() string { if x != nil { return x.AreaCode } return "" } func (x *VerifyCodeReq) GetPhoneNumber() string { if x != nil { return x.PhoneNumber } return "" } func (x *VerifyCodeReq) GetVerifyCode() string { if x != nil { return x.VerifyCode } return "" } func (x *VerifyCodeReq) GetEmail() string { if x != nil { return x.Email } return "" } func (x *VerifyCodeReq) GetCaptchaID() string { if x != nil { return x.CaptchaID } return "" } func (x *VerifyCodeReq) GetAccount() string { if x != nil { return x.Account } return "" } type VerifyCodeResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields RegisterToken string `protobuf:"bytes,1,opt,name=registerToken,proto3" json:"registerToken"` // H5注册token(仅在验证图片验证码成功后返回,用于后续注册,有效期120秒) } func (x *VerifyCodeResp) Reset() { *x = VerifyCodeResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *VerifyCodeResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*VerifyCodeResp) ProtoMessage() {} func (x *VerifyCodeResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use VerifyCodeResp.ProtoReflect.Descriptor instead. func (*VerifyCodeResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{12} } func (x *VerifyCodeResp) GetRegisterToken() string { if x != nil { return x.RegisterToken } return "" } type GetCaptchaImageReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *GetCaptchaImageReq) Reset() { *x = GetCaptchaImageReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetCaptchaImageReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetCaptchaImageReq) ProtoMessage() {} func (x *GetCaptchaImageReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetCaptchaImageReq.ProtoReflect.Descriptor instead. func (*GetCaptchaImageReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{13} } type GetCaptchaImageResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CaptchaID string `protobuf:"bytes,1,opt,name=captchaID,proto3" json:"captchaID"` // 验证码ID,用于后续验证 Code string `protobuf:"bytes,2,opt,name=code,proto3" json:"code"` // 6位数字验证码(用于生成图片) } func (x *GetCaptchaImageResp) Reset() { *x = GetCaptchaImageResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetCaptchaImageResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetCaptchaImageResp) ProtoMessage() {} func (x *GetCaptchaImageResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetCaptchaImageResp.ProtoReflect.Descriptor instead. func (*GetCaptchaImageResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{14} } func (x *GetCaptchaImageResp) GetCaptchaID() string { if x != nil { return x.CaptchaID } return "" } func (x *GetCaptchaImageResp) GetCode() string { if x != nil { return x.Code } return "" } type RegisterUserInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` Nickname string `protobuf:"bytes,2,opt,name=nickname,proto3" json:"nickname"` FaceURL string `protobuf:"bytes,3,opt,name=faceURL,proto3" json:"faceURL"` Birth int64 `protobuf:"varint,4,opt,name=birth,proto3" json:"birth"` Gender int32 `protobuf:"varint,5,opt,name=gender,proto3" json:"gender"` AreaCode string `protobuf:"bytes,6,opt,name=areaCode,proto3" json:"areaCode"` PhoneNumber string `protobuf:"bytes,7,opt,name=phoneNumber,proto3" json:"phoneNumber"` Email string `protobuf:"bytes,8,opt,name=email,proto3" json:"email"` Account string `protobuf:"bytes,9,opt,name=account,proto3" json:"account"` Password string `protobuf:"bytes,10,opt,name=password,proto3" json:"password"` RegisterType int32 `protobuf:"varint,11,opt,name=RegisterType,proto3" json:"RegisterType"` UserType int32 `protobuf:"varint,12,opt,name=userType,proto3" json:"userType"` // 用户类型: 0=普通用户, 1=企业用户, 2=机器人, 3=管理员 UserFlag string `protobuf:"bytes,13,opt,name=userFlag,proto3" json:"userFlag"` // 用户标签/标识 } func (x *RegisterUserInfo) Reset() { *x = RegisterUserInfo{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RegisterUserInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*RegisterUserInfo) ProtoMessage() {} func (x *RegisterUserInfo) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RegisterUserInfo.ProtoReflect.Descriptor instead. func (*RegisterUserInfo) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{15} } func (x *RegisterUserInfo) GetUserID() string { if x != nil { return x.UserID } return "" } func (x *RegisterUserInfo) GetNickname() string { if x != nil { return x.Nickname } return "" } func (x *RegisterUserInfo) GetFaceURL() string { if x != nil { return x.FaceURL } return "" } func (x *RegisterUserInfo) GetBirth() int64 { if x != nil { return x.Birth } return 0 } func (x *RegisterUserInfo) GetGender() int32 { if x != nil { return x.Gender } return 0 } func (x *RegisterUserInfo) GetAreaCode() string { if x != nil { return x.AreaCode } return "" } func (x *RegisterUserInfo) GetPhoneNumber() string { if x != nil { return x.PhoneNumber } return "" } func (x *RegisterUserInfo) GetEmail() string { if x != nil { return x.Email } return "" } func (x *RegisterUserInfo) GetAccount() string { if x != nil { return x.Account } return "" } func (x *RegisterUserInfo) GetPassword() string { if x != nil { return x.Password } return "" } func (x *RegisterUserInfo) GetRegisterType() int32 { if x != nil { return x.RegisterType } return 0 } func (x *RegisterUserInfo) GetUserType() int32 { if x != nil { return x.UserType } return 0 } func (x *RegisterUserInfo) GetUserFlag() string { if x != nil { return x.UserFlag } return "" } type RegisterUserReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields InvitationCode string `protobuf:"bytes,1,opt,name=invitationCode,proto3" json:"invitationCode"` VerifyCode string `protobuf:"bytes,2,opt,name=verifyCode,proto3" json:"verifyCode"` Ip string `protobuf:"bytes,3,opt,name=ip,proto3" json:"ip"` DeviceID string `protobuf:"bytes,4,opt,name=deviceID,proto3" json:"deviceID"` Platform int32 `protobuf:"varint,5,opt,name=platform,proto3" json:"platform"` AutoLogin bool `protobuf:"varint,6,opt,name=autoLogin,proto3" json:"autoLogin"` User *RegisterUserInfo `protobuf:"bytes,7,opt,name=user,proto3" json:"user"` RegisterToken string `protobuf:"bytes,8,opt,name=registerToken,proto3" json:"registerToken"` // H5注册token(可选,用于H5注册场景,验证手机号合法性) } func (x *RegisterUserReq) Reset() { *x = RegisterUserReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RegisterUserReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*RegisterUserReq) ProtoMessage() {} func (x *RegisterUserReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RegisterUserReq.ProtoReflect.Descriptor instead. func (*RegisterUserReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{16} } func (x *RegisterUserReq) GetInvitationCode() string { if x != nil { return x.InvitationCode } return "" } func (x *RegisterUserReq) GetVerifyCode() string { if x != nil { return x.VerifyCode } return "" } func (x *RegisterUserReq) GetIp() string { if x != nil { return x.Ip } return "" } func (x *RegisterUserReq) GetDeviceID() string { if x != nil { return x.DeviceID } return "" } func (x *RegisterUserReq) GetPlatform() int32 { if x != nil { return x.Platform } return 0 } func (x *RegisterUserReq) GetAutoLogin() bool { if x != nil { return x.AutoLogin } return false } func (x *RegisterUserReq) GetUser() *RegisterUserInfo { if x != nil { return x.User } return nil } func (x *RegisterUserReq) GetRegisterToken() string { if x != nil { return x.RegisterToken } return "" } type RegisterUserResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` ChatToken string `protobuf:"bytes,3,opt,name=chatToken,proto3" json:"chatToken"` } func (x *RegisterUserResp) Reset() { *x = RegisterUserResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RegisterUserResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*RegisterUserResp) ProtoMessage() {} func (x *RegisterUserResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RegisterUserResp.ProtoReflect.Descriptor instead. func (*RegisterUserResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{17} } func (x *RegisterUserResp) GetUserID() string { if x != nil { return x.UserID } return "" } func (x *RegisterUserResp) GetChatToken() string { if x != nil { return x.ChatToken } return "" } type AddUserAccountReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ip string `protobuf:"bytes,1,opt,name=ip,proto3" json:"ip"` DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID"` Platform int32 `protobuf:"varint,3,opt,name=platform,proto3" json:"platform"` User *RegisterUserInfo `protobuf:"bytes,4,opt,name=user,proto3" json:"user"` } func (x *AddUserAccountReq) Reset() { *x = AddUserAccountReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AddUserAccountReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*AddUserAccountReq) ProtoMessage() {} func (x *AddUserAccountReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use AddUserAccountReq.ProtoReflect.Descriptor instead. func (*AddUserAccountReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{18} } func (x *AddUserAccountReq) GetIp() string { if x != nil { return x.Ip } return "" } func (x *AddUserAccountReq) GetDeviceID() string { if x != nil { return x.DeviceID } return "" } func (x *AddUserAccountReq) GetPlatform() int32 { if x != nil { return x.Platform } return 0 } func (x *AddUserAccountReq) GetUser() *RegisterUserInfo { if x != nil { return x.User } return nil } type AddUserAccountResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *AddUserAccountResp) Reset() { *x = AddUserAccountResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AddUserAccountResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*AddUserAccountResp) ProtoMessage() {} func (x *AddUserAccountResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use AddUserAccountResp.ProtoReflect.Descriptor instead. func (*AddUserAccountResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{19} } type LoginReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields AreaCode string `protobuf:"bytes,1,opt,name=areaCode,proto3" json:"areaCode"` PhoneNumber string `protobuf:"bytes,2,opt,name=phoneNumber,proto3" json:"phoneNumber"` VerifyCode string `protobuf:"bytes,3,opt,name=verifyCode,proto3" json:"verifyCode"` Account string `protobuf:"bytes,4,opt,name=account,proto3" json:"account"` Password string `protobuf:"bytes,5,opt,name=password,proto3" json:"password"` Platform int32 `protobuf:"varint,6,opt,name=platform,proto3" json:"platform"` DeviceID string `protobuf:"bytes,7,opt,name=deviceID,proto3" json:"deviceID"` Ip string `protobuf:"bytes,8,opt,name=ip,proto3" json:"ip"` Email string `protobuf:"bytes,9,opt,name=email,proto3" json:"email"` } func (x *LoginReq) Reset() { *x = LoginReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LoginReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*LoginReq) ProtoMessage() {} func (x *LoginReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use LoginReq.ProtoReflect.Descriptor instead. func (*LoginReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{20} } func (x *LoginReq) GetAreaCode() string { if x != nil { return x.AreaCode } return "" } func (x *LoginReq) GetPhoneNumber() string { if x != nil { return x.PhoneNumber } return "" } func (x *LoginReq) GetVerifyCode() string { if x != nil { return x.VerifyCode } return "" } func (x *LoginReq) GetAccount() string { if x != nil { return x.Account } return "" } func (x *LoginReq) GetPassword() string { if x != nil { return x.Password } return "" } func (x *LoginReq) GetPlatform() int32 { if x != nil { return x.Platform } return 0 } func (x *LoginReq) GetDeviceID() string { if x != nil { return x.DeviceID } return "" } func (x *LoginReq) GetIp() string { if x != nil { return x.Ip } return "" } func (x *LoginReq) GetEmail() string { if x != nil { return x.Email } return "" } type ResetPasswordReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields AreaCode string `protobuf:"bytes,1,opt,name=areaCode,proto3" json:"areaCode"` PhoneNumber string `protobuf:"bytes,2,opt,name=phoneNumber,proto3" json:"phoneNumber"` VerifyCode string `protobuf:"bytes,3,opt,name=verifyCode,proto3" json:"verifyCode"` Password string `protobuf:"bytes,4,opt,name=password,proto3" json:"password"` Email string `protobuf:"bytes,5,opt,name=email,proto3" json:"email"` } func (x *ResetPasswordReq) Reset() { *x = ResetPasswordReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ResetPasswordReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*ResetPasswordReq) ProtoMessage() {} func (x *ResetPasswordReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ResetPasswordReq.ProtoReflect.Descriptor instead. func (*ResetPasswordReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{21} } func (x *ResetPasswordReq) GetAreaCode() string { if x != nil { return x.AreaCode } return "" } func (x *ResetPasswordReq) GetPhoneNumber() string { if x != nil { return x.PhoneNumber } return "" } func (x *ResetPasswordReq) GetVerifyCode() string { if x != nil { return x.VerifyCode } return "" } func (x *ResetPasswordReq) GetPassword() string { if x != nil { return x.Password } return "" } func (x *ResetPasswordReq) GetEmail() string { if x != nil { return x.Email } return "" } type ResetPasswordResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *ResetPasswordResp) Reset() { *x = ResetPasswordResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ResetPasswordResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*ResetPasswordResp) ProtoMessage() {} func (x *ResetPasswordResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ResetPasswordResp.ProtoReflect.Descriptor instead. func (*ResetPasswordResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{22} } type ChangePasswordReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` CurrentPassword string `protobuf:"bytes,2,opt,name=currentPassword,proto3" json:"currentPassword"` NewPassword string `protobuf:"bytes,3,opt,name=newPassword,proto3" json:"newPassword"` } func (x *ChangePasswordReq) Reset() { *x = ChangePasswordReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ChangePasswordReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*ChangePasswordReq) ProtoMessage() {} func (x *ChangePasswordReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ChangePasswordReq.ProtoReflect.Descriptor instead. func (*ChangePasswordReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{23} } func (x *ChangePasswordReq) GetUserID() string { if x != nil { return x.UserID } return "" } func (x *ChangePasswordReq) GetCurrentPassword() string { if x != nil { return x.CurrentPassword } return "" } func (x *ChangePasswordReq) GetNewPassword() string { if x != nil { return x.NewPassword } return "" } type ChangePasswordResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *ChangePasswordResp) Reset() { *x = ChangePasswordResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ChangePasswordResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*ChangePasswordResp) ProtoMessage() {} func (x *ChangePasswordResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ChangePasswordResp.ProtoReflect.Descriptor instead. func (*ChangePasswordResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{24} } type FindUserAccountReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserIDs []string `protobuf:"bytes,1,rep,name=userIDs,proto3" json:"userIDs"` } func (x *FindUserAccountReq) Reset() { *x = FindUserAccountReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *FindUserAccountReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*FindUserAccountReq) ProtoMessage() {} func (x *FindUserAccountReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use FindUserAccountReq.ProtoReflect.Descriptor instead. func (*FindUserAccountReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{25} } func (x *FindUserAccountReq) GetUserIDs() []string { if x != nil { return x.UserIDs } return nil } type FindUserAccountResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserAccountMap map[string]string `protobuf:"bytes,1,rep,name=userAccountMap,proto3" json:"userAccountMap,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // userID account } func (x *FindUserAccountResp) Reset() { *x = FindUserAccountResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *FindUserAccountResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*FindUserAccountResp) ProtoMessage() {} func (x *FindUserAccountResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use FindUserAccountResp.ProtoReflect.Descriptor instead. func (*FindUserAccountResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{26} } func (x *FindUserAccountResp) GetUserAccountMap() map[string]string { if x != nil { return x.UserAccountMap } return nil } type FindAccountUserReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Accounts []string `protobuf:"bytes,1,rep,name=accounts,proto3" json:"accounts"` } func (x *FindAccountUserReq) Reset() { *x = FindAccountUserReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *FindAccountUserReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*FindAccountUserReq) ProtoMessage() {} func (x *FindAccountUserReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use FindAccountUserReq.ProtoReflect.Descriptor instead. func (*FindAccountUserReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{27} } func (x *FindAccountUserReq) GetAccounts() []string { if x != nil { return x.Accounts } return nil } type FindAccountUserResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields AccountUserMap map[string]string `protobuf:"bytes,1,rep,name=accountUserMap,proto3" json:"accountUserMap,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // account userID } func (x *FindAccountUserResp) Reset() { *x = FindAccountUserResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *FindAccountUserResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*FindAccountUserResp) ProtoMessage() {} func (x *FindAccountUserResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use FindAccountUserResp.ProtoReflect.Descriptor instead. func (*FindAccountUserResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{28} } func (x *FindAccountUserResp) GetAccountUserMap() map[string]string { if x != nil { return x.AccountUserMap } return nil } type SignalRecord struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields FileName string `protobuf:"bytes,1,opt,name=fileName,proto3" json:"fileName"` MediaType string `protobuf:"bytes,2,opt,name=mediaType,proto3" json:"mediaType"` RoomType string `protobuf:"bytes,3,opt,name=roomType,proto3" json:"roomType"` SenderID string `protobuf:"bytes,4,opt,name=senderID,proto3" json:"senderID"` SenderNickname string `protobuf:"bytes,5,opt,name=senderNickname,proto3" json:"senderNickname"` RecvID string `protobuf:"bytes,6,opt,name=recvID,proto3" json:"recvID"` RecvNickname string `protobuf:"bytes,7,opt,name=recvNickname,proto3" json:"recvNickname"` GroupID string `protobuf:"bytes,8,opt,name=groupID,proto3" json:"groupID"` GroupName string `protobuf:"bytes,9,opt,name=groupName,proto3" json:"groupName"` InviterUserList []*common.UserPublicInfo `protobuf:"bytes,10,rep,name=inviterUserList,proto3" json:"inviterUserList"` Duration int32 `protobuf:"varint,11,opt,name=duration,proto3" json:"duration"` CreateTime int64 `protobuf:"varint,12,opt,name=createTime,proto3" json:"createTime"` Size string `protobuf:"bytes,13,opt,name=size,proto3" json:"size"` DownloadURL string `protobuf:"bytes,14,opt,name=downloadURL,proto3" json:"downloadURL"` } func (x *SignalRecord) Reset() { *x = SignalRecord{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SignalRecord) String() string { return protoimpl.X.MessageStringOf(x) } func (*SignalRecord) ProtoMessage() {} func (x *SignalRecord) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SignalRecord.ProtoReflect.Descriptor instead. func (*SignalRecord) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{29} } func (x *SignalRecord) GetFileName() string { if x != nil { return x.FileName } return "" } func (x *SignalRecord) GetMediaType() string { if x != nil { return x.MediaType } return "" } func (x *SignalRecord) GetRoomType() string { if x != nil { return x.RoomType } return "" } func (x *SignalRecord) GetSenderID() string { if x != nil { return x.SenderID } return "" } func (x *SignalRecord) GetSenderNickname() string { if x != nil { return x.SenderNickname } return "" } func (x *SignalRecord) GetRecvID() string { if x != nil { return x.RecvID } return "" } func (x *SignalRecord) GetRecvNickname() string { if x != nil { return x.RecvNickname } return "" } func (x *SignalRecord) GetGroupID() string { if x != nil { return x.GroupID } return "" } func (x *SignalRecord) GetGroupName() string { if x != nil { return x.GroupName } return "" } func (x *SignalRecord) GetInviterUserList() []*common.UserPublicInfo { if x != nil { return x.InviterUserList } return nil } func (x *SignalRecord) GetDuration() int32 { if x != nil { return x.Duration } return 0 } func (x *SignalRecord) GetCreateTime() int64 { if x != nil { return x.CreateTime } return 0 } func (x *SignalRecord) GetSize() string { if x != nil { return x.Size } return "" } func (x *SignalRecord) GetDownloadURL() string { if x != nil { return x.DownloadURL } return "" } type OpenIMCallbackReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Command string `protobuf:"bytes,1,opt,name=command,proto3" json:"command"` Body string `protobuf:"bytes,2,opt,name=body,proto3" json:"body"` } func (x *OpenIMCallbackReq) Reset() { *x = OpenIMCallbackReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *OpenIMCallbackReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*OpenIMCallbackReq) ProtoMessage() {} func (x *OpenIMCallbackReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use OpenIMCallbackReq.ProtoReflect.Descriptor instead. func (*OpenIMCallbackReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{30} } func (x *OpenIMCallbackReq) GetCommand() string { if x != nil { return x.Command } return "" } func (x *OpenIMCallbackReq) GetBody() string { if x != nil { return x.Body } return "" } type OpenIMCallbackResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *OpenIMCallbackResp) Reset() { *x = OpenIMCallbackResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *OpenIMCallbackResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*OpenIMCallbackResp) ProtoMessage() {} func (x *OpenIMCallbackResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use OpenIMCallbackResp.ProtoReflect.Descriptor instead. func (*OpenIMCallbackResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{31} } type SearchUserFullInfoReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword"` Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination"` Genders int32 `protobuf:"varint,3,opt,name=genders,proto3" json:"genders"` Normal int32 `protobuf:"varint,4,opt,name=normal,proto3" json:"normal"` StartTime int64 `protobuf:"varint,5,opt,name=startTime,proto3" json:"startTime"` // 注册时间范围开始时间(毫秒时间戳) EndTime int64 `protobuf:"varint,6,opt,name=endTime,proto3" json:"endTime"` // 注册时间范围结束时间(毫秒时间戳) RealNameKeyword string `protobuf:"bytes,7,opt,name=realNameKeyword,proto3" json:"realNameKeyword"` // 真实姓名搜索关键词(可选) IdCardKeyword string `protobuf:"bytes,8,opt,name=idCardKeyword,proto3" json:"idCardKeyword"` // 身份证号搜索关键词(可选) } func (x *SearchUserFullInfoReq) Reset() { *x = SearchUserFullInfoReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SearchUserFullInfoReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*SearchUserFullInfoReq) ProtoMessage() {} func (x *SearchUserFullInfoReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SearchUserFullInfoReq.ProtoReflect.Descriptor instead. func (*SearchUserFullInfoReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{32} } func (x *SearchUserFullInfoReq) GetKeyword() string { if x != nil { return x.Keyword } return "" } func (x *SearchUserFullInfoReq) GetPagination() *sdkws.RequestPagination { if x != nil { return x.Pagination } return nil } func (x *SearchUserFullInfoReq) GetGenders() int32 { if x != nil { return x.Genders } return 0 } func (x *SearchUserFullInfoReq) GetNormal() int32 { if x != nil { return x.Normal } return 0 } func (x *SearchUserFullInfoReq) GetStartTime() int64 { if x != nil { return x.StartTime } return 0 } func (x *SearchUserFullInfoReq) GetEndTime() int64 { if x != nil { return x.EndTime } return 0 } func (x *SearchUserFullInfoReq) GetRealNameKeyword() string { if x != nil { return x.RealNameKeyword } return "" } func (x *SearchUserFullInfoReq) GetIdCardKeyword() string { if x != nil { return x.IdCardKeyword } return "" } type SearchUserFullInfoResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` Users []*common.UserFullInfo `protobuf:"bytes,2,rep,name=users,proto3" json:"users"` } func (x *SearchUserFullInfoResp) Reset() { *x = SearchUserFullInfoResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SearchUserFullInfoResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*SearchUserFullInfoResp) ProtoMessage() {} func (x *SearchUserFullInfoResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SearchUserFullInfoResp.ProtoReflect.Descriptor instead. func (*SearchUserFullInfoResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{33} } func (x *SearchUserFullInfoResp) GetTotal() uint32 { if x != nil { return x.Total } return 0 } func (x *SearchUserFullInfoResp) GetUsers() []*common.UserFullInfo { if x != nil { return x.Users } return nil } type UserLoginCountReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Start int64 `protobuf:"varint,1,opt,name=start,proto3" json:"start"` End int64 `protobuf:"varint,2,opt,name=end,proto3" json:"end"` } func (x *UserLoginCountReq) Reset() { *x = UserLoginCountReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserLoginCountReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserLoginCountReq) ProtoMessage() {} func (x *UserLoginCountReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use UserLoginCountReq.ProtoReflect.Descriptor instead. func (*UserLoginCountReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{34} } func (x *UserLoginCountReq) GetStart() int64 { if x != nil { return x.Start } return 0 } func (x *UserLoginCountReq) GetEnd() int64 { if x != nil { return x.End } return 0 } type UserLoginCountResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields LoginCount int64 `protobuf:"varint,1,opt,name=loginCount,proto3" json:"loginCount"` UnloginCount int64 `protobuf:"varint,2,opt,name=unloginCount,proto3" json:"unloginCount"` Count map[string]int64 `protobuf:"bytes,3,rep,name=count,proto3" json:"count,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` } func (x *UserLoginCountResp) Reset() { *x = UserLoginCountResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserLoginCountResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserLoginCountResp) ProtoMessage() {} func (x *UserLoginCountResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use UserLoginCountResp.ProtoReflect.Descriptor instead. func (*UserLoginCountResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{35} } func (x *UserLoginCountResp) GetLoginCount() int64 { if x != nil { return x.LoginCount } return 0 } func (x *UserLoginCountResp) GetUnloginCount() int64 { if x != nil { return x.UnloginCount } return 0 } func (x *UserLoginCountResp) GetCount() map[string]int64 { if x != nil { return x.Count } return nil } type LoginResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ChatToken string `protobuf:"bytes,2,opt,name=chatToken,proto3" json:"chatToken"` UserID string `protobuf:"bytes,3,opt,name=userID,proto3" json:"userID"` } func (x *LoginResp) Reset() { *x = LoginResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LoginResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*LoginResp) ProtoMessage() {} func (x *LoginResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use LoginResp.ProtoReflect.Descriptor instead. func (*LoginResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{36} } func (x *LoginResp) GetChatToken() string { if x != nil { return x.ChatToken } return "" } func (x *LoginResp) GetUserID() string { if x != nil { return x.UserID } return "" } type SearchUserInfoReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword"` Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination"` Genders []int32 `protobuf:"varint,3,rep,packed,name=genders,proto3" json:"genders"` UserIDs []string `protobuf:"bytes,4,rep,name=userIDs,proto3" json:"userIDs"` } func (x *SearchUserInfoReq) Reset() { *x = SearchUserInfoReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SearchUserInfoReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*SearchUserInfoReq) ProtoMessage() {} func (x *SearchUserInfoReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SearchUserInfoReq.ProtoReflect.Descriptor instead. func (*SearchUserInfoReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{37} } func (x *SearchUserInfoReq) GetKeyword() string { if x != nil { return x.Keyword } return "" } func (x *SearchUserInfoReq) GetPagination() *sdkws.RequestPagination { if x != nil { return x.Pagination } return nil } func (x *SearchUserInfoReq) GetGenders() []int32 { if x != nil { return x.Genders } return nil } func (x *SearchUserInfoReq) GetUserIDs() []string { if x != nil { return x.UserIDs } return nil } type SearchUserInfoResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` Users []*common.UserFullInfo `protobuf:"bytes,2,rep,name=users,proto3" json:"users"` } func (x *SearchUserInfoResp) Reset() { *x = SearchUserInfoResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SearchUserInfoResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*SearchUserInfoResp) ProtoMessage() {} func (x *SearchUserInfoResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SearchUserInfoResp.ProtoReflect.Descriptor instead. func (*SearchUserInfoResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{38} } func (x *SearchUserInfoResp) GetTotal() uint32 { if x != nil { return x.Total } return 0 } func (x *SearchUserInfoResp) GetUsers() []*common.UserFullInfo { if x != nil { return x.Users } return nil } type GetTokenForVideoMeetingReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Room string `protobuf:"bytes,1,opt,name=room,proto3" json:"room"` Identity string `protobuf:"bytes,2,opt,name=identity,proto3" json:"identity"` } func (x *GetTokenForVideoMeetingReq) Reset() { *x = GetTokenForVideoMeetingReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetTokenForVideoMeetingReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetTokenForVideoMeetingReq) ProtoMessage() {} func (x *GetTokenForVideoMeetingReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetTokenForVideoMeetingReq.ProtoReflect.Descriptor instead. func (*GetTokenForVideoMeetingReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{39} } func (x *GetTokenForVideoMeetingReq) GetRoom() string { if x != nil { return x.Room } return "" } func (x *GetTokenForVideoMeetingReq) GetIdentity() string { if x != nil { return x.Identity } return "" } type GetTokenForVideoMeetingResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ServerUrl string `protobuf:"bytes,1,opt,name=serverUrl,proto3" json:"serverUrl"` Token string `protobuf:"bytes,2,opt,name=token,proto3" json:"token"` } func (x *GetTokenForVideoMeetingResp) Reset() { *x = GetTokenForVideoMeetingResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetTokenForVideoMeetingResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetTokenForVideoMeetingResp) ProtoMessage() {} func (x *GetTokenForVideoMeetingResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetTokenForVideoMeetingResp.ProtoReflect.Descriptor instead. func (*GetTokenForVideoMeetingResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{40} } func (x *GetTokenForVideoMeetingResp) GetServerUrl() string { if x != nil { return x.ServerUrl } return "" } func (x *GetTokenForVideoMeetingResp) GetToken() string { if x != nil { return x.Token } return "" } type CheckUserExistReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields User *RegisterUserInfo `protobuf:"bytes,1,opt,name=user,proto3" json:"user"` } func (x *CheckUserExistReq) Reset() { *x = CheckUserExistReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CheckUserExistReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*CheckUserExistReq) ProtoMessage() {} func (x *CheckUserExistReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CheckUserExistReq.ProtoReflect.Descriptor instead. func (*CheckUserExistReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{41} } func (x *CheckUserExistReq) GetUser() *RegisterUserInfo { if x != nil { return x.User } return nil } type CheckUserExistResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Userid string `protobuf:"bytes,1,opt,name=userid,proto3" json:"userid"` IsRegistered bool `protobuf:"varint,2,opt,name=isRegistered,proto3" json:"isRegistered"` } func (x *CheckUserExistResp) Reset() { *x = CheckUserExistResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CheckUserExistResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*CheckUserExistResp) ProtoMessage() {} func (x *CheckUserExistResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CheckUserExistResp.ProtoReflect.Descriptor instead. func (*CheckUserExistResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{42} } func (x *CheckUserExistResp) GetUserid() string { if x != nil { return x.Userid } return "" } func (x *CheckUserExistResp) GetIsRegistered() bool { if x != nil { return x.IsRegistered } return false } type DelUserAccountReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserIDs []string `protobuf:"bytes,1,rep,name=userIDs,proto3" json:"userIDs"` } func (x *DelUserAccountReq) Reset() { *x = DelUserAccountReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DelUserAccountReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*DelUserAccountReq) ProtoMessage() {} func (x *DelUserAccountReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DelUserAccountReq.ProtoReflect.Descriptor instead. func (*DelUserAccountReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{43} } func (x *DelUserAccountReq) GetUserIDs() []string { if x != nil { return x.UserIDs } return nil } type DelUserAccountResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *DelUserAccountResp) Reset() { *x = DelUserAccountResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DelUserAccountResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*DelUserAccountResp) ProtoMessage() {} func (x *DelUserAccountResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DelUserAccountResp.ProtoReflect.Descriptor instead. func (*DelUserAccountResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{44} } type SetAllowRegisterReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields AllowRegister bool `protobuf:"varint,1,opt,name=allowRegister,proto3" json:"allowRegister"` } func (x *SetAllowRegisterReq) Reset() { *x = SetAllowRegisterReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SetAllowRegisterReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*SetAllowRegisterReq) ProtoMessage() {} func (x *SetAllowRegisterReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SetAllowRegisterReq.ProtoReflect.Descriptor instead. func (*SetAllowRegisterReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{45} } func (x *SetAllowRegisterReq) GetAllowRegister() bool { if x != nil { return x.AllowRegister } return false } type SetAllowRegisterResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *SetAllowRegisterResp) Reset() { *x = SetAllowRegisterResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SetAllowRegisterResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*SetAllowRegisterResp) ProtoMessage() {} func (x *SetAllowRegisterResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SetAllowRegisterResp.ProtoReflect.Descriptor instead. func (*SetAllowRegisterResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{46} } type GetAllowRegisterReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *GetAllowRegisterReq) Reset() { *x = GetAllowRegisterReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetAllowRegisterReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetAllowRegisterReq) ProtoMessage() {} func (x *GetAllowRegisterReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetAllowRegisterReq.ProtoReflect.Descriptor instead. func (*GetAllowRegisterReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{47} } type GetAllowRegisterResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields AllowRegister bool `protobuf:"varint,1,opt,name=allowRegister,proto3" json:"allowRegister"` } func (x *GetAllowRegisterResp) Reset() { *x = GetAllowRegisterResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetAllowRegisterResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetAllowRegisterResp) ProtoMessage() {} func (x *GetAllowRegisterResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetAllowRegisterResp.ProtoReflect.Descriptor instead. func (*GetAllowRegisterResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{48} } func (x *GetAllowRegisterResp) GetAllowRegister() bool { if x != nil { return x.AllowRegister } return false } // 敏感词信息(简化版,客户端用) type SensitiveWordInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Word string `protobuf:"bytes,1,opt,name=word,proto3" json:"word"` // 敏感词内容 Action int32 `protobuf:"varint,2,opt,name=action,proto3" json:"action"` // 处理动作 1:替换为*** 2:拦截不发 ReplaceChar string `protobuf:"bytes,3,opt,name=replaceChar,proto3" json:"replaceChar"` // 替换字符 } func (x *SensitiveWordInfo) Reset() { *x = SensitiveWordInfo{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SensitiveWordInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*SensitiveWordInfo) ProtoMessage() {} func (x *SensitiveWordInfo) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SensitiveWordInfo.ProtoReflect.Descriptor instead. func (*SensitiveWordInfo) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{49} } func (x *SensitiveWordInfo) GetWord() string { if x != nil { return x.Word } return "" } func (x *SensitiveWordInfo) GetAction() int32 { if x != nil { return x.Action } return 0 } func (x *SensitiveWordInfo) GetReplaceChar() string { if x != nil { return x.ReplaceChar } return "" } // 获取敏感词列表请求 type GetSensitiveWordsReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *GetSensitiveWordsReq) Reset() { *x = GetSensitiveWordsReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetSensitiveWordsReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetSensitiveWordsReq) ProtoMessage() {} func (x *GetSensitiveWordsReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetSensitiveWordsReq.ProtoReflect.Descriptor instead. func (*GetSensitiveWordsReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{50} } // 获取敏感词列表响应 type GetSensitiveWordsResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Words []*SensitiveWordInfo `protobuf:"bytes,1,rep,name=words,proto3" json:"words"` // 敏感词列表 EnableFilter bool `protobuf:"varint,2,opt,name=enableFilter,proto3" json:"enableFilter"` // 是否启用过滤 DefaultReplaceChar string `protobuf:"bytes,3,opt,name=defaultReplaceChar,proto3" json:"defaultReplaceChar"` // 默认替换字符 } func (x *GetSensitiveWordsResp) Reset() { *x = GetSensitiveWordsResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetSensitiveWordsResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetSensitiveWordsResp) ProtoMessage() {} func (x *GetSensitiveWordsResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetSensitiveWordsResp.ProtoReflect.Descriptor instead. func (*GetSensitiveWordsResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{51} } func (x *GetSensitiveWordsResp) GetWords() []*SensitiveWordInfo { if x != nil { return x.Words } return nil } func (x *GetSensitiveWordsResp) GetEnableFilter() bool { if x != nil { return x.EnableFilter } return false } func (x *GetSensitiveWordsResp) GetDefaultReplaceChar() string { if x != nil { return x.DefaultReplaceChar } return "" } // 检测敏感词请求(用户发送消息时调用) type CheckSensitiveWordsReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Content string `protobuf:"bytes,1,opt,name=content,proto3" json:"content"` // 要检测的内容 } func (x *CheckSensitiveWordsReq) Reset() { *x = CheckSensitiveWordsReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CheckSensitiveWordsReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*CheckSensitiveWordsReq) ProtoMessage() {} func (x *CheckSensitiveWordsReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CheckSensitiveWordsReq.ProtoReflect.Descriptor instead. func (*CheckSensitiveWordsReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{52} } func (x *CheckSensitiveWordsReq) GetContent() string { if x != nil { return x.Content } return "" } // 检测敏感词响应 type CheckSensitiveWordsResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields HasSensitive bool `protobuf:"varint,1,opt,name=hasSensitive,proto3" json:"hasSensitive"` // 是否包含敏感词 FilteredContent string `protobuf:"bytes,2,opt,name=filteredContent,proto3" json:"filteredContent"` // 过滤后的内容(如果被替换) MatchedWords []string `protobuf:"bytes,3,rep,name=matchedWords,proto3" json:"matchedWords"` // 匹配到的敏感词列表 } func (x *CheckSensitiveWordsResp) Reset() { *x = CheckSensitiveWordsResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CheckSensitiveWordsResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*CheckSensitiveWordsResp) ProtoMessage() {} func (x *CheckSensitiveWordsResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CheckSensitiveWordsResp.ProtoReflect.Descriptor instead. func (*CheckSensitiveWordsResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{53} } func (x *CheckSensitiveWordsResp) GetHasSensitive() bool { if x != nil { return x.HasSensitive } return false } func (x *CheckSensitiveWordsResp) GetFilteredContent() string { if x != nil { return x.FilteredContent } return "" } func (x *CheckSensitiveWordsResp) GetMatchedWords() []string { if x != nil { return x.MatchedWords } return nil } // 敏感词详细信息(管理端) type SensitiveWordDetailInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` Word string `protobuf:"bytes,2,opt,name=word,proto3" json:"word"` Level int32 `protobuf:"varint,3,opt,name=level,proto3" json:"level"` Type int32 `protobuf:"varint,4,opt,name=type,proto3" json:"type"` Action int32 `protobuf:"varint,5,opt,name=action,proto3" json:"action"` Status int32 `protobuf:"varint,6,opt,name=status,proto3" json:"status"` Creator string `protobuf:"bytes,7,opt,name=creator,proto3" json:"creator"` Updater string `protobuf:"bytes,8,opt,name=updater,proto3" json:"updater"` CreateTime int64 `protobuf:"varint,9,opt,name=create_time,json=createTime,proto3" json:"create_time"` UpdateTime int64 `protobuf:"varint,10,opt,name=update_time,json=updateTime,proto3" json:"update_time"` Remark string `protobuf:"bytes,11,opt,name=remark,proto3" json:"remark"` } func (x *SensitiveWordDetailInfo) Reset() { *x = SensitiveWordDetailInfo{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SensitiveWordDetailInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*SensitiveWordDetailInfo) ProtoMessage() {} func (x *SensitiveWordDetailInfo) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[54] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SensitiveWordDetailInfo.ProtoReflect.Descriptor instead. func (*SensitiveWordDetailInfo) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{54} } func (x *SensitiveWordDetailInfo) GetId() string { if x != nil { return x.Id } return "" } func (x *SensitiveWordDetailInfo) GetWord() string { if x != nil { return x.Word } return "" } func (x *SensitiveWordDetailInfo) GetLevel() int32 { if x != nil { return x.Level } return 0 } func (x *SensitiveWordDetailInfo) GetType() int32 { if x != nil { return x.Type } return 0 } func (x *SensitiveWordDetailInfo) GetAction() int32 { if x != nil { return x.Action } return 0 } func (x *SensitiveWordDetailInfo) GetStatus() int32 { if x != nil { return x.Status } return 0 } func (x *SensitiveWordDetailInfo) GetCreator() string { if x != nil { return x.Creator } return "" } func (x *SensitiveWordDetailInfo) GetUpdater() string { if x != nil { return x.Updater } return "" } func (x *SensitiveWordDetailInfo) GetCreateTime() int64 { if x != nil { return x.CreateTime } return 0 } func (x *SensitiveWordDetailInfo) GetUpdateTime() int64 { if x != nil { return x.UpdateTime } return 0 } func (x *SensitiveWordDetailInfo) GetRemark() string { if x != nil { return x.Remark } return "" } // 敏感词分组信息 type SensitiveWordGroupInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name"` Remark string `protobuf:"bytes,3,opt,name=remark,proto3" json:"remark"` CreateTime int64 `protobuf:"varint,4,opt,name=create_time,json=createTime,proto3" json:"create_time"` UpdateTime int64 `protobuf:"varint,5,opt,name=update_time,json=updateTime,proto3" json:"update_time"` } func (x *SensitiveWordGroupInfo) Reset() { *x = SensitiveWordGroupInfo{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SensitiveWordGroupInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*SensitiveWordGroupInfo) ProtoMessage() {} func (x *SensitiveWordGroupInfo) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[55] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SensitiveWordGroupInfo.ProtoReflect.Descriptor instead. func (*SensitiveWordGroupInfo) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{55} } func (x *SensitiveWordGroupInfo) GetId() string { if x != nil { return x.Id } return "" } func (x *SensitiveWordGroupInfo) GetName() string { if x != nil { return x.Name } return "" } func (x *SensitiveWordGroupInfo) GetRemark() string { if x != nil { return x.Remark } return "" } func (x *SensitiveWordGroupInfo) GetCreateTime() int64 { if x != nil { return x.CreateTime } return 0 } func (x *SensitiveWordGroupInfo) GetUpdateTime() int64 { if x != nil { return x.UpdateTime } return 0 } // 敏感词配置信息 type SensitiveWordConfigInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` EnableFilter bool `protobuf:"varint,2,opt,name=enable_filter,json=enableFilter,proto3" json:"enable_filter"` FilterMode int32 `protobuf:"varint,3,opt,name=filter_mode,json=filterMode,proto3" json:"filter_mode"` ReplaceChar string `protobuf:"bytes,4,opt,name=replace_char,json=replaceChar,proto3" json:"replace_char"` WhitelistUsers []string `protobuf:"bytes,5,rep,name=whitelist_users,json=whitelistUsers,proto3" json:"whitelist_users"` WhitelistGroups []string `protobuf:"bytes,6,rep,name=whitelist_groups,json=whitelistGroups,proto3" json:"whitelist_groups"` LogEnabled bool `protobuf:"varint,7,opt,name=log_enabled,json=logEnabled,proto3" json:"log_enabled"` AutoApprove bool `protobuf:"varint,8,opt,name=auto_approve,json=autoApprove,proto3" json:"auto_approve"` UpdateTime int64 `protobuf:"varint,9,opt,name=update_time,json=updateTime,proto3" json:"update_time"` } func (x *SensitiveWordConfigInfo) Reset() { *x = SensitiveWordConfigInfo{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SensitiveWordConfigInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*SensitiveWordConfigInfo) ProtoMessage() {} func (x *SensitiveWordConfigInfo) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[56] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SensitiveWordConfigInfo.ProtoReflect.Descriptor instead. func (*SensitiveWordConfigInfo) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{56} } func (x *SensitiveWordConfigInfo) GetId() string { if x != nil { return x.Id } return "" } func (x *SensitiveWordConfigInfo) GetEnableFilter() bool { if x != nil { return x.EnableFilter } return false } func (x *SensitiveWordConfigInfo) GetFilterMode() int32 { if x != nil { return x.FilterMode } return 0 } func (x *SensitiveWordConfigInfo) GetReplaceChar() string { if x != nil { return x.ReplaceChar } return "" } func (x *SensitiveWordConfigInfo) GetWhitelistUsers() []string { if x != nil { return x.WhitelistUsers } return nil } func (x *SensitiveWordConfigInfo) GetWhitelistGroups() []string { if x != nil { return x.WhitelistGroups } return nil } func (x *SensitiveWordConfigInfo) GetLogEnabled() bool { if x != nil { return x.LogEnabled } return false } func (x *SensitiveWordConfigInfo) GetAutoApprove() bool { if x != nil { return x.AutoApprove } return false } func (x *SensitiveWordConfigInfo) GetUpdateTime() int64 { if x != nil { return x.UpdateTime } return 0 } // 敏感词日志信息 type SensitiveWordLogInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` UserId string `protobuf:"bytes,2,opt,name=user_id,json=userId,proto3" json:"user_id"` GroupId string `protobuf:"bytes,3,opt,name=group_id,json=groupId,proto3" json:"group_id"` Content string `protobuf:"bytes,4,opt,name=content,proto3" json:"content"` MatchedWords []string `protobuf:"bytes,5,rep,name=matched_words,json=matchedWords,proto3" json:"matched_words"` Action int32 `protobuf:"varint,6,opt,name=action,proto3" json:"action"` ProcessedText string `protobuf:"bytes,7,opt,name=processed_text,json=processedText,proto3" json:"processed_text"` CreateTime int64 `protobuf:"varint,8,opt,name=create_time,json=createTime,proto3" json:"create_time"` } func (x *SensitiveWordLogInfo) Reset() { *x = SensitiveWordLogInfo{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SensitiveWordLogInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*SensitiveWordLogInfo) ProtoMessage() {} func (x *SensitiveWordLogInfo) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[57] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SensitiveWordLogInfo.ProtoReflect.Descriptor instead. func (*SensitiveWordLogInfo) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{57} } func (x *SensitiveWordLogInfo) GetId() string { if x != nil { return x.Id } return "" } func (x *SensitiveWordLogInfo) GetUserId() string { if x != nil { return x.UserId } return "" } func (x *SensitiveWordLogInfo) GetGroupId() string { if x != nil { return x.GroupId } return "" } func (x *SensitiveWordLogInfo) GetContent() string { if x != nil { return x.Content } return "" } func (x *SensitiveWordLogInfo) GetMatchedWords() []string { if x != nil { return x.MatchedWords } return nil } func (x *SensitiveWordLogInfo) GetAction() int32 { if x != nil { return x.Action } return 0 } func (x *SensitiveWordLogInfo) GetProcessedText() string { if x != nil { return x.ProcessedText } return "" } func (x *SensitiveWordLogInfo) GetCreateTime() int64 { if x != nil { return x.CreateTime } return 0 } // 敏感词统计信息 type SensitiveWordStatsInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Total int64 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` Enabled int64 `protobuf:"varint,2,opt,name=enabled,proto3" json:"enabled"` Disabled int64 `protobuf:"varint,3,opt,name=disabled,proto3" json:"disabled"` Replace int64 `protobuf:"varint,4,opt,name=replace,proto3" json:"replace"` Block int64 `protobuf:"varint,5,opt,name=block,proto3" json:"block"` } func (x *SensitiveWordStatsInfo) Reset() { *x = SensitiveWordStatsInfo{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SensitiveWordStatsInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*SensitiveWordStatsInfo) ProtoMessage() {} func (x *SensitiveWordStatsInfo) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[58] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SensitiveWordStatsInfo.ProtoReflect.Descriptor instead. func (*SensitiveWordStatsInfo) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{58} } func (x *SensitiveWordStatsInfo) GetTotal() int64 { if x != nil { return x.Total } return 0 } func (x *SensitiveWordStatsInfo) GetEnabled() int64 { if x != nil { return x.Enabled } return 0 } func (x *SensitiveWordStatsInfo) GetDisabled() int64 { if x != nil { return x.Disabled } return 0 } func (x *SensitiveWordStatsInfo) GetReplace() int64 { if x != nil { return x.Replace } return 0 } func (x *SensitiveWordStatsInfo) GetBlock() int64 { if x != nil { return x.Block } return 0 } // 敏感词日志统计信息 type SensitiveWordLogStatsInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Total int64 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` Replace int64 `protobuf:"varint,2,opt,name=replace,proto3" json:"replace"` Block int64 `protobuf:"varint,3,opt,name=block,proto3" json:"block"` } func (x *SensitiveWordLogStatsInfo) Reset() { *x = SensitiveWordLogStatsInfo{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SensitiveWordLogStatsInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*SensitiveWordLogStatsInfo) ProtoMessage() {} func (x *SensitiveWordLogStatsInfo) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[59] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SensitiveWordLogStatsInfo.ProtoReflect.Descriptor instead. func (*SensitiveWordLogStatsInfo) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{59} } func (x *SensitiveWordLogStatsInfo) GetTotal() int64 { if x != nil { return x.Total } return 0 } func (x *SensitiveWordLogStatsInfo) GetReplace() int64 { if x != nil { return x.Replace } return 0 } func (x *SensitiveWordLogStatsInfo) GetBlock() int64 { if x != nil { return x.Block } return 0 } // 添加敏感词 type AddSensitiveWordReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Word string `protobuf:"bytes,1,opt,name=word,proto3" json:"word"` Level int32 `protobuf:"varint,2,opt,name=level,proto3" json:"level"` Type int32 `protobuf:"varint,3,opt,name=type,proto3" json:"type"` Action int32 `protobuf:"varint,4,opt,name=action,proto3" json:"action"` Status int32 `protobuf:"varint,5,opt,name=status,proto3" json:"status"` Remark string `protobuf:"bytes,6,opt,name=remark,proto3" json:"remark"` } func (x *AddSensitiveWordReq) Reset() { *x = AddSensitiveWordReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AddSensitiveWordReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*AddSensitiveWordReq) ProtoMessage() {} func (x *AddSensitiveWordReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[60] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use AddSensitiveWordReq.ProtoReflect.Descriptor instead. func (*AddSensitiveWordReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{60} } func (x *AddSensitiveWordReq) GetWord() string { if x != nil { return x.Word } return "" } func (x *AddSensitiveWordReq) GetLevel() int32 { if x != nil { return x.Level } return 0 } func (x *AddSensitiveWordReq) GetType() int32 { if x != nil { return x.Type } return 0 } func (x *AddSensitiveWordReq) GetAction() int32 { if x != nil { return x.Action } return 0 } func (x *AddSensitiveWordReq) GetStatus() int32 { if x != nil { return x.Status } return 0 } func (x *AddSensitiveWordReq) GetRemark() string { if x != nil { return x.Remark } return "" } type AddSensitiveWordResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *AddSensitiveWordResp) Reset() { *x = AddSensitiveWordResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AddSensitiveWordResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*AddSensitiveWordResp) ProtoMessage() {} func (x *AddSensitiveWordResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[61] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use AddSensitiveWordResp.ProtoReflect.Descriptor instead. func (*AddSensitiveWordResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{61} } // 更新敏感词 type UpdateSensitiveWordReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` Word string `protobuf:"bytes,2,opt,name=word,proto3" json:"word"` Level int32 `protobuf:"varint,3,opt,name=level,proto3" json:"level"` Type int32 `protobuf:"varint,4,opt,name=type,proto3" json:"type"` Action int32 `protobuf:"varint,5,opt,name=action,proto3" json:"action"` Status int32 `protobuf:"varint,6,opt,name=status,proto3" json:"status"` Remark string `protobuf:"bytes,7,opt,name=remark,proto3" json:"remark"` } func (x *UpdateSensitiveWordReq) Reset() { *x = UpdateSensitiveWordReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateSensitiveWordReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateSensitiveWordReq) ProtoMessage() {} func (x *UpdateSensitiveWordReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[62] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use UpdateSensitiveWordReq.ProtoReflect.Descriptor instead. func (*UpdateSensitiveWordReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{62} } func (x *UpdateSensitiveWordReq) GetId() string { if x != nil { return x.Id } return "" } func (x *UpdateSensitiveWordReq) GetWord() string { if x != nil { return x.Word } return "" } func (x *UpdateSensitiveWordReq) GetLevel() int32 { if x != nil { return x.Level } return 0 } func (x *UpdateSensitiveWordReq) GetType() int32 { if x != nil { return x.Type } return 0 } func (x *UpdateSensitiveWordReq) GetAction() int32 { if x != nil { return x.Action } return 0 } func (x *UpdateSensitiveWordReq) GetStatus() int32 { if x != nil { return x.Status } return 0 } func (x *UpdateSensitiveWordReq) GetRemark() string { if x != nil { return x.Remark } return "" } type UpdateSensitiveWordResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *UpdateSensitiveWordResp) Reset() { *x = UpdateSensitiveWordResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateSensitiveWordResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateSensitiveWordResp) ProtoMessage() {} func (x *UpdateSensitiveWordResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[63] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use UpdateSensitiveWordResp.ProtoReflect.Descriptor instead. func (*UpdateSensitiveWordResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{63} } // 删除敏感词 type DeleteSensitiveWordReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ids []string `protobuf:"bytes,1,rep,name=ids,proto3" json:"ids"` } func (x *DeleteSensitiveWordReq) Reset() { *x = DeleteSensitiveWordReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteSensitiveWordReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteSensitiveWordReq) ProtoMessage() {} func (x *DeleteSensitiveWordReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[64] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DeleteSensitiveWordReq.ProtoReflect.Descriptor instead. func (*DeleteSensitiveWordReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{64} } func (x *DeleteSensitiveWordReq) GetIds() []string { if x != nil { return x.Ids } return nil } type DeleteSensitiveWordResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *DeleteSensitiveWordResp) Reset() { *x = DeleteSensitiveWordResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteSensitiveWordResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteSensitiveWordResp) ProtoMessage() {} func (x *DeleteSensitiveWordResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[65] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DeleteSensitiveWordResp.ProtoReflect.Descriptor instead. func (*DeleteSensitiveWordResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{65} } // 获取敏感词 type GetSensitiveWordReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` } func (x *GetSensitiveWordReq) Reset() { *x = GetSensitiveWordReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetSensitiveWordReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetSensitiveWordReq) ProtoMessage() {} func (x *GetSensitiveWordReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[66] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetSensitiveWordReq.ProtoReflect.Descriptor instead. func (*GetSensitiveWordReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{66} } func (x *GetSensitiveWordReq) GetId() string { if x != nil { return x.Id } return "" } type GetSensitiveWordResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Word *SensitiveWordDetailInfo `protobuf:"bytes,1,opt,name=word,proto3" json:"word"` } func (x *GetSensitiveWordResp) Reset() { *x = GetSensitiveWordResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetSensitiveWordResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetSensitiveWordResp) ProtoMessage() {} func (x *GetSensitiveWordResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[67] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetSensitiveWordResp.ProtoReflect.Descriptor instead. func (*GetSensitiveWordResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{67} } func (x *GetSensitiveWordResp) GetWord() *SensitiveWordDetailInfo { if x != nil { return x.Word } return nil } // 搜索敏感词 type SearchSensitiveWordsReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword"` Action int32 `protobuf:"varint,2,opt,name=action,proto3" json:"action"` Status int32 `protobuf:"varint,3,opt,name=status,proto3" json:"status"` Pagination *sdkws.RequestPagination `protobuf:"bytes,4,opt,name=pagination,proto3" json:"pagination"` } func (x *SearchSensitiveWordsReq) Reset() { *x = SearchSensitiveWordsReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SearchSensitiveWordsReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*SearchSensitiveWordsReq) ProtoMessage() {} func (x *SearchSensitiveWordsReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[68] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SearchSensitiveWordsReq.ProtoReflect.Descriptor instead. func (*SearchSensitiveWordsReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{68} } func (x *SearchSensitiveWordsReq) GetKeyword() string { if x != nil { return x.Keyword } return "" } func (x *SearchSensitiveWordsReq) GetAction() int32 { if x != nil { return x.Action } return 0 } func (x *SearchSensitiveWordsReq) GetStatus() int32 { if x != nil { return x.Status } return 0 } func (x *SearchSensitiveWordsReq) GetPagination() *sdkws.RequestPagination { if x != nil { return x.Pagination } return nil } type SearchSensitiveWordsResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` Words []*SensitiveWordDetailInfo `protobuf:"bytes,2,rep,name=words,proto3" json:"words"` } func (x *SearchSensitiveWordsResp) Reset() { *x = SearchSensitiveWordsResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SearchSensitiveWordsResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*SearchSensitiveWordsResp) ProtoMessage() {} func (x *SearchSensitiveWordsResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[69] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SearchSensitiveWordsResp.ProtoReflect.Descriptor instead. func (*SearchSensitiveWordsResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{69} } func (x *SearchSensitiveWordsResp) GetTotal() uint32 { if x != nil { return x.Total } return 0 } func (x *SearchSensitiveWordsResp) GetWords() []*SensitiveWordDetailInfo { if x != nil { return x.Words } return nil } // 批量添加敏感词 type BatchAddSensitiveWordsReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Words []*SensitiveWordDetailInfo `protobuf:"bytes,1,rep,name=words,proto3" json:"words"` } func (x *BatchAddSensitiveWordsReq) Reset() { *x = BatchAddSensitiveWordsReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *BatchAddSensitiveWordsReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*BatchAddSensitiveWordsReq) ProtoMessage() {} func (x *BatchAddSensitiveWordsReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[70] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use BatchAddSensitiveWordsReq.ProtoReflect.Descriptor instead. func (*BatchAddSensitiveWordsReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{70} } func (x *BatchAddSensitiveWordsReq) GetWords() []*SensitiveWordDetailInfo { if x != nil { return x.Words } return nil } type BatchAddSensitiveWordsResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *BatchAddSensitiveWordsResp) Reset() { *x = BatchAddSensitiveWordsResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *BatchAddSensitiveWordsResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*BatchAddSensitiveWordsResp) ProtoMessage() {} func (x *BatchAddSensitiveWordsResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[71] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use BatchAddSensitiveWordsResp.ProtoReflect.Descriptor instead. func (*BatchAddSensitiveWordsResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{71} } // 批量更新敏感词 type BatchUpdateSensitiveWordsReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Updates map[string]*SensitiveWordDetailInfo `protobuf:"bytes,1,rep,name=updates,proto3" json:"updates,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *BatchUpdateSensitiveWordsReq) Reset() { *x = BatchUpdateSensitiveWordsReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *BatchUpdateSensitiveWordsReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*BatchUpdateSensitiveWordsReq) ProtoMessage() {} func (x *BatchUpdateSensitiveWordsReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[72] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use BatchUpdateSensitiveWordsReq.ProtoReflect.Descriptor instead. func (*BatchUpdateSensitiveWordsReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{72} } func (x *BatchUpdateSensitiveWordsReq) GetUpdates() map[string]*SensitiveWordDetailInfo { if x != nil { return x.Updates } return nil } type BatchUpdateSensitiveWordsResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *BatchUpdateSensitiveWordsResp) Reset() { *x = BatchUpdateSensitiveWordsResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *BatchUpdateSensitiveWordsResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*BatchUpdateSensitiveWordsResp) ProtoMessage() {} func (x *BatchUpdateSensitiveWordsResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[73] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use BatchUpdateSensitiveWordsResp.ProtoReflect.Descriptor instead. func (*BatchUpdateSensitiveWordsResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{73} } // 批量删除敏感词 type BatchDeleteSensitiveWordsReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ids []string `protobuf:"bytes,1,rep,name=ids,proto3" json:"ids"` } func (x *BatchDeleteSensitiveWordsReq) Reset() { *x = BatchDeleteSensitiveWordsReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *BatchDeleteSensitiveWordsReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*BatchDeleteSensitiveWordsReq) ProtoMessage() {} func (x *BatchDeleteSensitiveWordsReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[74] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use BatchDeleteSensitiveWordsReq.ProtoReflect.Descriptor instead. func (*BatchDeleteSensitiveWordsReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{74} } func (x *BatchDeleteSensitiveWordsReq) GetIds() []string { if x != nil { return x.Ids } return nil } type BatchDeleteSensitiveWordsResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *BatchDeleteSensitiveWordsResp) Reset() { *x = BatchDeleteSensitiveWordsResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *BatchDeleteSensitiveWordsResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*BatchDeleteSensitiveWordsResp) ProtoMessage() {} func (x *BatchDeleteSensitiveWordsResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[75] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use BatchDeleteSensitiveWordsResp.ProtoReflect.Descriptor instead. func (*BatchDeleteSensitiveWordsResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{75} } // 添加敏感词分组 type AddSensitiveWordGroupReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name"` Remark string `protobuf:"bytes,2,opt,name=remark,proto3" json:"remark"` } func (x *AddSensitiveWordGroupReq) Reset() { *x = AddSensitiveWordGroupReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AddSensitiveWordGroupReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*AddSensitiveWordGroupReq) ProtoMessage() {} func (x *AddSensitiveWordGroupReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[76] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use AddSensitiveWordGroupReq.ProtoReflect.Descriptor instead. func (*AddSensitiveWordGroupReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{76} } func (x *AddSensitiveWordGroupReq) GetName() string { if x != nil { return x.Name } return "" } func (x *AddSensitiveWordGroupReq) GetRemark() string { if x != nil { return x.Remark } return "" } type AddSensitiveWordGroupResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *AddSensitiveWordGroupResp) Reset() { *x = AddSensitiveWordGroupResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AddSensitiveWordGroupResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*AddSensitiveWordGroupResp) ProtoMessage() {} func (x *AddSensitiveWordGroupResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[77] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use AddSensitiveWordGroupResp.ProtoReflect.Descriptor instead. func (*AddSensitiveWordGroupResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{77} } // 更新敏感词分组 type UpdateSensitiveWordGroupReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name"` Remark string `protobuf:"bytes,3,opt,name=remark,proto3" json:"remark"` } func (x *UpdateSensitiveWordGroupReq) Reset() { *x = UpdateSensitiveWordGroupReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateSensitiveWordGroupReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateSensitiveWordGroupReq) ProtoMessage() {} func (x *UpdateSensitiveWordGroupReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[78] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use UpdateSensitiveWordGroupReq.ProtoReflect.Descriptor instead. func (*UpdateSensitiveWordGroupReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{78} } func (x *UpdateSensitiveWordGroupReq) GetId() string { if x != nil { return x.Id } return "" } func (x *UpdateSensitiveWordGroupReq) GetName() string { if x != nil { return x.Name } return "" } func (x *UpdateSensitiveWordGroupReq) GetRemark() string { if x != nil { return x.Remark } return "" } type UpdateSensitiveWordGroupResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *UpdateSensitiveWordGroupResp) Reset() { *x = UpdateSensitiveWordGroupResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateSensitiveWordGroupResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateSensitiveWordGroupResp) ProtoMessage() {} func (x *UpdateSensitiveWordGroupResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[79] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use UpdateSensitiveWordGroupResp.ProtoReflect.Descriptor instead. func (*UpdateSensitiveWordGroupResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{79} } // 删除敏感词分组 type DeleteSensitiveWordGroupReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ids []string `protobuf:"bytes,1,rep,name=ids,proto3" json:"ids"` } func (x *DeleteSensitiveWordGroupReq) Reset() { *x = DeleteSensitiveWordGroupReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteSensitiveWordGroupReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteSensitiveWordGroupReq) ProtoMessage() {} func (x *DeleteSensitiveWordGroupReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[80] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DeleteSensitiveWordGroupReq.ProtoReflect.Descriptor instead. func (*DeleteSensitiveWordGroupReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{80} } func (x *DeleteSensitiveWordGroupReq) GetIds() []string { if x != nil { return x.Ids } return nil } type DeleteSensitiveWordGroupResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *DeleteSensitiveWordGroupResp) Reset() { *x = DeleteSensitiveWordGroupResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteSensitiveWordGroupResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteSensitiveWordGroupResp) ProtoMessage() {} func (x *DeleteSensitiveWordGroupResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[81] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DeleteSensitiveWordGroupResp.ProtoReflect.Descriptor instead. func (*DeleteSensitiveWordGroupResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{81} } // 获取敏感词分组 type GetSensitiveWordGroupReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` } func (x *GetSensitiveWordGroupReq) Reset() { *x = GetSensitiveWordGroupReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetSensitiveWordGroupReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetSensitiveWordGroupReq) ProtoMessage() {} func (x *GetSensitiveWordGroupReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[82] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetSensitiveWordGroupReq.ProtoReflect.Descriptor instead. func (*GetSensitiveWordGroupReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{82} } func (x *GetSensitiveWordGroupReq) GetId() string { if x != nil { return x.Id } return "" } type GetSensitiveWordGroupResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Group *SensitiveWordGroupInfo `protobuf:"bytes,1,opt,name=group,proto3" json:"group"` } func (x *GetSensitiveWordGroupResp) Reset() { *x = GetSensitiveWordGroupResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetSensitiveWordGroupResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetSensitiveWordGroupResp) ProtoMessage() {} func (x *GetSensitiveWordGroupResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[83] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetSensitiveWordGroupResp.ProtoReflect.Descriptor instead. func (*GetSensitiveWordGroupResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{83} } func (x *GetSensitiveWordGroupResp) GetGroup() *SensitiveWordGroupInfo { if x != nil { return x.Group } return nil } // 获取所有敏感词分组 type GetAllSensitiveWordGroupsReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *GetAllSensitiveWordGroupsReq) Reset() { *x = GetAllSensitiveWordGroupsReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetAllSensitiveWordGroupsReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetAllSensitiveWordGroupsReq) ProtoMessage() {} func (x *GetAllSensitiveWordGroupsReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[84] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetAllSensitiveWordGroupsReq.ProtoReflect.Descriptor instead. func (*GetAllSensitiveWordGroupsReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{84} } type GetAllSensitiveWordGroupsResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Groups []*SensitiveWordGroupInfo `protobuf:"bytes,1,rep,name=groups,proto3" json:"groups"` } func (x *GetAllSensitiveWordGroupsResp) Reset() { *x = GetAllSensitiveWordGroupsResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetAllSensitiveWordGroupsResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetAllSensitiveWordGroupsResp) ProtoMessage() {} func (x *GetAllSensitiveWordGroupsResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[85] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetAllSensitiveWordGroupsResp.ProtoReflect.Descriptor instead. func (*GetAllSensitiveWordGroupsResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{85} } func (x *GetAllSensitiveWordGroupsResp) GetGroups() []*SensitiveWordGroupInfo { if x != nil { return x.Groups } return nil } // 获取敏感词配置 type GetSensitiveWordConfigReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *GetSensitiveWordConfigReq) Reset() { *x = GetSensitiveWordConfigReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetSensitiveWordConfigReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetSensitiveWordConfigReq) ProtoMessage() {} func (x *GetSensitiveWordConfigReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[86] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetSensitiveWordConfigReq.ProtoReflect.Descriptor instead. func (*GetSensitiveWordConfigReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{86} } type GetSensitiveWordConfigResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Config *SensitiveWordConfigInfo `protobuf:"bytes,1,opt,name=config,proto3" json:"config"` } func (x *GetSensitiveWordConfigResp) Reset() { *x = GetSensitiveWordConfigResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetSensitiveWordConfigResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetSensitiveWordConfigResp) ProtoMessage() {} func (x *GetSensitiveWordConfigResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[87] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetSensitiveWordConfigResp.ProtoReflect.Descriptor instead. func (*GetSensitiveWordConfigResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{87} } func (x *GetSensitiveWordConfigResp) GetConfig() *SensitiveWordConfigInfo { if x != nil { return x.Config } return nil } // 更新敏感词配置 type UpdateSensitiveWordConfigReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Config *SensitiveWordConfigInfo `protobuf:"bytes,1,opt,name=config,proto3" json:"config"` } func (x *UpdateSensitiveWordConfigReq) Reset() { *x = UpdateSensitiveWordConfigReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateSensitiveWordConfigReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateSensitiveWordConfigReq) ProtoMessage() {} func (x *UpdateSensitiveWordConfigReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[88] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use UpdateSensitiveWordConfigReq.ProtoReflect.Descriptor instead. func (*UpdateSensitiveWordConfigReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{88} } func (x *UpdateSensitiveWordConfigReq) GetConfig() *SensitiveWordConfigInfo { if x != nil { return x.Config } return nil } type UpdateSensitiveWordConfigResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *UpdateSensitiveWordConfigResp) Reset() { *x = UpdateSensitiveWordConfigResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateSensitiveWordConfigResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateSensitiveWordConfigResp) ProtoMessage() {} func (x *UpdateSensitiveWordConfigResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[89] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use UpdateSensitiveWordConfigResp.ProtoReflect.Descriptor instead. func (*UpdateSensitiveWordConfigResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{89} } // 获取敏感词日志 type GetSensitiveWordLogsReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3" json:"user_id"` GroupId string `protobuf:"bytes,2,opt,name=group_id,json=groupId,proto3" json:"group_id"` Pagination *sdkws.RequestPagination `protobuf:"bytes,3,opt,name=pagination,proto3" json:"pagination"` } func (x *GetSensitiveWordLogsReq) Reset() { *x = GetSensitiveWordLogsReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetSensitiveWordLogsReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetSensitiveWordLogsReq) ProtoMessage() {} func (x *GetSensitiveWordLogsReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[90] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetSensitiveWordLogsReq.ProtoReflect.Descriptor instead. func (*GetSensitiveWordLogsReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{90} } func (x *GetSensitiveWordLogsReq) GetUserId() string { if x != nil { return x.UserId } return "" } func (x *GetSensitiveWordLogsReq) GetGroupId() string { if x != nil { return x.GroupId } return "" } func (x *GetSensitiveWordLogsReq) GetPagination() *sdkws.RequestPagination { if x != nil { return x.Pagination } return nil } type GetSensitiveWordLogsResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` Logs []*SensitiveWordLogInfo `protobuf:"bytes,2,rep,name=logs,proto3" json:"logs"` } func (x *GetSensitiveWordLogsResp) Reset() { *x = GetSensitiveWordLogsResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetSensitiveWordLogsResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetSensitiveWordLogsResp) ProtoMessage() {} func (x *GetSensitiveWordLogsResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[91] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetSensitiveWordLogsResp.ProtoReflect.Descriptor instead. func (*GetSensitiveWordLogsResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{91} } func (x *GetSensitiveWordLogsResp) GetTotal() uint32 { if x != nil { return x.Total } return 0 } func (x *GetSensitiveWordLogsResp) GetLogs() []*SensitiveWordLogInfo { if x != nil { return x.Logs } return nil } // 用户登录记录信息 type UserLoginRecordInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3" json:"user_id"` // 用户ID LoginTime int64 `protobuf:"varint,2,opt,name=login_time,json=loginTime,proto3" json:"login_time"` // 登录时间(毫秒时间戳) Ip string `protobuf:"bytes,3,opt,name=ip,proto3" json:"ip"` // 登录IP DeviceId string `protobuf:"bytes,4,opt,name=device_id,json=deviceId,proto3" json:"device_id"` // 设备ID Platform string `protobuf:"bytes,5,opt,name=platform,proto3" json:"platform"` // 平台 FaceUrl string `protobuf:"bytes,6,opt,name=face_url,json=faceUrl,proto3" json:"face_url"` // 用户头像 Nickname string `protobuf:"bytes,7,opt,name=nickname,proto3" json:"nickname"` // 用户昵称 } func (x *UserLoginRecordInfo) Reset() { *x = UserLoginRecordInfo{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserLoginRecordInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserLoginRecordInfo) ProtoMessage() {} func (x *UserLoginRecordInfo) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[92] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use UserLoginRecordInfo.ProtoReflect.Descriptor instead. func (*UserLoginRecordInfo) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{92} } func (x *UserLoginRecordInfo) GetUserId() string { if x != nil { return x.UserId } return "" } func (x *UserLoginRecordInfo) GetLoginTime() int64 { if x != nil { return x.LoginTime } return 0 } func (x *UserLoginRecordInfo) GetIp() string { if x != nil { return x.Ip } return "" } func (x *UserLoginRecordInfo) GetDeviceId() string { if x != nil { return x.DeviceId } return "" } func (x *UserLoginRecordInfo) GetPlatform() string { if x != nil { return x.Platform } return "" } func (x *UserLoginRecordInfo) GetFaceUrl() string { if x != nil { return x.FaceUrl } return "" } func (x *UserLoginRecordInfo) GetNickname() string { if x != nil { return x.Nickname } return "" } // 查询用户登录记录请求 type GetUserLoginRecordsReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3" json:"user_id"` // 用户ID(可选,如果提供则查询该用户的登录记录) Ip string `protobuf:"bytes,2,opt,name=ip,proto3" json:"ip"` // IP地址(可选,如果提供则查询使用该IP的所有登录记录) Pagination *sdkws.RequestPagination `protobuf:"bytes,3,opt,name=pagination,proto3" json:"pagination"` // 分页信息 } func (x *GetUserLoginRecordsReq) Reset() { *x = GetUserLoginRecordsReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[93] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetUserLoginRecordsReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetUserLoginRecordsReq) ProtoMessage() {} func (x *GetUserLoginRecordsReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[93] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetUserLoginRecordsReq.ProtoReflect.Descriptor instead. func (*GetUserLoginRecordsReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{93} } func (x *GetUserLoginRecordsReq) GetUserId() string { if x != nil { return x.UserId } return "" } func (x *GetUserLoginRecordsReq) GetIp() string { if x != nil { return x.Ip } return "" } func (x *GetUserLoginRecordsReq) GetPagination() *sdkws.RequestPagination { if x != nil { return x.Pagination } return nil } // 查询用户登录记录响应 type GetUserLoginRecordsResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` // 总数 Records []*UserLoginRecordInfo `protobuf:"bytes,2,rep,name=records,proto3" json:"records"` // 登录记录列表 } func (x *GetUserLoginRecordsResp) Reset() { *x = GetUserLoginRecordsResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[94] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetUserLoginRecordsResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetUserLoginRecordsResp) ProtoMessage() {} func (x *GetUserLoginRecordsResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[94] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetUserLoginRecordsResp.ProtoReflect.Descriptor instead. func (*GetUserLoginRecordsResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{94} } func (x *GetUserLoginRecordsResp) GetTotal() uint32 { if x != nil { return x.Total } return 0 } func (x *GetUserLoginRecordsResp) GetRecords() []*UserLoginRecordInfo { if x != nil { return x.Records } return nil } // 删除敏感词日志 type DeleteSensitiveWordLogsReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ids []string `protobuf:"bytes,1,rep,name=ids,proto3" json:"ids"` } func (x *DeleteSensitiveWordLogsReq) Reset() { *x = DeleteSensitiveWordLogsReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[95] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteSensitiveWordLogsReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteSensitiveWordLogsReq) ProtoMessage() {} func (x *DeleteSensitiveWordLogsReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[95] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DeleteSensitiveWordLogsReq.ProtoReflect.Descriptor instead. func (*DeleteSensitiveWordLogsReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{95} } func (x *DeleteSensitiveWordLogsReq) GetIds() []string { if x != nil { return x.Ids } return nil } type DeleteSensitiveWordLogsResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *DeleteSensitiveWordLogsResp) Reset() { *x = DeleteSensitiveWordLogsResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[96] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteSensitiveWordLogsResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteSensitiveWordLogsResp) ProtoMessage() {} func (x *DeleteSensitiveWordLogsResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[96] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DeleteSensitiveWordLogsResp.ProtoReflect.Descriptor instead. func (*DeleteSensitiveWordLogsResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{96} } // 获取敏感词统计 type GetSensitiveWordStatsReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *GetSensitiveWordStatsReq) Reset() { *x = GetSensitiveWordStatsReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[97] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetSensitiveWordStatsReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetSensitiveWordStatsReq) ProtoMessage() {} func (x *GetSensitiveWordStatsReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[97] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetSensitiveWordStatsReq.ProtoReflect.Descriptor instead. func (*GetSensitiveWordStatsReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{97} } type GetSensitiveWordStatsResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Stats *SensitiveWordStatsInfo `protobuf:"bytes,1,opt,name=stats,proto3" json:"stats"` } func (x *GetSensitiveWordStatsResp) Reset() { *x = GetSensitiveWordStatsResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[98] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetSensitiveWordStatsResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetSensitiveWordStatsResp) ProtoMessage() {} func (x *GetSensitiveWordStatsResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[98] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetSensitiveWordStatsResp.ProtoReflect.Descriptor instead. func (*GetSensitiveWordStatsResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{98} } func (x *GetSensitiveWordStatsResp) GetStats() *SensitiveWordStatsInfo { if x != nil { return x.Stats } return nil } // 获取敏感词日志统计 type GetSensitiveWordLogStatsReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields StartTime int64 `protobuf:"varint,1,opt,name=start_time,json=startTime,proto3" json:"start_time"` EndTime int64 `protobuf:"varint,2,opt,name=end_time,json=endTime,proto3" json:"end_time"` } func (x *GetSensitiveWordLogStatsReq) Reset() { *x = GetSensitiveWordLogStatsReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[99] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetSensitiveWordLogStatsReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetSensitiveWordLogStatsReq) ProtoMessage() {} func (x *GetSensitiveWordLogStatsReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[99] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetSensitiveWordLogStatsReq.ProtoReflect.Descriptor instead. func (*GetSensitiveWordLogStatsReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{99} } func (x *GetSensitiveWordLogStatsReq) GetStartTime() int64 { if x != nil { return x.StartTime } return 0 } func (x *GetSensitiveWordLogStatsReq) GetEndTime() int64 { if x != nil { return x.EndTime } return 0 } type GetSensitiveWordLogStatsResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Stats *SensitiveWordLogStatsInfo `protobuf:"bytes,1,opt,name=stats,proto3" json:"stats"` } func (x *GetSensitiveWordLogStatsResp) Reset() { *x = GetSensitiveWordLogStatsResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[100] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetSensitiveWordLogStatsResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetSensitiveWordLogStatsResp) ProtoMessage() {} func (x *GetSensitiveWordLogStatsResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[100] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetSensitiveWordLogStatsResp.ProtoReflect.Descriptor instead. func (*GetSensitiveWordLogStatsResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{100} } func (x *GetSensitiveWordLogStatsResp) GetStats() *SensitiveWordLogStatsInfo { if x != nil { return x.Stats } return nil } type AddFriendReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` } func (x *AddFriendReq) Reset() { *x = AddFriendReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[101] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AddFriendReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*AddFriendReq) ProtoMessage() {} func (x *AddFriendReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[101] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use AddFriendReq.ProtoReflect.Descriptor instead. func (*AddFriendReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{101} } func (x *AddFriendReq) GetUserID() string { if x != nil { return x.UserID } return "" } type AddFriendResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *AddFriendResp) Reset() { *x = AddFriendResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[102] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AddFriendResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*AddFriendResp) ProtoMessage() {} func (x *AddFriendResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[102] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use AddFriendResp.ProtoReflect.Descriptor instead. func (*AddFriendResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{102} } // 收藏信息 type FavoriteInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` // 收藏ID UserID string `protobuf:"bytes,2,opt,name=userID,proto3" json:"userID"` // 用户ID Type int32 `protobuf:"varint,3,opt,name=type,proto3" json:"type"` // 收藏类型:1-文本,2-图片,3-链接,4-文件,5-语音,6-视频,7-位置 Title string `protobuf:"bytes,4,opt,name=title,proto3" json:"title"` // 标题 Content string `protobuf:"bytes,5,opt,name=content,proto3" json:"content"` // 内容 Description string `protobuf:"bytes,6,opt,name=description,proto3" json:"description"` // 描述 Thumbnail string `protobuf:"bytes,7,opt,name=thumbnail,proto3" json:"thumbnail"` // 缩略图URL LinkURL string `protobuf:"bytes,8,opt,name=linkURL,proto3" json:"linkURL"` // 链接URL FileSize int64 `protobuf:"varint,9,opt,name=fileSize,proto3" json:"fileSize"` // 文件大小(字节) Duration int32 `protobuf:"varint,10,opt,name=duration,proto3" json:"duration"` // 时长(秒) Location string `protobuf:"bytes,11,opt,name=location,proto3" json:"location"` // 位置信息(JSON格式) Tags []string `protobuf:"bytes,12,rep,name=tags,proto3" json:"tags"` // 标签列表 Remark string `protobuf:"bytes,13,opt,name=remark,proto3" json:"remark"` // 备注 CreateTime int64 `protobuf:"varint,14,opt,name=createTime,proto3" json:"createTime"` // 创建时间(毫秒时间戳) UpdateTime int64 `protobuf:"varint,15,opt,name=updateTime,proto3" json:"updateTime"` // 更新时间(毫秒时间戳) } func (x *FavoriteInfo) Reset() { *x = FavoriteInfo{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[103] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *FavoriteInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*FavoriteInfo) ProtoMessage() {} func (x *FavoriteInfo) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[103] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use FavoriteInfo.ProtoReflect.Descriptor instead. func (*FavoriteInfo) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{103} } func (x *FavoriteInfo) GetId() string { if x != nil { return x.Id } return "" } func (x *FavoriteInfo) GetUserID() string { if x != nil { return x.UserID } return "" } func (x *FavoriteInfo) GetType() int32 { if x != nil { return x.Type } return 0 } func (x *FavoriteInfo) GetTitle() string { if x != nil { return x.Title } return "" } func (x *FavoriteInfo) GetContent() string { if x != nil { return x.Content } return "" } func (x *FavoriteInfo) GetDescription() string { if x != nil { return x.Description } return "" } func (x *FavoriteInfo) GetThumbnail() string { if x != nil { return x.Thumbnail } return "" } func (x *FavoriteInfo) GetLinkURL() string { if x != nil { return x.LinkURL } return "" } func (x *FavoriteInfo) GetFileSize() int64 { if x != nil { return x.FileSize } return 0 } func (x *FavoriteInfo) GetDuration() int32 { if x != nil { return x.Duration } return 0 } func (x *FavoriteInfo) GetLocation() string { if x != nil { return x.Location } return "" } func (x *FavoriteInfo) GetTags() []string { if x != nil { return x.Tags } return nil } func (x *FavoriteInfo) GetRemark() string { if x != nil { return x.Remark } return "" } func (x *FavoriteInfo) GetCreateTime() int64 { if x != nil { return x.CreateTime } return 0 } func (x *FavoriteInfo) GetUpdateTime() int64 { if x != nil { return x.UpdateTime } return 0 } // 创建收藏请求 type CreateFavoriteReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Type int32 `protobuf:"varint,1,opt,name=type,proto3" json:"type"` // 收藏类型 Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title"` // 标题 Content string `protobuf:"bytes,3,opt,name=content,proto3" json:"content"` // 内容 Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description"` // 描述 Thumbnail string `protobuf:"bytes,5,opt,name=thumbnail,proto3" json:"thumbnail"` // 缩略图URL LinkURL string `protobuf:"bytes,6,opt,name=linkURL,proto3" json:"linkURL"` // 链接URL FileSize int64 `protobuf:"varint,7,opt,name=fileSize,proto3" json:"fileSize"` // 文件大小(字节) Duration int32 `protobuf:"varint,8,opt,name=duration,proto3" json:"duration"` // 时长(秒) Location string `protobuf:"bytes,9,opt,name=location,proto3" json:"location"` // 位置信息(JSON格式) Tags []string `protobuf:"bytes,10,rep,name=tags,proto3" json:"tags"` // 标签列表 Remark string `protobuf:"bytes,11,opt,name=remark,proto3" json:"remark"` // 备注 } func (x *CreateFavoriteReq) Reset() { *x = CreateFavoriteReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[104] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreateFavoriteReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateFavoriteReq) ProtoMessage() {} func (x *CreateFavoriteReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[104] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CreateFavoriteReq.ProtoReflect.Descriptor instead. func (*CreateFavoriteReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{104} } func (x *CreateFavoriteReq) GetType() int32 { if x != nil { return x.Type } return 0 } func (x *CreateFavoriteReq) GetTitle() string { if x != nil { return x.Title } return "" } func (x *CreateFavoriteReq) GetContent() string { if x != nil { return x.Content } return "" } func (x *CreateFavoriteReq) GetDescription() string { if x != nil { return x.Description } return "" } func (x *CreateFavoriteReq) GetThumbnail() string { if x != nil { return x.Thumbnail } return "" } func (x *CreateFavoriteReq) GetLinkURL() string { if x != nil { return x.LinkURL } return "" } func (x *CreateFavoriteReq) GetFileSize() int64 { if x != nil { return x.FileSize } return 0 } func (x *CreateFavoriteReq) GetDuration() int32 { if x != nil { return x.Duration } return 0 } func (x *CreateFavoriteReq) GetLocation() string { if x != nil { return x.Location } return "" } func (x *CreateFavoriteReq) GetTags() []string { if x != nil { return x.Tags } return nil } func (x *CreateFavoriteReq) GetRemark() string { if x != nil { return x.Remark } return "" } type CreateFavoriteResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields FavoriteID string `protobuf:"bytes,1,opt,name=favoriteID,proto3" json:"favoriteID"` // 收藏ID } func (x *CreateFavoriteResp) Reset() { *x = CreateFavoriteResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[105] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreateFavoriteResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateFavoriteResp) ProtoMessage() {} func (x *CreateFavoriteResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[105] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CreateFavoriteResp.ProtoReflect.Descriptor instead. func (*CreateFavoriteResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{105} } func (x *CreateFavoriteResp) GetFavoriteID() string { if x != nil { return x.FavoriteID } return "" } // 获取收藏请求 type GetFavoriteReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields FavoriteID string `protobuf:"bytes,1,opt,name=favoriteID,proto3" json:"favoriteID"` // 收藏ID } func (x *GetFavoriteReq) Reset() { *x = GetFavoriteReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[106] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetFavoriteReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetFavoriteReq) ProtoMessage() {} func (x *GetFavoriteReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[106] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetFavoriteReq.ProtoReflect.Descriptor instead. func (*GetFavoriteReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{106} } func (x *GetFavoriteReq) GetFavoriteID() string { if x != nil { return x.FavoriteID } return "" } type GetFavoriteResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Favorite *FavoriteInfo `protobuf:"bytes,1,opt,name=favorite,proto3" json:"favorite"` // 收藏信息 } func (x *GetFavoriteResp) Reset() { *x = GetFavoriteResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[107] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetFavoriteResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetFavoriteResp) ProtoMessage() {} func (x *GetFavoriteResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[107] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetFavoriteResp.ProtoReflect.Descriptor instead. func (*GetFavoriteResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{107} } func (x *GetFavoriteResp) GetFavorite() *FavoriteInfo { if x != nil { return x.Favorite } return nil } // 获取收藏列表请求 type GetFavoritesReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Type int32 `protobuf:"varint,1,opt,name=type,proto3" json:"type"` // 收藏类型(可选,0表示全部) Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination"` // 分页信息 } func (x *GetFavoritesReq) Reset() { *x = GetFavoritesReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[108] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetFavoritesReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetFavoritesReq) ProtoMessage() {} func (x *GetFavoritesReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[108] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetFavoritesReq.ProtoReflect.Descriptor instead. func (*GetFavoritesReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{108} } func (x *GetFavoritesReq) GetType() int32 { if x != nil { return x.Type } return 0 } func (x *GetFavoritesReq) GetPagination() *sdkws.RequestPagination { if x != nil { return x.Pagination } return nil } type GetFavoritesResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` // 总数 Favorites []*FavoriteInfo `protobuf:"bytes,2,rep,name=favorites,proto3" json:"favorites"` // 收藏列表 } func (x *GetFavoritesResp) Reset() { *x = GetFavoritesResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[109] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetFavoritesResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetFavoritesResp) ProtoMessage() {} func (x *GetFavoritesResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[109] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetFavoritesResp.ProtoReflect.Descriptor instead. func (*GetFavoritesResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{109} } func (x *GetFavoritesResp) GetTotal() uint32 { if x != nil { return x.Total } return 0 } func (x *GetFavoritesResp) GetFavorites() []*FavoriteInfo { if x != nil { return x.Favorites } return nil } // 搜索收藏请求 type SearchFavoritesReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword"` // 关键词 Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination"` // 分页信息 } func (x *SearchFavoritesReq) Reset() { *x = SearchFavoritesReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[110] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SearchFavoritesReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*SearchFavoritesReq) ProtoMessage() {} func (x *SearchFavoritesReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[110] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SearchFavoritesReq.ProtoReflect.Descriptor instead. func (*SearchFavoritesReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{110} } func (x *SearchFavoritesReq) GetKeyword() string { if x != nil { return x.Keyword } return "" } func (x *SearchFavoritesReq) GetPagination() *sdkws.RequestPagination { if x != nil { return x.Pagination } return nil } type SearchFavoritesResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` // 总数 Favorites []*FavoriteInfo `protobuf:"bytes,2,rep,name=favorites,proto3" json:"favorites"` // 收藏列表 } func (x *SearchFavoritesResp) Reset() { *x = SearchFavoritesResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[111] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SearchFavoritesResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*SearchFavoritesResp) ProtoMessage() {} func (x *SearchFavoritesResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[111] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SearchFavoritesResp.ProtoReflect.Descriptor instead. func (*SearchFavoritesResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{111} } func (x *SearchFavoritesResp) GetTotal() uint32 { if x != nil { return x.Total } return 0 } func (x *SearchFavoritesResp) GetFavorites() []*FavoriteInfo { if x != nil { return x.Favorites } return nil } // 更新收藏请求 type UpdateFavoriteReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields FavoriteID string `protobuf:"bytes,1,opt,name=favoriteID,proto3" json:"favoriteID"` // 收藏ID Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title"` // 标题(可选) Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description"` // 描述(可选) Remark string `protobuf:"bytes,4,opt,name=remark,proto3" json:"remark"` // 备注(可选) Tags []string `protobuf:"bytes,5,rep,name=tags,proto3" json:"tags"` // 标签列表(可选) } func (x *UpdateFavoriteReq) Reset() { *x = UpdateFavoriteReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[112] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateFavoriteReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateFavoriteReq) ProtoMessage() {} func (x *UpdateFavoriteReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[112] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use UpdateFavoriteReq.ProtoReflect.Descriptor instead. func (*UpdateFavoriteReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{112} } func (x *UpdateFavoriteReq) GetFavoriteID() string { if x != nil { return x.FavoriteID } return "" } func (x *UpdateFavoriteReq) GetTitle() string { if x != nil { return x.Title } return "" } func (x *UpdateFavoriteReq) GetDescription() string { if x != nil { return x.Description } return "" } func (x *UpdateFavoriteReq) GetRemark() string { if x != nil { return x.Remark } return "" } func (x *UpdateFavoriteReq) GetTags() []string { if x != nil { return x.Tags } return nil } type UpdateFavoriteResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *UpdateFavoriteResp) Reset() { *x = UpdateFavoriteResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[113] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateFavoriteResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateFavoriteResp) ProtoMessage() {} func (x *UpdateFavoriteResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[113] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use UpdateFavoriteResp.ProtoReflect.Descriptor instead. func (*UpdateFavoriteResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{113} } // 删除收藏请求 type DeleteFavoriteReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields FavoriteIDs []string `protobuf:"bytes,1,rep,name=favoriteIDs,proto3" json:"favoriteIDs"` // 收藏ID列表 } func (x *DeleteFavoriteReq) Reset() { *x = DeleteFavoriteReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[114] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteFavoriteReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteFavoriteReq) ProtoMessage() {} func (x *DeleteFavoriteReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[114] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DeleteFavoriteReq.ProtoReflect.Descriptor instead. func (*DeleteFavoriteReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{114} } func (x *DeleteFavoriteReq) GetFavoriteIDs() []string { if x != nil { return x.FavoriteIDs } return nil } type DeleteFavoriteResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *DeleteFavoriteResp) Reset() { *x = DeleteFavoriteResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[115] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteFavoriteResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteFavoriteResp) ProtoMessage() {} func (x *DeleteFavoriteResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[115] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DeleteFavoriteResp.ProtoReflect.Descriptor instead. func (*DeleteFavoriteResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{115} } // 根据标签获取收藏请求 type GetFavoritesByTagsReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Tags []string `protobuf:"bytes,1,rep,name=tags,proto3" json:"tags"` // 标签列表 Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination"` // 分页信息 } func (x *GetFavoritesByTagsReq) Reset() { *x = GetFavoritesByTagsReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[116] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetFavoritesByTagsReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetFavoritesByTagsReq) ProtoMessage() {} func (x *GetFavoritesByTagsReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[116] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetFavoritesByTagsReq.ProtoReflect.Descriptor instead. func (*GetFavoritesByTagsReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{116} } func (x *GetFavoritesByTagsReq) GetTags() []string { if x != nil { return x.Tags } return nil } func (x *GetFavoritesByTagsReq) GetPagination() *sdkws.RequestPagination { if x != nil { return x.Pagination } return nil } type GetFavoritesByTagsResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` // 总数 Favorites []*FavoriteInfo `protobuf:"bytes,2,rep,name=favorites,proto3" json:"favorites"` // 收藏列表 } func (x *GetFavoritesByTagsResp) Reset() { *x = GetFavoritesByTagsResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[117] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetFavoritesByTagsResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetFavoritesByTagsResp) ProtoMessage() {} func (x *GetFavoritesByTagsResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[117] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetFavoritesByTagsResp.ProtoReflect.Descriptor instead. func (*GetFavoritesByTagsResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{117} } func (x *GetFavoritesByTagsResp) GetTotal() uint32 { if x != nil { return x.Total } return 0 } func (x *GetFavoritesByTagsResp) GetFavorites() []*FavoriteInfo { if x != nil { return x.Favorites } return nil } // 获取收藏数量请求 type GetFavoriteCountReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *GetFavoriteCountReq) Reset() { *x = GetFavoriteCountReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[118] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetFavoriteCountReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetFavoriteCountReq) ProtoMessage() {} func (x *GetFavoriteCountReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[118] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetFavoriteCountReq.ProtoReflect.Descriptor instead. func (*GetFavoriteCountReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{118} } type GetFavoriteCountResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Count int64 `protobuf:"varint,1,opt,name=count,proto3" json:"count"` // 收藏数量 } func (x *GetFavoriteCountResp) Reset() { *x = GetFavoriteCountResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[119] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetFavoriteCountResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetFavoriteCountResp) ProtoMessage() {} func (x *GetFavoriteCountResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[119] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetFavoriteCountResp.ProtoReflect.Descriptor instead. func (*GetFavoriteCountResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{119} } func (x *GetFavoriteCountResp) GetCount() int64 { if x != nil { return x.Count } return 0 } // 消息内容 type ScheduledTaskMessage struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Type int32 `protobuf:"varint,1,opt,name=type,proto3" json:"type"` // 消息类型:1-文本,2-图片,3-视频 Content string `protobuf:"bytes,2,opt,name=content,proto3" json:"content"` // 消息内容(文本内容、图片URL、视频URL等) Thumbnail string `protobuf:"bytes,3,opt,name=thumbnail,proto3" json:"thumbnail"` // 缩略图URL(用于图片和视频) Duration int32 `protobuf:"varint,4,opt,name=duration,proto3" json:"duration"` // 时长(秒,用于视频) FileSize int64 `protobuf:"varint,5,opt,name=fileSize,proto3" json:"fileSize"` // 文件大小(字节,用于图片和视频) Width int32 `protobuf:"varint,6,opt,name=width,proto3" json:"width"` // 宽度(像素,用于图片和视频) Height int32 `protobuf:"varint,7,opt,name=height,proto3" json:"height"` // 高度(像素,用于图片和视频) } func (x *ScheduledTaskMessage) Reset() { *x = ScheduledTaskMessage{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[120] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ScheduledTaskMessage) String() string { return protoimpl.X.MessageStringOf(x) } func (*ScheduledTaskMessage) ProtoMessage() {} func (x *ScheduledTaskMessage) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[120] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ScheduledTaskMessage.ProtoReflect.Descriptor instead. func (*ScheduledTaskMessage) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{120} } func (x *ScheduledTaskMessage) GetType() int32 { if x != nil { return x.Type } return 0 } func (x *ScheduledTaskMessage) GetContent() string { if x != nil { return x.Content } return "" } func (x *ScheduledTaskMessage) GetThumbnail() string { if x != nil { return x.Thumbnail } return "" } func (x *ScheduledTaskMessage) GetDuration() int32 { if x != nil { return x.Duration } return 0 } func (x *ScheduledTaskMessage) GetFileSize() int64 { if x != nil { return x.FileSize } return 0 } func (x *ScheduledTaskMessage) GetWidth() int32 { if x != nil { return x.Width } return 0 } func (x *ScheduledTaskMessage) GetHeight() int32 { if x != nil { return x.Height } return 0 } // 定时任务信息 type ScheduledTaskInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` // 任务ID UserID string `protobuf:"bytes,2,opt,name=userID,proto3" json:"userID"` // 用户ID Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name"` // 任务名称 CronExpression string `protobuf:"bytes,4,opt,name=cronExpression,proto3" json:"cronExpression"` // Crontab表达式:分 时 日 月 周(例如:"0 9 * * *") Messages []*ScheduledTaskMessage `protobuf:"bytes,5,rep,name=messages,proto3" json:"messages"` // 消息列表(支持多条消息一起发送) RecvIDs []string `protobuf:"bytes,6,rep,name=recvIDs,proto3" json:"recvIDs"` // 接收者ID列表(单聊,可以多个) GroupIDs []string `protobuf:"bytes,7,rep,name=groupIDs,proto3" json:"groupIDs"` // 群组ID列表(群聊,可以多个) Status int32 `protobuf:"varint,8,opt,name=status,proto3" json:"status"` // 状态:0-已禁用,1-已启用 CreateTime int64 `protobuf:"varint,9,opt,name=createTime,proto3" json:"createTime"` // 创建时间(毫秒时间戳) UpdateTime int64 `protobuf:"varint,10,opt,name=updateTime,proto3" json:"updateTime"` // 更新时间(毫秒时间戳) } func (x *ScheduledTaskInfo) Reset() { *x = ScheduledTaskInfo{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[121] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ScheduledTaskInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*ScheduledTaskInfo) ProtoMessage() {} func (x *ScheduledTaskInfo) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[121] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ScheduledTaskInfo.ProtoReflect.Descriptor instead. func (*ScheduledTaskInfo) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{121} } func (x *ScheduledTaskInfo) GetId() string { if x != nil { return x.Id } return "" } func (x *ScheduledTaskInfo) GetUserID() string { if x != nil { return x.UserID } return "" } func (x *ScheduledTaskInfo) GetName() string { if x != nil { return x.Name } return "" } func (x *ScheduledTaskInfo) GetCronExpression() string { if x != nil { return x.CronExpression } return "" } func (x *ScheduledTaskInfo) GetMessages() []*ScheduledTaskMessage { if x != nil { return x.Messages } return nil } func (x *ScheduledTaskInfo) GetRecvIDs() []string { if x != nil { return x.RecvIDs } return nil } func (x *ScheduledTaskInfo) GetGroupIDs() []string { if x != nil { return x.GroupIDs } return nil } func (x *ScheduledTaskInfo) GetStatus() int32 { if x != nil { return x.Status } return 0 } func (x *ScheduledTaskInfo) GetCreateTime() int64 { if x != nil { return x.CreateTime } return 0 } func (x *ScheduledTaskInfo) GetUpdateTime() int64 { if x != nil { return x.UpdateTime } return 0 } // 创建定时任务请求 type CreateScheduledTaskReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name"` // 任务名称 CronExpression string `protobuf:"bytes,2,opt,name=cronExpression,proto3" json:"cronExpression"` // Crontab表达式 Messages []*ScheduledTaskMessage `protobuf:"bytes,3,rep,name=messages,proto3" json:"messages"` // 消息列表 RecvIDs []string `protobuf:"bytes,4,rep,name=recvIDs,proto3" json:"recvIDs"` // 接收者ID列表(单聊,可以多个) GroupIDs []string `protobuf:"bytes,5,rep,name=groupIDs,proto3" json:"groupIDs"` // 群组ID列表(群聊,可以多个) Status int32 `protobuf:"varint,6,opt,name=status,proto3" json:"status"` // 状态:0-已禁用,1-已启用 } func (x *CreateScheduledTaskReq) Reset() { *x = CreateScheduledTaskReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[122] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreateScheduledTaskReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateScheduledTaskReq) ProtoMessage() {} func (x *CreateScheduledTaskReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[122] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CreateScheduledTaskReq.ProtoReflect.Descriptor instead. func (*CreateScheduledTaskReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{122} } func (x *CreateScheduledTaskReq) GetName() string { if x != nil { return x.Name } return "" } func (x *CreateScheduledTaskReq) GetCronExpression() string { if x != nil { return x.CronExpression } return "" } func (x *CreateScheduledTaskReq) GetMessages() []*ScheduledTaskMessage { if x != nil { return x.Messages } return nil } func (x *CreateScheduledTaskReq) GetRecvIDs() []string { if x != nil { return x.RecvIDs } return nil } func (x *CreateScheduledTaskReq) GetGroupIDs() []string { if x != nil { return x.GroupIDs } return nil } func (x *CreateScheduledTaskReq) GetStatus() int32 { if x != nil { return x.Status } return 0 } type CreateScheduledTaskResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TaskID string `protobuf:"bytes,1,opt,name=taskID,proto3" json:"taskID"` // 任务ID } func (x *CreateScheduledTaskResp) Reset() { *x = CreateScheduledTaskResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[123] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreateScheduledTaskResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateScheduledTaskResp) ProtoMessage() {} func (x *CreateScheduledTaskResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[123] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CreateScheduledTaskResp.ProtoReflect.Descriptor instead. func (*CreateScheduledTaskResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{123} } func (x *CreateScheduledTaskResp) GetTaskID() string { if x != nil { return x.TaskID } return "" } // 获取定时任务请求 type GetScheduledTaskReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TaskID string `protobuf:"bytes,1,opt,name=taskID,proto3" json:"taskID"` // 任务ID } func (x *GetScheduledTaskReq) Reset() { *x = GetScheduledTaskReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[124] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetScheduledTaskReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetScheduledTaskReq) ProtoMessage() {} func (x *GetScheduledTaskReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[124] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetScheduledTaskReq.ProtoReflect.Descriptor instead. func (*GetScheduledTaskReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{124} } func (x *GetScheduledTaskReq) GetTaskID() string { if x != nil { return x.TaskID } return "" } type GetScheduledTaskResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Task *ScheduledTaskInfo `protobuf:"bytes,1,opt,name=task,proto3" json:"task"` // 任务信息 } func (x *GetScheduledTaskResp) Reset() { *x = GetScheduledTaskResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[125] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetScheduledTaskResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetScheduledTaskResp) ProtoMessage() {} func (x *GetScheduledTaskResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[125] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetScheduledTaskResp.ProtoReflect.Descriptor instead. func (*GetScheduledTaskResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{125} } func (x *GetScheduledTaskResp) GetTask() *ScheduledTaskInfo { if x != nil { return x.Task } return nil } // 获取定时任务列表请求 type GetScheduledTasksReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Pagination *sdkws.RequestPagination `protobuf:"bytes,1,opt,name=pagination,proto3" json:"pagination"` // 分页信息 } func (x *GetScheduledTasksReq) Reset() { *x = GetScheduledTasksReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[126] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetScheduledTasksReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetScheduledTasksReq) ProtoMessage() {} func (x *GetScheduledTasksReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[126] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetScheduledTasksReq.ProtoReflect.Descriptor instead. func (*GetScheduledTasksReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{126} } func (x *GetScheduledTasksReq) GetPagination() *sdkws.RequestPagination { if x != nil { return x.Pagination } return nil } type GetScheduledTasksResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` // 总数 Tasks []*ScheduledTaskInfo `protobuf:"bytes,2,rep,name=tasks,proto3" json:"tasks"` // 任务列表 } func (x *GetScheduledTasksResp) Reset() { *x = GetScheduledTasksResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[127] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetScheduledTasksResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetScheduledTasksResp) ProtoMessage() {} func (x *GetScheduledTasksResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[127] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetScheduledTasksResp.ProtoReflect.Descriptor instead. func (*GetScheduledTasksResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{127} } func (x *GetScheduledTasksResp) GetTotal() uint32 { if x != nil { return x.Total } return 0 } func (x *GetScheduledTasksResp) GetTasks() []*ScheduledTaskInfo { if x != nil { return x.Tasks } return nil } // 更新定时任务请求 type UpdateScheduledTaskReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TaskID string `protobuf:"bytes,1,opt,name=taskID,proto3" json:"taskID"` // 任务ID Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name"` // 任务名称(可选) CronExpression string `protobuf:"bytes,3,opt,name=cronExpression,proto3" json:"cronExpression"` // Crontab表达式(可选) Messages []*ScheduledTaskMessage `protobuf:"bytes,4,rep,name=messages,proto3" json:"messages"` // 消息列表(可选) RecvIDs []string `protobuf:"bytes,5,rep,name=recvIDs,proto3" json:"recvIDs"` // 接收者ID列表(可选) GroupIDs []string `protobuf:"bytes,6,rep,name=groupIDs,proto3" json:"groupIDs"` // 群组ID列表(可选) Status int32 `protobuf:"varint,7,opt,name=status,proto3" json:"status"` // 状态(可选) } func (x *UpdateScheduledTaskReq) Reset() { *x = UpdateScheduledTaskReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[128] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateScheduledTaskReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateScheduledTaskReq) ProtoMessage() {} func (x *UpdateScheduledTaskReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[128] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use UpdateScheduledTaskReq.ProtoReflect.Descriptor instead. func (*UpdateScheduledTaskReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{128} } func (x *UpdateScheduledTaskReq) GetTaskID() string { if x != nil { return x.TaskID } return "" } func (x *UpdateScheduledTaskReq) GetName() string { if x != nil { return x.Name } return "" } func (x *UpdateScheduledTaskReq) GetCronExpression() string { if x != nil { return x.CronExpression } return "" } func (x *UpdateScheduledTaskReq) GetMessages() []*ScheduledTaskMessage { if x != nil { return x.Messages } return nil } func (x *UpdateScheduledTaskReq) GetRecvIDs() []string { if x != nil { return x.RecvIDs } return nil } func (x *UpdateScheduledTaskReq) GetGroupIDs() []string { if x != nil { return x.GroupIDs } return nil } func (x *UpdateScheduledTaskReq) GetStatus() int32 { if x != nil { return x.Status } return 0 } type UpdateScheduledTaskResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *UpdateScheduledTaskResp) Reset() { *x = UpdateScheduledTaskResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[129] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateScheduledTaskResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateScheduledTaskResp) ProtoMessage() {} func (x *UpdateScheduledTaskResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[129] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use UpdateScheduledTaskResp.ProtoReflect.Descriptor instead. func (*UpdateScheduledTaskResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{129} } // 删除定时任务请求 type DeleteScheduledTaskReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TaskIDs []string `protobuf:"bytes,1,rep,name=taskIDs,proto3" json:"taskIDs"` // 任务ID列表 } func (x *DeleteScheduledTaskReq) Reset() { *x = DeleteScheduledTaskReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[130] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteScheduledTaskReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteScheduledTaskReq) ProtoMessage() {} func (x *DeleteScheduledTaskReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[130] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DeleteScheduledTaskReq.ProtoReflect.Descriptor instead. func (*DeleteScheduledTaskReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{130} } func (x *DeleteScheduledTaskReq) GetTaskIDs() []string { if x != nil { return x.TaskIDs } return nil } type DeleteScheduledTaskResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *DeleteScheduledTaskResp) Reset() { *x = DeleteScheduledTaskResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[131] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteScheduledTaskResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteScheduledTaskResp) ProtoMessage() {} func (x *DeleteScheduledTaskResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[131] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DeleteScheduledTaskResp.ProtoReflect.Descriptor instead. func (*DeleteScheduledTaskResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{131} } // 系统配置信息(客户端) type SystemConfigInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key"` // 配置键(唯一标识) Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title"` // 配置标题 Value string `protobuf:"bytes,3,opt,name=value,proto3" json:"value"` // 配置值(根据 valueType 解析) ValueType int32 `protobuf:"varint,4,opt,name=valueType,proto3" json:"valueType"` // 配置值类型:1-字符串,2-数字,3-布尔,4-JSON Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description"` // 配置描述 } func (x *SystemConfigInfo) Reset() { *x = SystemConfigInfo{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[132] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SystemConfigInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*SystemConfigInfo) ProtoMessage() {} func (x *SystemConfigInfo) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[132] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SystemConfigInfo.ProtoReflect.Descriptor instead. func (*SystemConfigInfo) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{132} } func (x *SystemConfigInfo) GetKey() string { if x != nil { return x.Key } return "" } func (x *SystemConfigInfo) GetTitle() string { if x != nil { return x.Title } return "" } func (x *SystemConfigInfo) GetValue() string { if x != nil { return x.Value } return "" } func (x *SystemConfigInfo) GetValueType() int32 { if x != nil { return x.ValueType } return 0 } func (x *SystemConfigInfo) GetDescription() string { if x != nil { return x.Description } return "" } // 获取APP端配置请求 type GetAppSystemConfigsReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *GetAppSystemConfigsReq) Reset() { *x = GetAppSystemConfigsReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[133] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetAppSystemConfigsReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetAppSystemConfigsReq) ProtoMessage() {} func (x *GetAppSystemConfigsReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[133] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetAppSystemConfigsReq.ProtoReflect.Descriptor instead. func (*GetAppSystemConfigsReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{133} } // 获取APP端配置响应 type GetAppSystemConfigsResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Configs []*SystemConfigInfo `protobuf:"bytes,1,rep,name=configs,proto3" json:"configs"` // 配置列表 } func (x *GetAppSystemConfigsResp) Reset() { *x = GetAppSystemConfigsResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[134] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetAppSystemConfigsResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetAppSystemConfigsResp) ProtoMessage() {} func (x *GetAppSystemConfigsResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[134] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetAppSystemConfigsResp.ProtoReflect.Descriptor instead. func (*GetAppSystemConfigsResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{134} } func (x *GetAppSystemConfigsResp) GetConfigs() []*SystemConfigInfo { if x != nil { return x.Configs } return nil } // 实名认证信息 type RealNameAuthInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields IdCard string `protobuf:"bytes,1,opt,name=idCard,proto3" json:"idCard"` // 身份证号 IdCardPhotoFront string `protobuf:"bytes,2,opt,name=idCardPhotoFront,proto3" json:"idCardPhotoFront"` // 身份证正面照片URL IdCardPhotoBack string `protobuf:"bytes,3,opt,name=idCardPhotoBack,proto3" json:"idCardPhotoBack"` // 身份证反面照片URL Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name"` // 真实姓名 AuditStatus int32 `protobuf:"varint,5,opt,name=auditStatus,proto3" json:"auditStatus"` // 审核状态:0-未审核,1-审核通过,2-审核拒绝 } func (x *RealNameAuthInfo) Reset() { *x = RealNameAuthInfo{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[135] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RealNameAuthInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*RealNameAuthInfo) ProtoMessage() {} func (x *RealNameAuthInfo) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[135] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RealNameAuthInfo.ProtoReflect.Descriptor instead. func (*RealNameAuthInfo) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{135} } func (x *RealNameAuthInfo) GetIdCard() string { if x != nil { return x.IdCard } return "" } func (x *RealNameAuthInfo) GetIdCardPhotoFront() string { if x != nil { return x.IdCardPhotoFront } return "" } func (x *RealNameAuthInfo) GetIdCardPhotoBack() string { if x != nil { return x.IdCardPhotoBack } return "" } func (x *RealNameAuthInfo) GetName() string { if x != nil { return x.Name } return "" } func (x *RealNameAuthInfo) GetAuditStatus() int32 { if x != nil { return x.AuditStatus } return 0 } // 获取钱包余额请求 type GetWalletBalanceReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *GetWalletBalanceReq) Reset() { *x = GetWalletBalanceReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[136] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetWalletBalanceReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetWalletBalanceReq) ProtoMessage() {} func (x *GetWalletBalanceReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[136] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetWalletBalanceReq.ProtoReflect.Descriptor instead. func (*GetWalletBalanceReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{136} } // 获取钱包余额响应 type GetWalletBalanceResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Balance int64 `protobuf:"varint,1,opt,name=balance,proto3" json:"balance"` // 余额(单位:分) } func (x *GetWalletBalanceResp) Reset() { *x = GetWalletBalanceResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[137] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetWalletBalanceResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetWalletBalanceResp) ProtoMessage() {} func (x *GetWalletBalanceResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[137] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetWalletBalanceResp.ProtoReflect.Descriptor instead. func (*GetWalletBalanceResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{137} } func (x *GetWalletBalanceResp) GetBalance() int64 { if x != nil { return x.Balance } return 0 } // 获取钱包详细信息请求 type GetWalletInfoReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *GetWalletInfoReq) Reset() { *x = GetWalletInfoReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[138] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetWalletInfoReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetWalletInfoReq) ProtoMessage() {} func (x *GetWalletInfoReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[138] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetWalletInfoReq.ProtoReflect.Descriptor instead. func (*GetWalletInfoReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{138} } // 获取钱包详细信息响应 type GetWalletInfoResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Balance int64 `protobuf:"varint,1,opt,name=balance,proto3" json:"balance"` // 余额(单位:分) WithdrawAccount string `protobuf:"bytes,2,opt,name=withdrawAccount,proto3" json:"withdrawAccount"` // 提现账号 WithdrawAccountType int32 `protobuf:"varint,3,opt,name=withdrawAccountType,proto3" json:"withdrawAccountType"` // 提现账号类型:1-支付宝,2-微信,3-银行卡 RealNameAuth *RealNameAuthInfo `protobuf:"bytes,4,opt,name=realNameAuth,proto3" json:"realNameAuth"` // 实名认证信息 WithdrawReceiveAccount string `protobuf:"bytes,5,opt,name=withdrawReceiveAccount,proto3" json:"withdrawReceiveAccount"` // 提现收款账号 HasPaymentPassword bool `protobuf:"varint,6,opt,name=hasPaymentPassword,proto3" json:"hasPaymentPassword"` // 是否已设置支付密码 } func (x *GetWalletInfoResp) Reset() { *x = GetWalletInfoResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[139] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetWalletInfoResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetWalletInfoResp) ProtoMessage() {} func (x *GetWalletInfoResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[139] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetWalletInfoResp.ProtoReflect.Descriptor instead. func (*GetWalletInfoResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{139} } func (x *GetWalletInfoResp) GetBalance() int64 { if x != nil { return x.Balance } return 0 } func (x *GetWalletInfoResp) GetWithdrawAccount() string { if x != nil { return x.WithdrawAccount } return "" } func (x *GetWalletInfoResp) GetWithdrawAccountType() int32 { if x != nil { return x.WithdrawAccountType } return 0 } func (x *GetWalletInfoResp) GetRealNameAuth() *RealNameAuthInfo { if x != nil { return x.RealNameAuth } return nil } func (x *GetWalletInfoResp) GetWithdrawReceiveAccount() string { if x != nil { return x.WithdrawReceiveAccount } return "" } func (x *GetWalletInfoResp) GetHasPaymentPassword() bool { if x != nil { return x.HasPaymentPassword } return false } // 设置支付密码请求 type SetPaymentPasswordReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields NewPassword string `protobuf:"bytes,1,opt,name=newPassword,proto3" json:"newPassword"` // 新支付密码(必填) OldPassword string `protobuf:"bytes,2,opt,name=oldPassword,proto3" json:"oldPassword"` // 旧支付密码(修改时必填,首次设置时不需要) } func (x *SetPaymentPasswordReq) Reset() { *x = SetPaymentPasswordReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[140] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SetPaymentPasswordReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*SetPaymentPasswordReq) ProtoMessage() {} func (x *SetPaymentPasswordReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[140] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SetPaymentPasswordReq.ProtoReflect.Descriptor instead. func (*SetPaymentPasswordReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{140} } func (x *SetPaymentPasswordReq) GetNewPassword() string { if x != nil { return x.NewPassword } return "" } func (x *SetPaymentPasswordReq) GetOldPassword() string { if x != nil { return x.OldPassword } return "" } // 设置支付密码响应 type SetPaymentPasswordResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *SetPaymentPasswordResp) Reset() { *x = SetPaymentPasswordResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[141] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SetPaymentPasswordResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*SetPaymentPasswordResp) ProtoMessage() {} func (x *SetPaymentPasswordResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[141] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SetPaymentPasswordResp.ProtoReflect.Descriptor instead. func (*SetPaymentPasswordResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{141} } // 设置提现账号请求 type SetWithdrawAccountReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Account string `protobuf:"bytes,1,opt,name=account,proto3" json:"account"` // 提现账号(必填) AccountType int32 `protobuf:"varint,2,opt,name=accountType,proto3" json:"accountType"` // 账号类型(必填):1-支付宝,2-微信,3-银行卡 } func (x *SetWithdrawAccountReq) Reset() { *x = SetWithdrawAccountReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[142] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SetWithdrawAccountReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*SetWithdrawAccountReq) ProtoMessage() {} func (x *SetWithdrawAccountReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[142] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SetWithdrawAccountReq.ProtoReflect.Descriptor instead. func (*SetWithdrawAccountReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{142} } func (x *SetWithdrawAccountReq) GetAccount() string { if x != nil { return x.Account } return "" } func (x *SetWithdrawAccountReq) GetAccountType() int32 { if x != nil { return x.AccountType } return 0 } // 设置提现账号响应 type SetWithdrawAccountResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *SetWithdrawAccountResp) Reset() { *x = SetWithdrawAccountResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[143] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SetWithdrawAccountResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*SetWithdrawAccountResp) ProtoMessage() {} func (x *SetWithdrawAccountResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[143] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SetWithdrawAccountResp.ProtoReflect.Descriptor instead. func (*SetWithdrawAccountResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{143} } // 余额变动记录信息 type WalletBalanceRecordInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` // 记录ID UserID string `protobuf:"bytes,2,opt,name=userID,proto3" json:"userID"` // 用户ID Amount int64 `protobuf:"varint,3,opt,name=amount,proto3" json:"amount"` // 变动金额(单位:分,正数表示增加,负数表示减少) Type int32 `protobuf:"varint,4,opt,name=type,proto3" json:"type"` // 变动类型:1-充值,2-提现/提款,3-消费,4-退款,5-奖励,6-后台充值,7-发红包,8-抢红包,99-其他 BeforeBalance int64 `protobuf:"varint,5,opt,name=beforeBalance,proto3" json:"beforeBalance"` // 变动前余额(单位:分) AfterBalance int64 `protobuf:"varint,6,opt,name=afterBalance,proto3" json:"afterBalance"` // 变动后余额(单位:分) OrderID string `protobuf:"bytes,7,opt,name=orderID,proto3" json:"orderID"` // 关联订单ID(可选) TransactionID string `protobuf:"bytes,8,opt,name=transactionID,proto3" json:"transactionID"` // 交易ID(可选) RedPacketID string `protobuf:"bytes,9,opt,name=redPacketID,proto3" json:"redPacketID"` // 红包ID(可选) Remark string `protobuf:"bytes,10,opt,name=remark,proto3" json:"remark"` // 备注 CreateTime int64 `protobuf:"varint,11,opt,name=createTime,proto3" json:"createTime"` // 创建时间(毫秒时间戳) } func (x *WalletBalanceRecordInfo) Reset() { *x = WalletBalanceRecordInfo{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[144] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *WalletBalanceRecordInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*WalletBalanceRecordInfo) ProtoMessage() {} func (x *WalletBalanceRecordInfo) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[144] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use WalletBalanceRecordInfo.ProtoReflect.Descriptor instead. func (*WalletBalanceRecordInfo) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{144} } func (x *WalletBalanceRecordInfo) GetId() string { if x != nil { return x.Id } return "" } func (x *WalletBalanceRecordInfo) GetUserID() string { if x != nil { return x.UserID } return "" } func (x *WalletBalanceRecordInfo) GetAmount() int64 { if x != nil { return x.Amount } return 0 } func (x *WalletBalanceRecordInfo) GetType() int32 { if x != nil { return x.Type } return 0 } func (x *WalletBalanceRecordInfo) GetBeforeBalance() int64 { if x != nil { return x.BeforeBalance } return 0 } func (x *WalletBalanceRecordInfo) GetAfterBalance() int64 { if x != nil { return x.AfterBalance } return 0 } func (x *WalletBalanceRecordInfo) GetOrderID() string { if x != nil { return x.OrderID } return "" } func (x *WalletBalanceRecordInfo) GetTransactionID() string { if x != nil { return x.TransactionID } return "" } func (x *WalletBalanceRecordInfo) GetRedPacketID() string { if x != nil { return x.RedPacketID } return "" } func (x *WalletBalanceRecordInfo) GetRemark() string { if x != nil { return x.Remark } return "" } func (x *WalletBalanceRecordInfo) GetCreateTime() int64 { if x != nil { return x.CreateTime } return 0 } // 获取余额明细请求 type GetWalletBalanceRecordsReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Pagination *sdkws.RequestPagination `protobuf:"bytes,1,opt,name=pagination,proto3" json:"pagination"` // 分页参数 Type int32 `protobuf:"varint,2,opt,name=type,proto3" json:"type"` // 变动类型(可选,0表示查询所有类型) } func (x *GetWalletBalanceRecordsReq) Reset() { *x = GetWalletBalanceRecordsReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[145] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetWalletBalanceRecordsReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetWalletBalanceRecordsReq) ProtoMessage() {} func (x *GetWalletBalanceRecordsReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[145] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetWalletBalanceRecordsReq.ProtoReflect.Descriptor instead. func (*GetWalletBalanceRecordsReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{145} } func (x *GetWalletBalanceRecordsReq) GetPagination() *sdkws.RequestPagination { if x != nil { return x.Pagination } return nil } func (x *GetWalletBalanceRecordsReq) GetType() int32 { if x != nil { return x.Type } return 0 } // 获取余额明细响应 type GetWalletBalanceRecordsResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` // 总数 Records []*WalletBalanceRecordInfo `protobuf:"bytes,2,rep,name=records,proto3" json:"records"` // 记录列表 } func (x *GetWalletBalanceRecordsResp) Reset() { *x = GetWalletBalanceRecordsResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[146] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetWalletBalanceRecordsResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetWalletBalanceRecordsResp) ProtoMessage() {} func (x *GetWalletBalanceRecordsResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[146] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetWalletBalanceRecordsResp.ProtoReflect.Descriptor instead. func (*GetWalletBalanceRecordsResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{146} } func (x *GetWalletBalanceRecordsResp) GetTotal() uint32 { if x != nil { return x.Total } return 0 } func (x *GetWalletBalanceRecordsResp) GetRecords() []*WalletBalanceRecordInfo { if x != nil { return x.Records } return nil } // 提现申请信息 type WithdrawApplicationInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` // 申请ID UserID string `protobuf:"bytes,2,opt,name=userID,proto3" json:"userID"` // 用户ID Amount int64 `protobuf:"varint,3,opt,name=amount,proto3" json:"amount"` // 提现金额(单位:分) WithdrawAccount string `protobuf:"bytes,4,opt,name=withdrawAccount,proto3" json:"withdrawAccount"` // 提现账号 WithdrawAccountType int32 `protobuf:"varint,5,opt,name=withdrawAccountType,proto3" json:"withdrawAccountType"` // 提现账号类型:1-支付宝,2-微信,3-银行卡 Status int32 `protobuf:"varint,6,opt,name=status,proto3" json:"status"` // 申请状态:1-待审核,2-已通过,3-已拒绝,4-处理中,5-已完成 AuditorID string `protobuf:"bytes,7,opt,name=auditorID,proto3" json:"auditorID"` // 审核人ID(管理员ID) AuditTime int64 `protobuf:"varint,8,opt,name=auditTime,proto3" json:"auditTime"` // 审核时间(毫秒时间戳) AuditRemark string `protobuf:"bytes,9,opt,name=auditRemark,proto3" json:"auditRemark"` // 审核备注 Ip string `protobuf:"bytes,10,opt,name=ip,proto3" json:"ip"` // 申请IP DeviceID string `protobuf:"bytes,11,opt,name=deviceID,proto3" json:"deviceID"` // 设备ID Platform string `protobuf:"bytes,12,opt,name=platform,proto3" json:"platform"` // 平台(iOS、Android、Web等) DeviceModel string `protobuf:"bytes,13,opt,name=deviceModel,proto3" json:"deviceModel"` // 设备型号 DeviceBrand string `protobuf:"bytes,14,opt,name=deviceBrand,proto3" json:"deviceBrand"` // 设备品牌 OsVersion string `protobuf:"bytes,15,opt,name=osVersion,proto3" json:"osVersion"` // 操作系统版本 AppVersion string `protobuf:"bytes,16,opt,name=appVersion,proto3" json:"appVersion"` // 应用版本 Remark string `protobuf:"bytes,17,opt,name=remark,proto3" json:"remark"` // 申请备注(由后台管理员填写) CreateTime int64 `protobuf:"varint,18,opt,name=createTime,proto3" json:"createTime"` // 创建时间(毫秒时间戳) UpdateTime int64 `protobuf:"varint,19,opt,name=updateTime,proto3" json:"updateTime"` // 更新时间(毫秒时间戳) } func (x *WithdrawApplicationInfo) Reset() { *x = WithdrawApplicationInfo{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[147] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *WithdrawApplicationInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*WithdrawApplicationInfo) ProtoMessage() {} func (x *WithdrawApplicationInfo) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[147] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use WithdrawApplicationInfo.ProtoReflect.Descriptor instead. func (*WithdrawApplicationInfo) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{147} } func (x *WithdrawApplicationInfo) GetId() string { if x != nil { return x.Id } return "" } func (x *WithdrawApplicationInfo) GetUserID() string { if x != nil { return x.UserID } return "" } func (x *WithdrawApplicationInfo) GetAmount() int64 { if x != nil { return x.Amount } return 0 } func (x *WithdrawApplicationInfo) GetWithdrawAccount() string { if x != nil { return x.WithdrawAccount } return "" } func (x *WithdrawApplicationInfo) GetWithdrawAccountType() int32 { if x != nil { return x.WithdrawAccountType } return 0 } func (x *WithdrawApplicationInfo) GetStatus() int32 { if x != nil { return x.Status } return 0 } func (x *WithdrawApplicationInfo) GetAuditorID() string { if x != nil { return x.AuditorID } return "" } func (x *WithdrawApplicationInfo) GetAuditTime() int64 { if x != nil { return x.AuditTime } return 0 } func (x *WithdrawApplicationInfo) GetAuditRemark() string { if x != nil { return x.AuditRemark } return "" } func (x *WithdrawApplicationInfo) GetIp() string { if x != nil { return x.Ip } return "" } func (x *WithdrawApplicationInfo) GetDeviceID() string { if x != nil { return x.DeviceID } return "" } func (x *WithdrawApplicationInfo) GetPlatform() string { if x != nil { return x.Platform } return "" } func (x *WithdrawApplicationInfo) GetDeviceModel() string { if x != nil { return x.DeviceModel } return "" } func (x *WithdrawApplicationInfo) GetDeviceBrand() string { if x != nil { return x.DeviceBrand } return "" } func (x *WithdrawApplicationInfo) GetOsVersion() string { if x != nil { return x.OsVersion } return "" } func (x *WithdrawApplicationInfo) GetAppVersion() string { if x != nil { return x.AppVersion } return "" } func (x *WithdrawApplicationInfo) GetRemark() string { if x != nil { return x.Remark } return "" } func (x *WithdrawApplicationInfo) GetCreateTime() int64 { if x != nil { return x.CreateTime } return 0 } func (x *WithdrawApplicationInfo) GetUpdateTime() int64 { if x != nil { return x.UpdateTime } return 0 } // 创建提现申请请求 type CreateWithdrawApplicationReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Amount int64 `protobuf:"varint,1,opt,name=amount,proto3" json:"amount"` // 提现金额(单位:分) PaymentPassword string `protobuf:"bytes,2,opt,name=paymentPassword,proto3" json:"paymentPassword"` // 支付密码(必填) Ip string `protobuf:"bytes,3,opt,name=ip,proto3" json:"ip"` // 申请IP DeviceID string `protobuf:"bytes,4,opt,name=deviceID,proto3" json:"deviceID"` // 设备ID Platform string `protobuf:"bytes,5,opt,name=platform,proto3" json:"platform"` // 平台 DeviceModel string `protobuf:"bytes,6,opt,name=deviceModel,proto3" json:"deviceModel"` // 设备型号 DeviceBrand string `protobuf:"bytes,7,opt,name=deviceBrand,proto3" json:"deviceBrand"` // 设备品牌 OsVersion string `protobuf:"bytes,8,opt,name=osVersion,proto3" json:"osVersion"` // 操作系统版本 AppVersion string `protobuf:"bytes,9,opt,name=appVersion,proto3" json:"appVersion"` // 应用版本 } func (x *CreateWithdrawApplicationReq) Reset() { *x = CreateWithdrawApplicationReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[148] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreateWithdrawApplicationReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateWithdrawApplicationReq) ProtoMessage() {} func (x *CreateWithdrawApplicationReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[148] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CreateWithdrawApplicationReq.ProtoReflect.Descriptor instead. func (*CreateWithdrawApplicationReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{148} } func (x *CreateWithdrawApplicationReq) GetAmount() int64 { if x != nil { return x.Amount } return 0 } func (x *CreateWithdrawApplicationReq) GetPaymentPassword() string { if x != nil { return x.PaymentPassword } return "" } func (x *CreateWithdrawApplicationReq) GetIp() string { if x != nil { return x.Ip } return "" } func (x *CreateWithdrawApplicationReq) GetDeviceID() string { if x != nil { return x.DeviceID } return "" } func (x *CreateWithdrawApplicationReq) GetPlatform() string { if x != nil { return x.Platform } return "" } func (x *CreateWithdrawApplicationReq) GetDeviceModel() string { if x != nil { return x.DeviceModel } return "" } func (x *CreateWithdrawApplicationReq) GetDeviceBrand() string { if x != nil { return x.DeviceBrand } return "" } func (x *CreateWithdrawApplicationReq) GetOsVersion() string { if x != nil { return x.OsVersion } return "" } func (x *CreateWithdrawApplicationReq) GetAppVersion() string { if x != nil { return x.AppVersion } return "" } // 创建提现申请响应 type CreateWithdrawApplicationResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ApplicationID string `protobuf:"bytes,1,opt,name=applicationID,proto3" json:"applicationID"` // 申请ID } func (x *CreateWithdrawApplicationResp) Reset() { *x = CreateWithdrawApplicationResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[149] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreateWithdrawApplicationResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateWithdrawApplicationResp) ProtoMessage() {} func (x *CreateWithdrawApplicationResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[149] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CreateWithdrawApplicationResp.ProtoReflect.Descriptor instead. func (*CreateWithdrawApplicationResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{149} } func (x *CreateWithdrawApplicationResp) GetApplicationID() string { if x != nil { return x.ApplicationID } return "" } // 获取用户的提现申请列表请求 type GetWithdrawApplicationsReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Pagination *sdkws.RequestPagination `protobuf:"bytes,1,opt,name=pagination,proto3" json:"pagination"` // 分页参数 } func (x *GetWithdrawApplicationsReq) Reset() { *x = GetWithdrawApplicationsReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[150] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetWithdrawApplicationsReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetWithdrawApplicationsReq) ProtoMessage() {} func (x *GetWithdrawApplicationsReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[150] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetWithdrawApplicationsReq.ProtoReflect.Descriptor instead. func (*GetWithdrawApplicationsReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{150} } func (x *GetWithdrawApplicationsReq) GetPagination() *sdkws.RequestPagination { if x != nil { return x.Pagination } return nil } // 获取用户的提现申请列表响应 type GetWithdrawApplicationsResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` // 总数 Applications []*WithdrawApplicationInfo `protobuf:"bytes,2,rep,name=applications,proto3" json:"applications"` // 申请列表 } func (x *GetWithdrawApplicationsResp) Reset() { *x = GetWithdrawApplicationsResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[151] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetWithdrawApplicationsResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetWithdrawApplicationsResp) ProtoMessage() {} func (x *GetWithdrawApplicationsResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[151] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetWithdrawApplicationsResp.ProtoReflect.Descriptor instead. func (*GetWithdrawApplicationsResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{151} } func (x *GetWithdrawApplicationsResp) GetTotal() uint32 { if x != nil { return x.Total } return 0 } func (x *GetWithdrawApplicationsResp) GetApplications() []*WithdrawApplicationInfo { if x != nil { return x.Applications } return nil } // 实名认证请求 type RealNameAuthReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields IdCard string `protobuf:"bytes,1,opt,name=idCard,proto3" json:"idCard"` // 身份证号(必填) Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name"` // 真实姓名(必填) IdCardPhotoFront string `protobuf:"bytes,3,opt,name=idCardPhotoFront,proto3" json:"idCardPhotoFront"` // 身份证正面照片URL(可选) IdCardPhotoBack string `protobuf:"bytes,4,opt,name=idCardPhotoBack,proto3" json:"idCardPhotoBack"` // 身份证反面照片URL(可选) } func (x *RealNameAuthReq) Reset() { *x = RealNameAuthReq{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[152] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RealNameAuthReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*RealNameAuthReq) ProtoMessage() {} func (x *RealNameAuthReq) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[152] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RealNameAuthReq.ProtoReflect.Descriptor instead. func (*RealNameAuthReq) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{152} } func (x *RealNameAuthReq) GetIdCard() string { if x != nil { return x.IdCard } return "" } func (x *RealNameAuthReq) GetName() string { if x != nil { return x.Name } return "" } func (x *RealNameAuthReq) GetIdCardPhotoFront() string { if x != nil { return x.IdCardPhotoFront } return "" } func (x *RealNameAuthReq) GetIdCardPhotoBack() string { if x != nil { return x.IdCardPhotoBack } return "" } // 实名认证响应 type RealNameAuthResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success"` // 是否认证成功 Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message"` // 认证结果消息 IdCardPhotoFront string `protobuf:"bytes,3,opt,name=idCardPhotoFront,proto3" json:"idCardPhotoFront"` // 身份证正面照片URL IdCardPhotoBack string `protobuf:"bytes,4,opt,name=idCardPhotoBack,proto3" json:"idCardPhotoBack"` // 身份证反面照片URL } func (x *RealNameAuthResp) Reset() { *x = RealNameAuthResp{} if protoimpl.UnsafeEnabled { mi := &file_chat_chat_proto_msgTypes[153] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RealNameAuthResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*RealNameAuthResp) ProtoMessage() {} func (x *RealNameAuthResp) ProtoReflect() protoreflect.Message { mi := &file_chat_chat_proto_msgTypes[153] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RealNameAuthResp.ProtoReflect.Descriptor instead. func (*RealNameAuthResp) Descriptor() ([]byte, []int) { return file_chat_chat_proto_rawDescGZIP(), []int{153} } func (x *RealNameAuthResp) GetSuccess() bool { if x != nil { return x.Success } return false } func (x *RealNameAuthResp) GetMessage() string { if x != nil { return x.Message } return "" } func (x *RealNameAuthResp) GetIdCardPhotoFront() string { if x != nil { return x.IdCardPhotoFront } return "" } func (x *RealNameAuthResp) GetIdCardPhotoBack() string { if x != nil { return x.IdCardPhotoBack } return "" } var File_chat_chat_proto protoreflect.FileDescriptor var file_chat_chat_proto_rawDesc = []byte{ 0x0a, 0x0f, 0x63, 0x68, 0x61, 0x74, 0x2f, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0b, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x1a, 0x13, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x11, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2f, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x70, 0x62, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x70, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb4, 0x01, 0x0a, 0x0c, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xc3, 0x07, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x36, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3e, 0x0a, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x08, 0x61, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x61, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x32, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x38, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x12, 0x33, 0x0a, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x31, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x31, 0x0a, 0x05, 0x62, 0x69, 0x72, 0x74, 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x62, 0x69, 0x72, 0x74, 0x68, 0x12, 0x43, 0x0a, 0x0e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x39, 0x0a, 0x09, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x42, 0x65, 0x65, 0x70, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x42, 0x65, 0x65, 0x70, 0x12, 0x43, 0x0a, 0x0e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x56, 0x69, 0x62, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x56, 0x69, 0x62, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x47, 0x0a, 0x10, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x52, 0x65, 0x63, 0x76, 0x4d, 0x73, 0x67, 0x4f, 0x70, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x10, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x52, 0x65, 0x63, 0x76, 0x4d, 0x73, 0x67, 0x4f, 0x70, 0x74, 0x12, 0x3f, 0x0a, 0x0c, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x38, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x46, 0x6c, 0x61, 0x67, 0x22, 0x4a, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x31, 0x0a, 0x15, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x22, 0x52, 0x0a, 0x16, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x38, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x22, 0x8e, 0x01, 0x0a, 0x17, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x3f, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x22, 0x6a, 0x0a, 0x18, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x38, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x22, 0x2f, 0x0a, 0x13, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x22, 0x4e, 0x0a, 0x14, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x36, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x22, 0xf1, 0x01, 0x0a, 0x11, 0x53, 0x65, 0x6e, 0x64, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x64, 0x46, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x75, 0x73, 0x65, 0x64, 0x46, 0x6f, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x26, 0x0a, 0x0e, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x14, 0x0a, 0x12, 0x53, 0x65, 0x6e, 0x64, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0xbb, 0x01, 0x0a, 0x0d, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x36, 0x0a, 0x0e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x14, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x43, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x22, 0x47, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0xf4, 0x02, 0x0a, 0x10, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x69, 0x72, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x62, 0x69, 0x72, 0x74, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x46, 0x6c, 0x61, 0x67, 0x22, 0x98, 0x02, 0x0a, 0x0f, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x26, 0x0a, 0x0e, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x6f, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x61, 0x75, 0x74, 0x6f, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x31, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x48, 0x0a, 0x10, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x68, 0x61, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x8e, 0x01, 0x0a, 0x11, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x31, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0x14, 0x0a, 0x12, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0xfc, 0x01, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x44, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x44, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0xa2, 0x01, 0x0a, 0x10, 0x52, 0x65, 0x73, 0x65, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x13, 0x0a, 0x11, 0x52, 0x65, 0x73, 0x65, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x77, 0x0a, 0x11, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x6e, 0x65, 0x77, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x65, 0x77, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x14, 0x0a, 0x12, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x2e, 0x0a, 0x12, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x22, 0xb6, 0x01, 0x0a, 0x13, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5c, 0x0a, 0x0e, 0x75, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x75, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x61, 0x70, 0x1a, 0x41, 0x0a, 0x13, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x30, 0x0a, 0x12, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x22, 0xb6, 0x01, 0x0a, 0x13, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5c, 0x0a, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x61, 0x70, 0x1a, 0x41, 0x0a, 0x13, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xdc, 0x03, 0x0a, 0x0c, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x49, 0x44, 0x12, 0x26, 0x0a, 0x0e, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x4e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x4e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x63, 0x76, 0x49, 0x44, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x63, 0x76, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x72, 0x65, 0x63, 0x76, 0x4e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x63, 0x76, 0x4e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x4c, 0x0a, 0x0f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x52, 0x4c, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x52, 0x4c, 0x22, 0x41, 0x0a, 0x11, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0x14, 0x0a, 0x12, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x22, 0xac, 0x02, 0x0a, 0x15, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x3f, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x72, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x4b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x4b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x69, 0x64, 0x43, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x64, 0x43, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x66, 0x0a, 0x16, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x36, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x22, 0x3b, 0x0a, 0x11, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x22, 0xd4, 0x01, 0x0a, 0x12, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x75, 0x6e, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x75, 0x6e, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x40, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x38, 0x0a, 0x0a, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x41, 0x0a, 0x09, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x68, 0x61, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, 0xa2, 0x01, 0x0a, 0x11, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x3f, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x22, 0x62, 0x0a, 0x12, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x36, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x22, 0x4c, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x46, 0x6f, 0x72, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x4d, 0x65, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6f, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x22, 0x51, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x46, 0x6f, 0x72, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x4d, 0x65, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x46, 0x0a, 0x11, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x45, 0x78, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x31, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0x50, 0x0a, 0x12, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x45, 0x78, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x73, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x73, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x22, 0x2d, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x22, 0x14, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x3b, 0x0a, 0x13, 0x53, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x22, 0x16, 0x0a, 0x14, 0x53, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x22, 0x15, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x22, 0x3c, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x22, 0x61, 0x0a, 0x11, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x43, 0x68, 0x61, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x43, 0x68, 0x61, 0x72, 0x22, 0x16, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x22, 0xa1, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x34, 0x0a, 0x05, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x2e, 0x0a, 0x12, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x43, 0x68, 0x61, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x43, 0x68, 0x61, 0x72, 0x22, 0x32, 0x0a, 0x16, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x8b, 0x01, 0x0a, 0x17, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x22, 0x0a, 0x0c, 0x68, 0x61, 0x73, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x68, 0x61, 0x73, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x22, 0xa5, 0x02, 0x0a, 0x17, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x22, 0x96, 0x01, 0x0a, 0x16, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xcb, 0x02, 0x0a, 0x17, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x43, 0x68, 0x61, 0x72, 0x12, 0x27, 0x0a, 0x0f, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x6f, 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6c, 0x6f, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x61, 0x75, 0x74, 0x6f, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xf9, 0x01, 0x0a, 0x14, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x54, 0x65, 0x78, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x94, 0x01, 0x0a, 0x16, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0x61, 0x0a, 0x19, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x53, 0x74, 0x61, 0x74, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0x9b, 0x01, 0x0a, 0x13, 0x41, 0x64, 0x64, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x22, 0x16, 0x0a, 0x14, 0x41, 0x64, 0x64, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0xae, 0x01, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x22, 0x19, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x2a, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0x19, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x25, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x50, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x38, 0x0a, 0x04, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x77, 0x6f, 0x72, 0x64, 0x22, 0xa4, 0x01, 0x0a, 0x17, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3f, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x6c, 0x0a, 0x18, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x3a, 0x0a, 0x05, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x22, 0x57, 0x0a, 0x19, 0x42, 0x61, 0x74, 0x63, 0x68, 0x41, 0x64, 0x64, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x12, 0x3a, 0x0a, 0x05, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x22, 0x1c, 0x0a, 0x1a, 0x42, 0x61, 0x74, 0x63, 0x68, 0x41, 0x64, 0x64, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0xd2, 0x01, 0x0a, 0x1c, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x12, 0x50, 0x0a, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x1a, 0x60, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x1f, 0x0a, 0x1d, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x30, 0x0a, 0x1c, 0x42, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0x1f, 0x0a, 0x1d, 0x42, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x46, 0x0a, 0x18, 0x41, 0x64, 0x64, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x22, 0x1b, 0x0a, 0x19, 0x41, 0x64, 0x64, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x22, 0x59, 0x0a, 0x1b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x22, 0x1e, 0x0a, 0x1c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x22, 0x2f, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0x1e, 0x0a, 0x1c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x22, 0x2a, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x56, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x39, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x1e, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x22, 0x5c, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3b, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x22, 0x1b, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x22, 0x5a, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3c, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x5c, 0x0a, 0x1c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x12, 0x3c, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x1f, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x22, 0x8e, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x3f, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x67, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x35, 0x0a, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x22, 0xcd, 0x01, 0x0a, 0x13, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x19, 0x0a, 0x08, 0x66, 0x61, 0x63, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x82, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x3f, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x6b, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x3a, 0x0a, 0x07, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x22, 0x2e, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0x1d, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x1a, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x22, 0x56, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x39, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x22, 0x57, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x5c, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3c, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x53, 0x74, 0x61, 0x74, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x22, 0x26, 0x0a, 0x0c, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, 0x0f, 0x0a, 0x0d, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x94, 0x03, 0x0a, 0x0c, 0x46, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x6c, 0x69, 0x6e, 0x6b, 0x55, 0x52, 0x4c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6c, 0x69, 0x6e, 0x6b, 0x55, 0x52, 0x4c, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xb1, 0x02, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x6c, 0x69, 0x6e, 0x6b, 0x55, 0x52, 0x4c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6c, 0x69, 0x6e, 0x6b, 0x55, 0x52, 0x4c, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x22, 0x34, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x49, 0x44, 0x22, 0x30, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x46, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x49, 0x44, 0x22, 0x48, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x46, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x35, 0x0a, 0x08, 0x66, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x46, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x66, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x22, 0x66, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x46, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x3f, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x61, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x46, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x37, 0x0a, 0x09, 0x66, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x46, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x66, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x73, 0x22, 0x6f, 0x0a, 0x12, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x3f, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x64, 0x0a, 0x13, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x37, 0x0a, 0x09, 0x66, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x46, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x66, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x73, 0x22, 0x97, 0x01, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x22, 0x14, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x35, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x0b, 0x66, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x49, 0x44, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x49, 0x44, 0x73, 0x22, 0x14, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x6c, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x46, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x73, 0x42, 0x79, 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x3f, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x67, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x46, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x73, 0x42, 0x79, 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x37, 0x0a, 0x09, 0x66, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x46, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x66, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x73, 0x22, 0x15, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x46, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x22, 0x2c, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x46, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xc8, 0x01, 0x0a, 0x14, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0xc4, 0x02, 0x0a, 0x11, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x63, 0x72, 0x6f, 0x6e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x72, 0x6f, 0x6e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x63, 0x76, 0x49, 0x44, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x63, 0x76, 0x49, 0x44, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xe1, 0x01, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x63, 0x72, 0x6f, 0x6e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x72, 0x6f, 0x6e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x63, 0x76, 0x49, 0x44, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x63, 0x76, 0x49, 0x44, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x31, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x44, 0x22, 0x2d, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x44, 0x22, 0x4a, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x32, 0x0a, 0x04, 0x74, 0x61, 0x73, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x74, 0x61, 0x73, 0x6b, 0x22, 0x57, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x12, 0x3f, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x63, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x34, 0x0a, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x22, 0xf9, 0x01, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x63, 0x72, 0x6f, 0x6e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x72, 0x6f, 0x6e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x63, 0x76, 0x49, 0x44, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x63, 0x76, 0x49, 0x44, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x19, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x22, 0x32, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x44, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x44, 0x73, 0x22, 0x19, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x22, 0x90, 0x01, 0x0a, 0x10, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x18, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x52, 0x65, 0x71, 0x22, 0x52, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x37, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x22, 0xb6, 0x01, 0x0a, 0x10, 0x52, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x41, 0x75, 0x74, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x64, 0x43, 0x61, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x64, 0x43, 0x61, 0x72, 0x64, 0x12, 0x2a, 0x0a, 0x10, 0x69, 0x64, 0x43, 0x61, 0x72, 0x64, 0x50, 0x68, 0x6f, 0x74, 0x6f, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x69, 0x64, 0x43, 0x61, 0x72, 0x64, 0x50, 0x68, 0x6f, 0x74, 0x6f, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x69, 0x64, 0x43, 0x61, 0x72, 0x64, 0x50, 0x68, 0x6f, 0x74, 0x6f, 0x42, 0x61, 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x69, 0x64, 0x43, 0x61, 0x72, 0x64, 0x50, 0x68, 0x6f, 0x74, 0x6f, 0x42, 0x61, 0x63, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x75, 0x64, 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x61, 0x75, 0x64, 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x15, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x22, 0x30, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x12, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x22, 0xb4, 0x02, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x13, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x13, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x41, 0x0a, 0x0c, 0x72, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x41, 0x75, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x41, 0x75, 0x74, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x72, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x41, 0x75, 0x74, 0x68, 0x12, 0x36, 0x0a, 0x16, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x68, 0x61, 0x73, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x68, 0x61, 0x73, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x5b, 0x0a, 0x15, 0x53, 0x65, 0x74, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x0b, 0x6e, 0x65, 0x77, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x65, 0x77, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x6c, 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x6c, 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x18, 0x0a, 0x16, 0x53, 0x65, 0x74, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x53, 0x0a, 0x15, 0x53, 0x65, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0x18, 0x0a, 0x16, 0x53, 0x65, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0xd1, 0x02, 0x0a, 0x17, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x66, 0x74, 0x65, 0x72, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x61, 0x66, 0x74, 0x65, 0x72, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x44, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x44, 0x12, 0x24, 0x0a, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x71, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x12, 0x3f, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x73, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x3e, 0x0a, 0x07, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x22, 0xcd, 0x04, 0x0a, 0x17, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x13, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x13, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x49, 0x44, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x75, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, 0x64, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x61, 0x75, 0x64, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x75, 0x64, 0x69, 0x74, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x75, 0x64, 0x69, 0x74, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x44, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6f, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x70, 0x70, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x70, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xaa, 0x02, 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6f, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x70, 0x70, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x70, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x45, 0x0a, 0x1d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x22, 0x5d, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x12, 0x3f, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x7d, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x48, 0x0a, 0x0c, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x93, 0x01, 0x0a, 0x0f, 0x52, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x41, 0x75, 0x74, 0x68, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x64, 0x43, 0x61, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x64, 0x43, 0x61, 0x72, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x69, 0x64, 0x43, 0x61, 0x72, 0x64, 0x50, 0x68, 0x6f, 0x74, 0x6f, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x69, 0x64, 0x43, 0x61, 0x72, 0x64, 0x50, 0x68, 0x6f, 0x74, 0x6f, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x69, 0x64, 0x43, 0x61, 0x72, 0x64, 0x50, 0x68, 0x6f, 0x74, 0x6f, 0x42, 0x61, 0x63, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x69, 0x64, 0x43, 0x61, 0x72, 0x64, 0x50, 0x68, 0x6f, 0x74, 0x6f, 0x42, 0x61, 0x63, 0x6b, 0x22, 0x9c, 0x01, 0x0a, 0x10, 0x52, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x41, 0x75, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x69, 0x64, 0x43, 0x61, 0x72, 0x64, 0x50, 0x68, 0x6f, 0x74, 0x6f, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x69, 0x64, 0x43, 0x61, 0x72, 0x64, 0x50, 0x68, 0x6f, 0x74, 0x6f, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x69, 0x64, 0x43, 0x61, 0x72, 0x64, 0x50, 0x68, 0x6f, 0x74, 0x6f, 0x42, 0x61, 0x63, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x69, 0x64, 0x43, 0x61, 0x72, 0x64, 0x50, 0x68, 0x6f, 0x74, 0x6f, 0x42, 0x61, 0x63, 0x6b, 0x32, 0xcd, 0x31, 0x0a, 0x04, 0x63, 0x68, 0x61, 0x74, 0x12, 0x42, 0x0a, 0x09, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x19, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x51, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x51, 0x0a, 0x0e, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x63, 0x0a, 0x14, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5d, 0x0a, 0x12, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x23, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5d, 0x0a, 0x12, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x23, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x57, 0x0a, 0x10, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x20, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x51, 0x0a, 0x0e, 0x53, 0x65, 0x6e, 0x64, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x45, 0x0a, 0x0a, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x54, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x43, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4b, 0x0a, 0x0c, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x36, 0x0a, 0x05, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x15, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4e, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x65, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x51, 0x0a, 0x0e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x51, 0x0a, 0x0e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x45, 0x78, 0x69, 0x73, 0x74, 0x12, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x45, 0x78, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x45, 0x78, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x51, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x54, 0x0a, 0x0f, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x54, 0x0a, 0x0f, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x51, 0x0a, 0x0e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x12, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x51, 0x0a, 0x0e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x51, 0x0a, 0x0e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x6c, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x46, 0x6f, 0x72, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x4d, 0x65, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x27, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x46, 0x6f, 0x72, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x4d, 0x65, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x28, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x46, 0x6f, 0x72, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x4d, 0x65, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x57, 0x0a, 0x10, 0x53, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x20, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x57, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x20, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5a, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x21, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x60, 0x0a, 0x13, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x23, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x24, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x57, 0x0a, 0x10, 0x41, 0x64, 0x64, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x12, 0x20, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x41, 0x64, 0x64, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x41, 0x64, 0x64, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x60, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x12, 0x23, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x24, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x60, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x12, 0x23, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x24, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x57, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x12, 0x20, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x63, 0x0a, 0x14, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x24, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x69, 0x0a, 0x16, 0x42, 0x61, 0x74, 0x63, 0x68, 0x41, 0x64, 0x64, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x26, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x41, 0x64, 0x64, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x27, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x41, 0x64, 0x64, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x72, 0x0a, 0x19, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x29, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x2a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x72, 0x0a, 0x19, 0x42, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x29, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x2a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x66, 0x0a, 0x15, 0x41, 0x64, 0x64, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x41, 0x64, 0x64, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x26, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x41, 0x64, 0x64, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x6f, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x28, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x29, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x6f, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x28, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x29, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x66, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x26, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x72, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x29, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x2a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x69, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x26, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x27, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x72, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x29, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x2a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x63, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x24, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x6c, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x27, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x28, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x60, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x23, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x24, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x66, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x26, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x6f, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x28, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x29, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x60, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, 0x23, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x24, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x57, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x20, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4e, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x6c, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x27, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x28, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5d, 0x0a, 0x12, 0x53, 0x65, 0x74, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x23, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5d, 0x0a, 0x12, 0x53, 0x65, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x23, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x72, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x2a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x6c, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x27, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x28, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4b, 0x0a, 0x0c, 0x52, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x41, 0x75, 0x74, 0x68, 0x12, 0x1c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x41, 0x75, 0x74, 0x68, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x41, 0x75, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x12, 0x51, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x12, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x48, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x46, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x12, 0x1b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4b, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x46, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x73, 0x12, 0x1c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x54, 0x0a, 0x0f, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x73, 0x12, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x51, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x12, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x51, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x12, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5d, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x46, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x73, 0x42, 0x79, 0x54, 0x61, 0x67, 0x73, 0x12, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x73, 0x42, 0x79, 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x23, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x73, 0x42, 0x79, 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x57, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x46, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x60, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x23, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x24, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x57, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x20, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5a, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x21, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x60, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x23, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x24, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x60, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x23, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x24, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x42, 0x2f, 0x5a, 0x2d, 0x67, 0x69, 0x74, 0x2e, 0x69, 0x6d, 0x61, 0x6c, 0x6c, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2f, 0x63, 0x68, 0x61, 0x74, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x63, 0x68, 0x61, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( file_chat_chat_proto_rawDescOnce sync.Once file_chat_chat_proto_rawDescData = file_chat_chat_proto_rawDesc ) func file_chat_chat_proto_rawDescGZIP() []byte { file_chat_chat_proto_rawDescOnce.Do(func() { file_chat_chat_proto_rawDescData = protoimpl.X.CompressGZIP(file_chat_chat_proto_rawDescData) }) return file_chat_chat_proto_rawDescData } var file_chat_chat_proto_msgTypes = make([]protoimpl.MessageInfo, 158) var file_chat_chat_proto_goTypes = []interface{}{ (*UserIdentity)(nil), // 0: openim.chat.UserIdentity (*UpdateUserInfoReq)(nil), // 1: openim.chat.UpdateUserInfoReq (*UpdateUserInfoResp)(nil), // 2: openim.chat.UpdateUserInfoResp (*FindUserPublicInfoReq)(nil), // 3: openim.chat.FindUserPublicInfoReq (*FindUserPublicInfoResp)(nil), // 4: openim.chat.FindUserPublicInfoResp (*SearchUserPublicInfoReq)(nil), // 5: openim.chat.SearchUserPublicInfoReq (*SearchUserPublicInfoResp)(nil), // 6: openim.chat.SearchUserPublicInfoResp (*FindUserFullInfoReq)(nil), // 7: openim.chat.FindUserFullInfoReq (*FindUserFullInfoResp)(nil), // 8: openim.chat.FindUserFullInfoResp (*SendVerifyCodeReq)(nil), // 9: openim.chat.SendVerifyCodeReq (*SendVerifyCodeResp)(nil), // 10: openim.chat.SendVerifyCodeResp (*VerifyCodeReq)(nil), // 11: openim.chat.VerifyCodeReq (*VerifyCodeResp)(nil), // 12: openim.chat.VerifyCodeResp (*GetCaptchaImageReq)(nil), // 13: openim.chat.GetCaptchaImageReq (*GetCaptchaImageResp)(nil), // 14: openim.chat.GetCaptchaImageResp (*RegisterUserInfo)(nil), // 15: openim.chat.RegisterUserInfo (*RegisterUserReq)(nil), // 16: openim.chat.RegisterUserReq (*RegisterUserResp)(nil), // 17: openim.chat.RegisterUserResp (*AddUserAccountReq)(nil), // 18: openim.chat.AddUserAccountReq (*AddUserAccountResp)(nil), // 19: openim.chat.AddUserAccountResp (*LoginReq)(nil), // 20: openim.chat.LoginReq (*ResetPasswordReq)(nil), // 21: openim.chat.ResetPasswordReq (*ResetPasswordResp)(nil), // 22: openim.chat.ResetPasswordResp (*ChangePasswordReq)(nil), // 23: openim.chat.ChangePasswordReq (*ChangePasswordResp)(nil), // 24: openim.chat.ChangePasswordResp (*FindUserAccountReq)(nil), // 25: openim.chat.FindUserAccountReq (*FindUserAccountResp)(nil), // 26: openim.chat.FindUserAccountResp (*FindAccountUserReq)(nil), // 27: openim.chat.FindAccountUserReq (*FindAccountUserResp)(nil), // 28: openim.chat.FindAccountUserResp (*SignalRecord)(nil), // 29: openim.chat.SignalRecord (*OpenIMCallbackReq)(nil), // 30: openim.chat.OpenIMCallbackReq (*OpenIMCallbackResp)(nil), // 31: openim.chat.OpenIMCallbackResp (*SearchUserFullInfoReq)(nil), // 32: openim.chat.SearchUserFullInfoReq (*SearchUserFullInfoResp)(nil), // 33: openim.chat.SearchUserFullInfoResp (*UserLoginCountReq)(nil), // 34: openim.chat.UserLoginCountReq (*UserLoginCountResp)(nil), // 35: openim.chat.UserLoginCountResp (*LoginResp)(nil), // 36: openim.chat.LoginResp (*SearchUserInfoReq)(nil), // 37: openim.chat.SearchUserInfoReq (*SearchUserInfoResp)(nil), // 38: openim.chat.SearchUserInfoResp (*GetTokenForVideoMeetingReq)(nil), // 39: openim.chat.GetTokenForVideoMeetingReq (*GetTokenForVideoMeetingResp)(nil), // 40: openim.chat.GetTokenForVideoMeetingResp (*CheckUserExistReq)(nil), // 41: openim.chat.CheckUserExistReq (*CheckUserExistResp)(nil), // 42: openim.chat.CheckUserExistResp (*DelUserAccountReq)(nil), // 43: openim.chat.DelUserAccountReq (*DelUserAccountResp)(nil), // 44: openim.chat.DelUserAccountResp (*SetAllowRegisterReq)(nil), // 45: openim.chat.SetAllowRegisterReq (*SetAllowRegisterResp)(nil), // 46: openim.chat.SetAllowRegisterResp (*GetAllowRegisterReq)(nil), // 47: openim.chat.GetAllowRegisterReq (*GetAllowRegisterResp)(nil), // 48: openim.chat.GetAllowRegisterResp (*SensitiveWordInfo)(nil), // 49: openim.chat.SensitiveWordInfo (*GetSensitiveWordsReq)(nil), // 50: openim.chat.GetSensitiveWordsReq (*GetSensitiveWordsResp)(nil), // 51: openim.chat.GetSensitiveWordsResp (*CheckSensitiveWordsReq)(nil), // 52: openim.chat.CheckSensitiveWordsReq (*CheckSensitiveWordsResp)(nil), // 53: openim.chat.CheckSensitiveWordsResp (*SensitiveWordDetailInfo)(nil), // 54: openim.chat.SensitiveWordDetailInfo (*SensitiveWordGroupInfo)(nil), // 55: openim.chat.SensitiveWordGroupInfo (*SensitiveWordConfigInfo)(nil), // 56: openim.chat.SensitiveWordConfigInfo (*SensitiveWordLogInfo)(nil), // 57: openim.chat.SensitiveWordLogInfo (*SensitiveWordStatsInfo)(nil), // 58: openim.chat.SensitiveWordStatsInfo (*SensitiveWordLogStatsInfo)(nil), // 59: openim.chat.SensitiveWordLogStatsInfo (*AddSensitiveWordReq)(nil), // 60: openim.chat.AddSensitiveWordReq (*AddSensitiveWordResp)(nil), // 61: openim.chat.AddSensitiveWordResp (*UpdateSensitiveWordReq)(nil), // 62: openim.chat.UpdateSensitiveWordReq (*UpdateSensitiveWordResp)(nil), // 63: openim.chat.UpdateSensitiveWordResp (*DeleteSensitiveWordReq)(nil), // 64: openim.chat.DeleteSensitiveWordReq (*DeleteSensitiveWordResp)(nil), // 65: openim.chat.DeleteSensitiveWordResp (*GetSensitiveWordReq)(nil), // 66: openim.chat.GetSensitiveWordReq (*GetSensitiveWordResp)(nil), // 67: openim.chat.GetSensitiveWordResp (*SearchSensitiveWordsReq)(nil), // 68: openim.chat.SearchSensitiveWordsReq (*SearchSensitiveWordsResp)(nil), // 69: openim.chat.SearchSensitiveWordsResp (*BatchAddSensitiveWordsReq)(nil), // 70: openim.chat.BatchAddSensitiveWordsReq (*BatchAddSensitiveWordsResp)(nil), // 71: openim.chat.BatchAddSensitiveWordsResp (*BatchUpdateSensitiveWordsReq)(nil), // 72: openim.chat.BatchUpdateSensitiveWordsReq (*BatchUpdateSensitiveWordsResp)(nil), // 73: openim.chat.BatchUpdateSensitiveWordsResp (*BatchDeleteSensitiveWordsReq)(nil), // 74: openim.chat.BatchDeleteSensitiveWordsReq (*BatchDeleteSensitiveWordsResp)(nil), // 75: openim.chat.BatchDeleteSensitiveWordsResp (*AddSensitiveWordGroupReq)(nil), // 76: openim.chat.AddSensitiveWordGroupReq (*AddSensitiveWordGroupResp)(nil), // 77: openim.chat.AddSensitiveWordGroupResp (*UpdateSensitiveWordGroupReq)(nil), // 78: openim.chat.UpdateSensitiveWordGroupReq (*UpdateSensitiveWordGroupResp)(nil), // 79: openim.chat.UpdateSensitiveWordGroupResp (*DeleteSensitiveWordGroupReq)(nil), // 80: openim.chat.DeleteSensitiveWordGroupReq (*DeleteSensitiveWordGroupResp)(nil), // 81: openim.chat.DeleteSensitiveWordGroupResp (*GetSensitiveWordGroupReq)(nil), // 82: openim.chat.GetSensitiveWordGroupReq (*GetSensitiveWordGroupResp)(nil), // 83: openim.chat.GetSensitiveWordGroupResp (*GetAllSensitiveWordGroupsReq)(nil), // 84: openim.chat.GetAllSensitiveWordGroupsReq (*GetAllSensitiveWordGroupsResp)(nil), // 85: openim.chat.GetAllSensitiveWordGroupsResp (*GetSensitiveWordConfigReq)(nil), // 86: openim.chat.GetSensitiveWordConfigReq (*GetSensitiveWordConfigResp)(nil), // 87: openim.chat.GetSensitiveWordConfigResp (*UpdateSensitiveWordConfigReq)(nil), // 88: openim.chat.UpdateSensitiveWordConfigReq (*UpdateSensitiveWordConfigResp)(nil), // 89: openim.chat.UpdateSensitiveWordConfigResp (*GetSensitiveWordLogsReq)(nil), // 90: openim.chat.GetSensitiveWordLogsReq (*GetSensitiveWordLogsResp)(nil), // 91: openim.chat.GetSensitiveWordLogsResp (*UserLoginRecordInfo)(nil), // 92: openim.chat.UserLoginRecordInfo (*GetUserLoginRecordsReq)(nil), // 93: openim.chat.GetUserLoginRecordsReq (*GetUserLoginRecordsResp)(nil), // 94: openim.chat.GetUserLoginRecordsResp (*DeleteSensitiveWordLogsReq)(nil), // 95: openim.chat.DeleteSensitiveWordLogsReq (*DeleteSensitiveWordLogsResp)(nil), // 96: openim.chat.DeleteSensitiveWordLogsResp (*GetSensitiveWordStatsReq)(nil), // 97: openim.chat.GetSensitiveWordStatsReq (*GetSensitiveWordStatsResp)(nil), // 98: openim.chat.GetSensitiveWordStatsResp (*GetSensitiveWordLogStatsReq)(nil), // 99: openim.chat.GetSensitiveWordLogStatsReq (*GetSensitiveWordLogStatsResp)(nil), // 100: openim.chat.GetSensitiveWordLogStatsResp (*AddFriendReq)(nil), // 101: openim.chat.AddFriendReq (*AddFriendResp)(nil), // 102: openim.chat.AddFriendResp (*FavoriteInfo)(nil), // 103: openim.chat.FavoriteInfo (*CreateFavoriteReq)(nil), // 104: openim.chat.CreateFavoriteReq (*CreateFavoriteResp)(nil), // 105: openim.chat.CreateFavoriteResp (*GetFavoriteReq)(nil), // 106: openim.chat.GetFavoriteReq (*GetFavoriteResp)(nil), // 107: openim.chat.GetFavoriteResp (*GetFavoritesReq)(nil), // 108: openim.chat.GetFavoritesReq (*GetFavoritesResp)(nil), // 109: openim.chat.GetFavoritesResp (*SearchFavoritesReq)(nil), // 110: openim.chat.SearchFavoritesReq (*SearchFavoritesResp)(nil), // 111: openim.chat.SearchFavoritesResp (*UpdateFavoriteReq)(nil), // 112: openim.chat.UpdateFavoriteReq (*UpdateFavoriteResp)(nil), // 113: openim.chat.UpdateFavoriteResp (*DeleteFavoriteReq)(nil), // 114: openim.chat.DeleteFavoriteReq (*DeleteFavoriteResp)(nil), // 115: openim.chat.DeleteFavoriteResp (*GetFavoritesByTagsReq)(nil), // 116: openim.chat.GetFavoritesByTagsReq (*GetFavoritesByTagsResp)(nil), // 117: openim.chat.GetFavoritesByTagsResp (*GetFavoriteCountReq)(nil), // 118: openim.chat.GetFavoriteCountReq (*GetFavoriteCountResp)(nil), // 119: openim.chat.GetFavoriteCountResp (*ScheduledTaskMessage)(nil), // 120: openim.chat.ScheduledTaskMessage (*ScheduledTaskInfo)(nil), // 121: openim.chat.ScheduledTaskInfo (*CreateScheduledTaskReq)(nil), // 122: openim.chat.CreateScheduledTaskReq (*CreateScheduledTaskResp)(nil), // 123: openim.chat.CreateScheduledTaskResp (*GetScheduledTaskReq)(nil), // 124: openim.chat.GetScheduledTaskReq (*GetScheduledTaskResp)(nil), // 125: openim.chat.GetScheduledTaskResp (*GetScheduledTasksReq)(nil), // 126: openim.chat.GetScheduledTasksReq (*GetScheduledTasksResp)(nil), // 127: openim.chat.GetScheduledTasksResp (*UpdateScheduledTaskReq)(nil), // 128: openim.chat.UpdateScheduledTaskReq (*UpdateScheduledTaskResp)(nil), // 129: openim.chat.UpdateScheduledTaskResp (*DeleteScheduledTaskReq)(nil), // 130: openim.chat.DeleteScheduledTaskReq (*DeleteScheduledTaskResp)(nil), // 131: openim.chat.DeleteScheduledTaskResp (*SystemConfigInfo)(nil), // 132: openim.chat.SystemConfigInfo (*GetAppSystemConfigsReq)(nil), // 133: openim.chat.GetAppSystemConfigsReq (*GetAppSystemConfigsResp)(nil), // 134: openim.chat.GetAppSystemConfigsResp (*RealNameAuthInfo)(nil), // 135: openim.chat.RealNameAuthInfo (*GetWalletBalanceReq)(nil), // 136: openim.chat.GetWalletBalanceReq (*GetWalletBalanceResp)(nil), // 137: openim.chat.GetWalletBalanceResp (*GetWalletInfoReq)(nil), // 138: openim.chat.GetWalletInfoReq (*GetWalletInfoResp)(nil), // 139: openim.chat.GetWalletInfoResp (*SetPaymentPasswordReq)(nil), // 140: openim.chat.SetPaymentPasswordReq (*SetPaymentPasswordResp)(nil), // 141: openim.chat.SetPaymentPasswordResp (*SetWithdrawAccountReq)(nil), // 142: openim.chat.SetWithdrawAccountReq (*SetWithdrawAccountResp)(nil), // 143: openim.chat.SetWithdrawAccountResp (*WalletBalanceRecordInfo)(nil), // 144: openim.chat.WalletBalanceRecordInfo (*GetWalletBalanceRecordsReq)(nil), // 145: openim.chat.GetWalletBalanceRecordsReq (*GetWalletBalanceRecordsResp)(nil), // 146: openim.chat.GetWalletBalanceRecordsResp (*WithdrawApplicationInfo)(nil), // 147: openim.chat.WithdrawApplicationInfo (*CreateWithdrawApplicationReq)(nil), // 148: openim.chat.CreateWithdrawApplicationReq (*CreateWithdrawApplicationResp)(nil), // 149: openim.chat.CreateWithdrawApplicationResp (*GetWithdrawApplicationsReq)(nil), // 150: openim.chat.GetWithdrawApplicationsReq (*GetWithdrawApplicationsResp)(nil), // 151: openim.chat.GetWithdrawApplicationsResp (*RealNameAuthReq)(nil), // 152: openim.chat.RealNameAuthReq (*RealNameAuthResp)(nil), // 153: openim.chat.RealNameAuthResp nil, // 154: openim.chat.FindUserAccountResp.UserAccountMapEntry nil, // 155: openim.chat.FindAccountUserResp.AccountUserMapEntry nil, // 156: openim.chat.UserLoginCountResp.CountEntry nil, // 157: openim.chat.BatchUpdateSensitiveWordsReq.UpdatesEntry (*wrapperspb.StringValue)(nil), // 158: openim.protobuf.StringValue (*wrapperspb.Int32Value)(nil), // 159: openim.protobuf.Int32Value (*wrapperspb.Int64Value)(nil), // 160: openim.protobuf.Int64Value (*common.UserPublicInfo)(nil), // 161: openim.chat.common.UserPublicInfo (*sdkws.RequestPagination)(nil), // 162: openim.sdkws.RequestPagination (*common.UserFullInfo)(nil), // 163: openim.chat.common.UserFullInfo } var file_chat_chat_proto_depIdxs = []int32{ 158, // 0: openim.chat.UpdateUserInfoReq.account:type_name -> openim.protobuf.StringValue 158, // 1: openim.chat.UpdateUserInfoReq.phoneNumber:type_name -> openim.protobuf.StringValue 158, // 2: openim.chat.UpdateUserInfoReq.areaCode:type_name -> openim.protobuf.StringValue 158, // 3: openim.chat.UpdateUserInfoReq.email:type_name -> openim.protobuf.StringValue 158, // 4: openim.chat.UpdateUserInfoReq.nickname:type_name -> openim.protobuf.StringValue 158, // 5: openim.chat.UpdateUserInfoReq.faceURL:type_name -> openim.protobuf.StringValue 159, // 6: openim.chat.UpdateUserInfoReq.gender:type_name -> openim.protobuf.Int32Value 159, // 7: openim.chat.UpdateUserInfoReq.level:type_name -> openim.protobuf.Int32Value 160, // 8: openim.chat.UpdateUserInfoReq.birth:type_name -> openim.protobuf.Int64Value 159, // 9: openim.chat.UpdateUserInfoReq.allowAddFriend:type_name -> openim.protobuf.Int32Value 159, // 10: openim.chat.UpdateUserInfoReq.allowBeep:type_name -> openim.protobuf.Int32Value 159, // 11: openim.chat.UpdateUserInfoReq.allowVibration:type_name -> openim.protobuf.Int32Value 159, // 12: openim.chat.UpdateUserInfoReq.globalRecvMsgOpt:type_name -> openim.protobuf.Int32Value 159, // 13: openim.chat.UpdateUserInfoReq.RegisterType:type_name -> openim.protobuf.Int32Value 158, // 14: openim.chat.UpdateUserInfoReq.userFlag:type_name -> openim.protobuf.StringValue 161, // 15: openim.chat.FindUserPublicInfoResp.users:type_name -> openim.chat.common.UserPublicInfo 162, // 16: openim.chat.SearchUserPublicInfoReq.pagination:type_name -> openim.sdkws.RequestPagination 161, // 17: openim.chat.SearchUserPublicInfoResp.users:type_name -> openim.chat.common.UserPublicInfo 163, // 18: openim.chat.FindUserFullInfoResp.users:type_name -> openim.chat.common.UserFullInfo 15, // 19: openim.chat.RegisterUserReq.user:type_name -> openim.chat.RegisterUserInfo 15, // 20: openim.chat.AddUserAccountReq.user:type_name -> openim.chat.RegisterUserInfo 154, // 21: openim.chat.FindUserAccountResp.userAccountMap:type_name -> openim.chat.FindUserAccountResp.UserAccountMapEntry 155, // 22: openim.chat.FindAccountUserResp.accountUserMap:type_name -> openim.chat.FindAccountUserResp.AccountUserMapEntry 161, // 23: openim.chat.SignalRecord.inviterUserList:type_name -> openim.chat.common.UserPublicInfo 162, // 24: openim.chat.SearchUserFullInfoReq.pagination:type_name -> openim.sdkws.RequestPagination 163, // 25: openim.chat.SearchUserFullInfoResp.users:type_name -> openim.chat.common.UserFullInfo 156, // 26: openim.chat.UserLoginCountResp.count:type_name -> openim.chat.UserLoginCountResp.CountEntry 162, // 27: openim.chat.SearchUserInfoReq.pagination:type_name -> openim.sdkws.RequestPagination 163, // 28: openim.chat.SearchUserInfoResp.users:type_name -> openim.chat.common.UserFullInfo 15, // 29: openim.chat.CheckUserExistReq.user:type_name -> openim.chat.RegisterUserInfo 49, // 30: openim.chat.GetSensitiveWordsResp.words:type_name -> openim.chat.SensitiveWordInfo 54, // 31: openim.chat.GetSensitiveWordResp.word:type_name -> openim.chat.SensitiveWordDetailInfo 162, // 32: openim.chat.SearchSensitiveWordsReq.pagination:type_name -> openim.sdkws.RequestPagination 54, // 33: openim.chat.SearchSensitiveWordsResp.words:type_name -> openim.chat.SensitiveWordDetailInfo 54, // 34: openim.chat.BatchAddSensitiveWordsReq.words:type_name -> openim.chat.SensitiveWordDetailInfo 157, // 35: openim.chat.BatchUpdateSensitiveWordsReq.updates:type_name -> openim.chat.BatchUpdateSensitiveWordsReq.UpdatesEntry 55, // 36: openim.chat.GetSensitiveWordGroupResp.group:type_name -> openim.chat.SensitiveWordGroupInfo 55, // 37: openim.chat.GetAllSensitiveWordGroupsResp.groups:type_name -> openim.chat.SensitiveWordGroupInfo 56, // 38: openim.chat.GetSensitiveWordConfigResp.config:type_name -> openim.chat.SensitiveWordConfigInfo 56, // 39: openim.chat.UpdateSensitiveWordConfigReq.config:type_name -> openim.chat.SensitiveWordConfigInfo 162, // 40: openim.chat.GetSensitiveWordLogsReq.pagination:type_name -> openim.sdkws.RequestPagination 57, // 41: openim.chat.GetSensitiveWordLogsResp.logs:type_name -> openim.chat.SensitiveWordLogInfo 162, // 42: openim.chat.GetUserLoginRecordsReq.pagination:type_name -> openim.sdkws.RequestPagination 92, // 43: openim.chat.GetUserLoginRecordsResp.records:type_name -> openim.chat.UserLoginRecordInfo 58, // 44: openim.chat.GetSensitiveWordStatsResp.stats:type_name -> openim.chat.SensitiveWordStatsInfo 59, // 45: openim.chat.GetSensitiveWordLogStatsResp.stats:type_name -> openim.chat.SensitiveWordLogStatsInfo 103, // 46: openim.chat.GetFavoriteResp.favorite:type_name -> openim.chat.FavoriteInfo 162, // 47: openim.chat.GetFavoritesReq.pagination:type_name -> openim.sdkws.RequestPagination 103, // 48: openim.chat.GetFavoritesResp.favorites:type_name -> openim.chat.FavoriteInfo 162, // 49: openim.chat.SearchFavoritesReq.pagination:type_name -> openim.sdkws.RequestPagination 103, // 50: openim.chat.SearchFavoritesResp.favorites:type_name -> openim.chat.FavoriteInfo 162, // 51: openim.chat.GetFavoritesByTagsReq.pagination:type_name -> openim.sdkws.RequestPagination 103, // 52: openim.chat.GetFavoritesByTagsResp.favorites:type_name -> openim.chat.FavoriteInfo 120, // 53: openim.chat.ScheduledTaskInfo.messages:type_name -> openim.chat.ScheduledTaskMessage 120, // 54: openim.chat.CreateScheduledTaskReq.messages:type_name -> openim.chat.ScheduledTaskMessage 121, // 55: openim.chat.GetScheduledTaskResp.task:type_name -> openim.chat.ScheduledTaskInfo 162, // 56: openim.chat.GetScheduledTasksReq.pagination:type_name -> openim.sdkws.RequestPagination 121, // 57: openim.chat.GetScheduledTasksResp.tasks:type_name -> openim.chat.ScheduledTaskInfo 120, // 58: openim.chat.UpdateScheduledTaskReq.messages:type_name -> openim.chat.ScheduledTaskMessage 132, // 59: openim.chat.GetAppSystemConfigsResp.configs:type_name -> openim.chat.SystemConfigInfo 135, // 60: openim.chat.GetWalletInfoResp.realNameAuth:type_name -> openim.chat.RealNameAuthInfo 162, // 61: openim.chat.GetWalletBalanceRecordsReq.pagination:type_name -> openim.sdkws.RequestPagination 144, // 62: openim.chat.GetWalletBalanceRecordsResp.records:type_name -> openim.chat.WalletBalanceRecordInfo 162, // 63: openim.chat.GetWithdrawApplicationsReq.pagination:type_name -> openim.sdkws.RequestPagination 147, // 64: openim.chat.GetWithdrawApplicationsResp.applications:type_name -> openim.chat.WithdrawApplicationInfo 54, // 65: openim.chat.BatchUpdateSensitiveWordsReq.UpdatesEntry.value:type_name -> openim.chat.SensitiveWordDetailInfo 101, // 66: openim.chat.chat.AddFriend:input_type -> openim.chat.AddFriendReq 1, // 67: openim.chat.chat.UpdateUserInfo:input_type -> openim.chat.UpdateUserInfoReq 18, // 68: openim.chat.chat.AddUserAccount:input_type -> openim.chat.AddUserAccountReq 5, // 69: openim.chat.chat.SearchUserPublicInfo:input_type -> openim.chat.SearchUserPublicInfoReq 3, // 70: openim.chat.chat.FindUserPublicInfo:input_type -> openim.chat.FindUserPublicInfoReq 32, // 71: openim.chat.chat.SearchUserFullInfo:input_type -> openim.chat.SearchUserFullInfoReq 7, // 72: openim.chat.chat.FindUserFullInfo:input_type -> openim.chat.FindUserFullInfoReq 9, // 73: openim.chat.chat.SendVerifyCode:input_type -> openim.chat.SendVerifyCodeReq 11, // 74: openim.chat.chat.VerifyCode:input_type -> openim.chat.VerifyCodeReq 13, // 75: openim.chat.chat.GetCaptchaImage:input_type -> openim.chat.GetCaptchaImageReq 16, // 76: openim.chat.chat.RegisterUser:input_type -> openim.chat.RegisterUserReq 20, // 77: openim.chat.chat.Login:input_type -> openim.chat.LoginReq 21, // 78: openim.chat.chat.ResetPassword:input_type -> openim.chat.ResetPasswordReq 23, // 79: openim.chat.chat.ChangePassword:input_type -> openim.chat.ChangePasswordReq 41, // 80: openim.chat.chat.CheckUserExist:input_type -> openim.chat.CheckUserExistReq 43, // 81: openim.chat.chat.DelUserAccount:input_type -> openim.chat.DelUserAccountReq 25, // 82: openim.chat.chat.FindUserAccount:input_type -> openim.chat.FindUserAccountReq 27, // 83: openim.chat.chat.FindAccountUser:input_type -> openim.chat.FindAccountUserReq 30, // 84: openim.chat.chat.OpenIMCallback:input_type -> openim.chat.OpenIMCallbackReq 34, // 85: openim.chat.chat.UserLoginCount:input_type -> openim.chat.UserLoginCountReq 37, // 86: openim.chat.chat.SearchUserInfo:input_type -> openim.chat.SearchUserInfoReq 39, // 87: openim.chat.chat.GetTokenForVideoMeeting:input_type -> openim.chat.GetTokenForVideoMeetingReq 45, // 88: openim.chat.chat.SetAllowRegister:input_type -> openim.chat.SetAllowRegisterReq 47, // 89: openim.chat.chat.GetAllowRegister:input_type -> openim.chat.GetAllowRegisterReq 50, // 90: openim.chat.chat.GetSensitiveWords:input_type -> openim.chat.GetSensitiveWordsReq 52, // 91: openim.chat.chat.CheckSensitiveWords:input_type -> openim.chat.CheckSensitiveWordsReq 60, // 92: openim.chat.chat.AddSensitiveWord:input_type -> openim.chat.AddSensitiveWordReq 62, // 93: openim.chat.chat.UpdateSensitiveWord:input_type -> openim.chat.UpdateSensitiveWordReq 64, // 94: openim.chat.chat.DeleteSensitiveWord:input_type -> openim.chat.DeleteSensitiveWordReq 66, // 95: openim.chat.chat.GetSensitiveWord:input_type -> openim.chat.GetSensitiveWordReq 68, // 96: openim.chat.chat.SearchSensitiveWords:input_type -> openim.chat.SearchSensitiveWordsReq 70, // 97: openim.chat.chat.BatchAddSensitiveWords:input_type -> openim.chat.BatchAddSensitiveWordsReq 72, // 98: openim.chat.chat.BatchUpdateSensitiveWords:input_type -> openim.chat.BatchUpdateSensitiveWordsReq 74, // 99: openim.chat.chat.BatchDeleteSensitiveWords:input_type -> openim.chat.BatchDeleteSensitiveWordsReq 76, // 100: openim.chat.chat.AddSensitiveWordGroup:input_type -> openim.chat.AddSensitiveWordGroupReq 78, // 101: openim.chat.chat.UpdateSensitiveWordGroup:input_type -> openim.chat.UpdateSensitiveWordGroupReq 80, // 102: openim.chat.chat.DeleteSensitiveWordGroup:input_type -> openim.chat.DeleteSensitiveWordGroupReq 82, // 103: openim.chat.chat.GetSensitiveWordGroup:input_type -> openim.chat.GetSensitiveWordGroupReq 84, // 104: openim.chat.chat.GetAllSensitiveWordGroups:input_type -> openim.chat.GetAllSensitiveWordGroupsReq 86, // 105: openim.chat.chat.GetSensitiveWordConfig:input_type -> openim.chat.GetSensitiveWordConfigReq 88, // 106: openim.chat.chat.UpdateSensitiveWordConfig:input_type -> openim.chat.UpdateSensitiveWordConfigReq 90, // 107: openim.chat.chat.GetSensitiveWordLogs:input_type -> openim.chat.GetSensitiveWordLogsReq 95, // 108: openim.chat.chat.DeleteSensitiveWordLogs:input_type -> openim.chat.DeleteSensitiveWordLogsReq 93, // 109: openim.chat.chat.GetUserLoginRecords:input_type -> openim.chat.GetUserLoginRecordsReq 97, // 110: openim.chat.chat.GetSensitiveWordStats:input_type -> openim.chat.GetSensitiveWordStatsReq 99, // 111: openim.chat.chat.GetSensitiveWordLogStats:input_type -> openim.chat.GetSensitiveWordLogStatsReq 133, // 112: openim.chat.chat.GetAppSystemConfigs:input_type -> openim.chat.GetAppSystemConfigsReq 136, // 113: openim.chat.chat.GetWalletBalance:input_type -> openim.chat.GetWalletBalanceReq 138, // 114: openim.chat.chat.GetWalletInfo:input_type -> openim.chat.GetWalletInfoReq 145, // 115: openim.chat.chat.GetWalletBalanceRecords:input_type -> openim.chat.GetWalletBalanceRecordsReq 140, // 116: openim.chat.chat.SetPaymentPassword:input_type -> openim.chat.SetPaymentPasswordReq 142, // 117: openim.chat.chat.SetWithdrawAccount:input_type -> openim.chat.SetWithdrawAccountReq 148, // 118: openim.chat.chat.CreateWithdrawApplication:input_type -> openim.chat.CreateWithdrawApplicationReq 150, // 119: openim.chat.chat.GetWithdrawApplications:input_type -> openim.chat.GetWithdrawApplicationsReq 152, // 120: openim.chat.chat.RealNameAuth:input_type -> openim.chat.RealNameAuthReq 104, // 121: openim.chat.chat.CreateFavorite:input_type -> openim.chat.CreateFavoriteReq 106, // 122: openim.chat.chat.GetFavorite:input_type -> openim.chat.GetFavoriteReq 108, // 123: openim.chat.chat.GetFavorites:input_type -> openim.chat.GetFavoritesReq 110, // 124: openim.chat.chat.SearchFavorites:input_type -> openim.chat.SearchFavoritesReq 112, // 125: openim.chat.chat.UpdateFavorite:input_type -> openim.chat.UpdateFavoriteReq 114, // 126: openim.chat.chat.DeleteFavorite:input_type -> openim.chat.DeleteFavoriteReq 116, // 127: openim.chat.chat.GetFavoritesByTags:input_type -> openim.chat.GetFavoritesByTagsReq 118, // 128: openim.chat.chat.GetFavoriteCount:input_type -> openim.chat.GetFavoriteCountReq 122, // 129: openim.chat.chat.CreateScheduledTask:input_type -> openim.chat.CreateScheduledTaskReq 124, // 130: openim.chat.chat.GetScheduledTask:input_type -> openim.chat.GetScheduledTaskReq 126, // 131: openim.chat.chat.GetScheduledTasks:input_type -> openim.chat.GetScheduledTasksReq 128, // 132: openim.chat.chat.UpdateScheduledTask:input_type -> openim.chat.UpdateScheduledTaskReq 130, // 133: openim.chat.chat.DeleteScheduledTask:input_type -> openim.chat.DeleteScheduledTaskReq 102, // 134: openim.chat.chat.AddFriend:output_type -> openim.chat.AddFriendResp 2, // 135: openim.chat.chat.UpdateUserInfo:output_type -> openim.chat.UpdateUserInfoResp 19, // 136: openim.chat.chat.AddUserAccount:output_type -> openim.chat.AddUserAccountResp 6, // 137: openim.chat.chat.SearchUserPublicInfo:output_type -> openim.chat.SearchUserPublicInfoResp 4, // 138: openim.chat.chat.FindUserPublicInfo:output_type -> openim.chat.FindUserPublicInfoResp 33, // 139: openim.chat.chat.SearchUserFullInfo:output_type -> openim.chat.SearchUserFullInfoResp 8, // 140: openim.chat.chat.FindUserFullInfo:output_type -> openim.chat.FindUserFullInfoResp 10, // 141: openim.chat.chat.SendVerifyCode:output_type -> openim.chat.SendVerifyCodeResp 12, // 142: openim.chat.chat.VerifyCode:output_type -> openim.chat.VerifyCodeResp 14, // 143: openim.chat.chat.GetCaptchaImage:output_type -> openim.chat.GetCaptchaImageResp 17, // 144: openim.chat.chat.RegisterUser:output_type -> openim.chat.RegisterUserResp 36, // 145: openim.chat.chat.Login:output_type -> openim.chat.LoginResp 22, // 146: openim.chat.chat.ResetPassword:output_type -> openim.chat.ResetPasswordResp 24, // 147: openim.chat.chat.ChangePassword:output_type -> openim.chat.ChangePasswordResp 42, // 148: openim.chat.chat.CheckUserExist:output_type -> openim.chat.CheckUserExistResp 44, // 149: openim.chat.chat.DelUserAccount:output_type -> openim.chat.DelUserAccountResp 26, // 150: openim.chat.chat.FindUserAccount:output_type -> openim.chat.FindUserAccountResp 28, // 151: openim.chat.chat.FindAccountUser:output_type -> openim.chat.FindAccountUserResp 31, // 152: openim.chat.chat.OpenIMCallback:output_type -> openim.chat.OpenIMCallbackResp 35, // 153: openim.chat.chat.UserLoginCount:output_type -> openim.chat.UserLoginCountResp 38, // 154: openim.chat.chat.SearchUserInfo:output_type -> openim.chat.SearchUserInfoResp 40, // 155: openim.chat.chat.GetTokenForVideoMeeting:output_type -> openim.chat.GetTokenForVideoMeetingResp 46, // 156: openim.chat.chat.SetAllowRegister:output_type -> openim.chat.SetAllowRegisterResp 48, // 157: openim.chat.chat.GetAllowRegister:output_type -> openim.chat.GetAllowRegisterResp 51, // 158: openim.chat.chat.GetSensitiveWords:output_type -> openim.chat.GetSensitiveWordsResp 53, // 159: openim.chat.chat.CheckSensitiveWords:output_type -> openim.chat.CheckSensitiveWordsResp 61, // 160: openim.chat.chat.AddSensitiveWord:output_type -> openim.chat.AddSensitiveWordResp 63, // 161: openim.chat.chat.UpdateSensitiveWord:output_type -> openim.chat.UpdateSensitiveWordResp 65, // 162: openim.chat.chat.DeleteSensitiveWord:output_type -> openim.chat.DeleteSensitiveWordResp 67, // 163: openim.chat.chat.GetSensitiveWord:output_type -> openim.chat.GetSensitiveWordResp 69, // 164: openim.chat.chat.SearchSensitiveWords:output_type -> openim.chat.SearchSensitiveWordsResp 71, // 165: openim.chat.chat.BatchAddSensitiveWords:output_type -> openim.chat.BatchAddSensitiveWordsResp 73, // 166: openim.chat.chat.BatchUpdateSensitiveWords:output_type -> openim.chat.BatchUpdateSensitiveWordsResp 75, // 167: openim.chat.chat.BatchDeleteSensitiveWords:output_type -> openim.chat.BatchDeleteSensitiveWordsResp 77, // 168: openim.chat.chat.AddSensitiveWordGroup:output_type -> openim.chat.AddSensitiveWordGroupResp 79, // 169: openim.chat.chat.UpdateSensitiveWordGroup:output_type -> openim.chat.UpdateSensitiveWordGroupResp 81, // 170: openim.chat.chat.DeleteSensitiveWordGroup:output_type -> openim.chat.DeleteSensitiveWordGroupResp 83, // 171: openim.chat.chat.GetSensitiveWordGroup:output_type -> openim.chat.GetSensitiveWordGroupResp 85, // 172: openim.chat.chat.GetAllSensitiveWordGroups:output_type -> openim.chat.GetAllSensitiveWordGroupsResp 87, // 173: openim.chat.chat.GetSensitiveWordConfig:output_type -> openim.chat.GetSensitiveWordConfigResp 89, // 174: openim.chat.chat.UpdateSensitiveWordConfig:output_type -> openim.chat.UpdateSensitiveWordConfigResp 91, // 175: openim.chat.chat.GetSensitiveWordLogs:output_type -> openim.chat.GetSensitiveWordLogsResp 96, // 176: openim.chat.chat.DeleteSensitiveWordLogs:output_type -> openim.chat.DeleteSensitiveWordLogsResp 94, // 177: openim.chat.chat.GetUserLoginRecords:output_type -> openim.chat.GetUserLoginRecordsResp 98, // 178: openim.chat.chat.GetSensitiveWordStats:output_type -> openim.chat.GetSensitiveWordStatsResp 100, // 179: openim.chat.chat.GetSensitiveWordLogStats:output_type -> openim.chat.GetSensitiveWordLogStatsResp 134, // 180: openim.chat.chat.GetAppSystemConfigs:output_type -> openim.chat.GetAppSystemConfigsResp 137, // 181: openim.chat.chat.GetWalletBalance:output_type -> openim.chat.GetWalletBalanceResp 139, // 182: openim.chat.chat.GetWalletInfo:output_type -> openim.chat.GetWalletInfoResp 146, // 183: openim.chat.chat.GetWalletBalanceRecords:output_type -> openim.chat.GetWalletBalanceRecordsResp 141, // 184: openim.chat.chat.SetPaymentPassword:output_type -> openim.chat.SetPaymentPasswordResp 143, // 185: openim.chat.chat.SetWithdrawAccount:output_type -> openim.chat.SetWithdrawAccountResp 149, // 186: openim.chat.chat.CreateWithdrawApplication:output_type -> openim.chat.CreateWithdrawApplicationResp 151, // 187: openim.chat.chat.GetWithdrawApplications:output_type -> openim.chat.GetWithdrawApplicationsResp 153, // 188: openim.chat.chat.RealNameAuth:output_type -> openim.chat.RealNameAuthResp 105, // 189: openim.chat.chat.CreateFavorite:output_type -> openim.chat.CreateFavoriteResp 107, // 190: openim.chat.chat.GetFavorite:output_type -> openim.chat.GetFavoriteResp 109, // 191: openim.chat.chat.GetFavorites:output_type -> openim.chat.GetFavoritesResp 111, // 192: openim.chat.chat.SearchFavorites:output_type -> openim.chat.SearchFavoritesResp 113, // 193: openim.chat.chat.UpdateFavorite:output_type -> openim.chat.UpdateFavoriteResp 115, // 194: openim.chat.chat.DeleteFavorite:output_type -> openim.chat.DeleteFavoriteResp 117, // 195: openim.chat.chat.GetFavoritesByTags:output_type -> openim.chat.GetFavoritesByTagsResp 119, // 196: openim.chat.chat.GetFavoriteCount:output_type -> openim.chat.GetFavoriteCountResp 123, // 197: openim.chat.chat.CreateScheduledTask:output_type -> openim.chat.CreateScheduledTaskResp 125, // 198: openim.chat.chat.GetScheduledTask:output_type -> openim.chat.GetScheduledTaskResp 127, // 199: openim.chat.chat.GetScheduledTasks:output_type -> openim.chat.GetScheduledTasksResp 129, // 200: openim.chat.chat.UpdateScheduledTask:output_type -> openim.chat.UpdateScheduledTaskResp 131, // 201: openim.chat.chat.DeleteScheduledTask:output_type -> openim.chat.DeleteScheduledTaskResp 134, // [134:202] is the sub-list for method output_type 66, // [66:134] is the sub-list for method input_type 66, // [66:66] is the sub-list for extension type_name 66, // [66:66] is the sub-list for extension extendee 0, // [0:66] is the sub-list for field type_name } func init() { file_chat_chat_proto_init() } func file_chat_chat_proto_init() { if File_chat_chat_proto != nil { return } if !protoimpl.UnsafeEnabled { file_chat_chat_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserIdentity); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateUserInfoReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateUserInfoResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FindUserPublicInfoReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FindUserPublicInfoResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SearchUserPublicInfoReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SearchUserPublicInfoResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FindUserFullInfoReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FindUserFullInfoResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SendVerifyCodeReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SendVerifyCodeResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*VerifyCodeReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*VerifyCodeResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetCaptchaImageReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetCaptchaImageResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RegisterUserInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RegisterUserReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RegisterUserResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddUserAccountReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddUserAccountResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LoginReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ResetPasswordReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ResetPasswordResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChangePasswordReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChangePasswordResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FindUserAccountReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FindUserAccountResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FindAccountUserReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FindAccountUserResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SignalRecord); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OpenIMCallbackReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OpenIMCallbackResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SearchUserFullInfoReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SearchUserFullInfoResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserLoginCountReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserLoginCountResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LoginResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SearchUserInfoReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SearchUserInfoResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetTokenForVideoMeetingReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetTokenForVideoMeetingResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CheckUserExistReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CheckUserExistResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DelUserAccountReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DelUserAccountResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetAllowRegisterReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetAllowRegisterResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAllowRegisterReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAllowRegisterResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SensitiveWordInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetSensitiveWordsReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetSensitiveWordsResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CheckSensitiveWordsReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CheckSensitiveWordsResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SensitiveWordDetailInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SensitiveWordGroupInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SensitiveWordConfigInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SensitiveWordLogInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SensitiveWordStatsInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SensitiveWordLogStatsInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddSensitiveWordReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddSensitiveWordResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateSensitiveWordReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateSensitiveWordResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteSensitiveWordReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteSensitiveWordResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetSensitiveWordReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetSensitiveWordResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SearchSensitiveWordsReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SearchSensitiveWordsResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BatchAddSensitiveWordsReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BatchAddSensitiveWordsResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BatchUpdateSensitiveWordsReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BatchUpdateSensitiveWordsResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BatchDeleteSensitiveWordsReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BatchDeleteSensitiveWordsResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddSensitiveWordGroupReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddSensitiveWordGroupResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateSensitiveWordGroupReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateSensitiveWordGroupResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteSensitiveWordGroupReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteSensitiveWordGroupResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetSensitiveWordGroupReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetSensitiveWordGroupResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAllSensitiveWordGroupsReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAllSensitiveWordGroupsResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetSensitiveWordConfigReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetSensitiveWordConfigResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateSensitiveWordConfigReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateSensitiveWordConfigResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetSensitiveWordLogsReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetSensitiveWordLogsResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserLoginRecordInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetUserLoginRecordsReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetUserLoginRecordsResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteSensitiveWordLogsReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteSensitiveWordLogsResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetSensitiveWordStatsReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetSensitiveWordStatsResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetSensitiveWordLogStatsReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetSensitiveWordLogStatsResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddFriendReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddFriendResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FavoriteInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateFavoriteReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateFavoriteResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetFavoriteReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetFavoriteResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetFavoritesReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[109].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetFavoritesResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SearchFavoritesReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SearchFavoritesResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateFavoriteReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[113].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateFavoriteResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[114].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteFavoriteReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[115].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteFavoriteResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[116].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetFavoritesByTagsReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[117].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetFavoritesByTagsResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[118].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetFavoriteCountReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[119].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetFavoriteCountResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[120].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ScheduledTaskMessage); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[121].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ScheduledTaskInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[122].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateScheduledTaskReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[123].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateScheduledTaskResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[124].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetScheduledTaskReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[125].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetScheduledTaskResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[126].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetScheduledTasksReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[127].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetScheduledTasksResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[128].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateScheduledTaskReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[129].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateScheduledTaskResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[130].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteScheduledTaskReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[131].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteScheduledTaskResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[132].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SystemConfigInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[133].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAppSystemConfigsReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[134].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAppSystemConfigsResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[135].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RealNameAuthInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[136].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetWalletBalanceReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[137].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetWalletBalanceResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[138].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetWalletInfoReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[139].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetWalletInfoResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[140].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetPaymentPasswordReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[141].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetPaymentPasswordResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[142].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetWithdrawAccountReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[143].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetWithdrawAccountResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[144].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WalletBalanceRecordInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[145].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetWalletBalanceRecordsReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[146].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetWalletBalanceRecordsResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[147].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WithdrawApplicationInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[148].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateWithdrawApplicationReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[149].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateWithdrawApplicationResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[150].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetWithdrawApplicationsReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[151].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetWithdrawApplicationsResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[152].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RealNameAuthReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_chat_proto_msgTypes[153].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RealNameAuthResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_chat_chat_proto_rawDesc, NumEnums: 0, NumMessages: 158, NumExtensions: 0, NumServices: 1, }, GoTypes: file_chat_chat_proto_goTypes, DependencyIndexes: file_chat_chat_proto_depIdxs, MessageInfos: file_chat_chat_proto_msgTypes, }.Build() File_chat_chat_proto = out.File file_chat_chat_proto_rawDesc = nil file_chat_chat_proto_goTypes = nil file_chat_chat_proto_depIdxs = nil }