diff --git a/config/config.go b/config/config.go index 1b8ccf6..ad48240 100644 --- a/config/config.go +++ b/config/config.go @@ -1,13 +1,9 @@ package config import ( - "context" - "egg-im/pkg/k8sutil" "egg-im/pkg/logger" "go.uber.org/zap" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "os" - "strconv" ) const ( @@ -31,26 +27,26 @@ var ( ) func Init() { - k8sClient, err := k8sutil.GetK8sClient() - if err != nil { - panic(err) - } - configmap, err := k8sClient.CoreV1().ConfigMaps(NameSpace).Get(context.TODO(), "config", metav1.GetOptions{}) - if err != nil { - panic(err) - } - - MySQL = configmap.Data["mysql"] - RedisIP = configmap.Data["redisIP"] - RedisPassword = configmap.Data["redisPassword"] - PushRoomSubscribeNum, _ = strconv.Atoi(configmap.Data["pushRoomSubscribeNum"]) - if PushRoomSubscribeNum == 0 { - panic("PushRoomSubscribeNum == 0") - } - PushAllSubscribeNum, _ = strconv.Atoi(configmap.Data["pushAllSubscribeNum"]) - if PushRoomSubscribeNum == 0 { - panic("PushAllSubscribeNum == 0") - } + //k8sClient, err := k8sutil.GetK8sClient() + //if err != nil { + // panic(err) + //} + //configmap, err := k8sClient.CoreV1().ConfigMaps(NameSpace).Get(context.TODO(), "config", metav1.GetOptions{}) + //if err != nil { + // panic(err) + //} + // + //MySQL = configmap.Data["mysql"] + //RedisIP = configmap.Data["redisIP"] + //RedisPassword = configmap.Data["redisPassword"] + //PushRoomSubscribeNum, _ = strconv.Atoi(configmap.Data["pushRoomSubscribeNum"]) + //if PushRoomSubscribeNum == 0 { + // panic("PushRoomSubscribeNum == 0") + //} + //PushAllSubscribeNum, _ = strconv.Atoi(configmap.Data["pushAllSubscribeNum"]) + //if PushRoomSubscribeNum == 0 { + // panic("PushAllSubscribeNum == 0") + //} LocalAddr = os.Getenv("POD_IP") + RPCListenAddr diff --git a/internal/business/api/business_ext.go b/internal/business/api/business_ext.go index 6216d89..3080376 100644 --- a/internal/business/api/business_ext.go +++ b/internal/business/api/business_ext.go @@ -41,6 +41,11 @@ func (s *BusinessExtServer) ViewGroupNotice(ctx context.Context, req *pb.ViewGro IsLike: false, }, nil } + groupNotice.ReadNums++ + err = repo2.GroupNoticeDao.Save(groupNotice, false) + if err != nil { + return nil, err + } groupNoticeWithLikeRecords, err := repo2.GroupNoticeWithLikeRecordsDao.Get(userId, req.GroupId) if err != nil { return nil, err @@ -53,7 +58,7 @@ func (s *BusinessExtServer) ViewGroupNotice(ctx context.Context, req *pb.ViewGro LikeNums: int64(groupNotice.LikeNums), ReadNums: int64(groupNotice.ReadNums), PublishType: pb.GroupNoticePublishType(groupNotice.PublishType), - PublishTime: groupNotice.CreateTime.Format("2006-01-02 15:04:05"), + PublishTime: groupNotice.UpdateTime.Format("2006-01-02 15:04:05"), IsLike: func() bool { if groupNoticeWithLikeRecords == nil { return false @@ -93,7 +98,7 @@ func (s *BusinessExtServer) LikeGroupNotice(ctx context.Context, req *pb.LikeGro } groupNotice.LikeNums++ - return new(pb.Empty), repo2.GroupNoticeDao.Save(groupNotice) + return new(pb.Empty), repo2.GroupNoticeDao.Save(groupNotice, false) } func (s *BusinessExtServer) CancelLikeGroupNotice(ctx context.Context, req *pb.CancelLikeGroupNoticeReq) (*pb.Empty, error) { @@ -122,16 +127,8 @@ func (s *BusinessExtServer) CancelLikeGroupNotice(ctx context.Context, req *pb.C return nil, err } - err = repo2.GroupNoticeWithLikeRecordsDao.Save(&model.GroupNoticeWithLikeRecords{ - GroupId: req.GroupId, - UserId: userId, - }) - if err != nil { - return nil, err - } - groupNotice.LikeNums-- - return new(pb.Empty), repo2.GroupNoticeDao.Save(groupNotice) + return new(pb.Empty), repo2.GroupNoticeDao.Save(groupNotice, false) } func (s *BusinessExtServer) PublishGroupNotice(ctx context.Context, req *pb.PublishGroupNoticeReq) (*pb.Empty, error) { @@ -156,7 +153,7 @@ func (s *BusinessExtServer) PublishGroupNotice(ctx context.Context, req *pb.Publ UpdateTime: now, } - return new(pb.Empty), repo2.GroupNoticeDao.Save(&groupComplain) + return new(pb.Empty), repo2.GroupNoticeDao.Save(&groupComplain, true) } func (s *BusinessExtServer) ComplainGroup(ctx context.Context, req *pb.ComplainGroupReq) (*pb.Empty, error) { diff --git a/internal/logic/api/logic_ext.go b/internal/logic/api/logic_ext.go index fdc6e23..27192b0 100644 --- a/internal/logic/api/logic_ext.go +++ b/internal/logic/api/logic_ext.go @@ -4,6 +4,7 @@ import ( "context" "egg-im/internal/business/comm/utils" "egg-im/internal/logic/app" + "egg-im/internal/logic/domain/group/repo" "egg-im/pkg/grpclib" "egg-im/pkg/pb" "google.golang.org/protobuf/proto" @@ -243,7 +244,15 @@ func (*LogicExtServer) UpdateGroup(ctx context.Context, in *pb.UpdateGroupReq) ( // GetGroup 获取群组信息 func (*LogicExtServer) GetGroup(ctx context.Context, in *pb.GetGroupReq) (*pb.GetGroupResp, error) { group, memberType, userStatusType, err := app.GroupApp.GetGroup(ctx, in.GroupId) - return &pb.GetGroupResp{Group: group, MemberType: memberType, GroupUserStatusType: userStatusType}, err + if err != nil { + return &pb.GetGroupResp{Group: group, MemberType: memberType, GroupUserStatusType: userStatusType}, err + } + groupNotice, err := repo.GroupRepo.GetGroupNotice(in.GroupId) + return &pb.GetGroupResp{Group: group, MemberType: memberType, GroupUserStatusType: userStatusType, GroupNotice: &pb.GroupNotice{ + Content: groupNotice.Content, + PublishType: pb.GroupNoticePublishType(groupNotice.PublishType), + PublishTime: groupNotice.UpdateTime.Format("2006-01-02 15:04:05"), + }}, err } // GetGroups 获取用户加入的所有群组 diff --git a/internal/logic/domain/group/repo/group_cache.go b/internal/logic/domain/group/repo/group_cache.go index d344475..544ebd4 100644 --- a/internal/logic/domain/group/repo/group_cache.go +++ b/internal/logic/domain/group/repo/group_cache.go @@ -44,7 +44,7 @@ func (c *groupCache) GetLimit(limit string, groupId int64) (*model.Group, error) // Set 设置群组缓存 func (c *groupCache) Set(group *model.Group) error { - err := db.RedisUtil.Set(GroupKey+strconv.FormatInt(group.Id, 10), group, 4*time.Hour) + err := db.RedisUtil.Set(GroupKey+strconv.FormatInt(group.Id, 10), group, 2*time.Hour) if err != nil { return gerrors.WrapError(err) } @@ -53,7 +53,7 @@ func (c *groupCache) Set(group *model.Group) error { // SetLimit 设置群组缓存 func (c *groupCache) SetLimit(limit string, group *model.Group) error { - err := db.RedisUtil.Set(GroupKey+limit+":"+strconv.FormatInt(group.Id, 10), group, 4*time.Hour) + err := db.RedisUtil.Set(GroupKey+limit+":"+strconv.FormatInt(group.Id, 10), group, 2*time.Hour) if err != nil { return gerrors.WrapError(err) } diff --git a/internal/logic/domain/group/repo/group_notice_cache.go b/internal/logic/domain/group/repo/group_notice_cache.go new file mode 100644 index 0000000..d330267 --- /dev/null +++ b/internal/logic/domain/group/repo/group_notice_cache.go @@ -0,0 +1,48 @@ +package repo + +import ( + "egg-im/internal/logic/domain/group/model" + "egg-im/pkg/db" + "egg-im/pkg/gerrors" + "strconv" + "time" + + "github.com/go-redis/redis" +) + +const GroupNoticeKey = "group:notice:" + +type groupNoticeCache struct{} + +var GroupNoticeCache = new(groupNoticeCache) + +// Get 获取群组缓存 +func (c *groupNoticeCache) Get(groupId int64) (*model.GroupNotice, error) { + var user model.GroupNotice + err := db.RedisUtil.Get(GroupNoticeKey+strconv.FormatInt(groupId, 10), &user) + if err != nil && err != redis.Nil { + return nil, gerrors.WrapError(err) + } + if err == redis.Nil { + return nil, nil + } + return &user, nil +} + +// Set 设置群组缓存 +func (c *groupNoticeCache) Set(group *model.GroupNotice) error { + err := db.RedisUtil.Set(GroupNoticeKey+strconv.FormatInt(group.Id, 10), group, 1*time.Hour) + if err != nil { + return gerrors.WrapError(err) + } + return nil +} + +// Del 删除群组缓存 +func (c *groupNoticeCache) Del(groupId int64) error { + _, err := db.RedisCli.Del(GroupNoticeKey + strconv.FormatInt(groupId, 10)).Result() + if err != nil { + return gerrors.WrapError(err) + } + return nil +} diff --git a/internal/logic/domain/group/repo/group_notice_dao.go b/internal/logic/domain/group/repo/group_notice_dao.go index 953f5d0..544c194 100644 --- a/internal/logic/domain/group/repo/group_notice_dao.go +++ b/internal/logic/domain/group/repo/group_notice_dao.go @@ -26,15 +26,15 @@ func (*groupNoticeDao) Get(groupId int64) (*model.GroupNotice, error) { } // Save 插入一条群组 -func (g *groupNoticeDao) Save(groupNotice *model.GroupNotice) error { +func (g *groupNoticeDao) Save(groupNotice *model.GroupNotice, isPublish bool) error { mm, err := g.Get(groupNotice.GroupId) if err != nil { return err } - if mm != nil { + if mm != nil && isPublish { mm.Content = groupNotice.Content - mm.LikeNums = groupNotice.LikeNums - mm.ReadNums = groupNotice.ReadNums + mm.LikeNums = 0 + mm.ReadNums = 0 mm.PublishType = groupNotice.PublishType mm.UpdateTime = groupNotice.UpdateTime @@ -43,10 +43,17 @@ func (g *groupNoticeDao) Save(groupNotice *model.GroupNotice) error { if err != nil { return err } - } - err = db.DB.Save(&groupNotice).Error - if err != nil { - return gerrors.WrapError(err) + err = db.DB.Save(&mm).Error + if err != nil { + return gerrors.WrapError(err) + } + //删除缓存 + GroupCache.Del(groupNotice.GroupId) + } else { + err = db.DB.Save(&groupNotice).Error + if err != nil { + return gerrors.WrapError(err) + } } return nil } diff --git a/internal/logic/domain/group/repo/group_notice_with_like_records_dao.go b/internal/logic/domain/group/repo/group_notice_with_like_records_dao.go index cda588d..57f1c29 100644 --- a/internal/logic/domain/group/repo/group_notice_with_like_records_dao.go +++ b/internal/logic/domain/group/repo/group_notice_with_like_records_dao.go @@ -27,7 +27,7 @@ func (*groupNoticeWithLikeRecords) Get(userId, groupId int64) (*model.GroupNotic // Save 插入一条群组 func (*groupNoticeWithLikeRecords) Save(groupNoticeWithLikeRecords *model.GroupNoticeWithLikeRecords) error { - err := db.DB.Save(&groupNoticeWithLikeRecords).Error + err := db.DB.Create(&groupNoticeWithLikeRecords).Error if err != nil { return gerrors.WrapError(err) } diff --git a/internal/logic/domain/group/repo/group_repo.go b/internal/logic/domain/group/repo/group_repo.go index de625c2..86df007 100644 --- a/internal/logic/domain/group/repo/group_repo.go +++ b/internal/logic/domain/group/repo/group_repo.go @@ -42,6 +42,27 @@ func (*groupRepo) Get(groupId int64) (*model.Group, error) { return group, nil } +// GetGroupNotice 获取群组公告信息 +func (*groupRepo) GetGroupNotice(groupId int64) (*model.GroupNotice, error) { + group, err := GroupNoticeCache.Get(groupId) + if err != nil { + return nil, err + } + if group != nil { + return group, nil + } + + group, err = GroupNoticeDao.Get(groupId) + if err != nil { + return nil, err + } + err = GroupNoticeCache.Set(group) + if err != nil { + return nil, err + } + return group, nil +} + // GetLimit 获取群组信息(限量) func (*groupRepo) GetLimit(groupId, limit int64) (*model.Group, error) { group, err := GroupCache.GetLimit(strconv.FormatInt(limit, 10), groupId) diff --git a/pkg/pb/logic.ext.pb.go b/pkg/pb/logic.ext.pb.go index 6afe016..944b86b 100644 --- a/pkg/pb/logic.ext.pb.go +++ b/pkg/pb/logic.ext.pb.go @@ -1530,6 +1530,7 @@ type GetGroupResp struct { Group *Group `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"` MemberType MemberType `protobuf:"varint,2,opt,name=member_type,json=memberType,proto3,enum=pb.MemberType" json:"member_type,omitempty"` GroupUserStatusType GroupUserStatusType `protobuf:"varint,3,opt,name=group_user_status_type,json=groupUserStatusType,proto3,enum=pb.GroupUserStatusType" json:"group_user_status_type,omitempty"` + GroupNotice *GroupNotice `protobuf:"bytes,4,opt,name=group_notice,json=groupNotice,proto3" json:"group_notice,omitempty"` //群公告 } func (x *GetGroupResp) Reset() { @@ -1585,6 +1586,76 @@ func (x *GetGroupResp) GetGroupUserStatusType() GroupUserStatusType { return GroupUserStatusType_GROUP_USER_STATUS_NORMAL } +func (x *GetGroupResp) GetGroupNotice() *GroupNotice { + if x != nil { + return x.GroupNotice + } + return nil +} + +type GroupNotice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Content string `protobuf:"bytes,1,opt,name=content,proto3" json:"content,omitempty"` //公告内容 + PublishType GroupNoticePublishType `protobuf:"varint,2,opt,name=publish_type,json=publishType,proto3,enum=pb.GroupNoticePublishType" json:"publish_type,omitempty"` // 发布方式 + PublishTime string `protobuf:"bytes,3,opt,name=publish_time,json=publishTime,proto3" json:"publish_time,omitempty"` // 发布时间 +} + +func (x *GroupNotice) Reset() { + *x = GroupNotice{} + if protoimpl.UnsafeEnabled { + mi := &file_logic_ext_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GroupNotice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GroupNotice) ProtoMessage() {} + +func (x *GroupNotice) ProtoReflect() protoreflect.Message { + mi := &file_logic_ext_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 GroupNotice.ProtoReflect.Descriptor instead. +func (*GroupNotice) Descriptor() ([]byte, []int) { + return file_logic_ext_proto_rawDescGZIP(), []int{21} +} + +func (x *GroupNotice) GetContent() string { + if x != nil { + return x.Content + } + return "" +} + +func (x *GroupNotice) GetPublishType() GroupNoticePublishType { + if x != nil { + return x.PublishType + } + return GroupNoticePublishType_UNKNOWN_PUBLISH +} + +func (x *GroupNotice) GetPublishTime() string { + if x != nil { + return x.PublishTime + } + return "" +} + type Group struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1605,7 +1676,7 @@ type Group struct { func (x *Group) Reset() { *x = Group{} if protoimpl.UnsafeEnabled { - mi := &file_logic_ext_proto_msgTypes[21] + mi := &file_logic_ext_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1618,7 +1689,7 @@ func (x *Group) String() string { func (*Group) ProtoMessage() {} func (x *Group) ProtoReflect() protoreflect.Message { - mi := &file_logic_ext_proto_msgTypes[21] + mi := &file_logic_ext_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1631,7 +1702,7 @@ func (x *Group) ProtoReflect() protoreflect.Message { // Deprecated: Use Group.ProtoReflect.Descriptor instead. func (*Group) Descriptor() ([]byte, []int) { - return file_logic_ext_proto_rawDescGZIP(), []int{21} + return file_logic_ext_proto_rawDescGZIP(), []int{22} } func (x *Group) GetGroupId() int64 { @@ -1715,7 +1786,7 @@ type GetGroupsResp struct { func (x *GetGroupsResp) Reset() { *x = GetGroupsResp{} if protoimpl.UnsafeEnabled { - mi := &file_logic_ext_proto_msgTypes[22] + mi := &file_logic_ext_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1728,7 +1799,7 @@ func (x *GetGroupsResp) String() string { func (*GetGroupsResp) ProtoMessage() {} func (x *GetGroupsResp) ProtoReflect() protoreflect.Message { - mi := &file_logic_ext_proto_msgTypes[22] + mi := &file_logic_ext_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1741,7 +1812,7 @@ func (x *GetGroupsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGroupsResp.ProtoReflect.Descriptor instead. func (*GetGroupsResp) Descriptor() ([]byte, []int) { - return file_logic_ext_proto_rawDescGZIP(), []int{22} + return file_logic_ext_proto_rawDescGZIP(), []int{23} } func (x *GetGroupsResp) GetGroups() []*Group { @@ -1763,7 +1834,7 @@ type AddGroupMembersReq struct { func (x *AddGroupMembersReq) Reset() { *x = AddGroupMembersReq{} if protoimpl.UnsafeEnabled { - mi := &file_logic_ext_proto_msgTypes[23] + mi := &file_logic_ext_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1776,7 +1847,7 @@ func (x *AddGroupMembersReq) String() string { func (*AddGroupMembersReq) ProtoMessage() {} func (x *AddGroupMembersReq) ProtoReflect() protoreflect.Message { - mi := &file_logic_ext_proto_msgTypes[23] + mi := &file_logic_ext_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1789,7 +1860,7 @@ func (x *AddGroupMembersReq) ProtoReflect() protoreflect.Message { // Deprecated: Use AddGroupMembersReq.ProtoReflect.Descriptor instead. func (*AddGroupMembersReq) Descriptor() ([]byte, []int) { - return file_logic_ext_proto_rawDescGZIP(), []int{23} + return file_logic_ext_proto_rawDescGZIP(), []int{24} } func (x *AddGroupMembersReq) GetGroupId() int64 { @@ -1817,7 +1888,7 @@ type AddGroupMembersResp struct { func (x *AddGroupMembersResp) Reset() { *x = AddGroupMembersResp{} if protoimpl.UnsafeEnabled { - mi := &file_logic_ext_proto_msgTypes[24] + mi := &file_logic_ext_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1830,7 +1901,7 @@ func (x *AddGroupMembersResp) String() string { func (*AddGroupMembersResp) ProtoMessage() {} func (x *AddGroupMembersResp) ProtoReflect() protoreflect.Message { - mi := &file_logic_ext_proto_msgTypes[24] + mi := &file_logic_ext_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1843,7 +1914,7 @@ func (x *AddGroupMembersResp) ProtoReflect() protoreflect.Message { // Deprecated: Use AddGroupMembersResp.ProtoReflect.Descriptor instead. func (*AddGroupMembersResp) Descriptor() ([]byte, []int) { - return file_logic_ext_proto_rawDescGZIP(), []int{24} + return file_logic_ext_proto_rawDescGZIP(), []int{25} } func (x *AddGroupMembersResp) GetUserIds() []int64 { @@ -1868,7 +1939,7 @@ type UpdateGroupMemberReq struct { func (x *UpdateGroupMemberReq) Reset() { *x = UpdateGroupMemberReq{} if protoimpl.UnsafeEnabled { - mi := &file_logic_ext_proto_msgTypes[25] + mi := &file_logic_ext_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1881,7 +1952,7 @@ func (x *UpdateGroupMemberReq) String() string { func (*UpdateGroupMemberReq) ProtoMessage() {} func (x *UpdateGroupMemberReq) ProtoReflect() protoreflect.Message { - mi := &file_logic_ext_proto_msgTypes[25] + mi := &file_logic_ext_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1894,7 +1965,7 @@ func (x *UpdateGroupMemberReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateGroupMemberReq.ProtoReflect.Descriptor instead. func (*UpdateGroupMemberReq) Descriptor() ([]byte, []int) { - return file_logic_ext_proto_rawDescGZIP(), []int{25} + return file_logic_ext_proto_rawDescGZIP(), []int{26} } func (x *UpdateGroupMemberReq) GetGroupId() int64 { @@ -1944,7 +2015,7 @@ type DeleteGroupMemberReq struct { func (x *DeleteGroupMemberReq) Reset() { *x = DeleteGroupMemberReq{} if protoimpl.UnsafeEnabled { - mi := &file_logic_ext_proto_msgTypes[26] + mi := &file_logic_ext_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1957,7 +2028,7 @@ func (x *DeleteGroupMemberReq) String() string { func (*DeleteGroupMemberReq) ProtoMessage() {} func (x *DeleteGroupMemberReq) ProtoReflect() protoreflect.Message { - mi := &file_logic_ext_proto_msgTypes[26] + mi := &file_logic_ext_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1970,7 +2041,7 @@ func (x *DeleteGroupMemberReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteGroupMemberReq.ProtoReflect.Descriptor instead. func (*DeleteGroupMemberReq) Descriptor() ([]byte, []int) { - return file_logic_ext_proto_rawDescGZIP(), []int{26} + return file_logic_ext_proto_rawDescGZIP(), []int{27} } func (x *DeleteGroupMemberReq) GetGroupId() int64 { @@ -1999,7 +2070,7 @@ type GetGroupMembersReq struct { func (x *GetGroupMembersReq) Reset() { *x = GetGroupMembersReq{} if protoimpl.UnsafeEnabled { - mi := &file_logic_ext_proto_msgTypes[27] + mi := &file_logic_ext_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2012,7 +2083,7 @@ func (x *GetGroupMembersReq) String() string { func (*GetGroupMembersReq) ProtoMessage() {} func (x *GetGroupMembersReq) ProtoReflect() protoreflect.Message { - mi := &file_logic_ext_proto_msgTypes[27] + mi := &file_logic_ext_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2025,7 +2096,7 @@ func (x *GetGroupMembersReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGroupMembersReq.ProtoReflect.Descriptor instead. func (*GetGroupMembersReq) Descriptor() ([]byte, []int) { - return file_logic_ext_proto_rawDescGZIP(), []int{27} + return file_logic_ext_proto_rawDescGZIP(), []int{28} } func (x *GetGroupMembersReq) GetGroupId() int64 { @@ -2053,7 +2124,7 @@ type GetGroupMembersResp struct { func (x *GetGroupMembersResp) Reset() { *x = GetGroupMembersResp{} if protoimpl.UnsafeEnabled { - mi := &file_logic_ext_proto_msgTypes[28] + mi := &file_logic_ext_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2066,7 +2137,7 @@ func (x *GetGroupMembersResp) String() string { func (*GetGroupMembersResp) ProtoMessage() {} func (x *GetGroupMembersResp) ProtoReflect() protoreflect.Message { - mi := &file_logic_ext_proto_msgTypes[28] + mi := &file_logic_ext_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2079,7 +2150,7 @@ func (x *GetGroupMembersResp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGroupMembersResp.ProtoReflect.Descriptor instead. func (*GetGroupMembersResp) Descriptor() ([]byte, []int) { - return file_logic_ext_proto_rawDescGZIP(), []int{28} + return file_logic_ext_proto_rawDescGZIP(), []int{29} } func (x *GetGroupMembersResp) GetMembers() []*GroupMember { @@ -2108,7 +2179,7 @@ type GroupMember struct { func (x *GroupMember) Reset() { *x = GroupMember{} if protoimpl.UnsafeEnabled { - mi := &file_logic_ext_proto_msgTypes[29] + mi := &file_logic_ext_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2121,7 +2192,7 @@ func (x *GroupMember) String() string { func (*GroupMember) ProtoMessage() {} func (x *GroupMember) ProtoReflect() protoreflect.Message { - mi := &file_logic_ext_proto_msgTypes[29] + mi := &file_logic_ext_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2134,7 +2205,7 @@ func (x *GroupMember) ProtoReflect() protoreflect.Message { // Deprecated: Use GroupMember.ProtoReflect.Descriptor instead. func (*GroupMember) Descriptor() ([]byte, []int) { - return file_logic_ext_proto_rawDescGZIP(), []int{29} + return file_logic_ext_proto_rawDescGZIP(), []int{30} } func (x *GroupMember) GetUserId() int64 { @@ -2213,7 +2284,7 @@ type SetGroupMemberBannedReq struct { func (x *SetGroupMemberBannedReq) Reset() { *x = SetGroupMemberBannedReq{} if protoimpl.UnsafeEnabled { - mi := &file_logic_ext_proto_msgTypes[30] + mi := &file_logic_ext_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2226,7 +2297,7 @@ func (x *SetGroupMemberBannedReq) String() string { func (*SetGroupMemberBannedReq) ProtoMessage() {} func (x *SetGroupMemberBannedReq) ProtoReflect() protoreflect.Message { - mi := &file_logic_ext_proto_msgTypes[30] + mi := &file_logic_ext_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2239,7 +2310,7 @@ func (x *SetGroupMemberBannedReq) ProtoReflect() protoreflect.Message { // Deprecated: Use SetGroupMemberBannedReq.ProtoReflect.Descriptor instead. func (*SetGroupMemberBannedReq) Descriptor() ([]byte, []int) { - return file_logic_ext_proto_rawDescGZIP(), []int{30} + return file_logic_ext_proto_rawDescGZIP(), []int{31} } func (x *SetGroupMemberBannedReq) GetGroupId() int64 { @@ -2275,7 +2346,7 @@ type SetGroupMemberRemoveBannedReq struct { func (x *SetGroupMemberRemoveBannedReq) Reset() { *x = SetGroupMemberRemoveBannedReq{} if protoimpl.UnsafeEnabled { - mi := &file_logic_ext_proto_msgTypes[31] + mi := &file_logic_ext_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2288,7 +2359,7 @@ func (x *SetGroupMemberRemoveBannedReq) String() string { func (*SetGroupMemberRemoveBannedReq) ProtoMessage() {} func (x *SetGroupMemberRemoveBannedReq) ProtoReflect() protoreflect.Message { - mi := &file_logic_ext_proto_msgTypes[31] + mi := &file_logic_ext_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2301,7 +2372,7 @@ func (x *SetGroupMemberRemoveBannedReq) ProtoReflect() protoreflect.Message { // Deprecated: Use SetGroupMemberRemoveBannedReq.ProtoReflect.Descriptor instead. func (*SetGroupMemberRemoveBannedReq) Descriptor() ([]byte, []int) { - return file_logic_ext_proto_rawDescGZIP(), []int{31} + return file_logic_ext_proto_rawDescGZIP(), []int{32} } func (x *SetGroupMemberRemoveBannedReq) GetGroupId() int64 { @@ -2330,7 +2401,7 @@ type SetGroupMemberBannedResp struct { func (x *SetGroupMemberBannedResp) Reset() { *x = SetGroupMemberBannedResp{} if protoimpl.UnsafeEnabled { - mi := &file_logic_ext_proto_msgTypes[32] + mi := &file_logic_ext_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2343,7 +2414,7 @@ func (x *SetGroupMemberBannedResp) String() string { func (*SetGroupMemberBannedResp) ProtoMessage() {} func (x *SetGroupMemberBannedResp) ProtoReflect() protoreflect.Message { - mi := &file_logic_ext_proto_msgTypes[32] + mi := &file_logic_ext_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2356,7 +2427,7 @@ func (x *SetGroupMemberBannedResp) ProtoReflect() protoreflect.Message { // Deprecated: Use SetGroupMemberBannedResp.ProtoReflect.Descriptor instead. func (*SetGroupMemberBannedResp) Descriptor() ([]byte, []int) { - return file_logic_ext_proto_rawDescGZIP(), []int{32} + return file_logic_ext_proto_rawDescGZIP(), []int{33} } func (x *SetGroupMemberBannedResp) GetIsAllMemberBanned() AllMemberBannedType { @@ -2384,7 +2455,7 @@ type GetGroupBannedMembersReq struct { func (x *GetGroupBannedMembersReq) Reset() { *x = GetGroupBannedMembersReq{} if protoimpl.UnsafeEnabled { - mi := &file_logic_ext_proto_msgTypes[33] + mi := &file_logic_ext_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2397,7 +2468,7 @@ func (x *GetGroupBannedMembersReq) String() string { func (*GetGroupBannedMembersReq) ProtoMessage() {} func (x *GetGroupBannedMembersReq) ProtoReflect() protoreflect.Message { - mi := &file_logic_ext_proto_msgTypes[33] + mi := &file_logic_ext_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2410,7 +2481,7 @@ func (x *GetGroupBannedMembersReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGroupBannedMembersReq.ProtoReflect.Descriptor instead. func (*GetGroupBannedMembersReq) Descriptor() ([]byte, []int) { - return file_logic_ext_proto_rawDescGZIP(), []int{33} + return file_logic_ext_proto_rawDescGZIP(), []int{34} } func (x *GetGroupBannedMembersReq) GetGroupId() int64 { @@ -2431,7 +2502,7 @@ type GetGroupBannedMembersResp struct { func (x *GetGroupBannedMembersResp) Reset() { *x = GetGroupBannedMembersResp{} if protoimpl.UnsafeEnabled { - mi := &file_logic_ext_proto_msgTypes[34] + mi := &file_logic_ext_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2444,7 +2515,7 @@ func (x *GetGroupBannedMembersResp) String() string { func (*GetGroupBannedMembersResp) ProtoMessage() {} func (x *GetGroupBannedMembersResp) ProtoReflect() protoreflect.Message { - mi := &file_logic_ext_proto_msgTypes[34] + mi := &file_logic_ext_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2457,7 +2528,7 @@ func (x *GetGroupBannedMembersResp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGroupBannedMembersResp.ProtoReflect.Descriptor instead. func (*GetGroupBannedMembersResp) Descriptor() ([]byte, []int) { - return file_logic_ext_proto_rawDescGZIP(), []int{34} + return file_logic_ext_proto_rawDescGZIP(), []int{35} } func (x *GetGroupBannedMembersResp) GetMembers() []*GroupMember { @@ -2479,7 +2550,7 @@ type SetGroupAddFriendReq struct { func (x *SetGroupAddFriendReq) Reset() { *x = SetGroupAddFriendReq{} if protoimpl.UnsafeEnabled { - mi := &file_logic_ext_proto_msgTypes[35] + mi := &file_logic_ext_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2492,7 +2563,7 @@ func (x *SetGroupAddFriendReq) String() string { func (*SetGroupAddFriendReq) ProtoMessage() {} func (x *SetGroupAddFriendReq) ProtoReflect() protoreflect.Message { - mi := &file_logic_ext_proto_msgTypes[35] + mi := &file_logic_ext_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2505,7 +2576,7 @@ func (x *SetGroupAddFriendReq) ProtoReflect() protoreflect.Message { // Deprecated: Use SetGroupAddFriendReq.ProtoReflect.Descriptor instead. func (*SetGroupAddFriendReq) Descriptor() ([]byte, []int) { - return file_logic_ext_proto_rawDescGZIP(), []int{35} + return file_logic_ext_proto_rawDescGZIP(), []int{36} } func (x *SetGroupAddFriendReq) GetGroupId() int64 { @@ -2526,398 +2597,411 @@ var File_logic_ext_proto protoreflect.FileDescriptor var file_logic_ext_proto_rawDesc = []byte{ 0x0a, 0x0f, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x2e, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x12, 0x02, 0x70, 0x62, 0x1a, 0x10, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x65, 0x78, - 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x11, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x2e, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x9b, 0x01, 0x0a, 0x11, 0x52, - 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, - 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, - 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6f, - 0x64, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, - 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, - 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x64, 0x6b, 0x5f, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x64, - 0x6b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x31, 0x0a, 0x12, 0x52, 0x65, 0x67, 0x69, - 0x73, 0x74, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1b, - 0x0a, 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x22, 0xd3, 0x02, 0x0a, 0x0e, - 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x12, 0x35, + 0x6f, 0x12, 0x02, 0x70, 0x62, 0x1a, 0x12, 0x62, 0x75, 0x73, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x2e, + 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x10, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x2e, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x11, 0x63, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x9b, + 0x01, 0x0a, 0x11, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x72, 0x61, 0x6e, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x12, 0x14, + 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, + 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x79, + 0x73, 0x74, 0x65, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x73, + 0x64, 0x6b, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x73, 0x64, 0x6b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x31, 0x0a, 0x12, + 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x22, + 0xd3, 0x02, 0x0a, 0x0e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, + 0x65, 0x71, 0x12, 0x35, 0x0a, 0x0d, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x70, 0x62, 0x2e, 0x52, + 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x72, 0x65, 0x63, + 0x65, 0x69, 0x76, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x63, + 0x65, 0x69, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, + 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0b, 0x74, 0x6f, + 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, 0x52, + 0x09, 0x74, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x32, 0x0a, 0x0c, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x27, + 0x0a, 0x0f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x65, 0x6e, 0x64, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x73, 0x65, 0x6e, 0x64, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x73, 0x69, + 0x73, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x50, 0x65, 0x72, 0x73, + 0x69, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x14, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x12, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x42, 0x61, 0x63, 0x6b, 0x22, 0x23, 0x0a, 0x0f, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65, 0x71, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x73, 0x65, 0x71, 0x22, 0xd5, 0x02, 0x0a, 0x10, 0x52, + 0x65, 0x63, 0x61, 0x6c, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x12, + 0x35, 0x0a, 0x0d, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x63, 0x65, + 0x69, 0x76, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, + 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, + 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x72, 0x65, 0x63, + 0x65, 0x69, 0x76, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0b, 0x74, 0x6f, 0x5f, 0x75, 0x73, + 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, 0x52, 0x09, 0x74, 0x6f, + 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x32, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, + 0x70, 0x62, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, + 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x73, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, + 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, + 0x12, 0x30, 0x0a, 0x14, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x42, 0x61, + 0x63, 0x6b, 0x22, 0x25, 0x0a, 0x11, 0x52, 0x65, 0x63, 0x61, 0x6c, 0x6c, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65, 0x71, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x73, 0x65, 0x71, 0x22, 0xb6, 0x02, 0x0a, 0x10, 0x53, 0x65, + 0x6e, 0x64, 0x52, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x12, 0x35, 0x0a, 0x0d, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x72, 0x65, 0x63, 0x65, - 0x69, 0x76, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0b, 0x74, 0x6f, 0x5f, 0x75, 0x73, 0x65, - 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, 0x52, 0x09, 0x74, 0x6f, 0x55, - 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x32, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x70, + 0x69, 0x76, 0x65, 0x72, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x6d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x73, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, - 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x12, - 0x30, 0x0a, 0x14, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x6e, 0x74, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x42, 0x61, 0x63, - 0x6b, 0x22, 0x23, 0x0a, 0x0f, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65, 0x71, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x03, 0x73, 0x65, 0x71, 0x22, 0xd5, 0x02, 0x0a, 0x10, 0x52, 0x65, 0x63, 0x61, 0x6c, - 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x12, 0x35, 0x0a, 0x0d, 0x72, - 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, - 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x5f, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x72, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0b, 0x74, 0x6f, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, - 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, 0x52, 0x09, 0x74, 0x6f, 0x55, 0x73, 0x65, 0x72, - 0x49, 0x64, 0x73, 0x12, 0x32, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x0e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x08, 0x73, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1d, 0x0a, - 0x0a, 0x69, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x09, 0x69, 0x73, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x14, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, - 0x62, 0x61, 0x63, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x22, 0x25, - 0x0a, 0x11, 0x52, 0x65, 0x63, 0x61, 0x6c, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65, 0x71, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x03, 0x73, 0x65, 0x71, 0x22, 0xb6, 0x02, 0x0a, 0x10, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, - 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x12, 0x35, 0x0a, 0x0d, 0x72, 0x65, - 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x10, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x54, - 0x79, 0x70, 0x65, 0x52, 0x0c, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x73, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x1e, 0x0a, 0x0b, 0x74, 0x6f, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, + 0x06, 0x20, 0x03, 0x28, 0x03, 0x52, 0x09, 0x74, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, + 0x12, 0x30, 0x0a, 0x14, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x42, 0x61, + 0x63, 0x6b, 0x22, 0x25, 0x0a, 0x11, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x64, 0x50, 0x61, 0x63, + 0x6b, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65, 0x71, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x73, 0x65, 0x71, 0x22, 0xe0, 0x01, 0x0a, 0x0b, 0x50, 0x75, + 0x73, 0x68, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x65, 0x71, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6f, + 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x72, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, + 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, - 0x1b, 0x0a, 0x09, 0x73, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x08, 0x73, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0b, - 0x74, 0x6f, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, - 0x03, 0x52, 0x09, 0x74, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x30, 0x0a, 0x14, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, - 0x62, 0x61, 0x63, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x22, 0x25, - 0x0a, 0x11, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65, 0x71, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x03, 0x73, 0x65, 0x71, 0x22, 0xe0, 0x01, 0x0a, 0x0b, 0x50, 0x75, 0x73, 0x68, 0x52, 0x6f, - 0x6f, 0x6d, 0x52, 0x65, 0x71, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x72, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x32, - 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x73, - 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, - 0x73, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x70, - 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, - 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x70, 0x72, - 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, - 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 0x67, 0x0a, 0x0c, 0x41, 0x64, 0x64, 0x46, - 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x72, 0x69, 0x65, - 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x66, 0x72, 0x69, - 0x65, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 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, 0x22, 0x2a, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, - 0x64, 0x52, 0x65, 0x71, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x46, 0x0a, - 0x11, 0x41, 0x67, 0x72, 0x65, 0x65, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, - 0x65, 0x71, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, - 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, - 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x22, 0x5b, 0x0a, 0x0c, 0x53, 0x65, 0x74, 0x46, 0x72, 0x69, 0x65, - 0x6e, 0x64, 0x52, 0x65, 0x71, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, - 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x12, 0x14, 0x0a, 0x05, - 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x78, 0x74, - 0x72, 0x61, 0x22, 0x5c, 0x0a, 0x0d, 0x53, 0x65, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x64, - 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x78, - 0x74, 0x72, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, - 0x22, 0xe0, 0x01, 0x0a, 0x06, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, - 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, - 0x65, 0x72, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x5f, 0x6e, 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, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x03, 0x73, 0x65, 0x78, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, - 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x76, 0x61, 0x74, 0x61, - 0x72, 0x55, 0x72, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x65, 0x78, 0x74, - 0x72, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x45, 0x78, - 0x74, 0x72, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x12, 0x14, 0x0a, - 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x78, - 0x74, 0x72, 0x61, 0x22, 0x36, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x24, 0x0a, 0x07, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x72, 0x69, 0x65, - 0x6e, 0x64, 0x52, 0x07, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x22, 0x9c, 0x01, 0x0a, 0x0e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 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, 0x1d, 0x0a, 0x0a, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, 0x75, 0x72, 0x6c, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x55, 0x72, - 0x6c, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x03, 0x52, - 0x09, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0x2c, 0x0a, 0x0f, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x19, 0x0a, - 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x22, 0x98, 0x01, 0x0a, 0x0e, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, 0x19, 0x0a, 0x08, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, + 0x1b, 0x0a, 0x09, 0x73, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x08, 0x73, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, + 0x69, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x09, 0x69, 0x73, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, + 0x73, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0a, 0x69, 0x73, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 0x67, 0x0a, 0x0c, + 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x12, 0x1b, 0x0a, 0x09, + 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x08, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, + 0x61, 0x72, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x61, + 0x72, 0x6b, 0x73, 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, 0x22, 0x2a, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, + 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, + 0x64, 0x22, 0x46, 0x0a, 0x11, 0x41, 0x67, 0x72, 0x65, 0x65, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, + 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, + 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x22, 0x5b, 0x0a, 0x0c, 0x53, 0x65, 0x74, + 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x72, 0x69, + 0x65, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x66, 0x72, + 0x69, 0x65, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, + 0x12, 0x14, 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x22, 0x5c, 0x0a, 0x0d, 0x53, 0x65, 0x74, 0x46, 0x72, 0x69, + 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x72, 0x69, 0x65, 0x6e, + 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x66, 0x72, 0x69, 0x65, + 0x6e, 0x64, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x12, 0x14, + 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, + 0x78, 0x74, 0x72, 0x61, 0x22, 0xe0, 0x01, 0x0a, 0x06, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, + 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x68, 0x6f, 0x6e, + 0x65, 0x5f, 0x6e, 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, 0x1a, 0x0a, 0x08, 0x6e, + 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, + 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65, 0x78, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x73, 0x65, 0x78, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x76, 0x61, + 0x74, 0x61, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, + 0x76, 0x61, 0x74, 0x61, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, + 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x73, + 0x65, 0x72, 0x45, 0x78, 0x74, 0x72, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x61, 0x72, + 0x6b, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, + 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x22, 0x36, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x46, 0x72, + 0x69, 0x65, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x24, 0x0a, 0x07, 0x66, 0x72, 0x69, + 0x65, 0x6e, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x70, 0x62, 0x2e, + 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x07, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x22, + 0x9c, 0x01, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 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, 0x1d, 0x0a, 0x0a, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x76, 0x61, 0x74, - 0x61, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x6e, 0x74, - 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, - 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x78, - 0x74, 0x72, 0x61, 0x22, 0x28, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, - 0x65, 0x71, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x22, 0xae, 0x01, - 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1f, - 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, - 0x70, 0x62, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, - 0x2f, 0x0a, 0x0b, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x4c, 0x0a, 0x16, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x17, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x55, 0x73, 0x65, 0x72, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x52, 0x13, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x55, 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x22, 0xc8, - 0x02, 0x0a, 0x05, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x76, 0x61, 0x74, 0x61, - 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x76, 0x61, - 0x74, 0x61, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x64, - 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, - 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x75, 0x73, - 0x65, 0x72, 0x5f, 0x6d, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x75, 0x73, - 0x65, 0x72, 0x4d, 0x75, 0x6d, 0x12, 0x2f, 0x0a, 0x14, 0x69, 0x73, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, - 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x11, 0x69, 0x73, 0x41, 0x6c, 0x6c, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x12, 0x29, 0x0a, 0x11, 0x69, 0x73, 0x5f, 0x61, 0x6c, 0x6c, - 0x5f, 0x61, 0x64, 0x64, 0x5f, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0e, 0x69, 0x73, 0x41, 0x6c, 0x6c, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, - 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 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, 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, 0x32, 0x0a, 0x0d, 0x47, 0x65, 0x74, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x21, 0x0a, 0x06, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x70, 0x62, 0x2e, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x22, 0x4a, 0x0a, - 0x12, 0x41, 0x64, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, - 0x52, 0x65, 0x71, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x19, - 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, - 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0x30, 0x0a, 0x13, 0x41, 0x64, 0x64, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x12, 0x19, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x03, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0xab, 0x01, 0x0a, 0x14, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x52, 0x65, 0x71, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, - 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x0b, 0x6d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e, 0x2e, - 0x70, 0x62, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x6d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, - 0x61, 0x72, 0x6b, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x61, - 0x72, 0x6b, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x22, 0x4a, 0x0a, 0x14, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, - 0x71, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, - 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, - 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x45, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x12, 0x19, 0x0a, 0x08, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x40, 0x0a, 0x13, - 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x29, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x22, 0x8b, - 0x02, 0x0a, 0x0b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x17, - 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 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, 0x10, 0x0a, 0x03, 0x73, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x03, 0x73, 0x65, 0x78, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, - 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x76, 0x61, 0x74, 0x61, - 0x72, 0x55, 0x72, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x65, 0x78, 0x74, - 0x72, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x45, 0x78, - 0x74, 0x72, 0x61, 0x12, 0x2f, 0x0a, 0x0b, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, + 0x61, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x74, + 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x78, 0x74, + 0x72, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x12, + 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x05, 0x20, + 0x03, 0x28, 0x03, 0x52, 0x09, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0x2c, + 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x22, 0x98, 0x01, 0x0a, + 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, + 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x76, + 0x61, 0x74, 0x61, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, + 0x0c, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x22, 0x28, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, + 0x64, 0x22, 0xe2, 0x01, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x1f, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x05, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x12, 0x2f, 0x0a, 0x0b, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x12, 0x14, - 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, - 0x78, 0x74, 0x72, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x99, 0x01, 0x0a, - 0x17, 0x53, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x42, - 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x52, 0x65, 0x71, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x48, - 0x0a, 0x14, 0x69, 0x73, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, - 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x70, - 0x62, 0x2e, 0x41, 0x6c, 0x6c, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x42, 0x61, 0x6e, 0x6e, 0x65, - 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x11, 0x69, 0x73, 0x41, 0x6c, 0x6c, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x22, 0x62, 0x0a, 0x1d, 0x53, 0x65, 0x74, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, - 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x52, 0x65, 0x71, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x75, - 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0d, 0x72, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0x8f, 0x01, 0x0a, - 0x18, 0x53, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x42, - 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x48, 0x0a, 0x14, 0x69, 0x73, 0x5f, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x4c, 0x0a, 0x16, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x75, 0x73, + 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x55, + 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x52, 0x13, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x55, 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x32, 0x0a, 0x0c, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x6f, 0x74, 0x69, + 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x52, 0x0b, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x22, 0x89, 0x01, 0x0a, 0x0b, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 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, + 0x12, 0x3d, 0x0a, 0x0c, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x21, 0x0a, 0x0c, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x54, 0x69, + 0x6d, 0x65, 0x22, 0xc8, 0x02, 0x0a, 0x05, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x19, 0x0a, 0x08, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61, + 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x6e, + 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, + 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x4d, 0x75, 0x6d, 0x12, 0x2f, 0x0a, 0x14, 0x69, 0x73, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x62, 0x61, 0x6e, 0x6e, 0x65, - 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x6c, 0x6c, - 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, - 0x52, 0x11, 0x69, 0x73, 0x41, 0x6c, 0x6c, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x42, 0x61, 0x6e, - 0x6e, 0x65, 0x64, 0x12, 0x29, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x22, 0x35, - 0x0a, 0x18, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x64, - 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x49, 0x64, 0x22, 0x46, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x29, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x22, 0x72, 0x0a, - 0x14, 0x53, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, - 0x6e, 0x64, 0x52, 0x65, 0x71, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, + 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x69, 0x73, 0x41, 0x6c, 0x6c, 0x4d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x12, 0x29, 0x0a, 0x11, 0x69, 0x73, + 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x5f, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x69, 0x73, 0x41, 0x6c, 0x6c, 0x41, 0x64, 0x64, 0x46, + 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 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, 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, 0x32, 0x0a, + 0x0d, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x21, + 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x09, + 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x73, 0x22, 0x4a, 0x0a, 0x12, 0x41, 0x64, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x03, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0x30, 0x0a, + 0x13, 0x41, 0x64, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x19, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x03, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, + 0xab, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x0b, + 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x54, 0x79, 0x70, + 0x65, 0x52, 0x0a, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x22, 0x4a, 0x0a, + 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, - 0x12, 0x3f, 0x0a, 0x11, 0x69, 0x73, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x5f, 0x66, - 0x72, 0x69, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x62, - 0x2e, 0x41, 0x6c, 0x6c, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x54, 0x79, 0x70, - 0x65, 0x52, 0x0e, 0x69, 0x73, 0x41, 0x6c, 0x6c, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, - 0x64, 0x2a, 0x4c, 0x0a, 0x0a, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x0f, 0x0a, 0x0b, 0x47, 0x4d, 0x54, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, - 0x12, 0x0d, 0x0a, 0x09, 0x47, 0x4d, 0x54, 0x5f, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x10, 0x01, 0x12, - 0x0e, 0x0a, 0x0a, 0x47, 0x4d, 0x54, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x10, 0x02, 0x12, - 0x0e, 0x0a, 0x0a, 0x47, 0x4d, 0x54, 0x5f, 0x4d, 0x41, 0x4e, 0x41, 0x47, 0x45, 0x10, 0x03, 0x2a, - 0x6a, 0x0a, 0x13, 0x41, 0x6c, 0x6c, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x42, 0x61, 0x6e, 0x6e, - 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x19, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, - 0x4e, 0x5f, 0x41, 0x6c, 0x6c, 0x5f, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x42, 0x61, 0x6e, - 0x6e, 0x65, 0x64, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x59, 0x45, 0x53, 0x5f, 0x41, 0x6c, 0x6c, - 0x5f, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x10, 0x01, - 0x12, 0x19, 0x0a, 0x15, 0x4e, 0x4f, 0x54, 0x5f, 0x41, 0x6c, 0x6c, 0x5f, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x5f, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x10, 0x02, 0x2a, 0x5e, 0x0a, 0x10, 0x41, - 0x6c, 0x6c, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x1a, 0x0a, 0x16, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x41, 0x6c, 0x6c, 0x5f, 0x41, - 0x64, 0x64, 0x5f, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x59, - 0x45, 0x53, 0x5f, 0x41, 0x6c, 0x6c, 0x5f, 0x41, 0x64, 0x64, 0x5f, 0x46, 0x72, 0x69, 0x65, 0x6e, - 0x64, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x4e, 0x4f, 0x54, 0x5f, 0x41, 0x6c, 0x6c, 0x5f, 0x41, - 0x64, 0x64, 0x5f, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x10, 0x02, 0x32, 0x81, 0x0a, 0x0a, 0x08, - 0x4c, 0x6f, 0x67, 0x69, 0x63, 0x45, 0x78, 0x74, 0x12, 0x3f, 0x0a, 0x0e, 0x52, 0x65, 0x67, 0x69, - 0x73, 0x74, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x15, 0x2e, 0x70, 0x62, 0x2e, - 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, - 0x71, 0x1a, 0x16, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x44, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x36, 0x0a, 0x0b, 0x53, 0x65, 0x6e, - 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x12, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, - 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x70, - 0x62, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x3c, 0x0a, 0x0d, 0x52, 0x65, 0x63, 0x61, 0x6c, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x12, 0x14, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x63, 0x61, 0x6c, 0x6c, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, - 0x63, 0x61, 0x6c, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x26, 0x0a, 0x08, 0x50, 0x75, 0x73, 0x68, 0x52, 0x6f, 0x6f, 0x6d, 0x12, 0x0f, 0x2e, 0x70, 0x62, - 0x2e, 0x50, 0x75, 0x73, 0x68, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x70, - 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x3c, 0x0a, 0x0d, 0x53, 0x65, 0x6e, 0x64, 0x52, - 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x14, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, - 0x6e, 0x64, 0x52, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x15, - 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x28, 0x0a, 0x09, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, - 0x6e, 0x64, 0x12, 0x10, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, - 0x64, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, - 0x32, 0x0a, 0x0e, 0x41, 0x67, 0x72, 0x65, 0x65, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, - 0x64, 0x12, 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x67, 0x72, 0x65, 0x65, 0x41, 0x64, 0x64, 0x46, + 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x45, 0x0a, 0x12, 0x47, 0x65, 0x74, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x12, + 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x22, 0x40, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x29, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x73, 0x22, 0x8b, 0x02, 0x0a, 0x0b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 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, 0x10, 0x0a, 0x03, 0x73, 0x65, 0x78, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x73, 0x65, 0x78, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x76, 0x61, + 0x74, 0x61, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, + 0x76, 0x61, 0x74, 0x61, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, + 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x73, + 0x65, 0x72, 0x45, 0x78, 0x74, 0x72, 0x61, 0x12, 0x2f, 0x0a, 0x0b, 0x6d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e, 0x2e, 0x70, + 0x62, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x6d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x61, + 0x72, 0x6b, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x61, 0x72, + 0x6b, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x22, 0x99, 0x01, 0x0a, 0x17, 0x53, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x52, 0x65, 0x71, 0x12, 0x19, 0x0a, 0x08, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, + 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, + 0x64, 0x73, 0x12, 0x48, 0x0a, 0x14, 0x69, 0x73, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x6d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x5f, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x17, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x6c, 0x6c, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x42, + 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x11, 0x69, 0x73, 0x41, 0x6c, 0x6c, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x22, 0x62, 0x0a, 0x1d, + 0x53, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x52, 0x65, 0x71, 0x12, 0x19, 0x0a, + 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x72, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x03, 0x52, 0x0d, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, + 0x22, 0x8f, 0x01, 0x0a, 0x18, 0x53, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x48, 0x0a, + 0x14, 0x69, 0x73, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x62, + 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x70, 0x62, + 0x2e, 0x41, 0x6c, 0x6c, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x64, + 0x54, 0x79, 0x70, 0x65, 0x52, 0x11, 0x69, 0x73, 0x41, 0x6c, 0x6c, 0x4d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x12, 0x29, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x73, 0x22, 0x35, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x61, + 0x6e, 0x6e, 0x65, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x12, 0x19, + 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x22, 0x46, 0x0a, 0x19, 0x47, 0x65, 0x74, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x29, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x73, 0x22, 0x72, 0x0a, 0x14, 0x53, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x64, 0x64, + 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x49, 0x64, 0x12, 0x3f, 0x0a, 0x11, 0x69, 0x73, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x61, + 0x64, 0x64, 0x5f, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x14, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x6c, 0x6c, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, + 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0e, 0x69, 0x73, 0x41, 0x6c, 0x6c, 0x41, 0x64, 0x64, 0x46, + 0x72, 0x69, 0x65, 0x6e, 0x64, 0x2a, 0x4c, 0x0a, 0x0a, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x47, 0x4d, 0x54, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, + 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x47, 0x4d, 0x54, 0x5f, 0x41, 0x44, 0x4d, 0x49, + 0x4e, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x47, 0x4d, 0x54, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, + 0x52, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x47, 0x4d, 0x54, 0x5f, 0x4d, 0x41, 0x4e, 0x41, 0x47, + 0x45, 0x10, 0x03, 0x2a, 0x6a, 0x0a, 0x13, 0x41, 0x6c, 0x6c, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x19, 0x55, 0x4e, + 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x41, 0x6c, 0x6c, 0x5f, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x5f, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x59, 0x45, 0x53, + 0x5f, 0x41, 0x6c, 0x6c, 0x5f, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x42, 0x61, 0x6e, 0x6e, + 0x65, 0x64, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x4e, 0x4f, 0x54, 0x5f, 0x41, 0x6c, 0x6c, 0x5f, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x10, 0x02, 0x2a, + 0x5e, 0x0a, 0x10, 0x41, 0x6c, 0x6c, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x41, + 0x6c, 0x6c, 0x5f, 0x41, 0x64, 0x64, 0x5f, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x10, 0x00, 0x12, + 0x16, 0x0a, 0x12, 0x59, 0x45, 0x53, 0x5f, 0x41, 0x6c, 0x6c, 0x5f, 0x41, 0x64, 0x64, 0x5f, 0x46, + 0x72, 0x69, 0x65, 0x6e, 0x64, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x4e, 0x4f, 0x54, 0x5f, 0x41, + 0x6c, 0x6c, 0x5f, 0x41, 0x64, 0x64, 0x5f, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x10, 0x02, 0x32, + 0x81, 0x0a, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x69, 0x63, 0x45, 0x78, 0x74, 0x12, 0x3f, 0x0a, 0x0e, + 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x15, + 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, + 0x74, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x36, 0x0a, + 0x0b, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x12, 0x2e, 0x70, + 0x62, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, + 0x1a, 0x13, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3c, 0x0a, 0x0d, 0x52, 0x65, 0x63, 0x61, 0x6c, 0x6c, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x63, 0x61, + 0x6c, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x70, + 0x62, 0x2e, 0x52, 0x65, 0x63, 0x61, 0x6c, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x26, 0x0a, 0x08, 0x50, 0x75, 0x73, 0x68, 0x52, 0x6f, 0x6f, 0x6d, 0x12, + 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x65, 0x71, + 0x1a, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x3c, 0x0a, 0x0d, 0x53, + 0x65, 0x6e, 0x64, 0x52, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x14, 0x2e, 0x70, + 0x62, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x52, + 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x64, 0x50, + 0x61, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x28, 0x0a, 0x09, 0x41, 0x64, 0x64, + 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x10, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, - 0x70, 0x74, 0x79, 0x12, 0x2e, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x69, - 0x65, 0x6e, 0x64, 0x12, 0x13, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, + 0x70, 0x74, 0x79, 0x12, 0x32, 0x0a, 0x0e, 0x41, 0x67, 0x72, 0x65, 0x65, 0x41, 0x64, 0x64, 0x46, + 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x67, 0x72, 0x65, 0x65, + 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x70, + 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x2e, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x13, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x70, + 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x30, 0x0a, 0x09, 0x53, 0x65, 0x74, 0x46, 0x72, + 0x69, 0x65, 0x6e, 0x64, 0x12, 0x10, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x74, 0x46, 0x72, 0x69, + 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x74, 0x46, + 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2b, 0x0a, 0x0a, 0x47, 0x65, 0x74, + 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x12, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x1a, 0x12, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, + 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x36, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x12, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x70, 0x62, 0x2e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2c, + 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x12, 0x2e, + 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, + 0x71, 0x1a, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x2d, 0x0a, 0x08, + 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, + 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x10, 0x2e, 0x70, 0x62, 0x2e, 0x47, + 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x29, 0x0a, 0x09, 0x47, + 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x42, 0x0a, 0x0f, 0x41, 0x64, 0x64, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x2e, 0x41, + 0x64, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, + 0x71, 0x1a, 0x17, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x64, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x38, 0x0a, 0x11, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, + 0x18, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x12, 0x38, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x18, 0x2e, 0x70, 0x62, 0x2e, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x42, + 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x73, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x70, 0x62, 0x2e, 0x47, + 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x52, 0x0a, 0x15, 0x53, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x61, + 0x6e, 0x6e, 0x65, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x1b, 0x2e, 0x70, 0x62, + 0x2e, 0x53, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x42, + 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, + 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x42, 0x61, 0x6e, 0x6e, + 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4b, 0x0a, 0x1b, 0x53, 0x65, 0x74, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x4d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x21, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x74, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, + 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x12, 0x54, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, + 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x1c, 0x2e, 0x70, + 0x62, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x64, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x70, 0x62, 0x2e, + 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x4d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x38, 0x0a, 0x11, 0x53, 0x65, 0x74, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x18, + 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, - 0x70, 0x74, 0x79, 0x12, 0x30, 0x0a, 0x09, 0x53, 0x65, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, - 0x12, 0x10, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, - 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, - 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2b, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x46, 0x72, 0x69, 0x65, - 0x6e, 0x64, 0x73, 0x12, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x12, - 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x36, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x12, 0x12, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2c, 0x0a, 0x0b, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x12, 0x2e, 0x70, 0x62, 0x2e, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, - 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x2d, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x10, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x29, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x73, 0x12, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, - 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x42, 0x0a, 0x0f, 0x41, 0x64, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x64, 0x64, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, - 0x70, 0x62, 0x2e, 0x41, 0x64, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x38, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x18, 0x2e, 0x70, 0x62, - 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, - 0x12, 0x38, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x18, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, - 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x42, 0x0a, 0x0f, 0x47, 0x65, - 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x16, 0x2e, - 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x52, - 0x0a, 0x15, 0x53, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x64, - 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x1b, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x74, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x42, 0x61, 0x6e, 0x6e, 0x65, - 0x64, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x74, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x4b, 0x0a, 0x1b, 0x53, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x73, 0x12, 0x21, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x61, 0x6e, 0x6e, 0x65, - 0x64, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, - 0x54, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x61, 0x6e, 0x6e, 0x65, - 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, - 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x38, 0x0a, 0x11, 0x53, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x18, 0x2e, 0x70, 0x62, 0x2e, - 0x53, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, - 0x64, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x42, - 0x0d, 0x5a, 0x0b, 0x67, 0x69, 0x6d, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x62, 0x2f, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x70, 0x74, 0x79, 0x42, 0x10, 0x5a, 0x0e, 0x65, 0x67, 0x67, 0x2d, 0x69, 0x6d, 0x2f, 0x70, 0x6b, + 0x67, 0x2f, 0x70, 0x62, 0x2f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2933,7 +3017,7 @@ func file_logic_ext_proto_rawDescGZIP() []byte { } var file_logic_ext_proto_enumTypes = make([]protoimpl.EnumInfo, 3) -var file_logic_ext_proto_msgTypes = make([]protoimpl.MessageInfo, 36) +var file_logic_ext_proto_msgTypes = make([]protoimpl.MessageInfo, 37) var file_logic_ext_proto_goTypes = []interface{}{ (MemberType)(0), // 0: pb.MemberType (AllMemberBannedType)(0), // 1: pb.AllMemberBannedType @@ -2959,96 +3043,100 @@ var file_logic_ext_proto_goTypes = []interface{}{ (*UpdateGroupReq)(nil), // 21: pb.UpdateGroupReq (*GetGroupReq)(nil), // 22: pb.GetGroupReq (*GetGroupResp)(nil), // 23: pb.GetGroupResp - (*Group)(nil), // 24: pb.Group - (*GetGroupsResp)(nil), // 25: pb.GetGroupsResp - (*AddGroupMembersReq)(nil), // 26: pb.AddGroupMembersReq - (*AddGroupMembersResp)(nil), // 27: pb.AddGroupMembersResp - (*UpdateGroupMemberReq)(nil), // 28: pb.UpdateGroupMemberReq - (*DeleteGroupMemberReq)(nil), // 29: pb.DeleteGroupMemberReq - (*GetGroupMembersReq)(nil), // 30: pb.GetGroupMembersReq - (*GetGroupMembersResp)(nil), // 31: pb.GetGroupMembersResp - (*GroupMember)(nil), // 32: pb.GroupMember - (*SetGroupMemberBannedReq)(nil), // 33: pb.SetGroupMemberBannedReq - (*SetGroupMemberRemoveBannedReq)(nil), // 34: pb.SetGroupMemberRemoveBannedReq - (*SetGroupMemberBannedResp)(nil), // 35: pb.SetGroupMemberBannedResp - (*GetGroupBannedMembersReq)(nil), // 36: pb.GetGroupBannedMembersReq - (*GetGroupBannedMembersResp)(nil), // 37: pb.GetGroupBannedMembersResp - (*SetGroupAddFriendReq)(nil), // 38: pb.SetGroupAddFriendReq - (ReceiverType)(0), // 39: pb.ReceiverType - (MessageType)(0), // 40: pb.MessageType - (GroupUserStatusType)(0), // 41: pb.GroupUserStatusType - (*Empty)(nil), // 42: pb.Empty + (*GroupNotice)(nil), // 24: pb.GroupNotice + (*Group)(nil), // 25: pb.Group + (*GetGroupsResp)(nil), // 26: pb.GetGroupsResp + (*AddGroupMembersReq)(nil), // 27: pb.AddGroupMembersReq + (*AddGroupMembersResp)(nil), // 28: pb.AddGroupMembersResp + (*UpdateGroupMemberReq)(nil), // 29: pb.UpdateGroupMemberReq + (*DeleteGroupMemberReq)(nil), // 30: pb.DeleteGroupMemberReq + (*GetGroupMembersReq)(nil), // 31: pb.GetGroupMembersReq + (*GetGroupMembersResp)(nil), // 32: pb.GetGroupMembersResp + (*GroupMember)(nil), // 33: pb.GroupMember + (*SetGroupMemberBannedReq)(nil), // 34: pb.SetGroupMemberBannedReq + (*SetGroupMemberRemoveBannedReq)(nil), // 35: pb.SetGroupMemberRemoveBannedReq + (*SetGroupMemberBannedResp)(nil), // 36: pb.SetGroupMemberBannedResp + (*GetGroupBannedMembersReq)(nil), // 37: pb.GetGroupBannedMembersReq + (*GetGroupBannedMembersResp)(nil), // 38: pb.GetGroupBannedMembersResp + (*SetGroupAddFriendReq)(nil), // 39: pb.SetGroupAddFriendReq + (ReceiverType)(0), // 40: pb.ReceiverType + (MessageType)(0), // 41: pb.MessageType + (GroupUserStatusType)(0), // 42: pb.GroupUserStatusType + (GroupNoticePublishType)(0), // 43: pb.GroupNoticePublishType + (*Empty)(nil), // 44: pb.Empty } var file_logic_ext_proto_depIdxs = []int32{ - 39, // 0: pb.SendMessageReq.receiver_type:type_name -> pb.ReceiverType - 40, // 1: pb.SendMessageReq.message_type:type_name -> pb.MessageType - 39, // 2: pb.RecallMessageReq.receiver_type:type_name -> pb.ReceiverType - 40, // 3: pb.RecallMessageReq.message_type:type_name -> pb.MessageType - 39, // 4: pb.SendRedPacketReq.receiver_type:type_name -> pb.ReceiverType - 40, // 5: pb.SendRedPacketReq.message_type:type_name -> pb.MessageType - 40, // 6: pb.PushRoomReq.message_type:type_name -> pb.MessageType + 40, // 0: pb.SendMessageReq.receiver_type:type_name -> pb.ReceiverType + 41, // 1: pb.SendMessageReq.message_type:type_name -> pb.MessageType + 40, // 2: pb.RecallMessageReq.receiver_type:type_name -> pb.ReceiverType + 41, // 3: pb.RecallMessageReq.message_type:type_name -> pb.MessageType + 40, // 4: pb.SendRedPacketReq.receiver_type:type_name -> pb.ReceiverType + 41, // 5: pb.SendRedPacketReq.message_type:type_name -> pb.MessageType + 41, // 6: pb.PushRoomReq.message_type:type_name -> pb.MessageType 17, // 7: pb.GetFriendsResp.friends:type_name -> pb.Friend - 24, // 8: pb.GetGroupResp.group:type_name -> pb.Group + 25, // 8: pb.GetGroupResp.group:type_name -> pb.Group 0, // 9: pb.GetGroupResp.member_type:type_name -> pb.MemberType - 41, // 10: pb.GetGroupResp.group_user_status_type:type_name -> pb.GroupUserStatusType - 24, // 11: pb.GetGroupsResp.groups:type_name -> pb.Group - 0, // 12: pb.UpdateGroupMemberReq.member_type:type_name -> pb.MemberType - 32, // 13: pb.GetGroupMembersResp.members:type_name -> pb.GroupMember - 0, // 14: pb.GroupMember.member_type:type_name -> pb.MemberType - 1, // 15: pb.SetGroupMemberBannedReq.is_all_member_banned:type_name -> pb.AllMemberBannedType - 1, // 16: pb.SetGroupMemberBannedResp.is_all_member_banned:type_name -> pb.AllMemberBannedType - 32, // 17: pb.SetGroupMemberBannedResp.members:type_name -> pb.GroupMember - 32, // 18: pb.GetGroupBannedMembersResp.members:type_name -> pb.GroupMember - 2, // 19: pb.SetGroupAddFriendReq.is_all_add_friend:type_name -> pb.AllAddFriendType - 3, // 20: pb.LogicExt.RegisterDevice:input_type -> pb.RegisterDeviceReq - 5, // 21: pb.LogicExt.SendMessage:input_type -> pb.SendMessageReq - 7, // 22: pb.LogicExt.RecallMessage:input_type -> pb.RecallMessageReq - 11, // 23: pb.LogicExt.PushRoom:input_type -> pb.PushRoomReq - 9, // 24: pb.LogicExt.SendRedPacket:input_type -> pb.SendRedPacketReq - 12, // 25: pb.LogicExt.AddFriend:input_type -> pb.AddFriendReq - 14, // 26: pb.LogicExt.AgreeAddFriend:input_type -> pb.AgreeAddFriendReq - 13, // 27: pb.LogicExt.DeleteFriend:input_type -> pb.DeleteFriendReq - 15, // 28: pb.LogicExt.SetFriend:input_type -> pb.SetFriendReq - 42, // 29: pb.LogicExt.GetFriends:input_type -> pb.Empty - 19, // 30: pb.LogicExt.CreateGroup:input_type -> pb.CreateGroupReq - 21, // 31: pb.LogicExt.UpdateGroup:input_type -> pb.UpdateGroupReq - 22, // 32: pb.LogicExt.GetGroup:input_type -> pb.GetGroupReq - 42, // 33: pb.LogicExt.GetGroups:input_type -> pb.Empty - 26, // 34: pb.LogicExt.AddGroupMembers:input_type -> pb.AddGroupMembersReq - 28, // 35: pb.LogicExt.UpdateGroupMember:input_type -> pb.UpdateGroupMemberReq - 29, // 36: pb.LogicExt.DeleteGroupMember:input_type -> pb.DeleteGroupMemberReq - 30, // 37: pb.LogicExt.GetGroupMembers:input_type -> pb.GetGroupMembersReq - 33, // 38: pb.LogicExt.SetGroupBannedMembers:input_type -> pb.SetGroupMemberBannedReq - 34, // 39: pb.LogicExt.SetGroupRemoveBannedMembers:input_type -> pb.SetGroupMemberRemoveBannedReq - 36, // 40: pb.LogicExt.GetGroupBannedMembers:input_type -> pb.GetGroupBannedMembersReq - 38, // 41: pb.LogicExt.SetGroupAddFriend:input_type -> pb.SetGroupAddFriendReq - 4, // 42: pb.LogicExt.RegisterDevice:output_type -> pb.RegisterDeviceResp - 6, // 43: pb.LogicExt.SendMessage:output_type -> pb.SendMessageResp - 8, // 44: pb.LogicExt.RecallMessage:output_type -> pb.RecallMessageResp - 42, // 45: pb.LogicExt.PushRoom:output_type -> pb.Empty - 10, // 46: pb.LogicExt.SendRedPacket:output_type -> pb.SendRedPacketResp - 42, // 47: pb.LogicExt.AddFriend:output_type -> pb.Empty - 42, // 48: pb.LogicExt.AgreeAddFriend:output_type -> pb.Empty - 42, // 49: pb.LogicExt.DeleteFriend:output_type -> pb.Empty - 16, // 50: pb.LogicExt.SetFriend:output_type -> pb.SetFriendResp - 18, // 51: pb.LogicExt.GetFriends:output_type -> pb.GetFriendsResp - 20, // 52: pb.LogicExt.CreateGroup:output_type -> pb.CreateGroupResp - 42, // 53: pb.LogicExt.UpdateGroup:output_type -> pb.Empty - 23, // 54: pb.LogicExt.GetGroup:output_type -> pb.GetGroupResp - 25, // 55: pb.LogicExt.GetGroups:output_type -> pb.GetGroupsResp - 27, // 56: pb.LogicExt.AddGroupMembers:output_type -> pb.AddGroupMembersResp - 42, // 57: pb.LogicExt.UpdateGroupMember:output_type -> pb.Empty - 42, // 58: pb.LogicExt.DeleteGroupMember:output_type -> pb.Empty - 31, // 59: pb.LogicExt.GetGroupMembers:output_type -> pb.GetGroupMembersResp - 35, // 60: pb.LogicExt.SetGroupBannedMembers:output_type -> pb.SetGroupMemberBannedResp - 42, // 61: pb.LogicExt.SetGroupRemoveBannedMembers:output_type -> pb.Empty - 37, // 62: pb.LogicExt.GetGroupBannedMembers:output_type -> pb.GetGroupBannedMembersResp - 42, // 63: pb.LogicExt.SetGroupAddFriend:output_type -> pb.Empty - 42, // [42:64] is the sub-list for method output_type - 20, // [20:42] is the sub-list for method input_type - 20, // [20:20] is the sub-list for extension type_name - 20, // [20:20] is the sub-list for extension extendee - 0, // [0:20] is the sub-list for field type_name + 42, // 10: pb.GetGroupResp.group_user_status_type:type_name -> pb.GroupUserStatusType + 24, // 11: pb.GetGroupResp.group_notice:type_name -> pb.GroupNotice + 43, // 12: pb.GroupNotice.publish_type:type_name -> pb.GroupNoticePublishType + 25, // 13: pb.GetGroupsResp.groups:type_name -> pb.Group + 0, // 14: pb.UpdateGroupMemberReq.member_type:type_name -> pb.MemberType + 33, // 15: pb.GetGroupMembersResp.members:type_name -> pb.GroupMember + 0, // 16: pb.GroupMember.member_type:type_name -> pb.MemberType + 1, // 17: pb.SetGroupMemberBannedReq.is_all_member_banned:type_name -> pb.AllMemberBannedType + 1, // 18: pb.SetGroupMemberBannedResp.is_all_member_banned:type_name -> pb.AllMemberBannedType + 33, // 19: pb.SetGroupMemberBannedResp.members:type_name -> pb.GroupMember + 33, // 20: pb.GetGroupBannedMembersResp.members:type_name -> pb.GroupMember + 2, // 21: pb.SetGroupAddFriendReq.is_all_add_friend:type_name -> pb.AllAddFriendType + 3, // 22: pb.LogicExt.RegisterDevice:input_type -> pb.RegisterDeviceReq + 5, // 23: pb.LogicExt.SendMessage:input_type -> pb.SendMessageReq + 7, // 24: pb.LogicExt.RecallMessage:input_type -> pb.RecallMessageReq + 11, // 25: pb.LogicExt.PushRoom:input_type -> pb.PushRoomReq + 9, // 26: pb.LogicExt.SendRedPacket:input_type -> pb.SendRedPacketReq + 12, // 27: pb.LogicExt.AddFriend:input_type -> pb.AddFriendReq + 14, // 28: pb.LogicExt.AgreeAddFriend:input_type -> pb.AgreeAddFriendReq + 13, // 29: pb.LogicExt.DeleteFriend:input_type -> pb.DeleteFriendReq + 15, // 30: pb.LogicExt.SetFriend:input_type -> pb.SetFriendReq + 44, // 31: pb.LogicExt.GetFriends:input_type -> pb.Empty + 19, // 32: pb.LogicExt.CreateGroup:input_type -> pb.CreateGroupReq + 21, // 33: pb.LogicExt.UpdateGroup:input_type -> pb.UpdateGroupReq + 22, // 34: pb.LogicExt.GetGroup:input_type -> pb.GetGroupReq + 44, // 35: pb.LogicExt.GetGroups:input_type -> pb.Empty + 27, // 36: pb.LogicExt.AddGroupMembers:input_type -> pb.AddGroupMembersReq + 29, // 37: pb.LogicExt.UpdateGroupMember:input_type -> pb.UpdateGroupMemberReq + 30, // 38: pb.LogicExt.DeleteGroupMember:input_type -> pb.DeleteGroupMemberReq + 31, // 39: pb.LogicExt.GetGroupMembers:input_type -> pb.GetGroupMembersReq + 34, // 40: pb.LogicExt.SetGroupBannedMembers:input_type -> pb.SetGroupMemberBannedReq + 35, // 41: pb.LogicExt.SetGroupRemoveBannedMembers:input_type -> pb.SetGroupMemberRemoveBannedReq + 37, // 42: pb.LogicExt.GetGroupBannedMembers:input_type -> pb.GetGroupBannedMembersReq + 39, // 43: pb.LogicExt.SetGroupAddFriend:input_type -> pb.SetGroupAddFriendReq + 4, // 44: pb.LogicExt.RegisterDevice:output_type -> pb.RegisterDeviceResp + 6, // 45: pb.LogicExt.SendMessage:output_type -> pb.SendMessageResp + 8, // 46: pb.LogicExt.RecallMessage:output_type -> pb.RecallMessageResp + 44, // 47: pb.LogicExt.PushRoom:output_type -> pb.Empty + 10, // 48: pb.LogicExt.SendRedPacket:output_type -> pb.SendRedPacketResp + 44, // 49: pb.LogicExt.AddFriend:output_type -> pb.Empty + 44, // 50: pb.LogicExt.AgreeAddFriend:output_type -> pb.Empty + 44, // 51: pb.LogicExt.DeleteFriend:output_type -> pb.Empty + 16, // 52: pb.LogicExt.SetFriend:output_type -> pb.SetFriendResp + 18, // 53: pb.LogicExt.GetFriends:output_type -> pb.GetFriendsResp + 20, // 54: pb.LogicExt.CreateGroup:output_type -> pb.CreateGroupResp + 44, // 55: pb.LogicExt.UpdateGroup:output_type -> pb.Empty + 23, // 56: pb.LogicExt.GetGroup:output_type -> pb.GetGroupResp + 26, // 57: pb.LogicExt.GetGroups:output_type -> pb.GetGroupsResp + 28, // 58: pb.LogicExt.AddGroupMembers:output_type -> pb.AddGroupMembersResp + 44, // 59: pb.LogicExt.UpdateGroupMember:output_type -> pb.Empty + 44, // 60: pb.LogicExt.DeleteGroupMember:output_type -> pb.Empty + 32, // 61: pb.LogicExt.GetGroupMembers:output_type -> pb.GetGroupMembersResp + 36, // 62: pb.LogicExt.SetGroupBannedMembers:output_type -> pb.SetGroupMemberBannedResp + 44, // 63: pb.LogicExt.SetGroupRemoveBannedMembers:output_type -> pb.Empty + 38, // 64: pb.LogicExt.GetGroupBannedMembers:output_type -> pb.GetGroupBannedMembersResp + 44, // 65: pb.LogicExt.SetGroupAddFriend:output_type -> pb.Empty + 44, // [44:66] is the sub-list for method output_type + 22, // [22:44] is the sub-list for method input_type + 22, // [22:22] is the sub-list for extension type_name + 22, // [22:22] is the sub-list for extension extendee + 0, // [0:22] is the sub-list for field type_name } func init() { file_logic_ext_proto_init() } @@ -3056,6 +3144,7 @@ func file_logic_ext_proto_init() { if File_logic_ext_proto != nil { return } + file_business_ext_proto_init() file_common_ext_proto_init() file_connect_ext_proto_init() if !protoimpl.UnsafeEnabled { @@ -3312,7 +3401,7 @@ func file_logic_ext_proto_init() { } } file_logic_ext_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Group); i { + switch v := v.(*GroupNotice); i { case 0: return &v.state case 1: @@ -3324,7 +3413,7 @@ func file_logic_ext_proto_init() { } } file_logic_ext_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetGroupsResp); i { + switch v := v.(*Group); i { case 0: return &v.state case 1: @@ -3336,7 +3425,7 @@ func file_logic_ext_proto_init() { } } file_logic_ext_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddGroupMembersReq); i { + switch v := v.(*GetGroupsResp); i { case 0: return &v.state case 1: @@ -3348,7 +3437,7 @@ func file_logic_ext_proto_init() { } } file_logic_ext_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddGroupMembersResp); i { + switch v := v.(*AddGroupMembersReq); i { case 0: return &v.state case 1: @@ -3360,7 +3449,7 @@ func file_logic_ext_proto_init() { } } file_logic_ext_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateGroupMemberReq); i { + switch v := v.(*AddGroupMembersResp); i { case 0: return &v.state case 1: @@ -3372,7 +3461,7 @@ func file_logic_ext_proto_init() { } } file_logic_ext_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteGroupMemberReq); i { + switch v := v.(*UpdateGroupMemberReq); i { case 0: return &v.state case 1: @@ -3384,7 +3473,7 @@ func file_logic_ext_proto_init() { } } file_logic_ext_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetGroupMembersReq); i { + switch v := v.(*DeleteGroupMemberReq); i { case 0: return &v.state case 1: @@ -3396,7 +3485,7 @@ func file_logic_ext_proto_init() { } } file_logic_ext_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetGroupMembersResp); i { + switch v := v.(*GetGroupMembersReq); i { case 0: return &v.state case 1: @@ -3408,7 +3497,7 @@ func file_logic_ext_proto_init() { } } file_logic_ext_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GroupMember); i { + switch v := v.(*GetGroupMembersResp); i { case 0: return &v.state case 1: @@ -3420,7 +3509,7 @@ func file_logic_ext_proto_init() { } } file_logic_ext_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetGroupMemberBannedReq); i { + switch v := v.(*GroupMember); i { case 0: return &v.state case 1: @@ -3432,7 +3521,7 @@ func file_logic_ext_proto_init() { } } file_logic_ext_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetGroupMemberRemoveBannedReq); i { + switch v := v.(*SetGroupMemberBannedReq); i { case 0: return &v.state case 1: @@ -3444,7 +3533,7 @@ func file_logic_ext_proto_init() { } } file_logic_ext_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetGroupMemberBannedResp); i { + switch v := v.(*SetGroupMemberRemoveBannedReq); i { case 0: return &v.state case 1: @@ -3456,7 +3545,7 @@ func file_logic_ext_proto_init() { } } file_logic_ext_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetGroupBannedMembersReq); i { + switch v := v.(*SetGroupMemberBannedResp); i { case 0: return &v.state case 1: @@ -3468,7 +3557,7 @@ func file_logic_ext_proto_init() { } } file_logic_ext_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetGroupBannedMembersResp); i { + switch v := v.(*GetGroupBannedMembersReq); i { case 0: return &v.state case 1: @@ -3480,6 +3569,18 @@ func file_logic_ext_proto_init() { } } file_logic_ext_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetGroupBannedMembersResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_logic_ext_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetGroupAddFriendReq); i { case 0: return &v.state @@ -3498,7 +3599,7 @@ func file_logic_ext_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_logic_ext_proto_rawDesc, NumEnums: 3, - NumMessages: 36, + NumMessages: 37, NumExtensions: 0, NumServices: 1, }, @@ -3513,6 +3614,7 @@ func file_logic_ext_proto_init() { file_logic_ext_proto_depIdxs = nil } + // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. // Requires gRPC-Go v1.32.0 or later. @@ -3895,12 +3997,6 @@ func (UnimplementedLogicExtServer) SetGroupAddFriend(context.Context, *SetGroupA return nil, status.Errorf(codes.Unimplemented, "method SetGroupAddFriend not implemented") } -// UnsafeLogicExtServer may be embedded to opt out of forward compatibility for this service. -// Use of this interface is not recommended, as added methods to LogicExtServer will -// result in compilation errors. -type UnsafeLogicExtServer interface { -} - func RegisterLogicExtServer(s grpc.ServiceRegistrar, srv LogicExtServer) { s.RegisterService(&LogicExt_ServiceDesc, srv) } @@ -4399,4 +4495,4 @@ var LogicExt_ServiceDesc = grpc.ServiceDesc{ }, Streams: []grpc.StreamDesc{}, Metadata: "logic.ext.proto", -} +} \ No newline at end of file diff --git a/pkg/proto/logic.ext.proto b/pkg/proto/logic.ext.proto index c7e1853..32121fd 100644 --- a/pkg/proto/logic.ext.proto +++ b/pkg/proto/logic.ext.proto @@ -2,6 +2,7 @@ syntax = "proto3"; package pb; option go_package = "egg-im/pkg/pb/"; +import "business.ext.proto"; import "common.ext.proto"; import "connect.ext.proto"; @@ -186,8 +187,16 @@ message GetGroupResp { Group group = 1; MemberType member_type = 2; GroupUserStatusType group_user_status_type = 3; + GroupNotice group_notice = 4; //群公告 } +message GroupNotice { + string content = 1; //公告内容 + GroupNoticePublishType publish_type = 2; // 发布方式 + string publish_time = 3; // 发布时间 +} + + message Group { int64 group_id = 1; // 群组id string name = 2; // 名称 diff --git a/pkg/rpc/rpc.go b/pkg/rpc/rpc.go index d028395..6d847fb 100644 --- a/pkg/rpc/rpc.go +++ b/pkg/rpc/rpc.go @@ -58,10 +58,10 @@ func initConnectIntClient() { } func initBusinessIntClient() { - //conn, err := grpc.DialContext(context.TODO(), "127.0.0.1:8000", grpc.WithInsecure(), - // grpc.WithDefaultServiceConfig(fmt.Sprintf(`{"LoadBalancingPolicy": "%s"}`, roundrobin.Name))) - conn, err := grpc.DialContext(context.TODO(), k8s.GetK8STarget("egg-im", "business", "8000"), grpc.WithInsecure(), + conn, err := grpc.DialContext(context.TODO(), "127.0.0.1:8000", grpc.WithInsecure(), grpc.WithDefaultServiceConfig(fmt.Sprintf(`{"LoadBalancingPolicy": "%s"}`, roundrobin.Name))) + //conn, err := grpc.DialContext(context.TODO(), k8s.GetK8STarget("egg-im", "business", "8000"), grpc.WithInsecure(), + // grpc.WithDefaultServiceConfig(fmt.Sprintf(`{"LoadBalancingPolicy": "%s"}`, roundrobin.Name))) if err != nil { panic(err) }