From 0c4d0f221bb21f86bf89656db5b78da15d909a7f Mon Sep 17 00:00:00 2001 From: cjy Date: Wed, 17 Dec 2025 19:31:49 +0800 Subject: [PATCH 1/9] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E5=AE=9A?= =?UTF-8?q?=E6=97=B6=E4=BB=BB=E5=8A=A1=E8=8E=B7=E5=8F=96=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=8C=87=E6=A0=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/aryshare/ayrshare.pb.go | 13479 ++++++++++++++++++++++++ api/aryshare/ayrshare.validator.pb.go | 900 ++ api/aryshare/ayrshare_triple.pb.go | 1108 ++ pkg/cron/task.go | 8 + pkg/router/analysis.go | 3 + pkg/service/cast/analysis.go | 545 + 6 files changed, 16043 insertions(+) create mode 100644 api/aryshare/ayrshare.pb.go create mode 100644 api/aryshare/ayrshare.validator.pb.go create mode 100644 api/aryshare/ayrshare_triple.pb.go diff --git a/api/aryshare/ayrshare.pb.go b/api/aryshare/ayrshare.pb.go new file mode 100644 index 0000000..ec0d771 --- /dev/null +++ b/api/aryshare/ayrshare.pb.go @@ -0,0 +1,13479 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.1 +// protoc v3.21.1 +// source: pb/ayrshare.proto + +package aryshare + +import ( + _ "github.com/mwitkow/go-proto-validators" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + _ "google.golang.org/protobuf/types/descriptorpb" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Instagram 用户标签(带坐标) +type UserTag struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username"` + X float64 `protobuf:"fixed64,2,opt,name=x,proto3" json:"x"` // Required for images, cannot be used with Reels + Y float64 `protobuf:"fixed64,3,opt,name=y,proto3" json:"y"` // Required for images, cannot be used with Reels +} + +func (x *UserTag) Reset() { + *x = UserTag{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UserTag) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UserTag) ProtoMessage() {} + +func (x *UserTag) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UserTag.ProtoReflect.Descriptor instead. +func (*UserTag) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{0} +} + +func (x *UserTag) GetUsername() string { + if x != nil { + return x.Username + } + return "" +} + +func (x *UserTag) GetX() float64 { + if x != nil { + return x.X + } + return 0 +} + +func (x *UserTag) GetY() float64 { + if x != nil { + return x.Y + } + return 0 +} + +// Instagram 特定发布选项 +type InstagramOptions struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ShareReelsFeed bool `protobuf:"varint,1,opt,name=shareReelsFeed,proto3" json:"shareReelsFeed"` // Whether Reel can appear in both Feed and Reels tabs + AudioName string `protobuf:"bytes,2,opt,name=audioName,proto3" json:"audioName"` // Name of the audio music for Reels + ThumbNail string `protobuf:"bytes,3,opt,name=thumbNail,proto3" json:"thumbNail"` // URL of the Reel cover image (thumbnail) + ThumbNailOffset int32 `protobuf:"varint,4,opt,name=thumbNailOffset,proto3" json:"thumbNailOffset"` // Offset in milliseconds of the thumbnail frame + Stories bool `protobuf:"varint,5,opt,name=stories,proto3" json:"stories"` // Whether to post as Instagram Story + AltText []string `protobuf:"bytes,6,rep,name=altText,proto3" json:"altText"` // Array of alternative text for images (up to 1000 chars per image) + LocationId string `protobuf:"bytes,7,opt,name=locationId,proto3" json:"locationId"` // Facebook Page ID or Page name + UserTags []*UserTag `protobuf:"bytes,8,rep,name=userTags,proto3" json:"userTags"` // Array of user tags with username and coordinates + Collaborators []string `protobuf:"bytes,9,rep,name=collaborators,proto3" json:"collaborators"` // Array of Instagram usernames (up to 3) + AutoResize bool `protobuf:"varint,10,opt,name=autoResize,proto3" json:"autoResize"` // Auto resize images to 1080x1080px (Max Pack required) + DisableComments bool `protobuf:"varint,11,opt,name=disableComments,proto3" json:"disableComments"` // Disable comments on the published post +} + +func (x *InstagramOptions) Reset() { + *x = InstagramOptions{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *InstagramOptions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InstagramOptions) ProtoMessage() {} + +func (x *InstagramOptions) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InstagramOptions.ProtoReflect.Descriptor instead. +func (*InstagramOptions) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{1} +} + +func (x *InstagramOptions) GetShareReelsFeed() bool { + if x != nil { + return x.ShareReelsFeed + } + return false +} + +func (x *InstagramOptions) GetAudioName() string { + if x != nil { + return x.AudioName + } + return "" +} + +func (x *InstagramOptions) GetThumbNail() string { + if x != nil { + return x.ThumbNail + } + return "" +} + +func (x *InstagramOptions) GetThumbNailOffset() int32 { + if x != nil { + return x.ThumbNailOffset + } + return 0 +} + +func (x *InstagramOptions) GetStories() bool { + if x != nil { + return x.Stories + } + return false +} + +func (x *InstagramOptions) GetAltText() []string { + if x != nil { + return x.AltText + } + return nil +} + +func (x *InstagramOptions) GetLocationId() string { + if x != nil { + return x.LocationId + } + return "" +} + +func (x *InstagramOptions) GetUserTags() []*UserTag { + if x != nil { + return x.UserTags + } + return nil +} + +func (x *InstagramOptions) GetCollaborators() []string { + if x != nil { + return x.Collaborators + } + return nil +} + +func (x *InstagramOptions) GetAutoResize() bool { + if x != nil { + return x.AutoResize + } + return false +} + +func (x *InstagramOptions) GetDisableComments() bool { + if x != nil { + return x.DisableComments + } + return false +} + +// TikTok 特定发布选项 +type TikTokOptions struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AutoAddMusic bool `protobuf:"varint,1,opt,name=autoAddMusic,proto3" json:"autoAddMusic"` // Whether to automatically add recommended music (image only) + DisableComments bool `protobuf:"varint,2,opt,name=disableComments,proto3" json:"disableComments"` // Whether to disable comments on the published post + DisableDuet bool `protobuf:"varint,3,opt,name=disableDuet,proto3" json:"disableDuet"` // Disable duets on the published video (video only) + DisableStitch bool `protobuf:"varint,4,opt,name=disableStitch,proto3" json:"disableStitch"` // Disable stitch on the published video (video only) + Draft bool `protobuf:"varint,5,opt,name=draft,proto3" json:"draft"` // Whether to create a draft post + IsAIGenerated bool `protobuf:"varint,6,opt,name=isAIGenerated,proto3" json:"isAIGenerated"` // Whether to enable AI-generated content toggle (video only) + IsBrandedContent bool `protobuf:"varint,7,opt,name=isBrandedContent,proto3" json:"isBrandedContent"` // Whether to enable Branded Content toggle + IsBrandOrganic bool `protobuf:"varint,8,opt,name=isBrandOrganic,proto3" json:"isBrandOrganic"` // Whether to enable Brand Organic Content toggle + ImageCoverIndex int32 `protobuf:"varint,9,opt,name=imageCoverIndex,proto3" json:"imageCoverIndex"` // Index of mediaUrls to be used as cover (image only, default 0) + Title string `protobuf:"bytes,10,opt,name=title,proto3" json:"title"` // Title of the post (image only) + ThumbNailOffset int32 `protobuf:"varint,11,opt,name=thumbNailOffset,proto3" json:"thumbNailOffset"` // Frame to use for video cover in milliseconds (video only) + ThumbNail string `protobuf:"bytes,12,opt,name=thumbNail,proto3" json:"thumbNail"` // URL of thumbnail image for video (video only) + Visibility string `protobuf:"bytes,13,opt,name=visibility,proto3" json:"visibility"` // How the post is shared: "public", "private", "followers", "friends" (image only, default "public") +} + +func (x *TikTokOptions) Reset() { + *x = TikTokOptions{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TikTokOptions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TikTokOptions) ProtoMessage() {} + +func (x *TikTokOptions) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TikTokOptions.ProtoReflect.Descriptor instead. +func (*TikTokOptions) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{2} +} + +func (x *TikTokOptions) GetAutoAddMusic() bool { + if x != nil { + return x.AutoAddMusic + } + return false +} + +func (x *TikTokOptions) GetDisableComments() bool { + if x != nil { + return x.DisableComments + } + return false +} + +func (x *TikTokOptions) GetDisableDuet() bool { + if x != nil { + return x.DisableDuet + } + return false +} + +func (x *TikTokOptions) GetDisableStitch() bool { + if x != nil { + return x.DisableStitch + } + return false +} + +func (x *TikTokOptions) GetDraft() bool { + if x != nil { + return x.Draft + } + return false +} + +func (x *TikTokOptions) GetIsAIGenerated() bool { + if x != nil { + return x.IsAIGenerated + } + return false +} + +func (x *TikTokOptions) GetIsBrandedContent() bool { + if x != nil { + return x.IsBrandedContent + } + return false +} + +func (x *TikTokOptions) GetIsBrandOrganic() bool { + if x != nil { + return x.IsBrandOrganic + } + return false +} + +func (x *TikTokOptions) GetImageCoverIndex() int32 { + if x != nil { + return x.ImageCoverIndex + } + return 0 +} + +func (x *TikTokOptions) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *TikTokOptions) GetThumbNailOffset() int32 { + if x != nil { + return x.ThumbNailOffset + } + return 0 +} + +func (x *TikTokOptions) GetThumbNail() string { + if x != nil { + return x.ThumbNail + } + return "" +} + +func (x *TikTokOptions) GetVisibility() string { + if x != nil { + return x.Visibility + } + return "" +} + +// 发布帖子到社交媒体平台 +type PostRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Post string `protobuf:"bytes,1,opt,name=post,proto3" json:"post"` + Platforms []string `protobuf:"bytes,2,rep,name=platforms,proto3" json:"platforms"` + MediaUrls []string `protobuf:"bytes,3,rep,name=mediaUrls,proto3" json:"mediaUrls"` + IsVideo bool `protobuf:"varint,4,opt,name=isVideo,proto3" json:"isVideo"` + ScheduleDate string `protobuf:"bytes,5,opt,name=scheduleDate,proto3" json:"scheduleDate"` + ValidateScheduled bool `protobuf:"varint,6,opt,name=validateScheduled,proto3" json:"validateScheduled"` + ShortenLinks bool `protobuf:"varint,7,opt,name=shortenLinks,proto3" json:"shortenLinks"` + DisableComments bool `protobuf:"varint,8,opt,name=disableComments,proto3" json:"disableComments"` + InstagramOptions *InstagramOptions `protobuf:"bytes,9,opt,name=instagramOptions,proto3" json:"instagramOptions"` + TikTokOptions *TikTokOptions `protobuf:"bytes,10,opt,name=tikTokOptions,proto3" json:"tikTokOptions"` + ProfileKey string `protobuf:"bytes,11,opt,name=profileKey,proto3" json:"profileKey"` +} + +func (x *PostRequest) Reset() { + *x = PostRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PostRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PostRequest) ProtoMessage() {} + +func (x *PostRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PostRequest.ProtoReflect.Descriptor instead. +func (*PostRequest) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{3} +} + +func (x *PostRequest) GetPost() string { + if x != nil { + return x.Post + } + return "" +} + +func (x *PostRequest) GetPlatforms() []string { + if x != nil { + return x.Platforms + } + return nil +} + +func (x *PostRequest) GetMediaUrls() []string { + if x != nil { + return x.MediaUrls + } + return nil +} + +func (x *PostRequest) GetIsVideo() bool { + if x != nil { + return x.IsVideo + } + return false +} + +func (x *PostRequest) GetScheduleDate() string { + if x != nil { + return x.ScheduleDate + } + return "" +} + +func (x *PostRequest) GetValidateScheduled() bool { + if x != nil { + return x.ValidateScheduled + } + return false +} + +func (x *PostRequest) GetShortenLinks() bool { + if x != nil { + return x.ShortenLinks + } + return false +} + +func (x *PostRequest) GetDisableComments() bool { + if x != nil { + return x.DisableComments + } + return false +} + +func (x *PostRequest) GetInstagramOptions() *InstagramOptions { + if x != nil { + return x.InstagramOptions + } + return nil +} + +func (x *PostRequest) GetTikTokOptions() *TikTokOptions { + if x != nil { + return x.TikTokOptions + } + return nil +} + +func (x *PostRequest) GetProfileKey() string { + if x != nil { + return x.ProfileKey + } + return "" +} + +// 单个平台的帖子ID响应 +type PostId struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id"` + Cid string `protobuf:"bytes,3,opt,name=cid,proto3" json:"cid"` + PostUrl string `protobuf:"bytes,4,opt,name=postUrl,proto3" json:"postUrl"` + Platform string `protobuf:"bytes,5,opt,name=platform,proto3" json:"platform"` + Type string `protobuf:"bytes,6,opt,name=type,proto3" json:"type"` + Owner string `protobuf:"bytes,7,opt,name=owner,proto3" json:"owner"` + MediaId string `protobuf:"bytes,8,opt,name=mediaId,proto3" json:"mediaId"` + Ended string `protobuf:"bytes,9,opt,name=ended,proto3" json:"ended"` + IdShare string `protobuf:"bytes,10,opt,name=idShare,proto3" json:"idShare"` + IsVideo bool `protobuf:"varint,11,opt,name=isVideo,proto3" json:"isVideo"` + UsedQuota int32 `protobuf:"varint,12,opt,name=usedQuota,proto3" json:"usedQuota"` +} + +func (x *PostId) Reset() { + *x = PostId{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PostId) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PostId) ProtoMessage() {} + +func (x *PostId) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PostId.ProtoReflect.Descriptor instead. +func (*PostId) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{4} +} + +func (x *PostId) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *PostId) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *PostId) GetCid() string { + if x != nil { + return x.Cid + } + return "" +} + +func (x *PostId) GetPostUrl() string { + if x != nil { + return x.PostUrl + } + return "" +} + +func (x *PostId) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *PostId) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *PostId) GetOwner() string { + if x != nil { + return x.Owner + } + return "" +} + +func (x *PostId) GetMediaId() string { + if x != nil { + return x.MediaId + } + return "" +} + +func (x *PostId) GetEnded() string { + if x != nil { + return x.Ended + } + return "" +} + +func (x *PostId) GetIdShare() string { + if x != nil { + return x.IdShare + } + return "" +} + +func (x *PostId) GetIsVideo() bool { + if x != nil { + return x.IsVideo + } + return false +} + +func (x *PostId) GetUsedQuota() int32 { + if x != nil { + return x.UsedQuota + } + return 0 +} + +// 帖子项(使用 profile key 时的响应格式) +type PostItem struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + Errors []string `protobuf:"bytes,2,rep,name=errors,proto3" json:"errors"` + PostIds []*PostId `protobuf:"bytes,3,rep,name=postIds,proto3" json:"postIds"` + Id string `protobuf:"bytes,4,opt,name=id,proto3" json:"id"` + RefId string `protobuf:"bytes,5,opt,name=refId,proto3" json:"refId"` + ProfileTitle string `protobuf:"bytes,6,opt,name=profileTitle,proto3" json:"profileTitle"` + Post string `protobuf:"bytes,7,opt,name=post,proto3" json:"post"` + TikTokId string `protobuf:"bytes,8,opt,name=tikTokId,proto3" json:"tikTokId"` // TikTok 特定的 ID +} + +func (x *PostItem) Reset() { + *x = PostItem{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PostItem) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PostItem) ProtoMessage() {} + +func (x *PostItem) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PostItem.ProtoReflect.Descriptor instead. +func (*PostItem) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{5} +} + +func (x *PostItem) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *PostItem) GetErrors() []string { + if x != nil { + return x.Errors + } + return nil +} + +func (x *PostItem) GetPostIds() []*PostId { + if x != nil { + return x.PostIds + } + return nil +} + +func (x *PostItem) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *PostItem) GetRefId() string { + if x != nil { + return x.RefId + } + return "" +} + +func (x *PostItem) GetProfileTitle() string { + if x != nil { + return x.ProfileTitle + } + return "" +} + +func (x *PostItem) GetPost() string { + if x != nil { + return x.Post + } + return "" +} + +func (x *PostItem) GetTikTokId() string { + if x != nil { + return x.TikTokId + } + return "" +} + +// 发布帖子响应 +type PostResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + Posts []*PostItem `protobuf:"bytes,2,rep,name=posts,proto3" json:"posts"` + // 兼容旧版本响应格式(不使用 profile key 时) + Errors []string `protobuf:"bytes,3,rep,name=errors,proto3" json:"errors"` + PostIds []*PostId `protobuf:"bytes,4,rep,name=postIds,proto3" json:"postIds"` + Id string `protobuf:"bytes,5,opt,name=id,proto3" json:"id"` + IsValidated bool `protobuf:"varint,6,opt,name=isValidated,json=validate,proto3" json:"isValidated"` // validateScheduled 请求的验证结果 +} + +func (x *PostResponse) Reset() { + *x = PostResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PostResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PostResponse) ProtoMessage() {} + +func (x *PostResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PostResponse.ProtoReflect.Descriptor instead. +func (*PostResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{6} +} + +func (x *PostResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *PostResponse) GetPosts() []*PostItem { + if x != nil { + return x.Posts + } + return nil +} + +func (x *PostResponse) GetErrors() []string { + if x != nil { + return x.Errors + } + return nil +} + +func (x *PostResponse) GetPostIds() []*PostId { + if x != nil { + return x.PostIds + } + return nil +} + +func (x *PostResponse) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *PostResponse) GetIsValidated() bool { + if x != nil { + return x.IsValidated + } + return false +} + +// 获取帖子请求 +type GetPostRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` + ProfileKey string `protobuf:"bytes,2,opt,name=profileKey,proto3" json:"profileKey"` +} + +func (x *GetPostRequest) Reset() { + *x = GetPostRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetPostRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetPostRequest) ProtoMessage() {} + +func (x *GetPostRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetPostRequest.ProtoReflect.Descriptor instead. +func (*GetPostRequest) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{7} +} + +func (x *GetPostRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *GetPostRequest) GetProfileKey() string { + if x != nil { + return x.ProfileKey + } + return "" +} + +// 获取帖子响应 +type GetPostResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Created string `protobuf:"bytes,1,opt,name=created,proto3" json:"created"` + Errors []string `protobuf:"bytes,2,rep,name=errors,proto3" json:"errors"` + Id string `protobuf:"bytes,3,opt,name=id,proto3" json:"id"` + MediaUrls []string `protobuf:"bytes,4,rep,name=mediaUrls,proto3" json:"mediaUrls"` + Platforms []string `protobuf:"bytes,5,rep,name=platforms,proto3" json:"platforms"` + Post string `protobuf:"bytes,6,opt,name=post,proto3" json:"post"` + PostIds []*PostId `protobuf:"bytes,7,rep,name=postIds,proto3" json:"postIds"` + ProfileTitle string `protobuf:"bytes,8,opt,name=profileTitle,proto3" json:"profileTitle"` + RefId string `protobuf:"bytes,9,opt,name=refId,proto3" json:"refId"` + ScheduleDate string `protobuf:"bytes,10,opt,name=scheduleDate,proto3" json:"scheduleDate"` + ShortenLinks bool `protobuf:"varint,11,opt,name=shortenLinks,proto3" json:"shortenLinks"` + Status string `protobuf:"bytes,12,opt,name=status,proto3" json:"status"` + Type string `protobuf:"bytes,13,opt,name=type,proto3" json:"type"` +} + +func (x *GetPostResponse) Reset() { + *x = GetPostResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetPostResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetPostResponse) ProtoMessage() {} + +func (x *GetPostResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetPostResponse.ProtoReflect.Descriptor instead. +func (*GetPostResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{8} +} + +func (x *GetPostResponse) GetCreated() string { + if x != nil { + return x.Created + } + return "" +} + +func (x *GetPostResponse) GetErrors() []string { + if x != nil { + return x.Errors + } + return nil +} + +func (x *GetPostResponse) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *GetPostResponse) GetMediaUrls() []string { + if x != nil { + return x.MediaUrls + } + return nil +} + +func (x *GetPostResponse) GetPlatforms() []string { + if x != nil { + return x.Platforms + } + return nil +} + +func (x *GetPostResponse) GetPost() string { + if x != nil { + return x.Post + } + return "" +} + +func (x *GetPostResponse) GetPostIds() []*PostId { + if x != nil { + return x.PostIds + } + return nil +} + +func (x *GetPostResponse) GetProfileTitle() string { + if x != nil { + return x.ProfileTitle + } + return "" +} + +func (x *GetPostResponse) GetRefId() string { + if x != nil { + return x.RefId + } + return "" +} + +func (x *GetPostResponse) GetScheduleDate() string { + if x != nil { + return x.ScheduleDate + } + return "" +} + +func (x *GetPostResponse) GetShortenLinks() bool { + if x != nil { + return x.ShortenLinks + } + return false +} + +func (x *GetPostResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *GetPostResponse) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +// 获取用户详情请求 +type GetUserRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ProfileKey string `protobuf:"bytes,1,opt,name=profileKey,proto3" json:"profileKey"` + InstagramDetails bool `protobuf:"varint,2,opt,name=instagramDetails,proto3" json:"instagramDetails"` +} + +func (x *GetUserRequest) Reset() { + *x = GetUserRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetUserRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetUserRequest) ProtoMessage() {} + +func (x *GetUserRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetUserRequest.ProtoReflect.Descriptor instead. +func (*GetUserRequest) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{9} +} + +func (x *GetUserRequest) GetProfileKey() string { + if x != nil { + return x.ProfileKey + } + return "" +} + +func (x *GetUserRequest) GetInstagramDetails() bool { + if x != nil { + return x.InstagramDetails + } + return false +} + +// 时间戳 +type Timestamp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Seconds int64 `protobuf:"varint,1,opt,name=seconds,json=_seconds,proto3" json:"seconds"` + Nanoseconds int64 `protobuf:"varint,2,opt,name=nanoseconds,json=_nanoseconds,proto3" json:"nanoseconds"` + Utc string `protobuf:"bytes,3,opt,name=utc,proto3" json:"utc"` +} + +func (x *Timestamp) Reset() { + *x = Timestamp{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Timestamp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Timestamp) ProtoMessage() {} + +func (x *Timestamp) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Timestamp.ProtoReflect.Descriptor instead. +func (*Timestamp) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{10} +} + +func (x *Timestamp) GetSeconds() int64 { + if x != nil { + return x.Seconds + } + return 0 +} + +func (x *Timestamp) GetNanoseconds() int64 { + if x != nil { + return x.Nanoseconds + } + return 0 +} + +func (x *Timestamp) GetUtc() string { + if x != nil { + return x.Utc + } + return "" +} + +// Twitter 使用情况 +type TwitterUsage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MonthlyUsage int32 `protobuf:"varint,1,opt,name=monthlyUsage,proto3" json:"monthlyUsage"` + MonthlyLimit int32 `protobuf:"varint,2,opt,name=monthlyLimit,proto3" json:"monthlyLimit"` + MonthlyReset string `protobuf:"bytes,3,opt,name=monthlyReset,proto3" json:"monthlyReset"` +} + +func (x *TwitterUsage) Reset() { + *x = TwitterUsage{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TwitterUsage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TwitterUsage) ProtoMessage() {} + +func (x *TwitterUsage) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TwitterUsage.ProtoReflect.Descriptor instead. +func (*TwitterUsage) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{11} +} + +func (x *TwitterUsage) GetMonthlyUsage() int32 { + if x != nil { + return x.MonthlyUsage + } + return 0 +} + +func (x *TwitterUsage) GetMonthlyLimit() int32 { + if x != nil { + return x.MonthlyLimit + } + return 0 +} + +func (x *TwitterUsage) GetMonthlyReset() string { + if x != nil { + return x.MonthlyReset + } + return "" +} + +// 社交媒体账户显示名称和详情 +type DisplayName struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Created string `protobuf:"bytes,1,opt,name=created,proto3" json:"created"` + DisplayName string `protobuf:"bytes,2,opt,name=displayName,proto3" json:"displayName"` + Id string `protobuf:"bytes,3,opt,name=id,proto3" json:"id"` + Platform string `protobuf:"bytes,4,opt,name=platform,proto3" json:"platform"` + ProfileUrl string `protobuf:"bytes,5,opt,name=profileUrl,proto3" json:"profileUrl"` + UserImage string `protobuf:"bytes,6,opt,name=userImage,proto3" json:"userImage"` + Username string `protobuf:"bytes,7,opt,name=username,proto3" json:"username"` + Description string `protobuf:"bytes,8,opt,name=description,proto3" json:"description"` + MessagingActive bool `protobuf:"varint,9,opt,name=messagingActive,proto3" json:"messagingActive"` + PageName string `protobuf:"bytes,10,opt,name=pageName,proto3" json:"pageName"` + UserId string `protobuf:"bytes,11,opt,name=userId,proto3" json:"userId"` + MapsUrl string `protobuf:"bytes,12,opt,name=mapsUrl,proto3" json:"mapsUrl"` + PlaceId string `protobuf:"bytes,13,opt,name=placeId,proto3" json:"placeId"` + ReviewUrl string `protobuf:"bytes,14,opt,name=reviewUrl,proto3" json:"reviewUrl"` + IgId string `protobuf:"bytes,15,opt,name=igId,proto3" json:"igId"` + Type string `protobuf:"bytes,16,opt,name=type,proto3" json:"type"` + UsedQuota int32 `protobuf:"varint,17,opt,name=usedQuota,proto3" json:"usedQuota"` + RefreshDaysRemaining int32 `protobuf:"varint,18,opt,name=refreshDaysRemaining,proto3" json:"refreshDaysRemaining"` + RefreshRequired string `protobuf:"bytes,19,opt,name=refreshRequired,proto3" json:"refreshRequired"` + IsEligibleForGeoRestrictions bool `protobuf:"varint,20,opt,name=isEligibleForGeoRestrictions,proto3" json:"isEligibleForGeoRestrictions"` + IsVerified bool `protobuf:"varint,21,opt,name=isVerified,proto3" json:"isVerified"` + SubscriptionType string `protobuf:"bytes,22,opt,name=subscriptionType,proto3" json:"subscriptionType"` + TwitterUsage *TwitterUsage `protobuf:"bytes,23,opt,name=twitterUsage,proto3" json:"twitterUsage"` + VerifiedType string `protobuf:"bytes,24,opt,name=verifiedType,proto3" json:"verifiedType"` +} + +func (x *DisplayName) Reset() { + *x = DisplayName{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DisplayName) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DisplayName) ProtoMessage() {} + +func (x *DisplayName) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DisplayName.ProtoReflect.Descriptor instead. +func (*DisplayName) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{12} +} + +func (x *DisplayName) GetCreated() string { + if x != nil { + return x.Created + } + return "" +} + +func (x *DisplayName) GetDisplayName() string { + if x != nil { + return x.DisplayName + } + return "" +} + +func (x *DisplayName) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *DisplayName) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *DisplayName) GetProfileUrl() string { + if x != nil { + return x.ProfileUrl + } + return "" +} + +func (x *DisplayName) GetUserImage() string { + if x != nil { + return x.UserImage + } + return "" +} + +func (x *DisplayName) GetUsername() string { + if x != nil { + return x.Username + } + return "" +} + +func (x *DisplayName) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *DisplayName) GetMessagingActive() bool { + if x != nil { + return x.MessagingActive + } + return false +} + +func (x *DisplayName) GetPageName() string { + if x != nil { + return x.PageName + } + return "" +} + +func (x *DisplayName) GetUserId() string { + if x != nil { + return x.UserId + } + return "" +} + +func (x *DisplayName) GetMapsUrl() string { + if x != nil { + return x.MapsUrl + } + return "" +} + +func (x *DisplayName) GetPlaceId() string { + if x != nil { + return x.PlaceId + } + return "" +} + +func (x *DisplayName) GetReviewUrl() string { + if x != nil { + return x.ReviewUrl + } + return "" +} + +func (x *DisplayName) GetIgId() string { + if x != nil { + return x.IgId + } + return "" +} + +func (x *DisplayName) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *DisplayName) GetUsedQuota() int32 { + if x != nil { + return x.UsedQuota + } + return 0 +} + +func (x *DisplayName) GetRefreshDaysRemaining() int32 { + if x != nil { + return x.RefreshDaysRemaining + } + return 0 +} + +func (x *DisplayName) GetRefreshRequired() string { + if x != nil { + return x.RefreshRequired + } + return "" +} + +func (x *DisplayName) GetIsEligibleForGeoRestrictions() bool { + if x != nil { + return x.IsEligibleForGeoRestrictions + } + return false +} + +func (x *DisplayName) GetIsVerified() bool { + if x != nil { + return x.IsVerified + } + return false +} + +func (x *DisplayName) GetSubscriptionType() string { + if x != nil { + return x.SubscriptionType + } + return "" +} + +func (x *DisplayName) GetTwitterUsage() *TwitterUsage { + if x != nil { + return x.TwitterUsage + } + return nil +} + +func (x *DisplayName) GetVerifiedType() string { + if x != nil { + return x.VerifiedType + } + return "" +} + +// 获取用户详情响应 +type GetUserResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ActiveSocialAccounts []string `protobuf:"bytes,1,rep,name=activeSocialAccounts,proto3" json:"activeSocialAccounts"` + Created *Timestamp `protobuf:"bytes,2,opt,name=created,proto3" json:"created"` + DisplayNames []*DisplayName `protobuf:"bytes,3,rep,name=displayNames,proto3" json:"displayNames"` + Email string `protobuf:"bytes,4,opt,name=email,proto3" json:"email"` + LastApiCall string `protobuf:"bytes,5,opt,name=lastApiCall,proto3" json:"lastApiCall"` + MessagingConversationMonthlyCount int32 `protobuf:"varint,6,opt,name=messagingConversationMonthlyCount,proto3" json:"messagingConversationMonthlyCount"` + MessagingEnabled bool `protobuf:"varint,7,opt,name=messagingEnabled,proto3" json:"messagingEnabled"` + MonthlyApiCalls int32 `protobuf:"varint,8,opt,name=monthlyApiCalls,proto3" json:"monthlyApiCalls"` + MonthlyPostCount int32 `protobuf:"varint,9,opt,name=monthlyPostCount,proto3" json:"monthlyPostCount"` + MonthlyPostQuota int32 `protobuf:"varint,10,opt,name=monthlyPostQuota,proto3" json:"monthlyPostQuota"` + MonthlyApiCallsQuota int32 `protobuf:"varint,11,opt,name=monthlyApiCallsQuota,proto3" json:"monthlyApiCallsQuota"` + RefId string `protobuf:"bytes,12,opt,name=refId,proto3" json:"refId"` + Title string `protobuf:"bytes,13,opt,name=title,proto3" json:"title"` + LastUpdated string `protobuf:"bytes,14,opt,name=lastUpdated,proto3" json:"lastUpdated"` + NextUpdate string `protobuf:"bytes,15,opt,name=nextUpdate,proto3" json:"nextUpdate"` +} + +func (x *GetUserResponse) Reset() { + *x = GetUserResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetUserResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetUserResponse) ProtoMessage() {} + +func (x *GetUserResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetUserResponse.ProtoReflect.Descriptor instead. +func (*GetUserResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{13} +} + +func (x *GetUserResponse) GetActiveSocialAccounts() []string { + if x != nil { + return x.ActiveSocialAccounts + } + return nil +} + +func (x *GetUserResponse) GetCreated() *Timestamp { + if x != nil { + return x.Created + } + return nil +} + +func (x *GetUserResponse) GetDisplayNames() []*DisplayName { + if x != nil { + return x.DisplayNames + } + return nil +} + +func (x *GetUserResponse) GetEmail() string { + if x != nil { + return x.Email + } + return "" +} + +func (x *GetUserResponse) GetLastApiCall() string { + if x != nil { + return x.LastApiCall + } + return "" +} + +func (x *GetUserResponse) GetMessagingConversationMonthlyCount() int32 { + if x != nil { + return x.MessagingConversationMonthlyCount + } + return 0 +} + +func (x *GetUserResponse) GetMessagingEnabled() bool { + if x != nil { + return x.MessagingEnabled + } + return false +} + +func (x *GetUserResponse) GetMonthlyApiCalls() int32 { + if x != nil { + return x.MonthlyApiCalls + } + return 0 +} + +func (x *GetUserResponse) GetMonthlyPostCount() int32 { + if x != nil { + return x.MonthlyPostCount + } + return 0 +} + +func (x *GetUserResponse) GetMonthlyPostQuota() int32 { + if x != nil { + return x.MonthlyPostQuota + } + return 0 +} + +func (x *GetUserResponse) GetMonthlyApiCallsQuota() int32 { + if x != nil { + return x.MonthlyApiCallsQuota + } + return 0 +} + +func (x *GetUserResponse) GetRefId() string { + if x != nil { + return x.RefId + } + return "" +} + +func (x *GetUserResponse) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *GetUserResponse) GetLastUpdated() string { + if x != nil { + return x.LastUpdated + } + return "" +} + +func (x *GetUserResponse) GetNextUpdate() string { + if x != nil { + return x.NextUpdate + } + return "" +} + +// 创建用户配置请求 +type CreateProfileRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title"` + MessagingActive bool `protobuf:"varint,2,opt,name=messagingActive,proto3" json:"messagingActive"` + HideTopHeader bool `protobuf:"varint,3,opt,name=hideTopHeader,proto3" json:"hideTopHeader"` + TopHeader string `protobuf:"bytes,4,opt,name=topHeader,proto3" json:"topHeader"` + DisableSocial []string `protobuf:"bytes,5,rep,name=disableSocial,proto3" json:"disableSocial"` + Team bool `protobuf:"varint,6,opt,name=team,proto3" json:"team"` + Email string `protobuf:"bytes,7,opt,name=email,proto3" json:"email"` + SubHeader string `protobuf:"bytes,8,opt,name=subHeader,proto3" json:"subHeader"` + Tags []string `protobuf:"bytes,9,rep,name=tags,proto3" json:"tags"` +} + +func (x *CreateProfileRequest) Reset() { + *x = CreateProfileRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateProfileRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateProfileRequest) ProtoMessage() {} + +func (x *CreateProfileRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateProfileRequest.ProtoReflect.Descriptor instead. +func (*CreateProfileRequest) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{14} +} + +func (x *CreateProfileRequest) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *CreateProfileRequest) GetMessagingActive() bool { + if x != nil { + return x.MessagingActive + } + return false +} + +func (x *CreateProfileRequest) GetHideTopHeader() bool { + if x != nil { + return x.HideTopHeader + } + return false +} + +func (x *CreateProfileRequest) GetTopHeader() string { + if x != nil { + return x.TopHeader + } + return "" +} + +func (x *CreateProfileRequest) GetDisableSocial() []string { + if x != nil { + return x.DisableSocial + } + return nil +} + +func (x *CreateProfileRequest) GetTeam() bool { + if x != nil { + return x.Team + } + return false +} + +func (x *CreateProfileRequest) GetEmail() string { + if x != nil { + return x.Email + } + return "" +} + +func (x *CreateProfileRequest) GetSubHeader() string { + if x != nil { + return x.SubHeader + } + return "" +} + +func (x *CreateProfileRequest) GetTags() []string { + if x != nil { + return x.Tags + } + return nil +} + +// 创建用户配置响应 +type CreateProfileResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title"` + RefId string `protobuf:"bytes,3,opt,name=refId,proto3" json:"refId"` + ProfileKey string `protobuf:"bytes,4,opt,name=profileKey,proto3" json:"profileKey"` + MessagingActive bool `protobuf:"varint,5,opt,name=messagingActive,proto3" json:"messagingActive"` +} + +func (x *CreateProfileResponse) Reset() { + *x = CreateProfileResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateProfileResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateProfileResponse) ProtoMessage() {} + +func (x *CreateProfileResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateProfileResponse.ProtoReflect.Descriptor instead. +func (*CreateProfileResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{15} +} + +func (x *CreateProfileResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *CreateProfileResponse) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *CreateProfileResponse) GetRefId() string { + if x != nil { + return x.RefId + } + return "" +} + +func (x *CreateProfileResponse) GetProfileKey() string { + if x != nil { + return x.ProfileKey + } + return "" +} + +func (x *CreateProfileResponse) GetMessagingActive() bool { + if x != nil { + return x.MessagingActive + } + return false +} + +// 获取用户配置列表请求 +type GetProfilesRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title"` + RefId string `protobuf:"bytes,2,opt,name=refId,proto3" json:"refId"` + HasActiveSocialAccounts bool `protobuf:"varint,3,opt,name=hasActiveSocialAccounts,proto3" json:"hasActiveSocialAccounts"` + IncludesActiveSocialAccounts []string `protobuf:"bytes,4,rep,name=includesActiveSocialAccounts,proto3" json:"includesActiveSocialAccounts"` + // Types that are assignable to ActionLog: + // + // *GetProfilesRequest_ActionLogBool + // *GetProfilesRequest_ActionLogInt + ActionLog isGetProfilesRequest_ActionLog `protobuf_oneof:"actionLog"` + Limit int32 `protobuf:"varint,7,opt,name=limit,proto3" json:"limit"` + Cursor string `protobuf:"bytes,8,opt,name=cursor,proto3" json:"cursor"` +} + +func (x *GetProfilesRequest) Reset() { + *x = GetProfilesRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetProfilesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetProfilesRequest) ProtoMessage() {} + +func (x *GetProfilesRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetProfilesRequest.ProtoReflect.Descriptor instead. +func (*GetProfilesRequest) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{16} +} + +func (x *GetProfilesRequest) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *GetProfilesRequest) GetRefId() string { + if x != nil { + return x.RefId + } + return "" +} + +func (x *GetProfilesRequest) GetHasActiveSocialAccounts() bool { + if x != nil { + return x.HasActiveSocialAccounts + } + return false +} + +func (x *GetProfilesRequest) GetIncludesActiveSocialAccounts() []string { + if x != nil { + return x.IncludesActiveSocialAccounts + } + return nil +} + +func (m *GetProfilesRequest) GetActionLog() isGetProfilesRequest_ActionLog { + if m != nil { + return m.ActionLog + } + return nil +} + +func (x *GetProfilesRequest) GetActionLogBool() bool { + if x, ok := x.GetActionLog().(*GetProfilesRequest_ActionLogBool); ok { + return x.ActionLogBool + } + return false +} + +func (x *GetProfilesRequest) GetActionLogInt() int32 { + if x, ok := x.GetActionLog().(*GetProfilesRequest_ActionLogInt); ok { + return x.ActionLogInt + } + return 0 +} + +func (x *GetProfilesRequest) GetLimit() int32 { + if x != nil { + return x.Limit + } + return 0 +} + +func (x *GetProfilesRequest) GetCursor() string { + if x != nil { + return x.Cursor + } + return "" +} + +type isGetProfilesRequest_ActionLog interface { + isGetProfilesRequest_ActionLog() +} + +type GetProfilesRequest_ActionLogBool struct { + ActionLogBool bool `protobuf:"varint,5,opt,name=actionLogBool,proto3,oneof"` +} + +type GetProfilesRequest_ActionLogInt struct { + ActionLogInt int32 `protobuf:"varint,6,opt,name=actionLogInt,proto3,oneof"` +} + +func (*GetProfilesRequest_ActionLogBool) isGetProfilesRequest_ActionLog() {} + +func (*GetProfilesRequest_ActionLogInt) isGetProfilesRequest_ActionLog() {} + +// 用户配置项 +type ProfileItem struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title"` + DisplayTitle string `protobuf:"bytes,3,opt,name=displayTitle,proto3" json:"displayTitle"` + Created *Timestamp `protobuf:"bytes,4,opt,name=created,proto3" json:"created"` + CreatedUTC string `protobuf:"bytes,5,opt,name=createdUTC,proto3" json:"createdUTC"` + RefId string `protobuf:"bytes,6,opt,name=refId,proto3" json:"refId"` + ActiveSocialAccounts []string `protobuf:"bytes,7,rep,name=activeSocialAccounts,proto3" json:"activeSocialAccounts"` + Suspended bool `protobuf:"varint,8,opt,name=suspended,proto3" json:"suspended"` +} + +func (x *ProfileItem) Reset() { + *x = ProfileItem{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ProfileItem) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProfileItem) ProtoMessage() {} + +func (x *ProfileItem) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ProfileItem.ProtoReflect.Descriptor instead. +func (*ProfileItem) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{17} +} + +func (x *ProfileItem) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *ProfileItem) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *ProfileItem) GetDisplayTitle() string { + if x != nil { + return x.DisplayTitle + } + return "" +} + +func (x *ProfileItem) GetCreated() *Timestamp { + if x != nil { + return x.Created + } + return nil +} + +func (x *ProfileItem) GetCreatedUTC() string { + if x != nil { + return x.CreatedUTC + } + return "" +} + +func (x *ProfileItem) GetRefId() string { + if x != nil { + return x.RefId + } + return "" +} + +func (x *ProfileItem) GetActiveSocialAccounts() []string { + if x != nil { + return x.ActiveSocialAccounts + } + return nil +} + +func (x *ProfileItem) GetSuspended() bool { + if x != nil { + return x.Suspended + } + return false +} + +// 分页信息 +type Pagination struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + HasMore bool `protobuf:"varint,1,opt,name=hasMore,proto3" json:"hasMore"` + NextCursor string `protobuf:"bytes,2,opt,name=nextCursor,proto3" json:"nextCursor"` + Limit int32 `protobuf:"varint,3,opt,name=limit,proto3" json:"limit"` +} + +func (x *Pagination) Reset() { + *x = Pagination{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Pagination) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Pagination) ProtoMessage() {} + +func (x *Pagination) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[18] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Pagination.ProtoReflect.Descriptor instead. +func (*Pagination) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{18} +} + +func (x *Pagination) GetHasMore() bool { + if x != nil { + return x.HasMore + } + return false +} + +func (x *Pagination) GetNextCursor() string { + if x != nil { + return x.NextCursor + } + return "" +} + +func (x *Pagination) GetLimit() int32 { + if x != nil { + return x.Limit + } + return 0 +} + +// 获取用户配置列表响应 +type GetProfilesResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Profiles []*ProfileItem `protobuf:"bytes,1,rep,name=profiles,proto3" json:"profiles"` + Count int32 `protobuf:"varint,2,opt,name=count,proto3" json:"count"` + LastUpdated string `protobuf:"bytes,3,opt,name=lastUpdated,proto3" json:"lastUpdated"` + NextUpdate string `protobuf:"bytes,4,opt,name=nextUpdate,proto3" json:"nextUpdate"` + Pagination *Pagination `protobuf:"bytes,5,opt,name=pagination,proto3" json:"pagination"` +} + +func (x *GetProfilesResponse) Reset() { + *x = GetProfilesResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetProfilesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetProfilesResponse) ProtoMessage() {} + +func (x *GetProfilesResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[19] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetProfilesResponse.ProtoReflect.Descriptor instead. +func (*GetProfilesResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{19} +} + +func (x *GetProfilesResponse) GetProfiles() []*ProfileItem { + if x != nil { + return x.Profiles + } + return nil +} + +func (x *GetProfilesResponse) GetCount() int32 { + if x != nil { + return x.Count + } + return 0 +} + +func (x *GetProfilesResponse) GetLastUpdated() string { + if x != nil { + return x.LastUpdated + } + return "" +} + +func (x *GetProfilesResponse) GetNextUpdate() string { + if x != nil { + return x.NextUpdate + } + return "" +} + +func (x *GetProfilesResponse) GetPagination() *Pagination { + if x != nil { + return x.Pagination + } + return nil +} + +// 邮件配置对象 +type Email struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + To string `protobuf:"bytes,1,opt,name=to,proto3" json:"to"` + Subject string `protobuf:"bytes,2,opt,name=subject,proto3" json:"subject"` + Body string `protobuf:"bytes,3,opt,name=body,proto3" json:"body"` +} + +func (x *Email) Reset() { + *x = Email{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Email) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Email) ProtoMessage() {} + +func (x *Email) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[20] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Email.ProtoReflect.Descriptor instead. +func (*Email) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{20} +} + +func (x *Email) GetTo() string { + if x != nil { + return x.To + } + return "" +} + +func (x *Email) GetSubject() string { + if x != nil { + return x.Subject + } + return "" +} + +func (x *Email) GetBody() string { + if x != nil { + return x.Body + } + return "" +} + +// 生成JWT请求 +type GenerateJWTRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Domain string `protobuf:"bytes,1,opt,name=domain,proto3" json:"domain"` + PrivateKey string `protobuf:"bytes,2,opt,name=privateKey,proto3" json:"privateKey"` + ProfileKey string `protobuf:"bytes,3,opt,name=profileKey,proto3" json:"profileKey"` + Logout bool `protobuf:"varint,4,opt,name=logout,proto3" json:"logout"` + Redirect string `protobuf:"bytes,5,opt,name=redirect,proto3" json:"redirect"` + AllowedSocial []string `protobuf:"bytes,6,rep,name=allowedSocial,proto3" json:"allowedSocial"` + Verify bool `protobuf:"varint,7,opt,name=verify,proto3" json:"verify"` + Base64 bool `protobuf:"varint,8,opt,name=base64,proto3" json:"base64"` + ExpiresIn int32 `protobuf:"varint,9,opt,name=expiresIn,proto3" json:"expiresIn"` + Email *Email `protobuf:"bytes,10,opt,name=email,proto3" json:"email"` +} + +func (x *GenerateJWTRequest) Reset() { + *x = GenerateJWTRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenerateJWTRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenerateJWTRequest) ProtoMessage() {} + +func (x *GenerateJWTRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_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 GenerateJWTRequest.ProtoReflect.Descriptor instead. +func (*GenerateJWTRequest) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{21} +} + +func (x *GenerateJWTRequest) GetDomain() string { + if x != nil { + return x.Domain + } + return "" +} + +func (x *GenerateJWTRequest) GetPrivateKey() string { + if x != nil { + return x.PrivateKey + } + return "" +} + +func (x *GenerateJWTRequest) GetProfileKey() string { + if x != nil { + return x.ProfileKey + } + return "" +} + +func (x *GenerateJWTRequest) GetLogout() bool { + if x != nil { + return x.Logout + } + return false +} + +func (x *GenerateJWTRequest) GetRedirect() string { + if x != nil { + return x.Redirect + } + return "" +} + +func (x *GenerateJWTRequest) GetAllowedSocial() []string { + if x != nil { + return x.AllowedSocial + } + return nil +} + +func (x *GenerateJWTRequest) GetVerify() bool { + if x != nil { + return x.Verify + } + return false +} + +func (x *GenerateJWTRequest) GetBase64() bool { + if x != nil { + return x.Base64 + } + return false +} + +func (x *GenerateJWTRequest) GetExpiresIn() int32 { + if x != nil { + return x.ExpiresIn + } + return 0 +} + +func (x *GenerateJWTRequest) GetEmail() *Email { + if x != nil { + return x.Email + } + return nil +} + +// 生成JWT响应 +type GenerateJWTResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title"` + Token string `protobuf:"bytes,3,opt,name=token,proto3" json:"token"` + Url string `protobuf:"bytes,4,opt,name=url,proto3" json:"url"` + EmailSent bool `protobuf:"varint,5,opt,name=emailSent,proto3" json:"emailSent"` + ExpiresIn string `protobuf:"bytes,6,opt,name=expiresIn,proto3" json:"expiresIn"` +} + +func (x *GenerateJWTResponse) Reset() { + *x = GenerateJWTResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenerateJWTResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenerateJWTResponse) ProtoMessage() {} + +func (x *GenerateJWTResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[22] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenerateJWTResponse.ProtoReflect.Descriptor instead. +func (*GenerateJWTResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{22} +} + +func (x *GenerateJWTResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *GenerateJWTResponse) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *GenerateJWTResponse) GetToken() string { + if x != nil { + return x.Token + } + return "" +} + +func (x *GenerateJWTResponse) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *GenerateJWTResponse) GetEmailSent() bool { + if x != nil { + return x.EmailSent + } + return false +} + +func (x *GenerateJWTResponse) GetExpiresIn() string { + if x != nil { + return x.ExpiresIn + } + return "" +} + +// 历史记录中的帖子 ID +type HistoryPostId struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id"` + Platform string `protobuf:"bytes,3,opt,name=platform,proto3" json:"platform"` + PostUrl string `protobuf:"bytes,4,opt,name=postUrl,proto3" json:"postUrl"` + IsVideo bool `protobuf:"varint,5,opt,name=isVideo,proto3" json:"isVideo"` +} + +func (x *HistoryPostId) Reset() { + *x = HistoryPostId{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *HistoryPostId) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HistoryPostId) ProtoMessage() {} + +func (x *HistoryPostId) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[23] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use HistoryPostId.ProtoReflect.Descriptor instead. +func (*HistoryPostId) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{23} +} + +func (x *HistoryPostId) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *HistoryPostId) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *HistoryPostId) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *HistoryPostId) GetPostUrl() string { + if x != nil { + return x.PostUrl + } + return "" +} + +func (x *HistoryPostId) GetIsVideo() bool { + if x != nil { + return x.IsVideo + } + return false +} + +// 历史记录项 +type HistoryItem struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` + Post string `protobuf:"bytes,2,opt,name=post,proto3" json:"post"` + Platforms []string `protobuf:"bytes,3,rep,name=platforms,proto3" json:"platforms"` + PostIds []*HistoryPostId `protobuf:"bytes,4,rep,name=postIds,proto3" json:"postIds"` + Errors []string `protobuf:"bytes,5,rep,name=errors,proto3" json:"errors"` + Type string `protobuf:"bytes,6,opt,name=type,proto3" json:"type"` + Notes string `protobuf:"bytes,7,opt,name=notes,proto3" json:"notes"` + Created string `protobuf:"bytes,8,opt,name=created,proto3" json:"created"` + Status string `protobuf:"bytes,9,opt,name=status,proto3" json:"status"` + ScheduleDate *Timestamp `protobuf:"bytes,10,opt,name=scheduleDate,proto3" json:"scheduleDate"` + Approved bool `protobuf:"varint,11,opt,name=approved,proto3" json:"approved"` + ApprovedBy string `protobuf:"bytes,12,opt,name=approvedBy,proto3" json:"approvedBy"` + ApprovedDate string `protobuf:"bytes,13,opt,name=approvedDate,proto3" json:"approvedDate"` + RejectedBy string `protobuf:"bytes,14,opt,name=rejectedBy,proto3" json:"rejectedBy"` + RejectedDate string `protobuf:"bytes,15,opt,name=rejectedDate,proto3" json:"rejectedDate"` + RequiresApproval bool `protobuf:"varint,16,opt,name=requiresApproval,proto3" json:"requiresApproval"` + ProfileTitle string `protobuf:"bytes,17,opt,name=profileTitle,proto3" json:"profileTitle"` + RefId string `protobuf:"bytes,18,opt,name=refId,proto3" json:"refId"` + MediaUrls []string `protobuf:"bytes,19,rep,name=mediaUrls,proto3" json:"mediaUrls"` + ShortenLinks bool `protobuf:"varint,20,opt,name=shortenLinks,proto3" json:"shortenLinks"` +} + +func (x *HistoryItem) Reset() { + *x = HistoryItem{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *HistoryItem) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HistoryItem) ProtoMessage() {} + +func (x *HistoryItem) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[24] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use HistoryItem.ProtoReflect.Descriptor instead. +func (*HistoryItem) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{24} +} + +func (x *HistoryItem) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *HistoryItem) GetPost() string { + if x != nil { + return x.Post + } + return "" +} + +func (x *HistoryItem) GetPlatforms() []string { + if x != nil { + return x.Platforms + } + return nil +} + +func (x *HistoryItem) GetPostIds() []*HistoryPostId { + if x != nil { + return x.PostIds + } + return nil +} + +func (x *HistoryItem) GetErrors() []string { + if x != nil { + return x.Errors + } + return nil +} + +func (x *HistoryItem) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *HistoryItem) GetNotes() string { + if x != nil { + return x.Notes + } + return "" +} + +func (x *HistoryItem) GetCreated() string { + if x != nil { + return x.Created + } + return "" +} + +func (x *HistoryItem) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *HistoryItem) GetScheduleDate() *Timestamp { + if x != nil { + return x.ScheduleDate + } + return nil +} + +func (x *HistoryItem) GetApproved() bool { + if x != nil { + return x.Approved + } + return false +} + +func (x *HistoryItem) GetApprovedBy() string { + if x != nil { + return x.ApprovedBy + } + return "" +} + +func (x *HistoryItem) GetApprovedDate() string { + if x != nil { + return x.ApprovedDate + } + return "" +} + +func (x *HistoryItem) GetRejectedBy() string { + if x != nil { + return x.RejectedBy + } + return "" +} + +func (x *HistoryItem) GetRejectedDate() string { + if x != nil { + return x.RejectedDate + } + return "" +} + +func (x *HistoryItem) GetRequiresApproval() bool { + if x != nil { + return x.RequiresApproval + } + return false +} + +func (x *HistoryItem) GetProfileTitle() string { + if x != nil { + return x.ProfileTitle + } + return "" +} + +func (x *HistoryItem) GetRefId() string { + if x != nil { + return x.RefId + } + return "" +} + +func (x *HistoryItem) GetMediaUrls() []string { + if x != nil { + return x.MediaUrls + } + return nil +} + +func (x *HistoryItem) GetShortenLinks() bool { + if x != nil { + return x.ShortenLinks + } + return false +} + +// 获取帖子历史记录请求 +type GetHistoryRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + StartDate string `protobuf:"bytes,1,opt,name=startDate,proto3" json:"startDate"` + EndDate string `protobuf:"bytes,2,opt,name=endDate,proto3" json:"endDate"` + Limit int32 `protobuf:"varint,3,opt,name=limit,proto3" json:"limit"` + Platforms []string `protobuf:"bytes,4,rep,name=platforms,proto3" json:"platforms"` + LastDays int32 `protobuf:"varint,5,opt,name=lastDays,proto3" json:"lastDays"` + Status string `protobuf:"bytes,6,opt,name=status,proto3" json:"status"` + Type string `protobuf:"bytes,7,opt,name=type,proto3" json:"type"` + AutoRepostId string `protobuf:"bytes,8,opt,name=autoRepostId,proto3" json:"autoRepostId"` + ProfileKey string `protobuf:"bytes,9,opt,name=profileKey,proto3" json:"profileKey"` +} + +func (x *GetHistoryRequest) Reset() { + *x = GetHistoryRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetHistoryRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetHistoryRequest) ProtoMessage() {} + +func (x *GetHistoryRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[25] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetHistoryRequest.ProtoReflect.Descriptor instead. +func (*GetHistoryRequest) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{25} +} + +func (x *GetHistoryRequest) GetStartDate() string { + if x != nil { + return x.StartDate + } + return "" +} + +func (x *GetHistoryRequest) GetEndDate() string { + if x != nil { + return x.EndDate + } + return "" +} + +func (x *GetHistoryRequest) GetLimit() int32 { + if x != nil { + return x.Limit + } + return 0 +} + +func (x *GetHistoryRequest) GetPlatforms() []string { + if x != nil { + return x.Platforms + } + return nil +} + +func (x *GetHistoryRequest) GetLastDays() int32 { + if x != nil { + return x.LastDays + } + return 0 +} + +func (x *GetHistoryRequest) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *GetHistoryRequest) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *GetHistoryRequest) GetAutoRepostId() string { + if x != nil { + return x.AutoRepostId + } + return "" +} + +func (x *GetHistoryRequest) GetProfileKey() string { + if x != nil { + return x.ProfileKey + } + return "" +} + +// 获取帖子历史记录响应 +type GetHistoryResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + History []*HistoryItem `protobuf:"bytes,1,rep,name=history,proto3" json:"history"` + RefId string `protobuf:"bytes,2,opt,name=refId,proto3" json:"refId"` + Count int32 `protobuf:"varint,3,opt,name=count,proto3" json:"count"` + LastUpdated string `protobuf:"bytes,4,opt,name=lastUpdated,proto3" json:"lastUpdated"` + NextUpdate string `protobuf:"bytes,5,opt,name=nextUpdate,proto3" json:"nextUpdate"` +} + +func (x *GetHistoryResponse) Reset() { + *x = GetHistoryResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetHistoryResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetHistoryResponse) ProtoMessage() {} + +func (x *GetHistoryResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[26] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetHistoryResponse.ProtoReflect.Descriptor instead. +func (*GetHistoryResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{26} +} + +func (x *GetHistoryResponse) GetHistory() []*HistoryItem { + if x != nil { + return x.History + } + return nil +} + +func (x *GetHistoryResponse) GetRefId() string { + if x != nil { + return x.RefId + } + return "" +} + +func (x *GetHistoryResponse) GetCount() int32 { + if x != nil { + return x.Count + } + return 0 +} + +func (x *GetHistoryResponse) GetLastUpdated() string { + if x != nil { + return x.LastUpdated + } + return "" +} + +func (x *GetHistoryResponse) GetNextUpdate() string { + if x != nil { + return x.NextUpdate + } + return "" +} + +// 根据ID获取帖子历史记录请求 +type GetHistoryByIdRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` + SearchAllPosts bool `protobuf:"varint,2,opt,name=searchAllPosts,proto3" json:"searchAllPosts"` + ProfileKey string `protobuf:"bytes,3,opt,name=profileKey,proto3" json:"profileKey"` +} + +func (x *GetHistoryByIdRequest) Reset() { + *x = GetHistoryByIdRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetHistoryByIdRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetHistoryByIdRequest) ProtoMessage() {} + +func (x *GetHistoryByIdRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[27] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetHistoryByIdRequest.ProtoReflect.Descriptor instead. +func (*GetHistoryByIdRequest) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{27} +} + +func (x *GetHistoryByIdRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *GetHistoryByIdRequest) GetSearchAllPosts() bool { + if x != nil { + return x.SearchAllPosts + } + return false +} + +func (x *GetHistoryByIdRequest) GetProfileKey() string { + if x != nil { + return x.ProfileKey + } + return "" +} + +// 根据ID获取帖子历史记录响应 +type GetHistoryByIdResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Tier string `protobuf:"bytes,1,opt,name=tier,proto3" json:"tier"` + Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status"` + MediaUrls []string `protobuf:"bytes,3,rep,name=mediaUrls,proto3" json:"mediaUrls"` + PostIds []*HistoryPostId `protobuf:"bytes,4,rep,name=postIds,proto3" json:"postIds"` + Id string `protobuf:"bytes,5,opt,name=id,proto3" json:"id"` + Errors []string `protobuf:"bytes,6,rep,name=errors,proto3" json:"errors"` + Platforms []string `protobuf:"bytes,7,rep,name=platforms,proto3" json:"platforms"` + ScheduleDate *Timestamp `protobuf:"bytes,8,opt,name=scheduleDate,proto3" json:"scheduleDate"` + Created string `protobuf:"bytes,9,opt,name=created,proto3" json:"created"` + ShortenLinks bool `protobuf:"varint,10,opt,name=shortenLinks,proto3" json:"shortenLinks"` + Post string `protobuf:"bytes,11,opt,name=post,proto3" json:"post"` + Notes string `protobuf:"bytes,12,opt,name=notes,proto3" json:"notes"` + Type string `protobuf:"bytes,13,opt,name=type,proto3" json:"type"` +} + +func (x *GetHistoryByIdResponse) Reset() { + *x = GetHistoryByIdResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetHistoryByIdResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetHistoryByIdResponse) ProtoMessage() {} + +func (x *GetHistoryByIdResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[28] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetHistoryByIdResponse.ProtoReflect.Descriptor instead. +func (*GetHistoryByIdResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{28} +} + +func (x *GetHistoryByIdResponse) GetTier() string { + if x != nil { + return x.Tier + } + return "" +} + +func (x *GetHistoryByIdResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *GetHistoryByIdResponse) GetMediaUrls() []string { + if x != nil { + return x.MediaUrls + } + return nil +} + +func (x *GetHistoryByIdResponse) GetPostIds() []*HistoryPostId { + if x != nil { + return x.PostIds + } + return nil +} + +func (x *GetHistoryByIdResponse) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *GetHistoryByIdResponse) GetErrors() []string { + if x != nil { + return x.Errors + } + return nil +} + +func (x *GetHistoryByIdResponse) GetPlatforms() []string { + if x != nil { + return x.Platforms + } + return nil +} + +func (x *GetHistoryByIdResponse) GetScheduleDate() *Timestamp { + if x != nil { + return x.ScheduleDate + } + return nil +} + +func (x *GetHistoryByIdResponse) GetCreated() string { + if x != nil { + return x.Created + } + return "" +} + +func (x *GetHistoryByIdResponse) GetShortenLinks() bool { + if x != nil { + return x.ShortenLinks + } + return false +} + +func (x *GetHistoryByIdResponse) GetPost() string { + if x != nil { + return x.Post + } + return "" +} + +func (x *GetHistoryByIdResponse) GetNotes() string { + if x != nil { + return x.Notes + } + return "" +} + +func (x *GetHistoryByIdResponse) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +// 平台帖子 +type PlatformPost struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` + Post string `protobuf:"bytes,2,opt,name=post,proto3" json:"post"` + PostUrl string `protobuf:"bytes,3,opt,name=postUrl,proto3" json:"postUrl"` + Created string `protobuf:"bytes,4,opt,name=created,proto3" json:"created"` + CreatedAt string `protobuf:"bytes,5,opt,name=createdAt,proto3" json:"createdAt"` +} + +func (x *PlatformPost) Reset() { + *x = PlatformPost{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PlatformPost) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PlatformPost) ProtoMessage() {} + +func (x *PlatformPost) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[29] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PlatformPost.ProtoReflect.Descriptor instead. +func (*PlatformPost) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{29} +} + +func (x *PlatformPost) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *PlatformPost) GetPost() string { + if x != nil { + return x.Post + } + return "" +} + +func (x *PlatformPost) GetPostUrl() string { + if x != nil { + return x.PostUrl + } + return "" +} + +func (x *PlatformPost) GetCreated() string { + if x != nil { + return x.Created + } + return "" +} + +func (x *PlatformPost) GetCreatedAt() string { + if x != nil { + return x.CreatedAt + } + return "" +} + +// 根据平台获取帖子历史记录请求 +type GetHistoryByPlatformRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Platform string `protobuf:"bytes,1,opt,name=platform,proto3" json:"platform"` + ProfileKey string `protobuf:"bytes,2,opt,name=profileKey,proto3" json:"profileKey"` +} + +func (x *GetHistoryByPlatformRequest) Reset() { + *x = GetHistoryByPlatformRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetHistoryByPlatformRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetHistoryByPlatformRequest) ProtoMessage() {} + +func (x *GetHistoryByPlatformRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[30] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetHistoryByPlatformRequest.ProtoReflect.Descriptor instead. +func (*GetHistoryByPlatformRequest) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{30} +} + +func (x *GetHistoryByPlatformRequest) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *GetHistoryByPlatformRequest) GetProfileKey() string { + if x != nil { + return x.ProfileKey + } + return "" +} + +// 根据平台获取帖子历史记录响应 +type GetHistoryByPlatformResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + Posts []*PlatformPost `protobuf:"bytes,2,rep,name=posts,proto3" json:"posts"` + LastUpdated string `protobuf:"bytes,3,opt,name=lastUpdated,proto3" json:"lastUpdated"` + NextUpdate string `protobuf:"bytes,4,opt,name=nextUpdate,proto3" json:"nextUpdate"` +} + +func (x *GetHistoryByPlatformResponse) Reset() { + *x = GetHistoryByPlatformResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetHistoryByPlatformResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetHistoryByPlatformResponse) ProtoMessage() {} + +func (x *GetHistoryByPlatformResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[31] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetHistoryByPlatformResponse.ProtoReflect.Descriptor instead. +func (*GetHistoryByPlatformResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{31} +} + +func (x *GetHistoryByPlatformResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *GetHistoryByPlatformResponse) GetPosts() []*PlatformPost { + if x != nil { + return x.Posts + } + return nil +} + +func (x *GetHistoryByPlatformResponse) GetLastUpdated() string { + if x != nil { + return x.LastUpdated + } + return "" +} + +func (x *GetHistoryByPlatformResponse) GetNextUpdate() string { + if x != nil { + return x.NextUpdate + } + return "" +} + +// 发送消息请求 +type SendMessageRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Platform string `protobuf:"bytes,1,opt,name=platform,proto3" json:"platform"` + RecipientId string `protobuf:"bytes,2,opt,name=recipientId,proto3" json:"recipientId"` + Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message"` + MediaUrls []string `protobuf:"bytes,4,rep,name=mediaUrls,proto3" json:"mediaUrls"` + ProfileKey string `protobuf:"bytes,5,opt,name=profileKey,proto3" json:"profileKey"` +} + +func (x *SendMessageRequest) Reset() { + *x = SendMessageRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SendMessageRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SendMessageRequest) ProtoMessage() {} + +func (x *SendMessageRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[32] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SendMessageRequest.ProtoReflect.Descriptor instead. +func (*SendMessageRequest) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{32} +} + +func (x *SendMessageRequest) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *SendMessageRequest) GetRecipientId() string { + if x != nil { + return x.RecipientId + } + return "" +} + +func (x *SendMessageRequest) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +func (x *SendMessageRequest) GetMediaUrls() []string { + if x != nil { + return x.MediaUrls + } + return nil +} + +func (x *SendMessageRequest) GetProfileKey() string { + if x != nil { + return x.ProfileKey + } + return "" +} + +// 消息项(用于批量消息响应中的单个消息) +type MessageItem struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + RecipientId string `protobuf:"bytes,2,opt,name=recipientId,proto3" json:"recipientId"` + MessageId string `protobuf:"bytes,3,opt,name=messageId,proto3" json:"messageId"` + Message string `protobuf:"bytes,4,opt,name=message,proto3" json:"message"` + Type string `protobuf:"bytes,5,opt,name=type,proto3" json:"type"` + MediaUrl string `protobuf:"bytes,6,opt,name=mediaUrl,proto3" json:"mediaUrl"` + Action string `protobuf:"bytes,7,opt,name=action,proto3" json:"action"` + Code int32 `protobuf:"varint,8,opt,name=code,proto3" json:"code"` +} + +func (x *MessageItem) Reset() { + *x = MessageItem{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MessageItem) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MessageItem) ProtoMessage() {} + +func (x *MessageItem) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[33] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MessageItem.ProtoReflect.Descriptor instead. +func (*MessageItem) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{33} +} + +func (x *MessageItem) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *MessageItem) GetRecipientId() string { + if x != nil { + return x.RecipientId + } + return "" +} + +func (x *MessageItem) GetMessageId() string { + if x != nil { + return x.MessageId + } + return "" +} + +func (x *MessageItem) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +func (x *MessageItem) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *MessageItem) GetMediaUrl() string { + if x != nil { + return x.MediaUrl + } + return "" +} + +func (x *MessageItem) GetAction() string { + if x != nil { + return x.Action + } + return "" +} + +func (x *MessageItem) GetCode() int32 { + if x != nil { + return x.Code + } + return 0 +} + +// 发送消息响应 +type SendMessageResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + RecipientId string `protobuf:"bytes,2,opt,name=recipientId,proto3" json:"recipientId"` + MessageId string `protobuf:"bytes,3,opt,name=messageId,proto3" json:"messageId"` + Message string `protobuf:"bytes,4,opt,name=message,proto3" json:"message"` // 成功消息的内容或错误消息的内容(根据 status 判断) + Type string `protobuf:"bytes,5,opt,name=type,proto3" json:"type"` + MediaUrl string `protobuf:"bytes,6,opt,name=mediaUrl,proto3" json:"mediaUrl"` + Action string `protobuf:"bytes,7,opt,name=action,proto3" json:"action"` + Code int32 `protobuf:"varint,8,opt,name=code,proto3" json:"code"` + Messages []*MessageItem `protobuf:"bytes,9,rep,name=messages,proto3" json:"messages"` +} + +func (x *SendMessageResponse) Reset() { + *x = SendMessageResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SendMessageResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SendMessageResponse) ProtoMessage() {} + +func (x *SendMessageResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[34] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SendMessageResponse.ProtoReflect.Descriptor instead. +func (*SendMessageResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{34} +} + +func (x *SendMessageResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *SendMessageResponse) GetRecipientId() string { + if x != nil { + return x.RecipientId + } + return "" +} + +func (x *SendMessageResponse) GetMessageId() string { + if x != nil { + return x.MessageId + } + return "" +} + +func (x *SendMessageResponse) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +func (x *SendMessageResponse) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *SendMessageResponse) GetMediaUrl() string { + if x != nil { + return x.MediaUrl + } + return "" +} + +func (x *SendMessageResponse) GetAction() string { + if x != nil { + return x.Action + } + return "" +} + +func (x *SendMessageResponse) GetCode() int32 { + if x != nil { + return x.Code + } + return 0 +} + +func (x *SendMessageResponse) GetMessages() []*MessageItem { + if x != nil { + return x.Messages + } + return nil +} + +// 获取消息请求 +type GetMessagesRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Platform string `protobuf:"bytes,1,opt,name=platform,proto3" json:"platform"` + Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status"` + ConversationId string `protobuf:"bytes,3,opt,name=conversationId,proto3" json:"conversationId"` + ConversationsOnly bool `protobuf:"varint,4,opt,name=conversationsOnly,proto3" json:"conversationsOnly"` + ProfileKey string `protobuf:"bytes,5,opt,name=profileKey,proto3" json:"profileKey"` +} + +func (x *GetMessagesRequest) Reset() { + *x = GetMessagesRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetMessagesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetMessagesRequest) ProtoMessage() {} + +func (x *GetMessagesRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[35] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetMessagesRequest.ProtoReflect.Descriptor instead. +func (*GetMessagesRequest) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{35} +} + +func (x *GetMessagesRequest) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *GetMessagesRequest) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *GetMessagesRequest) GetConversationId() string { + if x != nil { + return x.ConversationId + } + return "" +} + +func (x *GetMessagesRequest) GetConversationsOnly() bool { + if x != nil { + return x.ConversationsOnly + } + return false +} + +func (x *GetMessagesRequest) GetProfileKey() string { + if x != nil { + return x.ProfileKey + } + return "" +} + +// 消息附件 +type MessageAttachment struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type"` + Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url"` +} + +func (x *MessageAttachment) Reset() { + *x = MessageAttachment{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MessageAttachment) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MessageAttachment) ProtoMessage() {} + +func (x *MessageAttachment) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[36] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MessageAttachment.ProtoReflect.Descriptor instead. +func (*MessageAttachment) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{36} +} + +func (x *MessageAttachment) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *MessageAttachment) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +// 消息发送者详情 +type MessageSenderDetails struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id"` + Picture string `protobuf:"bytes,3,opt,name=picture,proto3" json:"picture"` + ProfileImage string `protobuf:"bytes,4,opt,name=profileImage,proto3" json:"profileImage"` +} + +func (x *MessageSenderDetails) Reset() { + *x = MessageSenderDetails{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MessageSenderDetails) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MessageSenderDetails) ProtoMessage() {} + +func (x *MessageSenderDetails) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[37] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MessageSenderDetails.ProtoReflect.Descriptor instead. +func (*MessageSenderDetails) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{37} +} + +func (x *MessageSenderDetails) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *MessageSenderDetails) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *MessageSenderDetails) GetPicture() string { + if x != nil { + return x.Picture + } + return "" +} + +func (x *MessageSenderDetails) GetProfileImage() string { + if x != nil { + return x.ProfileImage + } + return "" +} + +// 消息接收者详情 +type MessageRecipientDetails struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id"` + Picture string `protobuf:"bytes,3,opt,name=picture,proto3" json:"picture"` +} + +func (x *MessageRecipientDetails) Reset() { + *x = MessageRecipientDetails{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MessageRecipientDetails) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MessageRecipientDetails) ProtoMessage() {} + +func (x *MessageRecipientDetails) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[38] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MessageRecipientDetails.ProtoReflect.Descriptor instead. +func (*MessageRecipientDetails) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{38} +} + +func (x *MessageRecipientDetails) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *MessageRecipientDetails) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *MessageRecipientDetails) GetPicture() string { + if x != nil { + return x.Picture + } + return "" +} + +// 消息反应(map类型,在proto中用repeated MessageReaction表示) +type MessageReaction struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + UserId string `protobuf:"bytes,1,opt,name=userId,proto3" json:"userId"` + Emoji string `protobuf:"bytes,2,opt,name=emoji,proto3" json:"emoji"` +} + +func (x *MessageReaction) Reset() { + *x = MessageReaction{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MessageReaction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MessageReaction) ProtoMessage() {} + +func (x *MessageReaction) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[39] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MessageReaction.ProtoReflect.Descriptor instead. +func (*MessageReaction) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{39} +} + +func (x *MessageReaction) GetUserId() string { + if x != nil { + return x.UserId + } + return "" +} + +func (x *MessageReaction) GetEmoji() string { + if x != nil { + return x.Emoji + } + return "" +} + +// 获取消息响应中的单个消息项 +type GetMessagesItem struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` + SenderId string `protobuf:"bytes,2,opt,name=senderId,proto3" json:"senderId"` + SenderDetails *MessageSenderDetails `protobuf:"bytes,3,opt,name=senderDetails,proto3" json:"senderDetails"` + RecipientId string `protobuf:"bytes,4,opt,name=recipientId,proto3" json:"recipientId"` + RecipientDetails *MessageRecipientDetails `protobuf:"bytes,5,opt,name=recipientDetails,proto3" json:"recipientDetails"` + ConversationId string `protobuf:"bytes,6,opt,name=conversationId,proto3" json:"conversationId"` + Message string `protobuf:"bytes,7,opt,name=message,proto3" json:"message"` + Platform string `protobuf:"bytes,8,opt,name=platform,proto3" json:"platform"` + Action string `protobuf:"bytes,9,opt,name=action,proto3" json:"action"` + Created string `protobuf:"bytes,10,opt,name=created,proto3" json:"created"` + Updated string `protobuf:"bytes,11,opt,name=updated,proto3" json:"updated"` + Attachments []*MessageAttachment `protobuf:"bytes,12,rep,name=attachments,proto3" json:"attachments"` + Reactions []*MessageReaction `protobuf:"bytes,13,rep,name=reactions,proto3" json:"reactions"` +} + +func (x *GetMessagesItem) Reset() { + *x = GetMessagesItem{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[40] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetMessagesItem) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetMessagesItem) ProtoMessage() {} + +func (x *GetMessagesItem) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[40] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetMessagesItem.ProtoReflect.Descriptor instead. +func (*GetMessagesItem) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{40} +} + +func (x *GetMessagesItem) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *GetMessagesItem) GetSenderId() string { + if x != nil { + return x.SenderId + } + return "" +} + +func (x *GetMessagesItem) GetSenderDetails() *MessageSenderDetails { + if x != nil { + return x.SenderDetails + } + return nil +} + +func (x *GetMessagesItem) GetRecipientId() string { + if x != nil { + return x.RecipientId + } + return "" +} + +func (x *GetMessagesItem) GetRecipientDetails() *MessageRecipientDetails { + if x != nil { + return x.RecipientDetails + } + return nil +} + +func (x *GetMessagesItem) GetConversationId() string { + if x != nil { + return x.ConversationId + } + return "" +} + +func (x *GetMessagesItem) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +func (x *GetMessagesItem) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *GetMessagesItem) GetAction() string { + if x != nil { + return x.Action + } + return "" +} + +func (x *GetMessagesItem) GetCreated() string { + if x != nil { + return x.Created + } + return "" +} + +func (x *GetMessagesItem) GetUpdated() string { + if x != nil { + return x.Updated + } + return "" +} + +func (x *GetMessagesItem) GetAttachments() []*MessageAttachment { + if x != nil { + return x.Attachments + } + return nil +} + +func (x *GetMessagesItem) GetReactions() []*MessageReaction { + if x != nil { + return x.Reactions + } + return nil +} + +// 对话参与者 +type ConversationParticipant struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id"` + Picture string `protobuf:"bytes,3,opt,name=picture,proto3" json:"picture"` +} + +func (x *ConversationParticipant) Reset() { + *x = ConversationParticipant{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[41] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ConversationParticipant) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ConversationParticipant) ProtoMessage() {} + +func (x *ConversationParticipant) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[41] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ConversationParticipant.ProtoReflect.Descriptor instead. +func (*ConversationParticipant) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{41} +} + +func (x *ConversationParticipant) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ConversationParticipant) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *ConversationParticipant) GetPicture() string { + if x != nil { + return x.Picture + } + return "" +} + +// 对话详情 +type ConversationDetail struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` + Participant *ConversationParticipant `protobuf:"bytes,2,opt,name=participant,proto3" json:"participant"` + Status string `protobuf:"bytes,3,opt,name=status,proto3" json:"status"` + Watermark int64 `protobuf:"varint,4,opt,name=watermark,proto3" json:"watermark"` +} + +func (x *ConversationDetail) Reset() { + *x = ConversationDetail{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ConversationDetail) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ConversationDetail) ProtoMessage() {} + +func (x *ConversationDetail) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[42] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ConversationDetail.ProtoReflect.Descriptor instead. +func (*ConversationDetail) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{42} +} + +func (x *ConversationDetail) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *ConversationDetail) GetParticipant() *ConversationParticipant { + if x != nil { + return x.Participant + } + return nil +} + +func (x *ConversationDetail) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *ConversationDetail) GetWatermark() int64 { + if x != nil { + return x.Watermark + } + return 0 +} + +// 获取消息响应 +type GetMessagesResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + Messages []*GetMessagesItem `protobuf:"bytes,2,rep,name=messages,proto3" json:"messages"` + LastUpdated string `protobuf:"bytes,3,opt,name=lastUpdated,proto3" json:"lastUpdated"` + NextUpdate string `protobuf:"bytes,4,opt,name=nextUpdate,proto3" json:"nextUpdate"` + ConversationIds []string `protobuf:"bytes,5,rep,name=conversationIds,proto3" json:"conversationIds"` + ConversationsDetails []*ConversationDetail `protobuf:"bytes,6,rep,name=conversationsDetails,proto3" json:"conversationsDetails"` + Action string `protobuf:"bytes,7,opt,name=action,proto3" json:"action"` + Code int32 `protobuf:"varint,8,opt,name=code,proto3" json:"code"` + ErrMsg string `protobuf:"bytes,9,opt,name=errMsg,json=message,proto3" json:"errMsg"` // 错误消息(JSON 字段名为 "message",但 proto 字段名为 errMsg 以区分) +} + +func (x *GetMessagesResponse) Reset() { + *x = GetMessagesResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetMessagesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetMessagesResponse) ProtoMessage() {} + +func (x *GetMessagesResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[43] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetMessagesResponse.ProtoReflect.Descriptor instead. +func (*GetMessagesResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{43} +} + +func (x *GetMessagesResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *GetMessagesResponse) GetMessages() []*GetMessagesItem { + if x != nil { + return x.Messages + } + return nil +} + +func (x *GetMessagesResponse) GetLastUpdated() string { + if x != nil { + return x.LastUpdated + } + return "" +} + +func (x *GetMessagesResponse) GetNextUpdate() string { + if x != nil { + return x.NextUpdate + } + return "" +} + +func (x *GetMessagesResponse) GetConversationIds() []string { + if x != nil { + return x.ConversationIds + } + return nil +} + +func (x *GetMessagesResponse) GetConversationsDetails() []*ConversationDetail { + if x != nil { + return x.ConversationsDetails + } + return nil +} + +func (x *GetMessagesResponse) GetAction() string { + if x != nil { + return x.Action + } + return "" +} + +func (x *GetMessagesResponse) GetCode() int32 { + if x != nil { + return x.Code + } + return 0 +} + +func (x *GetMessagesResponse) GetErrMsg() string { + if x != nil { + return x.ErrMsg + } + return "" +} + +// 发布评论请求 +type PostCommentRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` + Comment string `protobuf:"bytes,2,opt,name=comment,proto3" json:"comment"` + Platforms []string `protobuf:"bytes,3,rep,name=platforms,proto3" json:"platforms"` + SearchPlatformId bool `protobuf:"varint,4,opt,name=searchPlatformId,proto3" json:"searchPlatformId"` + MediaUrls []string `protobuf:"bytes,5,rep,name=mediaUrls,proto3" json:"mediaUrls"` + ProfileKey string `protobuf:"bytes,6,opt,name=profileKey,proto3" json:"profileKey"` +} + +func (x *PostCommentRequest) Reset() { + *x = PostCommentRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[44] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PostCommentRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PostCommentRequest) ProtoMessage() {} + +func (x *PostCommentRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[44] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PostCommentRequest.ProtoReflect.Descriptor instead. +func (*PostCommentRequest) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{44} +} + +func (x *PostCommentRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *PostCommentRequest) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *PostCommentRequest) GetPlatforms() []string { + if x != nil { + return x.Platforms + } + return nil +} + +func (x *PostCommentRequest) GetSearchPlatformId() bool { + if x != nil { + return x.SearchPlatformId + } + return false +} + +func (x *PostCommentRequest) GetMediaUrls() []string { + if x != nil { + return x.MediaUrls + } + return nil +} + +func (x *PostCommentRequest) GetProfileKey() string { + if x != nil { + return x.ProfileKey + } + return "" +} + +// Instagram 平台评论响应 +type InstagramCommentResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + CommentId string `protobuf:"bytes,2,opt,name=commentId,proto3" json:"commentId"` + Comment string `protobuf:"bytes,3,opt,name=comment,proto3" json:"comment"` + Platform string `protobuf:"bytes,4,opt,name=platform,proto3" json:"platform"` +} + +func (x *InstagramCommentResponse) Reset() { + *x = InstagramCommentResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[45] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *InstagramCommentResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InstagramCommentResponse) ProtoMessage() {} + +func (x *InstagramCommentResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[45] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InstagramCommentResponse.ProtoReflect.Descriptor instead. +func (*InstagramCommentResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{45} +} + +func (x *InstagramCommentResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *InstagramCommentResponse) GetCommentId() string { + if x != nil { + return x.CommentId + } + return "" +} + +func (x *InstagramCommentResponse) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *InstagramCommentResponse) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +// TikTok 平台评论响应 +type TikTokCommentResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + CommentId string `protobuf:"bytes,2,opt,name=commentId,proto3" json:"commentId"` + Comment string `protobuf:"bytes,3,opt,name=comment,proto3" json:"comment"` + Platform string `protobuf:"bytes,4,opt,name=platform,proto3" json:"platform"` + VideoId string `protobuf:"bytes,5,opt,name=videoId,proto3" json:"videoId"` +} + +func (x *TikTokCommentResponse) Reset() { + *x = TikTokCommentResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[46] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TikTokCommentResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TikTokCommentResponse) ProtoMessage() {} + +func (x *TikTokCommentResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[46] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TikTokCommentResponse.ProtoReflect.Descriptor instead. +func (*TikTokCommentResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{46} +} + +func (x *TikTokCommentResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *TikTokCommentResponse) GetCommentId() string { + if x != nil { + return x.CommentId + } + return "" +} + +func (x *TikTokCommentResponse) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *TikTokCommentResponse) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *TikTokCommentResponse) GetVideoId() string { + if x != nil { + return x.VideoId + } + return "" +} + +// Bluesky 平台评论响应 +type BlueskyCommentResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + CommentId string `protobuf:"bytes,2,opt,name=commentId,proto3" json:"commentId"` + Cid string `protobuf:"bytes,3,opt,name=cid,proto3" json:"cid"` + Comment string `protobuf:"bytes,4,opt,name=comment,proto3" json:"comment"` + Platform string `protobuf:"bytes,5,opt,name=platform,proto3" json:"platform"` + PostUrl string `protobuf:"bytes,6,opt,name=postUrl,proto3" json:"postUrl"` +} + +func (x *BlueskyCommentResponse) Reset() { + *x = BlueskyCommentResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[47] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueskyCommentResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueskyCommentResponse) ProtoMessage() {} + +func (x *BlueskyCommentResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[47] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueskyCommentResponse.ProtoReflect.Descriptor instead. +func (*BlueskyCommentResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{47} +} + +func (x *BlueskyCommentResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *BlueskyCommentResponse) GetCommentId() string { + if x != nil { + return x.CommentId + } + return "" +} + +func (x *BlueskyCommentResponse) GetCid() string { + if x != nil { + return x.Cid + } + return "" +} + +func (x *BlueskyCommentResponse) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *BlueskyCommentResponse) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *BlueskyCommentResponse) GetPostUrl() string { + if x != nil { + return x.PostUrl + } + return "" +} + +// Facebook 平台评论响应 +type FacebookCommentResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + CommentId string `protobuf:"bytes,2,opt,name=commentId,proto3" json:"commentId"` + Comment string `protobuf:"bytes,3,opt,name=comment,proto3" json:"comment"` + Platform string `protobuf:"bytes,4,opt,name=platform,proto3" json:"platform"` +} + +func (x *FacebookCommentResponse) Reset() { + *x = FacebookCommentResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[48] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FacebookCommentResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FacebookCommentResponse) ProtoMessage() {} + +func (x *FacebookCommentResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[48] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FacebookCommentResponse.ProtoReflect.Descriptor instead. +func (*FacebookCommentResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{48} +} + +func (x *FacebookCommentResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *FacebookCommentResponse) GetCommentId() string { + if x != nil { + return x.CommentId + } + return "" +} + +func (x *FacebookCommentResponse) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *FacebookCommentResponse) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +// LinkedIn 平台评论响应 +type LinkedInCommentResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + CommentId string `protobuf:"bytes,2,opt,name=commentId,proto3" json:"commentId"` + Comment string `protobuf:"bytes,3,opt,name=comment,proto3" json:"comment"` + CommentUrn string `protobuf:"bytes,4,opt,name=commentUrn,proto3" json:"commentUrn"` + Platform string `protobuf:"bytes,5,opt,name=platform,proto3" json:"platform"` +} + +func (x *LinkedInCommentResponse) Reset() { + *x = LinkedInCommentResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[49] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LinkedInCommentResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LinkedInCommentResponse) ProtoMessage() {} + +func (x *LinkedInCommentResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[49] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LinkedInCommentResponse.ProtoReflect.Descriptor instead. +func (*LinkedInCommentResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{49} +} + +func (x *LinkedInCommentResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *LinkedInCommentResponse) GetCommentId() string { + if x != nil { + return x.CommentId + } + return "" +} + +func (x *LinkedInCommentResponse) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *LinkedInCommentResponse) GetCommentUrn() string { + if x != nil { + return x.CommentUrn + } + return "" +} + +func (x *LinkedInCommentResponse) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +// Twitter/X 平台评论响应 +type TwitterCommentResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + CommentId string `protobuf:"bytes,2,opt,name=commentId,proto3" json:"commentId"` + Comment string `protobuf:"bytes,3,opt,name=comment,proto3" json:"comment"` + PostUrl string `protobuf:"bytes,4,opt,name=postUrl,proto3" json:"postUrl"` +} + +func (x *TwitterCommentResponse) Reset() { + *x = TwitterCommentResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[50] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TwitterCommentResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TwitterCommentResponse) ProtoMessage() {} + +func (x *TwitterCommentResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[50] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TwitterCommentResponse.ProtoReflect.Descriptor instead. +func (*TwitterCommentResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{50} +} + +func (x *TwitterCommentResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *TwitterCommentResponse) GetCommentId() string { + if x != nil { + return x.CommentId + } + return "" +} + +func (x *TwitterCommentResponse) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *TwitterCommentResponse) GetPostUrl() string { + if x != nil { + return x.PostUrl + } + return "" +} + +// YouTube 平台评论响应 +type YouTubeCommentResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + CommentId string `protobuf:"bytes,2,opt,name=commentId,proto3" json:"commentId"` + Comment string `protobuf:"bytes,3,opt,name=comment,proto3" json:"comment"` + Platform string `protobuf:"bytes,4,opt,name=platform,proto3" json:"platform"` +} + +func (x *YouTubeCommentResponse) Reset() { + *x = YouTubeCommentResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[51] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *YouTubeCommentResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*YouTubeCommentResponse) ProtoMessage() {} + +func (x *YouTubeCommentResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[51] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use YouTubeCommentResponse.ProtoReflect.Descriptor instead. +func (*YouTubeCommentResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{51} +} + +func (x *YouTubeCommentResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *YouTubeCommentResponse) GetCommentId() string { + if x != nil { + return x.CommentId + } + return "" +} + +func (x *YouTubeCommentResponse) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *YouTubeCommentResponse) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +// 平台错误信息 +type PlatformError struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Action string `protobuf:"bytes,1,opt,name=action,proto3" json:"action"` + Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status"` + Code int32 `protobuf:"varint,3,opt,name=code,proto3" json:"code"` + Message string `protobuf:"bytes,4,opt,name=message,proto3" json:"message"` + Platform string `protobuf:"bytes,5,opt,name=platform,proto3" json:"platform"` +} + +func (x *PlatformError) Reset() { + *x = PlatformError{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[52] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PlatformError) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PlatformError) ProtoMessage() {} + +func (x *PlatformError) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[52] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PlatformError.ProtoReflect.Descriptor instead. +func (*PlatformError) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{52} +} + +func (x *PlatformError) GetAction() string { + if x != nil { + return x.Action + } + return "" +} + +func (x *PlatformError) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *PlatformError) GetCode() int32 { + if x != nil { + return x.Code + } + return 0 +} + +func (x *PlatformError) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +func (x *PlatformError) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +// 发布评论响应 +type PostCommentResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + CommentID string `protobuf:"bytes,2,opt,name=commentID,proto3" json:"commentID"` + CommentIdAlt string `protobuf:"bytes,3,opt,name=commentIdAlt,json=commentId,proto3" json:"commentIdAlt"` // 备用字段,用于错误响应 + Id string `protobuf:"bytes,4,opt,name=id,proto3" json:"id"` + Instagram *InstagramCommentResponse `protobuf:"bytes,5,opt,name=instagram,proto3" json:"instagram"` + Tiktok *TikTokCommentResponse `protobuf:"bytes,6,opt,name=tiktok,proto3" json:"tiktok"` + Action string `protobuf:"bytes,7,opt,name=action,proto3" json:"action"` + Code int32 `protobuf:"varint,8,opt,name=code,proto3" json:"code"` + Message string `protobuf:"bytes,9,opt,name=message,proto3" json:"message"` + Platform string `protobuf:"bytes,10,opt,name=platform,proto3" json:"platform"` + Errors []*PlatformError `protobuf:"bytes,11,rep,name=errors,proto3" json:"errors"` + // 其它平台的发布评论结果 + Bluesky *BlueskyCommentResponse `protobuf:"bytes,12,opt,name=bluesky,proto3" json:"bluesky"` + Facebook *FacebookCommentResponse `protobuf:"bytes,13,opt,name=facebook,proto3" json:"facebook"` + Linkedin *LinkedInCommentResponse `protobuf:"bytes,14,opt,name=linkedin,proto3" json:"linkedin"` + Twitter *TwitterCommentResponse `protobuf:"bytes,15,opt,name=twitter,proto3" json:"twitter"` + Youtube *YouTubeCommentResponse `protobuf:"bytes,16,opt,name=youtube,proto3" json:"youtube"` +} + +func (x *PostCommentResponse) Reset() { + *x = PostCommentResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[53] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PostCommentResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PostCommentResponse) ProtoMessage() {} + +func (x *PostCommentResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[53] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PostCommentResponse.ProtoReflect.Descriptor instead. +func (*PostCommentResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{53} +} + +func (x *PostCommentResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *PostCommentResponse) GetCommentID() string { + if x != nil { + return x.CommentID + } + return "" +} + +func (x *PostCommentResponse) GetCommentIdAlt() string { + if x != nil { + return x.CommentIdAlt + } + return "" +} + +func (x *PostCommentResponse) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *PostCommentResponse) GetInstagram() *InstagramCommentResponse { + if x != nil { + return x.Instagram + } + return nil +} + +func (x *PostCommentResponse) GetTiktok() *TikTokCommentResponse { + if x != nil { + return x.Tiktok + } + return nil +} + +func (x *PostCommentResponse) GetAction() string { + if x != nil { + return x.Action + } + return "" +} + +func (x *PostCommentResponse) GetCode() int32 { + if x != nil { + return x.Code + } + return 0 +} + +func (x *PostCommentResponse) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +func (x *PostCommentResponse) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *PostCommentResponse) GetErrors() []*PlatformError { + if x != nil { + return x.Errors + } + return nil +} + +func (x *PostCommentResponse) GetBluesky() *BlueskyCommentResponse { + if x != nil { + return x.Bluesky + } + return nil +} + +func (x *PostCommentResponse) GetFacebook() *FacebookCommentResponse { + if x != nil { + return x.Facebook + } + return nil +} + +func (x *PostCommentResponse) GetLinkedin() *LinkedInCommentResponse { + if x != nil { + return x.Linkedin + } + return nil +} + +func (x *PostCommentResponse) GetTwitter() *TwitterCommentResponse { + if x != nil { + return x.Twitter + } + return nil +} + +func (x *PostCommentResponse) GetYoutube() *YouTubeCommentResponse { + if x != nil { + return x.Youtube + } + return nil +} + +// 获取评论请求 +type GetCommentRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` + ProfileKey string `protobuf:"bytes,2,opt,name=profileKey,proto3" json:"profileKey"` +} + +func (x *GetCommentRequest) Reset() { + *x = GetCommentRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[54] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetCommentRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetCommentRequest) ProtoMessage() {} + +func (x *GetCommentRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[54] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetCommentRequest.ProtoReflect.Descriptor instead. +func (*GetCommentRequest) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{54} +} + +func (x *GetCommentRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *GetCommentRequest) GetProfileKey() string { + if x != nil { + return x.ProfileKey + } + return "" +} + +// Instagram 用户信息 +type InstagramUser struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id"` + Username string `protobuf:"bytes,3,opt,name=username,proto3" json:"username"` +} + +func (x *InstagramUser) Reset() { + *x = InstagramUser{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[55] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *InstagramUser) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InstagramUser) ProtoMessage() {} + +func (x *InstagramUser) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[55] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InstagramUser.ProtoReflect.Descriptor instead. +func (*InstagramUser) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{55} +} + +func (x *InstagramUser) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *InstagramUser) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *InstagramUser) GetUsername() string { + if x != nil { + return x.Username + } + return "" +} + +// Instagram 用户ID信息 +type InstagramUserInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` +} + +func (x *InstagramUserInfo) Reset() { + *x = InstagramUserInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[56] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *InstagramUserInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InstagramUserInfo) ProtoMessage() {} + +func (x *InstagramUserInfo) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[56] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InstagramUserInfo.ProtoReflect.Descriptor instead. +func (*InstagramUserInfo) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{56} +} + +func (x *InstagramUserInfo) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +// Instagram 评论详情 +type InstagramComment struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Comment string `protobuf:"bytes,1,opt,name=comment,proto3" json:"comment"` + CommentId string `protobuf:"bytes,2,opt,name=commentId,proto3" json:"commentId"` + Id string `protobuf:"bytes,3,opt,name=id,proto3" json:"id"` + Created string `protobuf:"bytes,4,opt,name=created,proto3" json:"created"` + From *InstagramUser `protobuf:"bytes,5,opt,name=from,proto3" json:"from"` + Hidden bool `protobuf:"varint,6,opt,name=hidden,proto3" json:"hidden"` + LikeCount int32 `protobuf:"varint,7,opt,name=likeCount,proto3" json:"likeCount"` + ParentId string `protobuf:"bytes,8,opt,name=parentId,proto3" json:"parentId"` + Platform string `protobuf:"bytes,9,opt,name=platform,proto3" json:"platform"` + PostId string `protobuf:"bytes,10,opt,name=postId,proto3" json:"postId"` + Replies []*InstagramComment `protobuf:"bytes,11,rep,name=replies,proto3" json:"replies"` + User *InstagramUserInfo `protobuf:"bytes,12,opt,name=user,proto3" json:"user"` + UserName string `protobuf:"bytes,13,opt,name=userName,proto3" json:"userName"` + UsernameAlt string `protobuf:"bytes,14,opt,name=usernameAlt,json=username,proto3" json:"usernameAlt"` // 备用字段,用于回复评论 +} + +func (x *InstagramComment) Reset() { + *x = InstagramComment{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[57] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *InstagramComment) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InstagramComment) ProtoMessage() {} + +func (x *InstagramComment) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[57] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InstagramComment.ProtoReflect.Descriptor instead. +func (*InstagramComment) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{57} +} + +func (x *InstagramComment) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *InstagramComment) GetCommentId() string { + if x != nil { + return x.CommentId + } + return "" +} + +func (x *InstagramComment) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *InstagramComment) GetCreated() string { + if x != nil { + return x.Created + } + return "" +} + +func (x *InstagramComment) GetFrom() *InstagramUser { + if x != nil { + return x.From + } + return nil +} + +func (x *InstagramComment) GetHidden() bool { + if x != nil { + return x.Hidden + } + return false +} + +func (x *InstagramComment) GetLikeCount() int32 { + if x != nil { + return x.LikeCount + } + return 0 +} + +func (x *InstagramComment) GetParentId() string { + if x != nil { + return x.ParentId + } + return "" +} + +func (x *InstagramComment) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *InstagramComment) GetPostId() string { + if x != nil { + return x.PostId + } + return "" +} + +func (x *InstagramComment) GetReplies() []*InstagramComment { + if x != nil { + return x.Replies + } + return nil +} + +func (x *InstagramComment) GetUser() *InstagramUserInfo { + if x != nil { + return x.User + } + return nil +} + +func (x *InstagramComment) GetUserName() string { + if x != nil { + return x.UserName + } + return "" +} + +func (x *InstagramComment) GetUsernameAlt() string { + if x != nil { + return x.UsernameAlt + } + return "" +} + +// TikTok 评论详情 +type TikTokComment struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Comment string `protobuf:"bytes,1,opt,name=comment,proto3" json:"comment"` + CommentId string `protobuf:"bytes,2,opt,name=commentId,proto3" json:"commentId"` + Created string `protobuf:"bytes,3,opt,name=created,proto3" json:"created"` + CreateTime string `protobuf:"bytes,4,opt,name=createTime,proto3" json:"createTime"` + DisplayName string `protobuf:"bytes,5,opt,name=displayName,proto3" json:"displayName"` + Liked bool `protobuf:"varint,6,opt,name=liked,proto3" json:"liked"` + Likes int32 `protobuf:"varint,7,opt,name=likes,proto3" json:"likes"` + LikeCount int32 `protobuf:"varint,8,opt,name=likeCount,proto3" json:"likeCount"` + Owner bool `protobuf:"varint,9,opt,name=owner,proto3" json:"owner"` + ParentCommentId string `protobuf:"bytes,10,opt,name=parentCommentId,proto3" json:"parentCommentId"` + Pinned bool `protobuf:"varint,11,opt,name=pinned,proto3" json:"pinned"` + Platform string `protobuf:"bytes,12,opt,name=platform,proto3" json:"platform"` + ProfileImageUrl string `protobuf:"bytes,13,opt,name=profileImageUrl,proto3" json:"profileImageUrl"` + Replies []*TikTokComment `protobuf:"bytes,14,rep,name=replies,proto3" json:"replies"` + Status string `protobuf:"bytes,15,opt,name=status,proto3" json:"status"` + UserId string `protobuf:"bytes,16,opt,name=userId,proto3" json:"userId"` + Username string `protobuf:"bytes,17,opt,name=username,proto3" json:"username"` + VideoId string `protobuf:"bytes,18,opt,name=videoId,proto3" json:"videoId"` + Visibility string `protobuf:"bytes,19,opt,name=visibility,proto3" json:"visibility"` +} + +func (x *TikTokComment) Reset() { + *x = TikTokComment{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[58] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TikTokComment) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TikTokComment) ProtoMessage() {} + +func (x *TikTokComment) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[58] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TikTokComment.ProtoReflect.Descriptor instead. +func (*TikTokComment) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{58} +} + +func (x *TikTokComment) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *TikTokComment) GetCommentId() string { + if x != nil { + return x.CommentId + } + return "" +} + +func (x *TikTokComment) GetCreated() string { + if x != nil { + return x.Created + } + return "" +} + +func (x *TikTokComment) GetCreateTime() string { + if x != nil { + return x.CreateTime + } + return "" +} + +func (x *TikTokComment) GetDisplayName() string { + if x != nil { + return x.DisplayName + } + return "" +} + +func (x *TikTokComment) GetLiked() bool { + if x != nil { + return x.Liked + } + return false +} + +func (x *TikTokComment) GetLikes() int32 { + if x != nil { + return x.Likes + } + return 0 +} + +func (x *TikTokComment) GetLikeCount() int32 { + if x != nil { + return x.LikeCount + } + return 0 +} + +func (x *TikTokComment) GetOwner() bool { + if x != nil { + return x.Owner + } + return false +} + +func (x *TikTokComment) GetParentCommentId() string { + if x != nil { + return x.ParentCommentId + } + return "" +} + +func (x *TikTokComment) GetPinned() bool { + if x != nil { + return x.Pinned + } + return false +} + +func (x *TikTokComment) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *TikTokComment) GetProfileImageUrl() string { + if x != nil { + return x.ProfileImageUrl + } + return "" +} + +func (x *TikTokComment) GetReplies() []*TikTokComment { + if x != nil { + return x.Replies + } + return nil +} + +func (x *TikTokComment) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *TikTokComment) GetUserId() string { + if x != nil { + return x.UserId + } + return "" +} + +func (x *TikTokComment) GetUsername() string { + if x != nil { + return x.Username + } + return "" +} + +func (x *TikTokComment) GetVideoId() string { + if x != nil { + return x.VideoId + } + return "" +} + +func (x *TikTokComment) GetVisibility() string { + if x != nil { + return x.Visibility + } + return "" +} + +// Bluesky 评论详情 +type BlueskyComment struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Comment string `protobuf:"bytes,1,opt,name=comment,proto3" json:"comment"` + CommentId string `protobuf:"bytes,2,opt,name=commentId,proto3" json:"commentId"` + Created string `protobuf:"bytes,3,opt,name=created,proto3" json:"created"` + DisplayName string `protobuf:"bytes,4,opt,name=displayName,proto3" json:"displayName"` + LikeCount int32 `protobuf:"varint,5,opt,name=likeCount,proto3" json:"likeCount"` + Platform string `protobuf:"bytes,6,opt,name=platform,proto3" json:"platform"` + ProfileImageUrl string `protobuf:"bytes,7,opt,name=profileImageUrl,proto3" json:"profileImageUrl"` + QuoteCount int32 `protobuf:"varint,8,opt,name=quoteCount,proto3" json:"quoteCount"` + Replies []*BlueskyComment `protobuf:"bytes,9,rep,name=replies,proto3" json:"replies"` + ReplyCount int32 `protobuf:"varint,10,opt,name=replyCount,proto3" json:"replyCount"` + ReplyTo string `protobuf:"bytes,11,opt,name=replyTo,proto3" json:"replyTo"` + RepostCount int32 `protobuf:"varint,12,opt,name=repostCount,proto3" json:"repostCount"` + UserName string `protobuf:"bytes,13,opt,name=userName,proto3" json:"userName"` +} + +func (x *BlueskyComment) Reset() { + *x = BlueskyComment{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[59] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueskyComment) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueskyComment) ProtoMessage() {} + +func (x *BlueskyComment) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[59] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueskyComment.ProtoReflect.Descriptor instead. +func (*BlueskyComment) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{59} +} + +func (x *BlueskyComment) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *BlueskyComment) GetCommentId() string { + if x != nil { + return x.CommentId + } + return "" +} + +func (x *BlueskyComment) GetCreated() string { + if x != nil { + return x.Created + } + return "" +} + +func (x *BlueskyComment) GetDisplayName() string { + if x != nil { + return x.DisplayName + } + return "" +} + +func (x *BlueskyComment) GetLikeCount() int32 { + if x != nil { + return x.LikeCount + } + return 0 +} + +func (x *BlueskyComment) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *BlueskyComment) GetProfileImageUrl() string { + if x != nil { + return x.ProfileImageUrl + } + return "" +} + +func (x *BlueskyComment) GetQuoteCount() int32 { + if x != nil { + return x.QuoteCount + } + return 0 +} + +func (x *BlueskyComment) GetReplies() []*BlueskyComment { + if x != nil { + return x.Replies + } + return nil +} + +func (x *BlueskyComment) GetReplyCount() int32 { + if x != nil { + return x.ReplyCount + } + return 0 +} + +func (x *BlueskyComment) GetReplyTo() string { + if x != nil { + return x.ReplyTo + } + return "" +} + +func (x *BlueskyComment) GetRepostCount() int32 { + if x != nil { + return x.RepostCount + } + return 0 +} + +func (x *BlueskyComment) GetUserName() string { + if x != nil { + return x.UserName + } + return "" +} + +// Facebook 用户信息 +type FacebookUser struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id"` +} + +func (x *FacebookUser) Reset() { + *x = FacebookUser{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[60] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FacebookUser) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FacebookUser) ProtoMessage() {} + +func (x *FacebookUser) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[60] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FacebookUser.ProtoReflect.Descriptor instead. +func (*FacebookUser) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{60} +} + +func (x *FacebookUser) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *FacebookUser) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +// Facebook 父级评论/帖子信息 +type FacebookParent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + CreatedTime string `protobuf:"bytes,1,opt,name=createdTime,proto3" json:"createdTime"` + From *FacebookUser `protobuf:"bytes,2,opt,name=from,proto3" json:"from"` + Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message"` + Id string `protobuf:"bytes,4,opt,name=id,proto3" json:"id"` +} + +func (x *FacebookParent) Reset() { + *x = FacebookParent{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[61] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FacebookParent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FacebookParent) ProtoMessage() {} + +func (x *FacebookParent) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[61] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FacebookParent.ProtoReflect.Descriptor instead. +func (*FacebookParent) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{61} +} + +func (x *FacebookParent) GetCreatedTime() string { + if x != nil { + return x.CreatedTime + } + return "" +} + +func (x *FacebookParent) GetFrom() *FacebookUser { + if x != nil { + return x.From + } + return nil +} + +func (x *FacebookParent) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +func (x *FacebookParent) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +// Facebook 评论详情(用于主评论和回复) +type FacebookComment struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Comment string `protobuf:"bytes,1,opt,name=comment,proto3" json:"comment"` + CommentId string `protobuf:"bytes,2,opt,name=commentId,proto3" json:"commentId"` + CommentCount int32 `protobuf:"varint,3,opt,name=commentCount,proto3" json:"commentCount"` + CommentUrl string `protobuf:"bytes,4,opt,name=commentUrl,proto3" json:"commentUrl"` + Company bool `protobuf:"varint,5,opt,name=company,proto3" json:"company"` + Created string `protobuf:"bytes,6,opt,name=created,proto3" json:"created"` + From *FacebookUser `protobuf:"bytes,7,opt,name=from,proto3" json:"from"` + LikeCount int32 `protobuf:"varint,8,opt,name=likeCount,proto3" json:"likeCount"` + Parent *FacebookParent `protobuf:"bytes,9,opt,name=parent,proto3" json:"parent"` + Platform string `protobuf:"bytes,10,opt,name=platform,proto3" json:"platform"` + UserLikes bool `protobuf:"varint,11,opt,name=userLikes,proto3" json:"userLikes"` + Replies []*FacebookComment `protobuf:"bytes,12,rep,name=replies,proto3" json:"replies"` +} + +func (x *FacebookComment) Reset() { + *x = FacebookComment{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[62] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FacebookComment) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FacebookComment) ProtoMessage() {} + +func (x *FacebookComment) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[62] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FacebookComment.ProtoReflect.Descriptor instead. +func (*FacebookComment) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{62} +} + +func (x *FacebookComment) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *FacebookComment) GetCommentId() string { + if x != nil { + return x.CommentId + } + return "" +} + +func (x *FacebookComment) GetCommentCount() int32 { + if x != nil { + return x.CommentCount + } + return 0 +} + +func (x *FacebookComment) GetCommentUrl() string { + if x != nil { + return x.CommentUrl + } + return "" +} + +func (x *FacebookComment) GetCompany() bool { + if x != nil { + return x.Company + } + return false +} + +func (x *FacebookComment) GetCreated() string { + if x != nil { + return x.Created + } + return "" +} + +func (x *FacebookComment) GetFrom() *FacebookUser { + if x != nil { + return x.From + } + return nil +} + +func (x *FacebookComment) GetLikeCount() int32 { + if x != nil { + return x.LikeCount + } + return 0 +} + +func (x *FacebookComment) GetParent() *FacebookParent { + if x != nil { + return x.Parent + } + return nil +} + +func (x *FacebookComment) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *FacebookComment) GetUserLikes() bool { + if x != nil { + return x.UserLikes + } + return false +} + +func (x *FacebookComment) GetReplies() []*FacebookComment { + if x != nil { + return x.Replies + } + return nil +} + +// LinkedIn 评论中的媒体信息 +type LinkedInMedia struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type"` + Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url"` +} + +func (x *LinkedInMedia) Reset() { + *x = LinkedInMedia{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[63] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LinkedInMedia) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LinkedInMedia) ProtoMessage() {} + +func (x *LinkedInMedia) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[63] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LinkedInMedia.ProtoReflect.Descriptor instead. +func (*LinkedInMedia) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{63} +} + +func (x *LinkedInMedia) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *LinkedInMedia) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +// LinkedIn 评论发布者信息 +type LinkedInFrom struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id"` + Url string `protobuf:"bytes,3,opt,name=url,proto3" json:"url"` + Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description"` +} + +func (x *LinkedInFrom) Reset() { + *x = LinkedInFrom{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[64] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LinkedInFrom) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LinkedInFrom) ProtoMessage() {} + +func (x *LinkedInFrom) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[64] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LinkedInFrom.ProtoReflect.Descriptor instead. +func (*LinkedInFrom) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{64} +} + +func (x *LinkedInFrom) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *LinkedInFrom) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *LinkedInFrom) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *LinkedInFrom) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +// LinkedIn 评论详情 +type LinkedInComment struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Comment string `protobuf:"bytes,1,opt,name=comment,proto3" json:"comment"` + CommentId string `protobuf:"bytes,2,opt,name=commentId,proto3" json:"commentId"` + CommentUrn string `protobuf:"bytes,3,opt,name=commentUrn,proto3" json:"commentUrn"` + Created string `protobuf:"bytes,4,opt,name=created,proto3" json:"created"` + From *LinkedInFrom `protobuf:"bytes,5,opt,name=from,proto3" json:"from"` + LikeCount int32 `protobuf:"varint,6,opt,name=likeCount,proto3" json:"likeCount"` + Media []*LinkedInMedia `protobuf:"bytes,7,rep,name=media,proto3" json:"media"` + Platform string `protobuf:"bytes,8,opt,name=platform,proto3" json:"platform"` + ProfileImageUrl string `protobuf:"bytes,9,opt,name=profileImageUrl,proto3" json:"profileImageUrl"` + UserName string `protobuf:"bytes,10,opt,name=userName,proto3" json:"userName"` + Founded int32 `protobuf:"varint,11,opt,name=founded,proto3" json:"founded"` + OrganizationType string `protobuf:"bytes,12,opt,name=organizationType,proto3" json:"organizationType"` + Website string `protobuf:"bytes,13,opt,name=website,proto3" json:"website"` +} + +func (x *LinkedInComment) Reset() { + *x = LinkedInComment{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[65] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LinkedInComment) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LinkedInComment) ProtoMessage() {} + +func (x *LinkedInComment) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[65] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LinkedInComment.ProtoReflect.Descriptor instead. +func (*LinkedInComment) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{65} +} + +func (x *LinkedInComment) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *LinkedInComment) GetCommentId() string { + if x != nil { + return x.CommentId + } + return "" +} + +func (x *LinkedInComment) GetCommentUrn() string { + if x != nil { + return x.CommentUrn + } + return "" +} + +func (x *LinkedInComment) GetCreated() string { + if x != nil { + return x.Created + } + return "" +} + +func (x *LinkedInComment) GetFrom() *LinkedInFrom { + if x != nil { + return x.From + } + return nil +} + +func (x *LinkedInComment) GetLikeCount() int32 { + if x != nil { + return x.LikeCount + } + return 0 +} + +func (x *LinkedInComment) GetMedia() []*LinkedInMedia { + if x != nil { + return x.Media + } + return nil +} + +func (x *LinkedInComment) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *LinkedInComment) GetProfileImageUrl() string { + if x != nil { + return x.ProfileImageUrl + } + return "" +} + +func (x *LinkedInComment) GetUserName() string { + if x != nil { + return x.UserName + } + return "" +} + +func (x *LinkedInComment) GetFounded() int32 { + if x != nil { + return x.Founded + } + return 0 +} + +func (x *LinkedInComment) GetOrganizationType() string { + if x != nil { + return x.OrganizationType + } + return "" +} + +func (x *LinkedInComment) GetWebsite() string { + if x != nil { + return x.Website + } + return "" +} + +// Reddit 用户信息 +type RedditUser struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id"` +} + +func (x *RedditUser) Reset() { + *x = RedditUser{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[66] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RedditUser) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RedditUser) ProtoMessage() {} + +func (x *RedditUser) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[66] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RedditUser.ProtoReflect.Descriptor instead. +func (*RedditUser) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{66} +} + +func (x *RedditUser) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *RedditUser) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +// Reddit 评论详情 +type RedditComment struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Comment string `protobuf:"bytes,1,opt,name=comment,proto3" json:"comment"` + CommentId string `protobuf:"bytes,2,opt,name=commentId,proto3" json:"commentId"` + Created string `protobuf:"bytes,3,opt,name=created,proto3" json:"created"` + From *RedditUser `protobuf:"bytes,4,opt,name=from,proto3" json:"from"` + CommentUrl string `protobuf:"bytes,5,opt,name=commentUrl,proto3" json:"commentUrl"` + Subreddit string `protobuf:"bytes,6,opt,name=subreddit,proto3" json:"subreddit"` + Ups int32 `protobuf:"varint,7,opt,name=ups,proto3" json:"ups"` + IsSubmitter bool `protobuf:"varint,8,opt,name=isSubmitter,proto3" json:"isSubmitter"` +} + +func (x *RedditComment) Reset() { + *x = RedditComment{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[67] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RedditComment) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RedditComment) ProtoMessage() {} + +func (x *RedditComment) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[67] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RedditComment.ProtoReflect.Descriptor instead. +func (*RedditComment) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{67} +} + +func (x *RedditComment) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *RedditComment) GetCommentId() string { + if x != nil { + return x.CommentId + } + return "" +} + +func (x *RedditComment) GetCreated() string { + if x != nil { + return x.Created + } + return "" +} + +func (x *RedditComment) GetFrom() *RedditUser { + if x != nil { + return x.From + } + return nil +} + +func (x *RedditComment) GetCommentUrl() string { + if x != nil { + return x.CommentUrl + } + return "" +} + +func (x *RedditComment) GetSubreddit() string { + if x != nil { + return x.Subreddit + } + return "" +} + +func (x *RedditComment) GetUps() int32 { + if x != nil { + return x.Ups + } + return 0 +} + +func (x *RedditComment) GetIsSubmitter() bool { + if x != nil { + return x.IsSubmitter + } + return false +} + +// Threads 评论详情(用于主评论和回复) +type ThreadsComment struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Comment string `protobuf:"bytes,1,opt,name=comment,proto3" json:"comment"` + CommentId string `protobuf:"bytes,2,opt,name=commentId,proto3" json:"commentId"` + CommentUrl string `protobuf:"bytes,3,opt,name=commentUrl,proto3" json:"commentUrl"` + Created string `protobuf:"bytes,4,opt,name=created,proto3" json:"created"` + HasReplies bool `protobuf:"varint,5,opt,name=hasReplies,proto3" json:"hasReplies"` + IsQuotePost bool `protobuf:"varint,6,opt,name=isQuotePost,proto3" json:"isQuotePost"` + IsReply bool `protobuf:"varint,7,opt,name=isReply,proto3" json:"isReply"` + IsReplyOwnedByMe bool `protobuf:"varint,8,opt,name=isReplyOwnedByMe,proto3" json:"isReplyOwnedByMe"` + MediaType string `protobuf:"bytes,9,opt,name=mediaType,proto3" json:"mediaType"` + ParentId string `protobuf:"bytes,10,opt,name=parentId,proto3" json:"parentId"` + Platform string `protobuf:"bytes,11,opt,name=platform,proto3" json:"platform"` + PostId string `protobuf:"bytes,12,opt,name=postId,proto3" json:"postId"` + Replies []*ThreadsComment `protobuf:"bytes,13,rep,name=replies,proto3" json:"replies"` + ReplyAudience string `protobuf:"bytes,14,opt,name=replyAudience,proto3" json:"replyAudience"` + Shortcode string `protobuf:"bytes,15,opt,name=shortcode,proto3" json:"shortcode"` + UserName string `protobuf:"bytes,16,opt,name=userName,proto3" json:"userName"` +} + +func (x *ThreadsComment) Reset() { + *x = ThreadsComment{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[68] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ThreadsComment) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ThreadsComment) ProtoMessage() {} + +func (x *ThreadsComment) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[68] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ThreadsComment.ProtoReflect.Descriptor instead. +func (*ThreadsComment) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{68} +} + +func (x *ThreadsComment) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *ThreadsComment) GetCommentId() string { + if x != nil { + return x.CommentId + } + return "" +} + +func (x *ThreadsComment) GetCommentUrl() string { + if x != nil { + return x.CommentUrl + } + return "" +} + +func (x *ThreadsComment) GetCreated() string { + if x != nil { + return x.Created + } + return "" +} + +func (x *ThreadsComment) GetHasReplies() bool { + if x != nil { + return x.HasReplies + } + return false +} + +func (x *ThreadsComment) GetIsQuotePost() bool { + if x != nil { + return x.IsQuotePost + } + return false +} + +func (x *ThreadsComment) GetIsReply() bool { + if x != nil { + return x.IsReply + } + return false +} + +func (x *ThreadsComment) GetIsReplyOwnedByMe() bool { + if x != nil { + return x.IsReplyOwnedByMe + } + return false +} + +func (x *ThreadsComment) GetMediaType() string { + if x != nil { + return x.MediaType + } + return "" +} + +func (x *ThreadsComment) GetParentId() string { + if x != nil { + return x.ParentId + } + return "" +} + +func (x *ThreadsComment) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *ThreadsComment) GetPostId() string { + if x != nil { + return x.PostId + } + return "" +} + +func (x *ThreadsComment) GetReplies() []*ThreadsComment { + if x != nil { + return x.Replies + } + return nil +} + +func (x *ThreadsComment) GetReplyAudience() string { + if x != nil { + return x.ReplyAudience + } + return "" +} + +func (x *ThreadsComment) GetShortcode() string { + if x != nil { + return x.Shortcode + } + return "" +} + +func (x *ThreadsComment) GetUserName() string { + if x != nil { + return x.UserName + } + return "" +} + +// Twitter/X 用户公共指标(用户维度,用于 Get Comments 返回) +type TwitterPublicMetrics struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + FollowersCount int32 `protobuf:"varint,1,opt,name=followersCount,proto3" json:"followersCount"` + FollowingCount int32 `protobuf:"varint,2,opt,name=followingCount,proto3" json:"followingCount"` + TweetCount int32 `protobuf:"varint,3,opt,name=tweetCount,proto3" json:"tweetCount"` + ListedCount int32 `protobuf:"varint,4,opt,name=listedCount,proto3" json:"listedCount"` + LikeCount int32 `protobuf:"varint,5,opt,name=likeCount,proto3" json:"likeCount"` + MediaCount int32 `protobuf:"varint,6,opt,name=mediaCount,proto3" json:"mediaCount"` +} + +func (x *TwitterPublicMetrics) Reset() { + *x = TwitterPublicMetrics{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[69] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TwitterPublicMetrics) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TwitterPublicMetrics) ProtoMessage() {} + +func (x *TwitterPublicMetrics) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[69] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TwitterPublicMetrics.ProtoReflect.Descriptor instead. +func (*TwitterPublicMetrics) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{69} +} + +func (x *TwitterPublicMetrics) GetFollowersCount() int32 { + if x != nil { + return x.FollowersCount + } + return 0 +} + +func (x *TwitterPublicMetrics) GetFollowingCount() int32 { + if x != nil { + return x.FollowingCount + } + return 0 +} + +func (x *TwitterPublicMetrics) GetTweetCount() int32 { + if x != nil { + return x.TweetCount + } + return 0 +} + +func (x *TwitterPublicMetrics) GetListedCount() int32 { + if x != nil { + return x.ListedCount + } + return 0 +} + +func (x *TwitterPublicMetrics) GetLikeCount() int32 { + if x != nil { + return x.LikeCount + } + return 0 +} + +func (x *TwitterPublicMetrics) GetMediaCount() int32 { + if x != nil { + return x.MediaCount + } + return 0 +} + +// Twitter/X 被引用或回复的 Tweet 信息 +type TwitterReferencedTweet struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id"` +} + +func (x *TwitterReferencedTweet) Reset() { + *x = TwitterReferencedTweet{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[70] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TwitterReferencedTweet) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TwitterReferencedTweet) ProtoMessage() {} + +func (x *TwitterReferencedTweet) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[70] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TwitterReferencedTweet.ProtoReflect.Descriptor instead. +func (*TwitterReferencedTweet) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{70} +} + +func (x *TwitterReferencedTweet) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *TwitterReferencedTweet) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +// Twitter/X 被回复的用户信息 +type TwitterReplyTo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + CreatedAt string `protobuf:"bytes,1,opt,name=createdAt,proto3" json:"createdAt"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description"` + Id string `protobuf:"bytes,3,opt,name=id,proto3" json:"id"` + Location string `protobuf:"bytes,4,opt,name=location,proto3" json:"location"` + Name string `protobuf:"bytes,5,opt,name=name,proto3" json:"name"` + ProfileImageUrl string `protobuf:"bytes,6,opt,name=profileImageUrl,proto3" json:"profileImageUrl"` + PublicMetrics *TwitterPublicMetrics `protobuf:"bytes,7,opt,name=publicMetrics,proto3" json:"publicMetrics"` + Url string `protobuf:"bytes,8,opt,name=url,proto3" json:"url"` + Username string `protobuf:"bytes,9,opt,name=username,proto3" json:"username"` +} + +func (x *TwitterReplyTo) Reset() { + *x = TwitterReplyTo{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[71] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TwitterReplyTo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TwitterReplyTo) ProtoMessage() {} + +func (x *TwitterReplyTo) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[71] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TwitterReplyTo.ProtoReflect.Descriptor instead. +func (*TwitterReplyTo) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{71} +} + +func (x *TwitterReplyTo) GetCreatedAt() string { + if x != nil { + return x.CreatedAt + } + return "" +} + +func (x *TwitterReplyTo) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *TwitterReplyTo) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *TwitterReplyTo) GetLocation() string { + if x != nil { + return x.Location + } + return "" +} + +func (x *TwitterReplyTo) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *TwitterReplyTo) GetProfileImageUrl() string { + if x != nil { + return x.ProfileImageUrl + } + return "" +} + +func (x *TwitterReplyTo) GetPublicMetrics() *TwitterPublicMetrics { + if x != nil { + return x.PublicMetrics + } + return nil +} + +func (x *TwitterReplyTo) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *TwitterReplyTo) GetUsername() string { + if x != nil { + return x.Username + } + return "" +} + +// Twitter/X 评论详情 +type TwitterComment struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + BookmarkCount int32 `protobuf:"varint,1,opt,name=bookmarkCount,proto3" json:"bookmarkCount"` + Comment string `protobuf:"bytes,2,opt,name=comment,proto3" json:"comment"` + CommentId string `protobuf:"bytes,3,opt,name=commentId,proto3" json:"commentId"` + Created string `protobuf:"bytes,4,opt,name=created,proto3" json:"created"` + Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description"` + Id string `protobuf:"bytes,6,opt,name=id,proto3" json:"id"` + ImpressionCount int32 `protobuf:"varint,7,opt,name=impressionCount,proto3" json:"impressionCount"` + LikeCount int32 `protobuf:"varint,8,opt,name=likeCount,proto3" json:"likeCount"` + Name string `protobuf:"bytes,9,opt,name=name,proto3" json:"name"` + Platform string `protobuf:"bytes,10,opt,name=platform,proto3" json:"platform"` + ProfileImageUrl string `protobuf:"bytes,11,opt,name=profileImageUrl,proto3" json:"profileImageUrl"` + PublicMetrics *TwitterPublicMetrics `protobuf:"bytes,12,opt,name=publicMetrics,proto3" json:"publicMetrics"` + QuoteCount int32 `protobuf:"varint,13,opt,name=quoteCount,proto3" json:"quoteCount"` + ReferencedTweets []*TwitterReferencedTweet `protobuf:"bytes,14,rep,name=referencedTweets,proto3" json:"referencedTweets"` + ReplyCount int32 `protobuf:"varint,15,opt,name=replyCount,proto3" json:"replyCount"` + ReplyTo *TwitterReplyTo `protobuf:"bytes,16,opt,name=replyTo,proto3" json:"replyTo"` + ThreadNumber int32 `protobuf:"varint,17,opt,name=threadNumber,proto3" json:"threadNumber"` + UserName string `protobuf:"bytes,18,opt,name=userName,proto3" json:"userName"` +} + +func (x *TwitterComment) Reset() { + *x = TwitterComment{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[72] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TwitterComment) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TwitterComment) ProtoMessage() {} + +func (x *TwitterComment) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[72] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TwitterComment.ProtoReflect.Descriptor instead. +func (*TwitterComment) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{72} +} + +func (x *TwitterComment) GetBookmarkCount() int32 { + if x != nil { + return x.BookmarkCount + } + return 0 +} + +func (x *TwitterComment) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *TwitterComment) GetCommentId() string { + if x != nil { + return x.CommentId + } + return "" +} + +func (x *TwitterComment) GetCreated() string { + if x != nil { + return x.Created + } + return "" +} + +func (x *TwitterComment) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *TwitterComment) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *TwitterComment) GetImpressionCount() int32 { + if x != nil { + return x.ImpressionCount + } + return 0 +} + +func (x *TwitterComment) GetLikeCount() int32 { + if x != nil { + return x.LikeCount + } + return 0 +} + +func (x *TwitterComment) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *TwitterComment) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *TwitterComment) GetProfileImageUrl() string { + if x != nil { + return x.ProfileImageUrl + } + return "" +} + +func (x *TwitterComment) GetPublicMetrics() *TwitterPublicMetrics { + if x != nil { + return x.PublicMetrics + } + return nil +} + +func (x *TwitterComment) GetQuoteCount() int32 { + if x != nil { + return x.QuoteCount + } + return 0 +} + +func (x *TwitterComment) GetReferencedTweets() []*TwitterReferencedTweet { + if x != nil { + return x.ReferencedTweets + } + return nil +} + +func (x *TwitterComment) GetReplyCount() int32 { + if x != nil { + return x.ReplyCount + } + return 0 +} + +func (x *TwitterComment) GetReplyTo() *TwitterReplyTo { + if x != nil { + return x.ReplyTo + } + return nil +} + +func (x *TwitterComment) GetThreadNumber() int32 { + if x != nil { + return x.ThreadNumber + } + return 0 +} + +func (x *TwitterComment) GetUserName() string { + if x != nil { + return x.UserName + } + return "" +} + +// YouTube 回复评论详情 +type YouTubeReply struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ChannelUrl string `protobuf:"bytes,1,opt,name=channelUrl,proto3" json:"channelUrl"` + Comment string `protobuf:"bytes,2,opt,name=comment,proto3" json:"comment"` + CommentId string `protobuf:"bytes,3,opt,name=commentId,proto3" json:"commentId"` + Created string `protobuf:"bytes,4,opt,name=created,proto3" json:"created"` + LikeCount int32 `protobuf:"varint,5,opt,name=likeCount,proto3" json:"likeCount"` + Platform string `protobuf:"bytes,6,opt,name=platform,proto3" json:"platform"` + ProfileImageUrl string `protobuf:"bytes,7,opt,name=profileImageUrl,proto3" json:"profileImageUrl"` + UserName string `protobuf:"bytes,8,opt,name=userName,proto3" json:"userName"` + ParentId string `protobuf:"bytes,9,opt,name=parentId,proto3" json:"parentId"` +} + +func (x *YouTubeReply) Reset() { + *x = YouTubeReply{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[73] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *YouTubeReply) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*YouTubeReply) ProtoMessage() {} + +func (x *YouTubeReply) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[73] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use YouTubeReply.ProtoReflect.Descriptor instead. +func (*YouTubeReply) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{73} +} + +func (x *YouTubeReply) GetChannelUrl() string { + if x != nil { + return x.ChannelUrl + } + return "" +} + +func (x *YouTubeReply) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *YouTubeReply) GetCommentId() string { + if x != nil { + return x.CommentId + } + return "" +} + +func (x *YouTubeReply) GetCreated() string { + if x != nil { + return x.Created + } + return "" +} + +func (x *YouTubeReply) GetLikeCount() int32 { + if x != nil { + return x.LikeCount + } + return 0 +} + +func (x *YouTubeReply) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *YouTubeReply) GetProfileImageUrl() string { + if x != nil { + return x.ProfileImageUrl + } + return "" +} + +func (x *YouTubeReply) GetUserName() string { + if x != nil { + return x.UserName + } + return "" +} + +func (x *YouTubeReply) GetParentId() string { + if x != nil { + return x.ParentId + } + return "" +} + +// YouTube 评论详情 +type YouTubeComment struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ChannelUrl string `protobuf:"bytes,1,opt,name=channelUrl,proto3" json:"channelUrl"` + Comment string `protobuf:"bytes,2,opt,name=comment,proto3" json:"comment"` + CommentId string `protobuf:"bytes,3,opt,name=commentId,proto3" json:"commentId"` + Created string `protobuf:"bytes,4,opt,name=created,proto3" json:"created"` + IsPublic bool `protobuf:"varint,5,opt,name=isPublic,proto3" json:"isPublic"` + LikeCount int32 `protobuf:"varint,6,opt,name=likeCount,proto3" json:"likeCount"` + Platform string `protobuf:"bytes,7,opt,name=platform,proto3" json:"platform"` + ProfileImageUrl string `protobuf:"bytes,8,opt,name=profileImageUrl,proto3" json:"profileImageUrl"` + Replies []*YouTubeReply `protobuf:"bytes,9,rep,name=replies,proto3" json:"replies"` + UserName string `protobuf:"bytes,10,opt,name=userName,proto3" json:"userName"` +} + +func (x *YouTubeComment) Reset() { + *x = YouTubeComment{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[74] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *YouTubeComment) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*YouTubeComment) ProtoMessage() {} + +func (x *YouTubeComment) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[74] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use YouTubeComment.ProtoReflect.Descriptor instead. +func (*YouTubeComment) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{74} +} + +func (x *YouTubeComment) GetChannelUrl() string { + if x != nil { + return x.ChannelUrl + } + return "" +} + +func (x *YouTubeComment) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *YouTubeComment) GetCommentId() string { + if x != nil { + return x.CommentId + } + return "" +} + +func (x *YouTubeComment) GetCreated() string { + if x != nil { + return x.Created + } + return "" +} + +func (x *YouTubeComment) GetIsPublic() bool { + if x != nil { + return x.IsPublic + } + return false +} + +func (x *YouTubeComment) GetLikeCount() int32 { + if x != nil { + return x.LikeCount + } + return 0 +} + +func (x *YouTubeComment) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *YouTubeComment) GetProfileImageUrl() string { + if x != nil { + return x.ProfileImageUrl + } + return "" +} + +func (x *YouTubeComment) GetReplies() []*YouTubeReply { + if x != nil { + return x.Replies + } + return nil +} + +func (x *YouTubeComment) GetUserName() string { + if x != nil { + return x.UserName + } + return "" +} + +// 获取评论响应 +type GetCommentResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Instagram []*InstagramComment `protobuf:"bytes,1,rep,name=instagram,proto3" json:"instagram"` + Tiktok []*TikTokComment `protobuf:"bytes,2,rep,name=tiktok,proto3" json:"tiktok"` + Status string `protobuf:"bytes,3,opt,name=status,proto3" json:"status"` + Id string `protobuf:"bytes,4,opt,name=id,proto3" json:"id"` + LastUpdated string `protobuf:"bytes,5,opt,name=lastUpdated,proto3" json:"lastUpdated"` + NextUpdate string `protobuf:"bytes,6,opt,name=nextUpdate,proto3" json:"nextUpdate"` + Action string `protobuf:"bytes,7,opt,name=action,proto3" json:"action"` + Code int32 `protobuf:"varint,8,opt,name=code,proto3" json:"code"` + Message string `protobuf:"bytes,9,opt,name=message,proto3" json:"message"` + // 其它平台的评论列表 + Bluesky []*BlueskyComment `protobuf:"bytes,10,rep,name=bluesky,proto3" json:"bluesky"` + Facebook []*FacebookComment `protobuf:"bytes,11,rep,name=facebook,proto3" json:"facebook"` + Linkedin []*LinkedInComment `protobuf:"bytes,12,rep,name=linkedin,proto3" json:"linkedin"` + Reddit []*RedditComment `protobuf:"bytes,13,rep,name=reddit,proto3" json:"reddit"` + Threads []*ThreadsComment `protobuf:"bytes,14,rep,name=threads,proto3" json:"threads"` + Twitter []*TwitterComment `protobuf:"bytes,15,rep,name=twitter,proto3" json:"twitter"` + Youtube []*YouTubeComment `protobuf:"bytes,16,rep,name=youtube,proto3" json:"youtube"` +} + +func (x *GetCommentResponse) Reset() { + *x = GetCommentResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[75] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetCommentResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetCommentResponse) ProtoMessage() {} + +func (x *GetCommentResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[75] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetCommentResponse.ProtoReflect.Descriptor instead. +func (*GetCommentResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{75} +} + +func (x *GetCommentResponse) GetInstagram() []*InstagramComment { + if x != nil { + return x.Instagram + } + return nil +} + +func (x *GetCommentResponse) GetTiktok() []*TikTokComment { + if x != nil { + return x.Tiktok + } + return nil +} + +func (x *GetCommentResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *GetCommentResponse) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *GetCommentResponse) GetLastUpdated() string { + if x != nil { + return x.LastUpdated + } + return "" +} + +func (x *GetCommentResponse) GetNextUpdate() string { + if x != nil { + return x.NextUpdate + } + return "" +} + +func (x *GetCommentResponse) GetAction() string { + if x != nil { + return x.Action + } + return "" +} + +func (x *GetCommentResponse) GetCode() int32 { + if x != nil { + return x.Code + } + return 0 +} + +func (x *GetCommentResponse) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +func (x *GetCommentResponse) GetBluesky() []*BlueskyComment { + if x != nil { + return x.Bluesky + } + return nil +} + +func (x *GetCommentResponse) GetFacebook() []*FacebookComment { + if x != nil { + return x.Facebook + } + return nil +} + +func (x *GetCommentResponse) GetLinkedin() []*LinkedInComment { + if x != nil { + return x.Linkedin + } + return nil +} + +func (x *GetCommentResponse) GetReddit() []*RedditComment { + if x != nil { + return x.Reddit + } + return nil +} + +func (x *GetCommentResponse) GetThreads() []*ThreadsComment { + if x != nil { + return x.Threads + } + return nil +} + +func (x *GetCommentResponse) GetTwitter() []*TwitterComment { + if x != nil { + return x.Twitter + } + return nil +} + +func (x *GetCommentResponse) GetYoutube() []*YouTubeComment { + if x != nil { + return x.Youtube + } + return nil +} + +// 删除评论请求 +type DeleteCommentRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` + Platforms []string `protobuf:"bytes,2,rep,name=platforms,proto3" json:"platforms"` + Platform string `protobuf:"bytes,3,opt,name=platform,proto3" json:"platform"` + SearchPlatformId bool `protobuf:"varint,4,opt,name=searchPlatformId,proto3" json:"searchPlatformId"` + ProfileKey string `protobuf:"bytes,5,opt,name=profileKey,proto3" json:"profileKey"` +} + +func (x *DeleteCommentRequest) Reset() { + *x = DeleteCommentRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[76] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteCommentRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteCommentRequest) ProtoMessage() {} + +func (x *DeleteCommentRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[76] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteCommentRequest.ProtoReflect.Descriptor instead. +func (*DeleteCommentRequest) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{76} +} + +func (x *DeleteCommentRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *DeleteCommentRequest) GetPlatforms() []string { + if x != nil { + return x.Platforms + } + return nil +} + +func (x *DeleteCommentRequest) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *DeleteCommentRequest) GetSearchPlatformId() bool { + if x != nil { + return x.SearchPlatformId + } + return false +} + +func (x *DeleteCommentRequest) GetProfileKey() string { + if x != nil { + return x.ProfileKey + } + return "" +} + +// Instagram 删除评论响应(单条) +type InstagramDeleteResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Action string `protobuf:"bytes,1,opt,name=action,proto3" json:"action"` + Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status"` + Id string `protobuf:"bytes,3,opt,name=id,proto3" json:"id"` + Comment string `protobuf:"bytes,4,opt,name=comment,proto3" json:"comment"` +} + +func (x *InstagramDeleteResponse) Reset() { + *x = InstagramDeleteResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[77] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *InstagramDeleteResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InstagramDeleteResponse) ProtoMessage() {} + +func (x *InstagramDeleteResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[77] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InstagramDeleteResponse.ProtoReflect.Descriptor instead. +func (*InstagramDeleteResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{77} +} + +func (x *InstagramDeleteResponse) GetAction() string { + if x != nil { + return x.Action + } + return "" +} + +func (x *InstagramDeleteResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *InstagramDeleteResponse) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *InstagramDeleteResponse) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +// TikTok 删除评论响应(单条) +type TikTokDeleteResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Action string `protobuf:"bytes,1,opt,name=action,proto3" json:"action"` + Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status"` + CommentId string `protobuf:"bytes,3,opt,name=commentId,proto3" json:"commentId"` + Id string `protobuf:"bytes,4,opt,name=id,proto3" json:"id"` + Comment string `protobuf:"bytes,5,opt,name=comment,proto3" json:"comment"` +} + +func (x *TikTokDeleteResponse) Reset() { + *x = TikTokDeleteResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[78] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TikTokDeleteResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TikTokDeleteResponse) ProtoMessage() {} + +func (x *TikTokDeleteResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[78] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TikTokDeleteResponse.ProtoReflect.Descriptor instead. +func (*TikTokDeleteResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{78} +} + +func (x *TikTokDeleteResponse) GetAction() string { + if x != nil { + return x.Action + } + return "" +} + +func (x *TikTokDeleteResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *TikTokDeleteResponse) GetCommentId() string { + if x != nil { + return x.CommentId + } + return "" +} + +func (x *TikTokDeleteResponse) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *TikTokDeleteResponse) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +// 删除评论响应 +type DeleteCommentResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + // Instagram 和 TikTok 可能是单个对象或数组,使用 JSON 字符串存储 + Instagram string `protobuf:"bytes,2,opt,name=instagram,proto3" json:"instagram"` + Tiktok string `protobuf:"bytes,3,opt,name=tiktok,proto3" json:"tiktok"` + Action string `protobuf:"bytes,4,opt,name=action,proto3" json:"action"` + Code int32 `protobuf:"varint,5,opt,name=code,proto3" json:"code"` + Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message"` + // 其它平台删除结果,同样使用 JSON 字符串存储,兼容单条或多条返回 + Bluesky string `protobuf:"bytes,7,opt,name=bluesky,proto3" json:"bluesky"` + Facebook string `protobuf:"bytes,8,opt,name=facebook,proto3" json:"facebook"` + Linkedin string `protobuf:"bytes,9,opt,name=linkedin,proto3" json:"linkedin"` + Threads string `protobuf:"bytes,10,opt,name=threads,proto3" json:"threads"` + Twitter string `protobuf:"bytes,11,opt,name=twitter,proto3" json:"twitter"` + Youtube string `protobuf:"bytes,12,opt,name=youtube,proto3" json:"youtube"` +} + +func (x *DeleteCommentResponse) Reset() { + *x = DeleteCommentResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[79] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteCommentResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteCommentResponse) ProtoMessage() {} + +func (x *DeleteCommentResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[79] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteCommentResponse.ProtoReflect.Descriptor instead. +func (*DeleteCommentResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{79} +} + +func (x *DeleteCommentResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *DeleteCommentResponse) GetInstagram() string { + if x != nil { + return x.Instagram + } + return "" +} + +func (x *DeleteCommentResponse) GetTiktok() string { + if x != nil { + return x.Tiktok + } + return "" +} + +func (x *DeleteCommentResponse) GetAction() string { + if x != nil { + return x.Action + } + return "" +} + +func (x *DeleteCommentResponse) GetCode() int32 { + if x != nil { + return x.Code + } + return 0 +} + +func (x *DeleteCommentResponse) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +func (x *DeleteCommentResponse) GetBluesky() string { + if x != nil { + return x.Bluesky + } + return "" +} + +func (x *DeleteCommentResponse) GetFacebook() string { + if x != nil { + return x.Facebook + } + return "" +} + +func (x *DeleteCommentResponse) GetLinkedin() string { + if x != nil { + return x.Linkedin + } + return "" +} + +func (x *DeleteCommentResponse) GetThreads() string { + if x != nil { + return x.Threads + } + return "" +} + +func (x *DeleteCommentResponse) GetTwitter() string { + if x != nil { + return x.Twitter + } + return "" +} + +func (x *DeleteCommentResponse) GetYoutube() string { + if x != nil { + return x.Youtube + } + return "" +} + +// 回复评论请求 +type ReplyCommentRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` + Comment string `protobuf:"bytes,2,opt,name=comment,proto3" json:"comment"` + Platforms []string `protobuf:"bytes,3,rep,name=platforms,proto3" json:"platforms"` + ProfileKey string `protobuf:"bytes,4,opt,name=profileKey,proto3" json:"profileKey"` +} + +func (x *ReplyCommentRequest) Reset() { + *x = ReplyCommentRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[80] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ReplyCommentRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReplyCommentRequest) ProtoMessage() {} + +func (x *ReplyCommentRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[80] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReplyCommentRequest.ProtoReflect.Descriptor instead. +func (*ReplyCommentRequest) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{80} +} + +func (x *ReplyCommentRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *ReplyCommentRequest) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *ReplyCommentRequest) GetPlatforms() []string { + if x != nil { + return x.Platforms + } + return nil +} + +func (x *ReplyCommentRequest) GetProfileKey() string { + if x != nil { + return x.ProfileKey + } + return "" +} + +// Instagram 回复评论响应 +type InstagramReplyResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + CommentId string `protobuf:"bytes,2,opt,name=commentId,proto3" json:"commentId"` + SourceCommentId string `protobuf:"bytes,3,opt,name=sourceCommentId,proto3" json:"sourceCommentId"` + Comment string `protobuf:"bytes,4,opt,name=comment,proto3" json:"comment"` + Platform string `protobuf:"bytes,5,opt,name=platform,proto3" json:"platform"` +} + +func (x *InstagramReplyResponse) Reset() { + *x = InstagramReplyResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[81] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *InstagramReplyResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InstagramReplyResponse) ProtoMessage() {} + +func (x *InstagramReplyResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[81] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InstagramReplyResponse.ProtoReflect.Descriptor instead. +func (*InstagramReplyResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{81} +} + +func (x *InstagramReplyResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *InstagramReplyResponse) GetCommentId() string { + if x != nil { + return x.CommentId + } + return "" +} + +func (x *InstagramReplyResponse) GetSourceCommentId() string { + if x != nil { + return x.SourceCommentId + } + return "" +} + +func (x *InstagramReplyResponse) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *InstagramReplyResponse) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +// TikTok 回复评论响应 +type TikTokReplyResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + CommentId string `protobuf:"bytes,2,opt,name=commentId,proto3" json:"commentId"` + SourceCommentId string `protobuf:"bytes,3,opt,name=sourceCommentId,proto3" json:"sourceCommentId"` + Comment string `protobuf:"bytes,4,opt,name=comment,proto3" json:"comment"` + Platform string `protobuf:"bytes,5,opt,name=platform,proto3" json:"platform"` + VideoId string `protobuf:"bytes,6,opt,name=videoId,proto3" json:"videoId"` +} + +func (x *TikTokReplyResponse) Reset() { + *x = TikTokReplyResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[82] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TikTokReplyResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TikTokReplyResponse) ProtoMessage() {} + +func (x *TikTokReplyResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[82] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TikTokReplyResponse.ProtoReflect.Descriptor instead. +func (*TikTokReplyResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{82} +} + +func (x *TikTokReplyResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *TikTokReplyResponse) GetCommentId() string { + if x != nil { + return x.CommentId + } + return "" +} + +func (x *TikTokReplyResponse) GetSourceCommentId() string { + if x != nil { + return x.SourceCommentId + } + return "" +} + +func (x *TikTokReplyResponse) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *TikTokReplyResponse) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *TikTokReplyResponse) GetVideoId() string { + if x != nil { + return x.VideoId + } + return "" +} + +// Bluesky 回复评论响应 +type BlueskyReplyResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + CommentId string `protobuf:"bytes,2,opt,name=commentId,proto3" json:"commentId"` + SourceCommentId string `protobuf:"bytes,3,opt,name=sourceCommentId,proto3" json:"sourceCommentId"` + Comment string `protobuf:"bytes,4,opt,name=comment,proto3" json:"comment"` + Platform string `protobuf:"bytes,5,opt,name=platform,proto3" json:"platform"` + Cid string `protobuf:"bytes,6,opt,name=cid,proto3" json:"cid"` + PostUrl string `protobuf:"bytes,7,opt,name=postUrl,proto3" json:"postUrl"` +} + +func (x *BlueskyReplyResponse) Reset() { + *x = BlueskyReplyResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[83] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlueskyReplyResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlueskyReplyResponse) ProtoMessage() {} + +func (x *BlueskyReplyResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[83] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlueskyReplyResponse.ProtoReflect.Descriptor instead. +func (*BlueskyReplyResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{83} +} + +func (x *BlueskyReplyResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *BlueskyReplyResponse) GetCommentId() string { + if x != nil { + return x.CommentId + } + return "" +} + +func (x *BlueskyReplyResponse) GetSourceCommentId() string { + if x != nil { + return x.SourceCommentId + } + return "" +} + +func (x *BlueskyReplyResponse) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *BlueskyReplyResponse) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *BlueskyReplyResponse) GetCid() string { + if x != nil { + return x.Cid + } + return "" +} + +func (x *BlueskyReplyResponse) GetPostUrl() string { + if x != nil { + return x.PostUrl + } + return "" +} + +// Facebook 回复评论响应 +type FacebookReplyResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + CommentId string `protobuf:"bytes,2,opt,name=commentId,proto3" json:"commentId"` + SourceCommentId string `protobuf:"bytes,3,opt,name=sourceCommentId,proto3" json:"sourceCommentId"` + Comment string `protobuf:"bytes,4,opt,name=comment,proto3" json:"comment"` + Platform string `protobuf:"bytes,5,opt,name=platform,proto3" json:"platform"` +} + +func (x *FacebookReplyResponse) Reset() { + *x = FacebookReplyResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[84] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FacebookReplyResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FacebookReplyResponse) ProtoMessage() {} + +func (x *FacebookReplyResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[84] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FacebookReplyResponse.ProtoReflect.Descriptor instead. +func (*FacebookReplyResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{84} +} + +func (x *FacebookReplyResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *FacebookReplyResponse) GetCommentId() string { + if x != nil { + return x.CommentId + } + return "" +} + +func (x *FacebookReplyResponse) GetSourceCommentId() string { + if x != nil { + return x.SourceCommentId + } + return "" +} + +func (x *FacebookReplyResponse) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *FacebookReplyResponse) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +// LinkedIn 回复评论响应 +type LinkedInReplyResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + CommentId string `protobuf:"bytes,2,opt,name=commentId,proto3" json:"commentId"` + SourceCommentId string `protobuf:"bytes,3,opt,name=sourceCommentId,proto3" json:"sourceCommentId"` + Comment string `protobuf:"bytes,4,opt,name=comment,proto3" json:"comment"` + Platform string `protobuf:"bytes,5,opt,name=platform,proto3" json:"platform"` +} + +func (x *LinkedInReplyResponse) Reset() { + *x = LinkedInReplyResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[85] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LinkedInReplyResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LinkedInReplyResponse) ProtoMessage() {} + +func (x *LinkedInReplyResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[85] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LinkedInReplyResponse.ProtoReflect.Descriptor instead. +func (*LinkedInReplyResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{85} +} + +func (x *LinkedInReplyResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *LinkedInReplyResponse) GetCommentId() string { + if x != nil { + return x.CommentId + } + return "" +} + +func (x *LinkedInReplyResponse) GetSourceCommentId() string { + if x != nil { + return x.SourceCommentId + } + return "" +} + +func (x *LinkedInReplyResponse) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *LinkedInReplyResponse) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +// Twitter/X 回复评论响应 +type TwitterReplyResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + CommentId string `protobuf:"bytes,2,opt,name=commentId,proto3" json:"commentId"` + SourceCommentId string `protobuf:"bytes,3,opt,name=sourceCommentId,proto3" json:"sourceCommentId"` + Comment string `protobuf:"bytes,4,opt,name=comment,proto3" json:"comment"` + Platform string `protobuf:"bytes,5,opt,name=platform,proto3" json:"platform"` + PostUrl string `protobuf:"bytes,6,opt,name=postUrl,proto3" json:"postUrl"` +} + +func (x *TwitterReplyResponse) Reset() { + *x = TwitterReplyResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[86] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TwitterReplyResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TwitterReplyResponse) ProtoMessage() {} + +func (x *TwitterReplyResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[86] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TwitterReplyResponse.ProtoReflect.Descriptor instead. +func (*TwitterReplyResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{86} +} + +func (x *TwitterReplyResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *TwitterReplyResponse) GetCommentId() string { + if x != nil { + return x.CommentId + } + return "" +} + +func (x *TwitterReplyResponse) GetSourceCommentId() string { + if x != nil { + return x.SourceCommentId + } + return "" +} + +func (x *TwitterReplyResponse) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *TwitterReplyResponse) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *TwitterReplyResponse) GetPostUrl() string { + if x != nil { + return x.PostUrl + } + return "" +} + +// YouTube 回复评论响应 +type YouTubeReplyResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + CommentId string `protobuf:"bytes,2,opt,name=commentId,proto3" json:"commentId"` + SourceCommentId string `protobuf:"bytes,3,opt,name=sourceCommentId,proto3" json:"sourceCommentId"` + Comment string `protobuf:"bytes,4,opt,name=comment,proto3" json:"comment"` + Platform string `protobuf:"bytes,5,opt,name=platform,proto3" json:"platform"` +} + +func (x *YouTubeReplyResponse) Reset() { + *x = YouTubeReplyResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[87] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *YouTubeReplyResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*YouTubeReplyResponse) ProtoMessage() {} + +func (x *YouTubeReplyResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[87] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use YouTubeReplyResponse.ProtoReflect.Descriptor instead. +func (*YouTubeReplyResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{87} +} + +func (x *YouTubeReplyResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *YouTubeReplyResponse) GetCommentId() string { + if x != nil { + return x.CommentId + } + return "" +} + +func (x *YouTubeReplyResponse) GetSourceCommentId() string { + if x != nil { + return x.SourceCommentId + } + return "" +} + +func (x *YouTubeReplyResponse) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *YouTubeReplyResponse) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +// 回复评论响应 +type ReplyCommentResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + CommentId string `protobuf:"bytes,2,opt,name=commentId,proto3" json:"commentId"` + Id string `protobuf:"bytes,3,opt,name=id,proto3" json:"id"` + Instagram *InstagramReplyResponse `protobuf:"bytes,4,opt,name=instagram,proto3" json:"instagram"` + Tiktok *TikTokReplyResponse `protobuf:"bytes,5,opt,name=tiktok,proto3" json:"tiktok"` + Action string `protobuf:"bytes,6,opt,name=action,proto3" json:"action"` + Code int32 `protobuf:"varint,7,opt,name=code,proto3" json:"code"` + Message string `protobuf:"bytes,8,opt,name=message,proto3" json:"message"` + // 其它平台的回复结果 + Bluesky *BlueskyReplyResponse `protobuf:"bytes,9,opt,name=bluesky,proto3" json:"bluesky"` + Facebook *FacebookReplyResponse `protobuf:"bytes,10,opt,name=facebook,proto3" json:"facebook"` + Linkedin *LinkedInReplyResponse `protobuf:"bytes,11,opt,name=linkedin,proto3" json:"linkedin"` + Twitter *TwitterReplyResponse `protobuf:"bytes,12,opt,name=twitter,proto3" json:"twitter"` + Youtube *YouTubeReplyResponse `protobuf:"bytes,13,opt,name=youtube,proto3" json:"youtube"` +} + +func (x *ReplyCommentResponse) Reset() { + *x = ReplyCommentResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[88] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ReplyCommentResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReplyCommentResponse) ProtoMessage() {} + +func (x *ReplyCommentResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[88] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReplyCommentResponse.ProtoReflect.Descriptor instead. +func (*ReplyCommentResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{88} +} + +func (x *ReplyCommentResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *ReplyCommentResponse) GetCommentId() string { + if x != nil { + return x.CommentId + } + return "" +} + +func (x *ReplyCommentResponse) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *ReplyCommentResponse) GetInstagram() *InstagramReplyResponse { + if x != nil { + return x.Instagram + } + return nil +} + +func (x *ReplyCommentResponse) GetTiktok() *TikTokReplyResponse { + if x != nil { + return x.Tiktok + } + return nil +} + +func (x *ReplyCommentResponse) GetAction() string { + if x != nil { + return x.Action + } + return "" +} + +func (x *ReplyCommentResponse) GetCode() int32 { + if x != nil { + return x.Code + } + return 0 +} + +func (x *ReplyCommentResponse) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +func (x *ReplyCommentResponse) GetBluesky() *BlueskyReplyResponse { + if x != nil { + return x.Bluesky + } + return nil +} + +func (x *ReplyCommentResponse) GetFacebook() *FacebookReplyResponse { + if x != nil { + return x.Facebook + } + return nil +} + +func (x *ReplyCommentResponse) GetLinkedin() *LinkedInReplyResponse { + if x != nil { + return x.Linkedin + } + return nil +} + +func (x *ReplyCommentResponse) GetTwitter() *TwitterReplyResponse { + if x != nil { + return x.Twitter + } + return nil +} + +func (x *ReplyCommentResponse) GetYoutube() *YouTubeReplyResponse { + if x != nil { + return x.Youtube + } + return nil +} + +// 获取帖子分析数据请求 +type GetPostAnalyticsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` + Platforms []string `protobuf:"bytes,2,rep,name=platforms,proto3" json:"platforms"` + ProfileKey string `protobuf:"bytes,3,opt,name=profileKey,proto3" json:"profileKey"` +} + +func (x *GetPostAnalyticsRequest) Reset() { + *x = GetPostAnalyticsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[89] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetPostAnalyticsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetPostAnalyticsRequest) ProtoMessage() {} + +func (x *GetPostAnalyticsRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[89] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetPostAnalyticsRequest.ProtoReflect.Descriptor instead. +func (*GetPostAnalyticsRequest) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{89} +} + +func (x *GetPostAnalyticsRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *GetPostAnalyticsRequest) GetPlatforms() []string { + if x != nil { + return x.Platforms + } + return nil +} + +func (x *GetPostAnalyticsRequest) GetProfileKey() string { + if x != nil { + return x.ProfileKey + } + return "" +} + +// 通过 Social Post ID 获取帖子分析数据请求 +type GetPostAnalyticsBySocialIDRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` + Platforms []string `protobuf:"bytes,2,rep,name=platforms,proto3" json:"platforms"` + SearchPlatformId bool `protobuf:"varint,3,opt,name=searchPlatformId,proto3" json:"searchPlatformId"` + ProfileKey string `protobuf:"bytes,4,opt,name=profileKey,proto3" json:"profileKey"` +} + +func (x *GetPostAnalyticsBySocialIDRequest) Reset() { + *x = GetPostAnalyticsBySocialIDRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[90] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetPostAnalyticsBySocialIDRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetPostAnalyticsBySocialIDRequest) ProtoMessage() {} + +func (x *GetPostAnalyticsBySocialIDRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[90] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetPostAnalyticsBySocialIDRequest.ProtoReflect.Descriptor instead. +func (*GetPostAnalyticsBySocialIDRequest) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{90} +} + +func (x *GetPostAnalyticsBySocialIDRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *GetPostAnalyticsBySocialIDRequest) GetPlatforms() []string { + if x != nil { + return x.Platforms + } + return nil +} + +func (x *GetPostAnalyticsBySocialIDRequest) GetSearchPlatformId() bool { + if x != nil { + return x.SearchPlatformId + } + return false +} + +func (x *GetPostAnalyticsBySocialIDRequest) GetProfileKey() string { + if x != nil { + return x.ProfileKey + } + return "" +} + +// 获取帖子分析数据响应(使用 JSON 字符串存储复杂的平台数据) +type GetPostAnalyticsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + Code int32 `protobuf:"varint,2,opt,name=code,proto3" json:"code"` + Id string `protobuf:"bytes,3,opt,name=id,proto3" json:"id"` + // 各平台的分析数据以 JSON 字符串形式存储 + Bluesky string `protobuf:"bytes,4,opt,name=bluesky,proto3" json:"bluesky"` + Facebook string `protobuf:"bytes,5,opt,name=facebook,proto3" json:"facebook"` + Instagram string `protobuf:"bytes,6,opt,name=instagram,proto3" json:"instagram"` + Linkedin string `protobuf:"bytes,7,opt,name=linkedin,proto3" json:"linkedin"` + Pinterest string `protobuf:"bytes,8,opt,name=pinterest,proto3" json:"pinterest"` + Snapchat string `protobuf:"bytes,9,opt,name=snapchat,proto3" json:"snapchat"` + Threads string `protobuf:"bytes,10,opt,name=threads,proto3" json:"threads"` + Tiktok string `protobuf:"bytes,11,opt,name=tiktok,proto3" json:"tiktok"` + Twitter string `protobuf:"bytes,12,opt,name=twitter,proto3" json:"twitter"` + Youtube string `protobuf:"bytes,13,opt,name=youtube,proto3" json:"youtube"` +} + +func (x *GetPostAnalyticsResponse) Reset() { + *x = GetPostAnalyticsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[91] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetPostAnalyticsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetPostAnalyticsResponse) ProtoMessage() {} + +func (x *GetPostAnalyticsResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[91] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetPostAnalyticsResponse.ProtoReflect.Descriptor instead. +func (*GetPostAnalyticsResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{91} +} + +func (x *GetPostAnalyticsResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *GetPostAnalyticsResponse) GetCode() int32 { + if x != nil { + return x.Code + } + return 0 +} + +func (x *GetPostAnalyticsResponse) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *GetPostAnalyticsResponse) GetBluesky() string { + if x != nil { + return x.Bluesky + } + return "" +} + +func (x *GetPostAnalyticsResponse) GetFacebook() string { + if x != nil { + return x.Facebook + } + return "" +} + +func (x *GetPostAnalyticsResponse) GetInstagram() string { + if x != nil { + return x.Instagram + } + return "" +} + +func (x *GetPostAnalyticsResponse) GetLinkedin() string { + if x != nil { + return x.Linkedin + } + return "" +} + +func (x *GetPostAnalyticsResponse) GetPinterest() string { + if x != nil { + return x.Pinterest + } + return "" +} + +func (x *GetPostAnalyticsResponse) GetSnapchat() string { + if x != nil { + return x.Snapchat + } + return "" +} + +func (x *GetPostAnalyticsResponse) GetThreads() string { + if x != nil { + return x.Threads + } + return "" +} + +func (x *GetPostAnalyticsResponse) GetTiktok() string { + if x != nil { + return x.Tiktok + } + return "" +} + +func (x *GetPostAnalyticsResponse) GetTwitter() string { + if x != nil { + return x.Twitter + } + return "" +} + +func (x *GetPostAnalyticsResponse) GetYoutube() string { + if x != nil { + return x.Youtube + } + return "" +} + +// 获取社交网络分析数据请求 +type GetSocialAnalyticsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Platforms []string `protobuf:"bytes,1,rep,name=platforms,proto3" json:"platforms"` + ProfileKey string `protobuf:"bytes,2,opt,name=profileKey,proto3" json:"profileKey"` +} + +func (x *GetSocialAnalyticsRequest) Reset() { + *x = GetSocialAnalyticsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[92] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetSocialAnalyticsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetSocialAnalyticsRequest) ProtoMessage() {} + +func (x *GetSocialAnalyticsRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[92] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetSocialAnalyticsRequest.ProtoReflect.Descriptor instead. +func (*GetSocialAnalyticsRequest) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{92} +} + +func (x *GetSocialAnalyticsRequest) GetPlatforms() []string { + if x != nil { + return x.Platforms + } + return nil +} + +func (x *GetSocialAnalyticsRequest) GetProfileKey() string { + if x != nil { + return x.ProfileKey + } + return "" +} + +// 获取社交网络分析数据响应(使用 JSON 字符串存储复杂的平台数据) +type GetSocialAnalyticsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + // 各平台的分析数据以 JSON 字符串形式存储 + Bluesky string `protobuf:"bytes,2,opt,name=bluesky,proto3" json:"bluesky"` + Facebook string `protobuf:"bytes,3,opt,name=facebook,proto3" json:"facebook"` + Gmb string `protobuf:"bytes,4,opt,name=gmb,proto3" json:"gmb"` + Instagram string `protobuf:"bytes,5,opt,name=instagram,proto3" json:"instagram"` + Linkedin string `protobuf:"bytes,6,opt,name=linkedin,proto3" json:"linkedin"` + Pinterest string `protobuf:"bytes,7,opt,name=pinterest,proto3" json:"pinterest"` + Reddit string `protobuf:"bytes,8,opt,name=reddit,proto3" json:"reddit"` + Snapchat string `protobuf:"bytes,9,opt,name=snapchat,proto3" json:"snapchat"` + Threads string `protobuf:"bytes,10,opt,name=threads,proto3" json:"threads"` + Tiktok string `protobuf:"bytes,11,opt,name=tiktok,proto3" json:"tiktok"` + Twitter string `protobuf:"bytes,12,opt,name=twitter,proto3" json:"twitter"` + Youtube string `protobuf:"bytes,13,opt,name=youtube,proto3" json:"youtube"` +} + +func (x *GetSocialAnalyticsResponse) Reset() { + *x = GetSocialAnalyticsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[93] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetSocialAnalyticsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetSocialAnalyticsResponse) ProtoMessage() {} + +func (x *GetSocialAnalyticsResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[93] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetSocialAnalyticsResponse.ProtoReflect.Descriptor instead. +func (*GetSocialAnalyticsResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{93} +} + +func (x *GetSocialAnalyticsResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *GetSocialAnalyticsResponse) GetBluesky() string { + if x != nil { + return x.Bluesky + } + return "" +} + +func (x *GetSocialAnalyticsResponse) GetFacebook() string { + if x != nil { + return x.Facebook + } + return "" +} + +func (x *GetSocialAnalyticsResponse) GetGmb() string { + if x != nil { + return x.Gmb + } + return "" +} + +func (x *GetSocialAnalyticsResponse) GetInstagram() string { + if x != nil { + return x.Instagram + } + return "" +} + +func (x *GetSocialAnalyticsResponse) GetLinkedin() string { + if x != nil { + return x.Linkedin + } + return "" +} + +func (x *GetSocialAnalyticsResponse) GetPinterest() string { + if x != nil { + return x.Pinterest + } + return "" +} + +func (x *GetSocialAnalyticsResponse) GetReddit() string { + if x != nil { + return x.Reddit + } + return "" +} + +func (x *GetSocialAnalyticsResponse) GetSnapchat() string { + if x != nil { + return x.Snapchat + } + return "" +} + +func (x *GetSocialAnalyticsResponse) GetThreads() string { + if x != nil { + return x.Threads + } + return "" +} + +func (x *GetSocialAnalyticsResponse) GetTiktok() string { + if x != nil { + return x.Tiktok + } + return "" +} + +func (x *GetSocialAnalyticsResponse) GetTwitter() string { + if x != nil { + return x.Twitter + } + return "" +} + +func (x *GetSocialAnalyticsResponse) GetYoutube() string { + if x != nil { + return x.Youtube + } + return "" +} + +// AutoHashtagsRequest 自动生成标签请求参数 +type AutoHashtagsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Post string `protobuf:"bytes,1,opt,name=post,proto3" json:"post"` + Max int32 `protobuf:"varint,2,opt,name=max,proto3" json:"max"` + Position string `protobuf:"bytes,3,opt,name=position,proto3" json:"position"` + Language string `protobuf:"bytes,4,opt,name=language,proto3" json:"language"` + ProfileKey string `protobuf:"bytes,5,opt,name=profileKey,proto3" json:"profileKey"` +} + +func (x *AutoHashtagsRequest) Reset() { + *x = AutoHashtagsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[94] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AutoHashtagsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AutoHashtagsRequest) ProtoMessage() {} + +func (x *AutoHashtagsRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[94] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AutoHashtagsRequest.ProtoReflect.Descriptor instead. +func (*AutoHashtagsRequest) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{94} +} + +func (x *AutoHashtagsRequest) GetPost() string { + if x != nil { + return x.Post + } + return "" +} + +func (x *AutoHashtagsRequest) GetMax() int32 { + if x != nil { + return x.Max + } + return 0 +} + +func (x *AutoHashtagsRequest) GetPosition() string { + if x != nil { + return x.Position + } + return "" +} + +func (x *AutoHashtagsRequest) GetLanguage() string { + if x != nil { + return x.Language + } + return "" +} + +func (x *AutoHashtagsRequest) GetProfileKey() string { + if x != nil { + return x.ProfileKey + } + return "" +} + +// AutoHashtagsResponse 自动生成标签返回结果 +type AutoHashtagsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Post string `protobuf:"bytes,1,opt,name=post,proto3" json:"post"` + Action string `protobuf:"bytes,2,opt,name=action,proto3" json:"action"` + Status string `protobuf:"bytes,3,opt,name=status,proto3" json:"status"` + Code int32 `protobuf:"varint,4,opt,name=code,proto3" json:"code"` + Message string `protobuf:"bytes,5,opt,name=message,proto3" json:"message"` +} + +func (x *AutoHashtagsResponse) Reset() { + *x = AutoHashtagsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[95] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AutoHashtagsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AutoHashtagsResponse) ProtoMessage() {} + +func (x *AutoHashtagsResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[95] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AutoHashtagsResponse.ProtoReflect.Descriptor instead. +func (*AutoHashtagsResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{95} +} + +func (x *AutoHashtagsResponse) GetPost() string { + if x != nil { + return x.Post + } + return "" +} + +func (x *AutoHashtagsResponse) GetAction() string { + if x != nil { + return x.Action + } + return "" +} + +func (x *AutoHashtagsResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *AutoHashtagsResponse) GetCode() int32 { + if x != nil { + return x.Code + } + return 0 +} + +func (x *AutoHashtagsResponse) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +// CheckBannedHashtagRequest 查看被禁用标签请求 +type CheckBannedHashtagRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Hashtag string `protobuf:"bytes,1,opt,name=hashtag,proto3" json:"hashtag"` + ProfileKey string `protobuf:"bytes,2,opt,name=profileKey,proto3" json:"profileKey"` +} + +func (x *CheckBannedHashtagRequest) Reset() { + *x = CheckBannedHashtagRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[96] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CheckBannedHashtagRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CheckBannedHashtagRequest) ProtoMessage() {} + +func (x *CheckBannedHashtagRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[96] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CheckBannedHashtagRequest.ProtoReflect.Descriptor instead. +func (*CheckBannedHashtagRequest) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{96} +} + +func (x *CheckBannedHashtagRequest) GetHashtag() string { + if x != nil { + return x.Hashtag + } + return "" +} + +func (x *CheckBannedHashtagRequest) GetProfileKey() string { + if x != nil { + return x.ProfileKey + } + return "" +} + +// CheckBannedHashtagResponse 查看被禁用标签返回结果 +type CheckBannedHashtagResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Hashtag string `protobuf:"bytes,1,opt,name=hashtag,proto3" json:"hashtag"` + Banned bool `protobuf:"varint,2,opt,name=banned,proto3" json:"banned"` + Action string `protobuf:"bytes,3,opt,name=action,proto3" json:"action"` + Status string `protobuf:"bytes,4,opt,name=status,proto3" json:"status"` + Code int32 `protobuf:"varint,5,opt,name=code,proto3" json:"code"` + Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message"` +} + +func (x *CheckBannedHashtagResponse) Reset() { + *x = CheckBannedHashtagResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[97] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CheckBannedHashtagResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CheckBannedHashtagResponse) ProtoMessage() {} + +func (x *CheckBannedHashtagResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[97] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CheckBannedHashtagResponse.ProtoReflect.Descriptor instead. +func (*CheckBannedHashtagResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{97} +} + +func (x *CheckBannedHashtagResponse) GetHashtag() string { + if x != nil { + return x.Hashtag + } + return "" +} + +func (x *CheckBannedHashtagResponse) GetBanned() bool { + if x != nil { + return x.Banned + } + return false +} + +func (x *CheckBannedHashtagResponse) GetAction() string { + if x != nil { + return x.Action + } + return "" +} + +func (x *CheckBannedHashtagResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *CheckBannedHashtagResponse) GetCode() int32 { + if x != nil { + return x.Code + } + return 0 +} + +func (x *CheckBannedHashtagResponse) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +// HashtagRecommendation 单条推荐标签信息 +type HashtagRecommendation struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ViewCount int64 `protobuf:"varint,1,opt,name=viewCount,proto3" json:"viewCount"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name"` +} + +func (x *HashtagRecommendation) Reset() { + *x = HashtagRecommendation{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[98] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *HashtagRecommendation) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HashtagRecommendation) ProtoMessage() {} + +func (x *HashtagRecommendation) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[98] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use HashtagRecommendation.ProtoReflect.Descriptor instead. +func (*HashtagRecommendation) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{98} +} + +func (x *HashtagRecommendation) GetViewCount() int64 { + if x != nil { + return x.ViewCount + } + return 0 +} + +func (x *HashtagRecommendation) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// RecommendHashtagsRequest 推荐话题标签请求 +type RecommendHashtagsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword"` + ProfileKey string `protobuf:"bytes,2,opt,name=profileKey,proto3" json:"profileKey"` +} + +func (x *RecommendHashtagsRequest) Reset() { + *x = RecommendHashtagsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[99] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RecommendHashtagsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RecommendHashtagsRequest) ProtoMessage() {} + +func (x *RecommendHashtagsRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[99] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RecommendHashtagsRequest.ProtoReflect.Descriptor instead. +func (*RecommendHashtagsRequest) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{99} +} + +func (x *RecommendHashtagsRequest) GetKeyword() string { + if x != nil { + return x.Keyword + } + return "" +} + +func (x *RecommendHashtagsRequest) GetProfileKey() string { + if x != nil { + return x.ProfileKey + } + return "" +} + +// RecommendHashtagsResponse 推荐话题标签返回结果 +type RecommendHashtagsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword"` + Recommendations []*HashtagRecommendation `protobuf:"bytes,2,rep,name=recommendations,proto3" json:"recommendations"` + Action string `protobuf:"bytes,3,opt,name=action,proto3" json:"action"` + Status string `protobuf:"bytes,4,opt,name=status,proto3" json:"status"` + Code int32 `protobuf:"varint,5,opt,name=code,proto3" json:"code"` + Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message"` +} + +func (x *RecommendHashtagsResponse) Reset() { + *x = RecommendHashtagsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[100] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RecommendHashtagsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RecommendHashtagsResponse) ProtoMessage() {} + +func (x *RecommendHashtagsResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[100] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RecommendHashtagsResponse.ProtoReflect.Descriptor instead. +func (*RecommendHashtagsResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{100} +} + +func (x *RecommendHashtagsResponse) GetKeyword() string { + if x != nil { + return x.Keyword + } + return "" +} + +func (x *RecommendHashtagsResponse) GetRecommendations() []*HashtagRecommendation { + if x != nil { + return x.Recommendations + } + return nil +} + +func (x *RecommendHashtagsResponse) GetAction() string { + if x != nil { + return x.Action + } + return "" +} + +func (x *RecommendHashtagsResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *RecommendHashtagsResponse) GetCode() int32 { + if x != nil { + return x.Code + } + return 0 +} + +func (x *RecommendHashtagsResponse) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +// SearchHashtagsRequest 搜索话题标签请求 +type SearchHashtagsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword"` + SearchType string `protobuf:"bytes,2,opt,name=searchType,proto3" json:"searchType"` + ProfileKey string `protobuf:"bytes,3,opt,name=profileKey,proto3" json:"profileKey"` +} + +func (x *SearchHashtagsRequest) Reset() { + *x = SearchHashtagsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[101] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SearchHashtagsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SearchHashtagsRequest) ProtoMessage() {} + +func (x *SearchHashtagsRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[101] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SearchHashtagsRequest.ProtoReflect.Descriptor instead. +func (*SearchHashtagsRequest) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{101} +} + +func (x *SearchHashtagsRequest) GetKeyword() string { + if x != nil { + return x.Keyword + } + return "" +} + +func (x *SearchHashtagsRequest) GetSearchType() string { + if x != nil { + return x.SearchType + } + return "" +} + +func (x *SearchHashtagsRequest) GetProfileKey() string { + if x != nil { + return x.ProfileKey + } + return "" +} + +// SearchHashtagInfo 单个话题标签的基本信息 +type SearchHashtagInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name"` +} + +func (x *SearchHashtagInfo) Reset() { + *x = SearchHashtagInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[102] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SearchHashtagInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SearchHashtagInfo) ProtoMessage() {} + +func (x *SearchHashtagInfo) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[102] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SearchHashtagInfo.ProtoReflect.Descriptor instead. +func (*SearchHashtagInfo) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{102} +} + +func (x *SearchHashtagInfo) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *SearchHashtagInfo) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// SearchHashtagChild 搜索结果中 children.data 的元素 +type SearchHashtagChild struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` +} + +func (x *SearchHashtagChild) Reset() { + *x = SearchHashtagChild{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[103] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SearchHashtagChild) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SearchHashtagChild) ProtoMessage() {} + +func (x *SearchHashtagChild) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[103] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SearchHashtagChild.ProtoReflect.Descriptor instead. +func (*SearchHashtagChild) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{103} +} + +func (x *SearchHashtagChild) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +// SearchHashtagChildren 搜索结果中的 children 对象 +type SearchHashtagChildren struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Data []*SearchHashtagChild `protobuf:"bytes,1,rep,name=data,proto3" json:"data"` +} + +func (x *SearchHashtagChildren) Reset() { + *x = SearchHashtagChildren{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[104] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SearchHashtagChildren) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SearchHashtagChildren) ProtoMessage() {} + +func (x *SearchHashtagChildren) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[104] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SearchHashtagChildren.ProtoReflect.Descriptor instead. +func (*SearchHashtagChildren) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{104} +} + +func (x *SearchHashtagChildren) GetData() []*SearchHashtagChild { + if x != nil { + return x.Data + } + return nil +} + +// SearchHashtagMedia 搜索结果中的单条 Instagram 媒体信息 +type SearchHashtagMedia struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Caption string `protobuf:"bytes,1,opt,name=caption,proto3" json:"caption"` + Children *SearchHashtagChildren `protobuf:"bytes,2,opt,name=children,proto3" json:"children"` + CommentsCount int32 `protobuf:"varint,3,opt,name=commentsCount,proto3" json:"commentsCount"` + Id string `protobuf:"bytes,4,opt,name=id,proto3" json:"id"` + LikeCount int32 `protobuf:"varint,5,opt,name=likeCount,proto3" json:"likeCount"` + MediaType string `protobuf:"bytes,6,opt,name=mediaType,proto3" json:"mediaType"` + MediaUrl string `protobuf:"bytes,7,opt,name=mediaUrl,proto3" json:"mediaUrl"` + Permalink string `protobuf:"bytes,8,opt,name=permalink,proto3" json:"permalink"` + Timestamp string `protobuf:"bytes,9,opt,name=timestamp,proto3" json:"timestamp"` +} + +func (x *SearchHashtagMedia) Reset() { + *x = SearchHashtagMedia{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[105] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SearchHashtagMedia) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SearchHashtagMedia) ProtoMessage() {} + +func (x *SearchHashtagMedia) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[105] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SearchHashtagMedia.ProtoReflect.Descriptor instead. +func (*SearchHashtagMedia) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{105} +} + +func (x *SearchHashtagMedia) GetCaption() string { + if x != nil { + return x.Caption + } + return "" +} + +func (x *SearchHashtagMedia) GetChildren() *SearchHashtagChildren { + if x != nil { + return x.Children + } + return nil +} + +func (x *SearchHashtagMedia) GetCommentsCount() int32 { + if x != nil { + return x.CommentsCount + } + return 0 +} + +func (x *SearchHashtagMedia) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *SearchHashtagMedia) GetLikeCount() int32 { + if x != nil { + return x.LikeCount + } + return 0 +} + +func (x *SearchHashtagMedia) GetMediaType() string { + if x != nil { + return x.MediaType + } + return "" +} + +func (x *SearchHashtagMedia) GetMediaUrl() string { + if x != nil { + return x.MediaUrl + } + return "" +} + +func (x *SearchHashtagMedia) GetPermalink() string { + if x != nil { + return x.Permalink + } + return "" +} + +func (x *SearchHashtagMedia) GetTimestamp() string { + if x != nil { + return x.Timestamp + } + return "" +} + +// SearchHashtagsResponse 搜索话题标签响应 +type SearchHashtagsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` + Hashtag *SearchHashtagInfo `protobuf:"bytes,2,opt,name=hashtag,proto3" json:"hashtag"` + SearchResults []*SearchHashtagMedia `protobuf:"bytes,3,rep,name=searchResults,proto3" json:"searchResults"` + Count int32 `protobuf:"varint,4,opt,name=count,proto3" json:"count"` + LastUpdated string `protobuf:"bytes,5,opt,name=lastUpdated,proto3" json:"lastUpdated"` + NextUpdate string `protobuf:"bytes,6,opt,name=nextUpdate,proto3" json:"nextUpdate"` + Action string `protobuf:"bytes,7,opt,name=action,proto3" json:"action"` + Code int32 `protobuf:"varint,8,opt,name=code,proto3" json:"code"` + Message string `protobuf:"bytes,9,opt,name=message,proto3" json:"message"` +} + +func (x *SearchHashtagsResponse) Reset() { + *x = SearchHashtagsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_ayrshare_proto_msgTypes[106] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SearchHashtagsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SearchHashtagsResponse) ProtoMessage() {} + +func (x *SearchHashtagsResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_ayrshare_proto_msgTypes[106] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SearchHashtagsResponse.ProtoReflect.Descriptor instead. +func (*SearchHashtagsResponse) Descriptor() ([]byte, []int) { + return file_pb_ayrshare_proto_rawDescGZIP(), []int{106} +} + +func (x *SearchHashtagsResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *SearchHashtagsResponse) GetHashtag() *SearchHashtagInfo { + if x != nil { + return x.Hashtag + } + return nil +} + +func (x *SearchHashtagsResponse) GetSearchResults() []*SearchHashtagMedia { + if x != nil { + return x.SearchResults + } + return nil +} + +func (x *SearchHashtagsResponse) GetCount() int32 { + if x != nil { + return x.Count + } + return 0 +} + +func (x *SearchHashtagsResponse) GetLastUpdated() string { + if x != nil { + return x.LastUpdated + } + return "" +} + +func (x *SearchHashtagsResponse) GetNextUpdate() string { + if x != nil { + return x.NextUpdate + } + return "" +} + +func (x *SearchHashtagsResponse) GetAction() string { + if x != nil { + return x.Action + } + return "" +} + +func (x *SearchHashtagsResponse) GetCode() int32 { + if x != nil { + return x.Code + } + return 0 +} + +func (x *SearchHashtagsResponse) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +var File_pb_ayrshare_proto protoreflect.FileDescriptor + +var file_pb_ayrshare_proto_rawDesc = []byte{ + 0x0a, 0x11, 0x70, 0x62, 0x2f, 0x61, 0x79, 0x72, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x1a, 0x13, 0x70, + 0x62, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x12, 0x70, 0x62, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x41, 0x0a, 0x07, 0x55, 0x73, 0x65, 0x72, 0x54, 0x61, + 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0c, 0x0a, + 0x01, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x01, 0x78, 0x12, 0x0c, 0x0a, 0x01, 0x79, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x01, 0x79, 0x22, 0x93, 0x03, 0x0a, 0x10, 0x49, 0x6e, + 0x73, 0x74, 0x61, 0x67, 0x72, 0x61, 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, + 0x0a, 0x0e, 0x73, 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, 0x65, 0x6c, 0x73, 0x46, 0x65, 0x65, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x73, 0x68, 0x61, 0x72, 0x65, 0x52, 0x65, 0x65, + 0x6c, 0x73, 0x46, 0x65, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x4e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x75, 0x64, 0x69, 0x6f, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x4e, 0x61, 0x69, + 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x4e, 0x61, + 0x69, 0x6c, 0x12, 0x28, 0x0a, 0x0f, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x4e, 0x61, 0x69, 0x6c, 0x4f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x74, 0x68, 0x75, + 0x6d, 0x62, 0x4e, 0x61, 0x69, 0x6c, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x18, 0x0a, 0x07, + 0x73, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, + 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x6c, 0x74, 0x54, 0x65, 0x78, + 0x74, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x61, 0x6c, 0x74, 0x54, 0x65, 0x78, 0x74, + 0x12, 0x1e, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, + 0x12, 0x2d, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x54, 0x61, 0x67, 0x73, 0x18, 0x08, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x55, 0x73, + 0x65, 0x72, 0x54, 0x61, 0x67, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x54, 0x61, 0x67, 0x73, 0x12, + 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, + 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x73, + 0x69, 0x7a, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x61, 0x75, 0x74, 0x6f, 0x52, + 0x65, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, + 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, + 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, + 0xdd, 0x03, 0x0a, 0x0d, 0x54, 0x69, 0x6b, 0x54, 0x6f, 0x6b, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x75, 0x74, 0x6f, 0x41, 0x64, 0x64, 0x4d, 0x75, 0x73, 0x69, + 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x75, 0x74, 0x6f, 0x41, 0x64, 0x64, + 0x4d, 0x75, 0x73, 0x69, 0x63, 0x12, 0x28, 0x0a, 0x0f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, + 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, + 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, + 0x20, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x75, 0x65, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x75, 0x65, + 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x69, 0x74, + 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, + 0x65, 0x53, 0x74, 0x69, 0x74, 0x63, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x72, 0x61, 0x66, 0x74, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x64, 0x72, 0x61, 0x66, 0x74, 0x12, 0x24, 0x0a, + 0x0d, 0x69, 0x73, 0x41, 0x49, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x73, 0x41, 0x49, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x65, 0x64, 0x12, 0x2a, 0x0a, 0x10, 0x69, 0x73, 0x42, 0x72, 0x61, 0x6e, 0x64, 0x65, 0x64, + 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x69, + 0x73, 0x42, 0x72, 0x61, 0x6e, 0x64, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, + 0x26, 0x0a, 0x0e, 0x69, 0x73, 0x42, 0x72, 0x61, 0x6e, 0x64, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x63, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x73, 0x42, 0x72, 0x61, 0x6e, 0x64, + 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x63, 0x12, 0x28, 0x0a, 0x0f, 0x69, 0x6d, 0x61, 0x67, 0x65, + 0x43, 0x6f, 0x76, 0x65, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x76, 0x65, 0x72, 0x49, 0x6e, 0x64, 0x65, + 0x78, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x74, 0x68, 0x75, 0x6d, 0x62, + 0x4e, 0x61, 0x69, 0x6c, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0f, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x4e, 0x61, 0x69, 0x6c, 0x4f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x4e, 0x61, 0x69, 0x6c, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x4e, 0x61, 0x69, 0x6c, 0x12, + 0x1e, 0x0a, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x22, + 0x8b, 0x04, 0x0a, 0x0b, 0x50, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x32, 0x0a, 0x04, 0x70, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1e, 0xe2, + 0xdf, 0x1f, 0x1a, 0x2a, 0x16, 0x70, 0x6f, 0x73, 0x74, 0xe5, 0x86, 0x85, 0xe5, 0xae, 0xb9, 0xe4, + 0xb8, 0x8d, 0xe8, 0x83, 0xbd, 0xe4, 0xb8, 0xba, 0xe7, 0xa9, 0xba, 0x58, 0x01, 0x52, 0x04, 0x70, + 0x6f, 0x73, 0x74, 0x12, 0x49, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, 0x2b, 0xe2, 0xdf, 0x1f, 0x27, 0x2a, 0x21, 0x70, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0xe5, 0xb9, 0xb3, 0xe5, 0x8f, 0xb0, 0xe5, 0x88, 0x97, + 0xe8, 0xa1, 0xa8, 0xe4, 0xb8, 0x8d, 0xe8, 0x83, 0xbd, 0xe4, 0xb8, 0xba, 0xe7, 0xa9, 0xba, 0x58, + 0x01, 0x60, 0x01, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x12, 0x1c, + 0x0a, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x72, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x72, 0x6c, 0x73, 0x12, 0x18, 0x0a, 0x07, + 0x69, 0x73, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, + 0x73, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, + 0x6c, 0x65, 0x44, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x63, + 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x76, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, + 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x68, 0x6f, 0x72, + 0x74, 0x65, 0x6e, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, + 0x73, 0x68, 0x6f, 0x72, 0x74, 0x65, 0x6e, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x12, 0x28, 0x0a, 0x0f, + 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x46, 0x0a, 0x10, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x67, + 0x72, 0x61, 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x49, 0x6e, 0x73, 0x74, + 0x61, 0x67, 0x72, 0x61, 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x10, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x67, 0x72, 0x61, 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3d, + 0x0a, 0x0d, 0x74, 0x69, 0x6b, 0x54, 0x6f, 0x6b, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, + 0x2e, 0x54, 0x69, 0x6b, 0x54, 0x6f, 0x6b, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0d, + 0x74, 0x69, 0x6b, 0x54, 0x6f, 0x6b, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1e, 0x0a, + 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x22, 0xa4, 0x02, + 0x0a, 0x06, 0x50, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, + 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, + 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x6f, 0x73, 0x74, 0x55, 0x72, 0x6c, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6f, 0x73, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x77, 0x6e, + 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x49, 0x64, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, + 0x65, 0x6e, 0x64, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6e, 0x64, + 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x64, 0x53, 0x68, 0x61, 0x72, 0x65, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x64, 0x53, 0x68, 0x61, 0x72, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x69, 0x73, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, + 0x73, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x73, 0x65, 0x64, 0x51, 0x75, + 0x6f, 0x74, 0x61, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x75, 0x73, 0x65, 0x64, 0x51, + 0x75, 0x6f, 0x74, 0x61, 0x22, 0xe0, 0x01, 0x0a, 0x08, 0x50, 0x6f, 0x73, 0x74, 0x49, 0x74, 0x65, + 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, + 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, + 0x73, 0x12, 0x2a, 0x0a, 0x07, 0x70, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x6f, + 0x73, 0x74, 0x49, 0x64, 0x52, 0x07, 0x70, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x73, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, + 0x05, 0x72, 0x65, 0x66, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x65, + 0x66, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x54, 0x69, + 0x74, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x73, 0x74, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x6f, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x74, + 0x69, 0x6b, 0x54, 0x6f, 0x6b, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, + 0x69, 0x6b, 0x54, 0x6f, 0x6b, 0x49, 0x64, 0x22, 0xc3, 0x01, 0x0a, 0x0c, 0x50, 0x6f, 0x73, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x28, 0x0a, 0x05, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x12, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x49, + 0x74, 0x65, 0x6d, 0x52, 0x05, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x73, 0x12, 0x2a, 0x0a, 0x07, 0x70, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x73, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x50, + 0x6f, 0x73, 0x74, 0x49, 0x64, 0x52, 0x07, 0x70, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x73, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, + 0x0a, 0x0b, 0x69, 0x73, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x08, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x22, 0x5e, 0x0a, + 0x0e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x2c, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1c, 0xe2, 0xdf, 0x1f, + 0x18, 0x2a, 0x14, 0xe5, 0xb8, 0x96, 0xe5, 0xad, 0x90, 0x49, 0x44, 0xe4, 0xb8, 0x8d, 0xe8, 0x83, + 0xbd, 0xe4, 0xb8, 0xba, 0xe7, 0xa9, 0xba, 0x58, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1e, 0x0a, + 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x22, 0xfd, 0x02, + 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, + 0x6f, 0x72, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x72, 0x6c, 0x73, + 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x72, 0x6c, + 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x18, 0x05, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x12, + 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x73, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, + 0x6f, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x07, 0x70, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x73, 0x18, 0x07, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, + 0x50, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x52, 0x07, 0x70, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x73, 0x12, + 0x22, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x54, 0x69, + 0x74, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x66, 0x49, 0x64, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x72, 0x65, 0x66, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x63, 0x68, + 0x65, 0x64, 0x75, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0c, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x65, 0x12, 0x22, 0x0a, + 0x0c, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x65, 0x6e, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0c, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x65, 0x6e, 0x4c, 0x69, 0x6e, 0x6b, + 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x5c, 0x0a, + 0x0e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x12, + 0x2a, 0x0a, 0x10, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x67, 0x72, 0x61, 0x6d, 0x44, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x69, 0x6e, 0x73, 0x74, 0x61, + 0x67, 0x72, 0x61, 0x6d, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x5b, 0x0a, 0x09, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x19, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x6f, + 0x6e, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x5f, 0x73, 0x65, 0x63, 0x6f, + 0x6e, 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0b, 0x6e, 0x61, 0x6e, 0x6f, 0x73, 0x65, 0x63, 0x6f, 0x6e, + 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x5f, 0x6e, 0x61, 0x6e, 0x6f, 0x73, + 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x74, 0x63, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x74, 0x63, 0x22, 0x7a, 0x0a, 0x0c, 0x54, 0x77, 0x69, 0x74, + 0x74, 0x65, 0x72, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x6d, 0x6f, 0x6e, 0x74, + 0x68, 0x6c, 0x79, 0x55, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, + 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x22, 0x0a, 0x0c, + 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0c, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, + 0x12, 0x22, 0x0a, 0x0c, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x52, 0x65, 0x73, 0x65, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x52, + 0x65, 0x73, 0x65, 0x74, 0x22, 0xb5, 0x06, 0x0a, 0x0b, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x20, + 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, + 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, + 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x55, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x1c, 0x0a, 0x09, + 0x75, 0x73, 0x65, 0x72, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x75, 0x73, 0x65, 0x72, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, + 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, + 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0f, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x69, 0x6e, 0x67, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x41, 0x63, 0x74, 0x69, + 0x76, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, + 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x61, 0x70, 0x73, 0x55, 0x72, + 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x61, 0x70, 0x73, 0x55, 0x72, 0x6c, + 0x12, 0x18, 0x0a, 0x07, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x49, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, + 0x76, 0x69, 0x65, 0x77, 0x55, 0x72, 0x6c, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, + 0x65, 0x76, 0x69, 0x65, 0x77, 0x55, 0x72, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x67, 0x49, 0x64, + 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x69, 0x67, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x73, 0x65, 0x64, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x18, 0x11, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x09, 0x75, 0x73, 0x65, 0x64, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x12, 0x32, + 0x0a, 0x14, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x44, 0x61, 0x79, 0x73, 0x52, 0x65, 0x6d, + 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, 0x72, 0x65, + 0x66, 0x72, 0x65, 0x73, 0x68, 0x44, 0x61, 0x79, 0x73, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, + 0x6e, 0x67, 0x12, 0x28, 0x0a, 0x0f, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x71, + 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x66, + 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x42, 0x0a, 0x1c, + 0x69, 0x73, 0x45, 0x6c, 0x69, 0x67, 0x69, 0x62, 0x6c, 0x65, 0x46, 0x6f, 0x72, 0x47, 0x65, 0x6f, + 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x14, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x1c, 0x69, 0x73, 0x45, 0x6c, 0x69, 0x67, 0x69, 0x62, 0x6c, 0x65, 0x46, 0x6f, + 0x72, 0x47, 0x65, 0x6f, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x73, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x15, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, + 0x12, 0x2a, 0x0a, 0x10, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x54, 0x79, 0x70, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x75, 0x62, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3a, 0x0a, 0x0c, + 0x74, 0x77, 0x69, 0x74, 0x74, 0x65, 0x72, 0x55, 0x73, 0x61, 0x67, 0x65, 0x18, 0x17, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x54, 0x77, + 0x69, 0x74, 0x74, 0x65, 0x72, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0c, 0x74, 0x77, 0x69, 0x74, + 0x74, 0x65, 0x72, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x76, 0x65, 0x72, 0x69, + 0x66, 0x69, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x22, 0x85, 0x05, 0x0a, + 0x0f, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x32, 0x0a, 0x14, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x6c, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x14, + 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x6c, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x73, 0x12, 0x2d, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x12, 0x39, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, + 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x72, 0x79, 0x73, + 0x68, 0x61, 0x72, 0x65, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, + 0x52, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x14, + 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, + 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x41, 0x70, 0x69, 0x43, + 0x61, 0x6c, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x41, + 0x70, 0x69, 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x4c, 0x0a, 0x21, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, + 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x21, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x76, + 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x69, 0x6e, + 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, + 0x12, 0x28, 0x0a, 0x0f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x41, 0x70, 0x69, 0x43, 0x61, + 0x6c, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, + 0x6c, 0x79, 0x41, 0x70, 0x69, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x6d, 0x6f, + 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x50, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x50, 0x6f, 0x73, + 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, + 0x79, 0x50, 0x6f, 0x73, 0x74, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x10, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x50, 0x6f, 0x73, 0x74, 0x51, 0x75, 0x6f, + 0x74, 0x61, 0x12, 0x32, 0x0a, 0x14, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x41, 0x70, 0x69, + 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x14, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x41, 0x70, 0x69, 0x43, 0x61, 0x6c, 0x6c, + 0x73, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x66, 0x49, 0x64, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x65, 0x66, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, + 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, + 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x65, 0x78, 0x74, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6e, 0x65, 0x78, 0x74, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x22, 0xb7, 0x02, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2f, 0x0a, + 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x19, 0xe2, 0xdf, + 0x1f, 0x15, 0x2a, 0x11, 0x74, 0x69, 0x74, 0x6c, 0x65, 0xe4, 0xb8, 0x8d, 0xe8, 0x83, 0xbd, 0xe4, + 0xb8, 0xba, 0xe7, 0xa9, 0xba, 0x58, 0x01, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x28, + 0x0a, 0x0f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x41, 0x63, 0x74, 0x69, 0x76, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x69, + 0x6e, 0x67, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x68, 0x69, 0x64, 0x65, + 0x54, 0x6f, 0x70, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0d, 0x68, 0x69, 0x64, 0x65, 0x54, 0x6f, 0x70, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x1c, + 0x0a, 0x09, 0x74, 0x6f, 0x70, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x74, 0x6f, 0x70, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0d, + 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x6c, 0x18, 0x05, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x0d, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x6f, 0x63, 0x69, + 0x61, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1c, 0x0a, 0x09, + 0x73, 0x75, 0x62, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x73, 0x75, 0x62, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, + 0x67, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x22, 0xa5, + 0x01, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x66, 0x49, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x65, 0x66, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, + 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x28, 0x0a, 0x0f, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x69, 0x6e, 0x67, + 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x22, 0xc7, 0x02, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x50, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, + 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, + 0x74, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x66, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x72, 0x65, 0x66, 0x49, 0x64, 0x12, 0x38, 0x0a, 0x17, 0x68, 0x61, 0x73, + 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x6c, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x68, 0x61, 0x73, 0x41, + 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x6c, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x73, 0x12, 0x42, 0x0a, 0x1c, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x73, 0x41, + 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x6c, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x1c, 0x69, 0x6e, 0x63, 0x6c, 0x75, + 0x64, 0x65, 0x73, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x6c, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x26, 0x0a, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x4c, 0x6f, 0x67, 0x42, 0x6f, 0x6f, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, + 0x52, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x67, 0x42, 0x6f, 0x6f, 0x6c, 0x12, + 0x24, 0x0a, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x74, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4c, + 0x6f, 0x67, 0x49, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x63, + 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, + 0x73, 0x6f, 0x72, 0x42, 0x0b, 0x0a, 0x09, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x67, + 0x22, 0x96, 0x02, 0x0a, 0x0b, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x74, 0x65, 0x6d, + 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x22, + 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x54, 0x69, 0x74, + 0x6c, 0x65, 0x12, 0x2d, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x55, 0x54, 0x43, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x55, 0x54, + 0x43, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x66, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x72, 0x65, 0x66, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x14, 0x61, 0x63, 0x74, 0x69, 0x76, + 0x65, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x6c, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, + 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x14, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x6f, 0x63, + 0x69, 0x61, 0x6c, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x73, + 0x75, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, + 0x73, 0x75, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x22, 0x5c, 0x0a, 0x0a, 0x50, 0x61, 0x67, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x4d, 0x6f, + 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x68, 0x61, 0x73, 0x4d, 0x6f, 0x72, + 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x65, 0x78, 0x74, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6e, 0x65, 0x78, 0x74, 0x43, 0x75, 0x72, 0x73, 0x6f, + 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0xd6, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x50, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x31, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x6c, 0x61, 0x73, 0x74, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6c, + 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x65, + 0x78, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x6e, 0x65, 0x78, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x34, 0x0a, 0x0a, 0x70, 0x61, + 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0x45, 0x0a, 0x05, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x6f, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x74, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0xdb, 0x02, 0x0a, 0x12, 0x47, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x65, 0x4a, 0x57, 0x54, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, + 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, + 0x65, 0x4b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x69, 0x76, + 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x3e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x4b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1e, 0xe2, 0xdf, 0x1f, 0x1a, + 0x2a, 0x16, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0xe4, 0xb8, 0x8d, 0xe8, + 0x83, 0xbd, 0xe4, 0xb8, 0xba, 0xe7, 0xa9, 0xba, 0x58, 0x01, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x66, + 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x6f, 0x67, 0x6f, 0x75, 0x74, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x12, 0x1a, + 0x0a, 0x08, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x6c, + 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x6c, 0x18, 0x06, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x6c, + 0x12, 0x16, 0x0a, 0x06, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x06, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x61, 0x73, 0x65, + 0x36, 0x34, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x62, 0x61, 0x73, 0x65, 0x36, 0x34, + 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x49, 0x6e, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x49, 0x6e, 0x12, 0x25, + 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, + 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x52, 0x05, + 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0xa7, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x65, 0x4a, 0x57, 0x54, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x75, 0x72, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x53, 0x65, 0x6e, 0x74, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x53, 0x65, 0x6e, + 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x49, 0x6e, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x49, 0x6e, 0x22, + 0x87, 0x01, 0x0a, 0x0d, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x50, 0x6f, 0x73, 0x74, 0x49, + 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x6f, 0x73, 0x74, 0x55, 0x72, 0x6c, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6f, 0x73, 0x74, 0x55, 0x72, 0x6c, 0x12, + 0x18, 0x0a, 0x07, 0x69, 0x73, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x07, 0x69, 0x73, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x22, 0xfb, 0x04, 0x0a, 0x0b, 0x48, 0x69, + 0x73, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x73, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x6f, 0x73, 0x74, 0x12, 0x1c, 0x0a, + 0x09, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x09, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x12, 0x31, 0x0a, 0x07, 0x70, + 0x6f, 0x73, 0x74, 0x49, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, + 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x50, + 0x6f, 0x73, 0x74, 0x49, 0x64, 0x52, 0x07, 0x70, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x73, 0x12, 0x16, + 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x6f, + 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x6f, 0x74, 0x65, 0x73, + 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x37, 0x0a, 0x0c, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x44, 0x61, + 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, + 0x61, 0x72, 0x65, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x73, + 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x61, + 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x61, + 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x70, 0x70, 0x72, 0x6f, + 0x76, 0x65, 0x64, 0x42, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x70, + 0x72, 0x6f, 0x76, 0x65, 0x64, 0x42, 0x79, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x70, 0x70, 0x72, 0x6f, + 0x76, 0x65, 0x64, 0x44, 0x61, 0x74, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, + 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x72, + 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x42, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x42, 0x79, 0x12, 0x22, 0x0a, 0x0c, 0x72, + 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x44, 0x61, 0x74, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0c, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, + 0x2a, 0x0a, 0x10, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x41, 0x70, 0x70, 0x72, 0x6f, + 0x76, 0x61, 0x6c, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x72, 0x65, 0x71, 0x75, 0x69, + 0x72, 0x65, 0x73, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x12, 0x22, 0x0a, 0x0c, 0x70, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, + 0x14, 0x0a, 0x05, 0x72, 0x65, 0x66, 0x49, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x72, 0x65, 0x66, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x72, + 0x6c, 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x55, + 0x72, 0x6c, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x65, 0x6e, 0x4c, 0x69, + 0x6e, 0x6b, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x73, 0x68, 0x6f, 0x72, 0x74, + 0x65, 0x6e, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x22, 0x8b, 0x02, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x48, + 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, + 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, + 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x6e, + 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x73, + 0x74, 0x44, 0x61, 0x79, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x61, 0x73, + 0x74, 0x44, 0x61, 0x79, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x74, 0x49, + 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, + 0x6f, 0x73, 0x74, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x4b, 0x65, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x22, 0xb3, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x48, 0x69, 0x73, + 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x07, + 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, + 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, + 0x49, 0x74, 0x65, 0x6d, 0x52, 0x07, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x14, 0x0a, + 0x05, 0x72, 0x65, 0x66, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x65, + 0x66, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x6c, 0x61, 0x73, + 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, + 0x65, 0x78, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x6e, 0x65, 0x78, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x22, 0x8d, 0x01, 0x0a, 0x15, + 0x47, 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x1c, 0xe2, 0xdf, 0x1f, 0x18, 0x2a, 0x14, 0xe5, 0xb8, 0x96, 0xe5, 0xad, 0x90, 0x49, + 0x44, 0xe4, 0xb8, 0x8d, 0xe8, 0x83, 0xbd, 0xe4, 0xb8, 0xba, 0xe7, 0xa9, 0xba, 0x58, 0x01, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x6c, 0x6c, + 0x50, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x73, 0x65, 0x61, + 0x72, 0x63, 0x68, 0x41, 0x6c, 0x6c, 0x50, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x70, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x22, 0x90, 0x03, 0x0a, 0x16, + 0x47, 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x65, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x69, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x72, 0x6c, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x72, 0x6c, 0x73, + 0x12, 0x31, 0x0a, 0x07, 0x70, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x48, 0x69, 0x73, + 0x74, 0x6f, 0x72, 0x79, 0x50, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x52, 0x07, 0x70, 0x6f, 0x73, 0x74, + 0x49, 0x64, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x06, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x12, 0x37, 0x0a, 0x0c, 0x73, 0x63, 0x68, + 0x65, 0x64, 0x75, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x13, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x44, 0x61, + 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x22, 0x0a, 0x0c, + 0x73, 0x68, 0x6f, 0x72, 0x74, 0x65, 0x6e, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0c, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x65, 0x6e, 0x4c, 0x69, 0x6e, 0x6b, 0x73, + 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x73, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x70, 0x6f, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x18, 0x0c, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x84, + 0x01, 0x0a, 0x0c, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x50, 0x6f, 0x73, 0x74, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, + 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, + 0x6f, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x6f, 0x73, 0x74, 0x55, 0x72, 0x6c, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6f, 0x73, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x18, 0x0a, + 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x7b, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, + 0x6f, 0x72, 0x79, 0x42, 0x79, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x20, 0xe2, 0xdf, 0x1f, 0x1c, 0x2a, 0x18, 0xe5, 0xb9, + 0xb3, 0xe5, 0x8f, 0xb0, 0xe5, 0x90, 0x8d, 0xe7, 0xa7, 0xb0, 0xe4, 0xb8, 0x8d, 0xe8, 0x83, 0xbd, + 0xe4, 0xb8, 0xba, 0xe7, 0xa9, 0xba, 0x58, 0x01, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, + 0x65, 0x79, 0x22, 0xa6, 0x01, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, + 0x79, 0x42, 0x79, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2c, 0x0a, 0x05, 0x70, + 0x6f, 0x73, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x72, 0x79, + 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x50, 0x6f, + 0x73, 0x74, 0x52, 0x05, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x6c, 0x61, 0x73, + 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, + 0x65, 0x78, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x6e, 0x65, 0x78, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x22, 0xe7, 0x01, 0x0a, 0x12, + 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x36, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0xe2, 0xdf, 0x1f, 0x16, 0x2a, 0x12, 0xe5, 0xb9, 0xb3, 0xe5, + 0x8f, 0xb0, 0xe4, 0xb8, 0x8d, 0xe8, 0x83, 0xbd, 0xe4, 0xb8, 0xba, 0xe7, 0xa9, 0xba, 0x58, 0x01, + 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x41, 0x0a, 0x0b, 0x72, 0x65, + 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x1f, 0xe2, 0xdf, 0x1f, 0x1b, 0x2a, 0x17, 0xe6, 0x8e, 0xa5, 0xe6, 0x94, 0xb6, 0xe8, 0x80, 0x85, + 0x49, 0x44, 0xe4, 0xb8, 0x8d, 0xe8, 0x83, 0xbd, 0xe4, 0xb8, 0xba, 0xe7, 0xa9, 0xba, 0x58, 0x01, + 0x52, 0x0b, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, + 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, + 0x55, 0x72, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x64, 0x69, + 0x61, 0x55, 0x72, 0x6c, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x4b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x22, 0xdb, 0x01, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x20, 0x0a, + 0x0b, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, + 0x1c, 0x0a, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, + 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6d, + 0x65, 0x64, 0x69, 0x61, 0x55, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, + 0x65, 0x64, 0x69, 0x61, 0x55, 0x72, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, + 0x6f, 0x64, 0x65, 0x22, 0x96, 0x02, 0x0a, 0x13, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, + 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, + 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x72, 0x6c, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x72, 0x6c, 0x12, 0x16, 0x0a, + 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x31, 0x0a, 0x08, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x72, + 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x74, + 0x65, 0x6d, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x22, 0xda, 0x01, 0x0a, + 0x12, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0xe2, 0xdf, 0x1f, 0x16, 0x2a, 0x12, 0xe5, 0xb9, 0xb3, + 0xe5, 0x8f, 0xb0, 0xe4, 0xb8, 0x8d, 0xe8, 0x83, 0xbd, 0xe4, 0xb8, 0xba, 0xe7, 0xa9, 0xba, 0x58, + 0x01, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, + 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x11, 0x63, + 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4f, 0x6e, 0x6c, 0x79, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x22, 0x39, 0x0a, 0x11, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x75, 0x72, 0x6c, 0x22, 0x78, 0x0a, 0x14, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, + 0x65, 0x6e, 0x64, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, + 0x12, 0x18, 0x0a, 0x07, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x22, 0x57, + 0x0a, 0x17, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, + 0x6e, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, + 0x07, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x22, 0x3f, 0x0a, 0x0f, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, + 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, + 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x6f, 0x6a, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x65, 0x6d, 0x6f, 0x6a, 0x69, 0x22, 0x96, 0x04, 0x0a, 0x0f, 0x47, 0x65, 0x74, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, + 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, 0x44, 0x0a, 0x0d, 0x73, 0x65, 0x6e, 0x64, + 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1e, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, + 0x0d, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x20, + 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, + 0x12, 0x4d, 0x0a, 0x10, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x61, 0x72, 0x79, + 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, + 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x10, 0x72, + 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, + 0x26, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, + 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, + 0x18, 0x0a, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x3d, 0x0a, 0x0b, 0x61, 0x74, 0x74, + 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, + 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0b, 0x61, 0x74, 0x74, + 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x37, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x72, + 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x72, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x22, 0x57, 0x0a, 0x17, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, + 0x12, 0x18, 0x0a, 0x07, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x22, 0x9f, 0x01, 0x0a, 0x12, 0x43, + 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x43, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, + 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, + 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, + 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, + 0x0a, 0x09, 0x77, 0x61, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x09, 0x77, 0x61, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x72, 0x6b, 0x22, 0xe7, 0x02, 0x0a, + 0x13, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x35, 0x0a, 0x08, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x73, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x65, 0x78, 0x74, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6e, 0x65, 0x78, 0x74, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, + 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, + 0x50, 0x0a, 0x14, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, + 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x14, 0x63, 0x6f, 0x6e, + 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x73, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, + 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x17, 0x0a, + 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xa8, 0x02, 0x0a, 0x12, 0x50, 0x6f, 0x73, 0x74, 0x43, + 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x26, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x16, 0xe2, 0xdf, 0x1f, 0x12, 0x2a, + 0x0e, 0x69, 0x64, 0xe4, 0xb8, 0x8d, 0xe8, 0x83, 0xbd, 0xe4, 0xb8, 0xba, 0xe7, 0xa9, 0xba, 0x58, + 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x35, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1b, 0xe2, 0xdf, 0x1f, 0x17, 0x2a, 0x13, 0x63, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0xe4, 0xb8, 0x8d, 0xe8, 0x83, 0xbd, 0xe4, 0xb8, 0xba, 0xe7, 0xa9, + 0xba, 0x58, 0x01, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x49, 0x0a, 0x09, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x42, + 0x2b, 0xe2, 0xdf, 0x1f, 0x27, 0x2a, 0x21, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, + 0xe5, 0xb9, 0xb3, 0xe5, 0x8f, 0xb0, 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0xe4, 0xb8, 0x8d, 0xe8, + 0x83, 0xbd, 0xe4, 0xb8, 0xba, 0xe7, 0xa9, 0xba, 0x58, 0x01, 0x60, 0x01, 0x52, 0x09, 0x70, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x73, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x10, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x72, 0x6c, 0x73, + 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x72, 0x6c, + 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, + 0x79, 0x22, 0x86, 0x01, 0x0a, 0x18, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x67, 0x72, 0x61, 0x6d, 0x43, + 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, + 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, + 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, + 0x6e, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1a, + 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x22, 0x9d, 0x01, 0x0a, 0x15, 0x54, + 0x69, 0x6b, 0x54, 0x6f, 0x6b, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, + 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x12, 0x18, 0x0a, 0x07, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x49, 0x64, 0x22, 0xb0, 0x01, 0x0a, 0x16, 0x42, + 0x6c, 0x75, 0x65, 0x73, 0x6b, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, + 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x63, + 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, 0x12, 0x18, 0x0a, + 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x6f, 0x73, 0x74, 0x55, 0x72, 0x6c, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6f, 0x73, 0x74, 0x55, 0x72, 0x6c, 0x22, 0x85, 0x01, + 0x0a, 0x17, 0x46, 0x61, 0x63, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, + 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x22, 0xa5, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x6e, 0x6b, 0x65, 0x64, + 0x49, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, + 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, + 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x72, 0x6e, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x72, + 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x22, 0x82, 0x01, + 0x0a, 0x16, 0x54, 0x77, 0x69, 0x74, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x18, + 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x6f, 0x73, 0x74, + 0x55, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6f, 0x73, 0x74, 0x55, + 0x72, 0x6c, 0x22, 0x84, 0x01, 0x0a, 0x16, 0x59, 0x6f, 0x75, 0x54, 0x75, 0x62, 0x65, 0x43, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, + 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, + 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, + 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x22, 0x89, 0x01, 0x0a, 0x0d, 0x50, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, + 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, + 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x22, 0xbc, 0x05, 0x0a, 0x13, 0x50, 0x6f, 0x73, 0x74, 0x43, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, + 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, + 0x74, 0x49, 0x44, 0x12, 0x1f, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, + 0x41, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, + 0x6e, 0x74, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x40, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x67, 0x72, 0x61, + 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, + 0x72, 0x65, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x67, 0x72, 0x61, 0x6d, 0x43, 0x6f, 0x6d, 0x6d, + 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x09, 0x69, 0x6e, 0x73, + 0x74, 0x61, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x37, 0x0a, 0x06, 0x74, 0x69, 0x6b, 0x74, 0x6f, 0x6b, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, + 0x65, 0x2e, 0x54, 0x69, 0x6b, 0x54, 0x6f, 0x6b, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x06, 0x74, 0x69, 0x6b, 0x74, 0x6f, 0x6b, 0x12, + 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x12, 0x2f, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x73, 0x12, 0x3a, 0x0a, 0x07, 0x62, 0x6c, 0x75, 0x65, 0x73, 0x6b, 0x79, 0x18, 0x0c, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x42, + 0x6c, 0x75, 0x65, 0x73, 0x6b, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x07, 0x62, 0x6c, 0x75, 0x65, 0x73, 0x6b, 0x79, 0x12, 0x3d, + 0x0a, 0x08, 0x66, 0x61, 0x63, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x21, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x46, 0x61, 0x63, 0x65, + 0x62, 0x6f, 0x6f, 0x6b, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x52, 0x08, 0x66, 0x61, 0x63, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x12, 0x3d, 0x0a, + 0x08, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x69, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x21, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x65, + 0x64, 0x49, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x52, 0x08, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x69, 0x6e, 0x12, 0x3a, 0x0a, 0x07, + 0x74, 0x77, 0x69, 0x74, 0x74, 0x65, 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, + 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x54, 0x77, 0x69, 0x74, 0x74, 0x65, 0x72, + 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, + 0x07, 0x74, 0x77, 0x69, 0x74, 0x74, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x07, 0x79, 0x6f, 0x75, 0x74, + 0x75, 0x62, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x72, 0x79, 0x73, + 0x68, 0x61, 0x72, 0x65, 0x2e, 0x59, 0x6f, 0x75, 0x54, 0x75, 0x62, 0x65, 0x43, 0x6f, 0x6d, 0x6d, + 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x07, 0x79, 0x6f, 0x75, + 0x74, 0x75, 0x62, 0x65, 0x22, 0x5b, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, + 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x16, 0xe2, 0xdf, 0x1f, 0x12, 0x2a, 0x0e, 0x69, 0x64, 0xe4, + 0xb8, 0x8d, 0xe8, 0x83, 0xbd, 0xe4, 0xb8, 0xba, 0xe7, 0xa9, 0xba, 0x58, 0x01, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, + 0x79, 0x22, 0x4f, 0x0a, 0x0d, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x67, 0x72, 0x61, 0x6d, 0x55, 0x73, + 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, + 0x6d, 0x65, 0x22, 0x23, 0x0a, 0x11, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x67, 0x72, 0x61, 0x6d, 0x55, + 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0xc9, 0x03, 0x0a, 0x10, 0x49, 0x6e, 0x73, 0x74, + 0x61, 0x67, 0x72, 0x61, 0x6d, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, + 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, + 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, + 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, + 0x6e, 0x74, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x2b, + 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, + 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x67, 0x72, 0x61, + 0x6d, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x68, + 0x69, 0x64, 0x64, 0x65, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x68, 0x69, 0x64, + 0x64, 0x65, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x69, 0x6b, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6c, 0x69, 0x6b, 0x65, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, + 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x6f, 0x73, + 0x74, 0x49, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x6f, 0x73, 0x74, 0x49, + 0x64, 0x12, 0x34, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x49, 0x6e, + 0x73, 0x74, 0x61, 0x67, 0x72, 0x61, 0x6d, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x07, + 0x72, 0x65, 0x70, 0x6c, 0x69, 0x65, 0x73, 0x12, 0x2f, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, + 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x67, 0x72, 0x61, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, + 0x41, 0x6c, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, + 0x61, 0x6d, 0x65, 0x22, 0xc4, 0x04, 0x0a, 0x0d, 0x54, 0x69, 0x6b, 0x54, 0x6f, 0x6b, 0x43, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, + 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, + 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, + 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, + 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6b, + 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x6c, 0x69, 0x6b, 0x65, 0x64, 0x12, + 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6b, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, + 0x6c, 0x69, 0x6b, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x69, 0x6b, 0x65, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6c, 0x69, 0x6b, 0x65, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x28, 0x0a, 0x0f, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, + 0x74, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x28, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, + 0x6c, 0x12, 0x31, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x54, 0x69, + 0x6b, 0x54, 0x6f, 0x6b, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x72, 0x65, 0x70, + 0x6c, 0x69, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0f, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, + 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, + 0x65, 0x72, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x18, 0x0a, 0x07, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x49, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x76, 0x69, + 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x22, 0xb4, 0x03, 0x0a, 0x0e, 0x42, + 0x6c, 0x75, 0x65, 0x73, 0x6b, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, + 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, + 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, + 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, + 0x20, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x69, 0x6b, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6c, 0x69, 0x6b, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x28, 0x0a, 0x0f, 0x70, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, 0x6c, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6d, 0x61, + 0x67, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x71, 0x75, 0x6f, 0x74, 0x65, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x65, 0x73, + 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, + 0x65, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x73, 0x6b, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, + 0x52, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x70, + 0x6c, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x72, + 0x65, 0x70, 0x6c, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x70, + 0x6c, 0x79, 0x54, 0x6f, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6c, + 0x79, 0x54, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x74, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, + 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, + 0x65, 0x22, 0x32, 0x0a, 0x0c, 0x46, 0x61, 0x63, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x55, 0x73, 0x65, + 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x88, 0x01, 0x0a, 0x0e, 0x46, 0x61, 0x63, 0x65, 0x62, 0x6f, + 0x6f, 0x6b, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x04, 0x66, 0x72, + 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, + 0x61, 0x72, 0x65, 0x2e, 0x46, 0x61, 0x63, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x55, 0x73, 0x65, 0x72, + 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, + 0x22, 0xac, 0x03, 0x0a, 0x0f, 0x46, 0x61, 0x63, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x43, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1c, + 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, + 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x72, 0x6c, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x72, 0x6c, + 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x12, 0x2a, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x46, 0x61, + 0x63, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, + 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x69, 0x6b, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x09, 0x6c, 0x69, 0x6b, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x30, + 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, + 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x46, 0x61, 0x63, 0x65, 0x62, 0x6f, + 0x6f, 0x6b, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1c, 0x0a, 0x09, + 0x75, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x6b, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x09, 0x75, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x6b, 0x65, 0x73, 0x12, 0x33, 0x0a, 0x07, 0x72, 0x65, + 0x70, 0x6c, 0x69, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x72, + 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x46, 0x61, 0x63, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x43, + 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x65, 0x73, 0x22, + 0x35, 0x0a, 0x0d, 0x4c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x49, 0x6e, 0x4d, 0x65, 0x64, 0x69, 0x61, + 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x66, 0x0a, 0x0c, 0x4c, 0x69, 0x6e, 0x6b, 0x65, 0x64, + 0x49, 0x6e, 0x46, 0x72, 0x6f, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, + 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x20, 0x0a, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xbe, + 0x03, 0x0a, 0x0f, 0x4c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x49, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x65, + 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, + 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x72, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x72, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x12, 0x2a, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x4c, 0x69, + 0x6e, 0x6b, 0x65, 0x64, 0x49, 0x6e, 0x46, 0x72, 0x6f, 0x6d, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, + 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x69, 0x6b, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x09, 0x6c, 0x69, 0x6b, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2d, + 0x0a, 0x05, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x49, + 0x6e, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x52, 0x05, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x12, 0x1a, 0x0a, + 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x28, 0x0a, 0x0f, 0x70, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, 0x6c, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, + 0x55, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x18, 0x0a, 0x07, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x07, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x64, 0x12, 0x2a, 0x0a, 0x10, 0x6f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, + 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x22, + 0x30, 0x0a, 0x0a, 0x52, 0x65, 0x64, 0x64, 0x69, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x64, 0x22, 0xfd, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x64, 0x64, 0x69, 0x74, 0x43, 0x6f, 0x6d, 0x6d, + 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, + 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x28, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x52, + 0x65, 0x64, 0x64, 0x69, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, + 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x72, 0x6c, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x72, 0x6c, 0x12, + 0x1c, 0x0a, 0x09, 0x73, 0x75, 0x62, 0x72, 0x65, 0x64, 0x64, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x73, 0x75, 0x62, 0x72, 0x65, 0x64, 0x64, 0x69, 0x74, 0x12, 0x10, 0x0a, + 0x03, 0x75, 0x70, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x75, 0x70, 0x73, 0x12, + 0x20, 0x0a, 0x0b, 0x69, 0x73, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x72, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x74, 0x65, + 0x72, 0x22, 0x8c, 0x04, 0x0a, 0x0e, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x43, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1c, + 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, + 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x18, 0x0a, 0x07, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x68, 0x61, 0x73, 0x52, 0x65, 0x70, + 0x6c, 0x69, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x68, 0x61, 0x73, 0x52, + 0x65, 0x70, 0x6c, 0x69, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x73, 0x51, 0x75, 0x6f, 0x74, + 0x65, 0x50, 0x6f, 0x73, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x51, + 0x75, 0x6f, 0x74, 0x65, 0x50, 0x6f, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x73, 0x52, 0x65, + 0x70, 0x6c, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x52, 0x65, 0x70, + 0x6c, 0x79, 0x12, 0x2a, 0x0a, 0x10, 0x69, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x4f, 0x77, 0x6e, + 0x65, 0x64, 0x42, 0x79, 0x4d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x69, 0x73, + 0x52, 0x65, 0x70, 0x6c, 0x79, 0x4f, 0x77, 0x6e, 0x65, 0x64, 0x42, 0x79, 0x4d, 0x65, 0x12, 0x1c, + 0x0a, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x07, + 0x72, 0x65, 0x70, 0x6c, 0x69, 0x65, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, + 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, + 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x65, 0x73, + 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, + 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x41, 0x75, + 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x63, + 0x6f, 0x64, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x68, 0x6f, 0x72, 0x74, + 0x63, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, + 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, + 0x22, 0xe6, 0x01, 0x0a, 0x14, 0x54, 0x77, 0x69, 0x74, 0x74, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, + 0x69, 0x63, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x66, 0x6f, 0x6c, + 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0e, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x73, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, + 0x77, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x77, 0x65, + 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, + 0x77, 0x65, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x6c, 0x69, 0x73, + 0x74, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, + 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6c, + 0x69, 0x6b, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, + 0x6c, 0x69, 0x6b, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x65, 0x64, + 0x69, 0x61, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6d, + 0x65, 0x64, 0x69, 0x61, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x3c, 0x0a, 0x16, 0x54, 0x77, 0x69, + 0x74, 0x74, 0x65, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x54, 0x77, + 0x65, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0xae, 0x02, 0x0a, 0x0e, 0x54, 0x77, 0x69, 0x74, + 0x74, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x54, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x70, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, 0x6c, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6d, 0x61, 0x67, + 0x65, 0x55, 0x72, 0x6c, 0x12, 0x44, 0x0a, 0x0d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x72, + 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x54, 0x77, 0x69, 0x74, 0x74, 0x65, 0x72, 0x50, 0x75, + 0x62, 0x6c, 0x69, 0x63, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x0d, 0x70, 0x75, 0x62, + 0x6c, 0x69, 0x63, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, + 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, + 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xa4, 0x05, 0x0a, 0x0e, 0x54, 0x77, 0x69, + 0x74, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x62, + 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0d, 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x63, + 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x69, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, + 0x69, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x1c, 0x0a, 0x09, 0x6c, 0x69, 0x6b, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x09, 0x6c, 0x69, 0x6b, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x28, 0x0a, + 0x0f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, 0x6c, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, + 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x44, 0x0a, 0x0d, 0x70, 0x75, 0x62, 0x6c, 0x69, + 0x63, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, + 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x54, 0x77, 0x69, 0x74, 0x74, 0x65, + 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x0d, + 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x1e, 0x0a, + 0x0a, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0a, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x4c, 0x0a, + 0x10, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x54, 0x77, 0x65, 0x65, 0x74, + 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, + 0x72, 0x65, 0x2e, 0x54, 0x77, 0x69, 0x74, 0x74, 0x65, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x64, 0x54, 0x77, 0x65, 0x65, 0x74, 0x52, 0x10, 0x72, 0x65, 0x66, 0x65, 0x72, + 0x65, 0x6e, 0x63, 0x65, 0x64, 0x54, 0x77, 0x65, 0x65, 0x74, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x72, + 0x65, 0x70, 0x6c, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0a, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x07, 0x72, + 0x65, 0x70, 0x6c, 0x79, 0x54, 0x6f, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, + 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x54, 0x77, 0x69, 0x74, 0x74, 0x65, 0x72, 0x52, + 0x65, 0x70, 0x6c, 0x79, 0x54, 0x6f, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x54, 0x6f, 0x12, + 0x22, 0x0a, 0x0c, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, + 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x4e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, + 0x9c, 0x02, 0x0a, 0x0c, 0x59, 0x6f, 0x75, 0x54, 0x75, 0x62, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x79, + 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x55, 0x72, 0x6c, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x55, 0x72, 0x6c, + 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, + 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x69, 0x6b, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6c, 0x69, 0x6b, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x28, 0x0a, 0x0f, + 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, 0x6c, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6d, + 0x61, 0x67, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, + 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0xd0, + 0x02, 0x0a, 0x0e, 0x59, 0x6f, 0x75, 0x54, 0x75, 0x62, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, + 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x55, 0x72, 0x6c, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x55, 0x72, + 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x63, + 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x73, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x12, + 0x1c, 0x0a, 0x09, 0x6c, 0x69, 0x6b, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x09, 0x6c, 0x69, 0x6b, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, + 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x28, 0x0a, 0x0f, 0x70, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, 0x6c, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, + 0x55, 0x72, 0x6c, 0x12, 0x30, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x65, 0x73, 0x18, 0x09, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, + 0x59, 0x6f, 0x75, 0x54, 0x75, 0x62, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x07, 0x72, 0x65, + 0x70, 0x6c, 0x69, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, + 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, + 0x65, 0x22, 0x9e, 0x05, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x67, 0x72, 0x61, 0x6d, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x72, + 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x67, 0x72, 0x61, 0x6d, + 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x67, 0x72, + 0x61, 0x6d, 0x12, 0x2f, 0x0a, 0x06, 0x74, 0x69, 0x6b, 0x74, 0x6f, 0x6b, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x54, 0x69, + 0x6b, 0x54, 0x6f, 0x6b, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x74, 0x69, 0x6b, + 0x74, 0x6f, 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x6c, + 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x1e, 0x0a, + 0x0a, 0x6e, 0x65, 0x78, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x6e, 0x65, 0x78, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x12, 0x32, 0x0a, 0x07, 0x62, 0x6c, 0x75, 0x65, 0x73, 0x6b, 0x79, 0x18, 0x0a, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, + 0x42, 0x6c, 0x75, 0x65, 0x73, 0x6b, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x07, + 0x62, 0x6c, 0x75, 0x65, 0x73, 0x6b, 0x79, 0x12, 0x35, 0x0a, 0x08, 0x66, 0x61, 0x63, 0x65, 0x62, + 0x6f, 0x6f, 0x6b, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x72, 0x79, 0x73, + 0x68, 0x61, 0x72, 0x65, 0x2e, 0x46, 0x61, 0x63, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x43, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x66, 0x61, 0x63, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x12, 0x35, + 0x0a, 0x08, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x69, 0x6e, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, + 0x65, 0x64, 0x49, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x6c, 0x69, 0x6e, + 0x6b, 0x65, 0x64, 0x69, 0x6e, 0x12, 0x2f, 0x0a, 0x06, 0x72, 0x65, 0x64, 0x64, 0x69, 0x74, 0x18, + 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, + 0x2e, 0x52, 0x65, 0x64, 0x64, 0x69, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x06, + 0x72, 0x65, 0x64, 0x64, 0x69, 0x74, 0x12, 0x32, 0x0a, 0x07, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, + 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, + 0x72, 0x65, 0x2e, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, + 0x74, 0x52, 0x07, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x12, 0x32, 0x0a, 0x07, 0x74, 0x77, + 0x69, 0x74, 0x74, 0x65, 0x72, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x72, + 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x54, 0x77, 0x69, 0x74, 0x74, 0x65, 0x72, 0x43, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x74, 0x77, 0x69, 0x74, 0x74, 0x65, 0x72, 0x12, 0x32, + 0x0a, 0x07, 0x79, 0x6f, 0x75, 0x74, 0x75, 0x62, 0x65, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x18, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x59, 0x6f, 0x75, 0x54, 0x75, + 0x62, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x79, 0x6f, 0x75, 0x74, 0x75, + 0x62, 0x65, 0x22, 0xc4, 0x01, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x16, 0xe2, 0xdf, 0x1f, 0x12, 0x2a, 0x0e, 0x69, + 0x64, 0xe4, 0xb8, 0x8d, 0xe8, 0x83, 0xbd, 0xe4, 0xb8, 0xba, 0xe7, 0xa9, 0xba, 0x58, 0x01, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x2a, 0x0a, + 0x10, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, + 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x22, 0x73, 0x0a, 0x17, 0x49, 0x6e, 0x73, + 0x74, 0x61, 0x67, 0x72, 0x61, 0x6d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x8e, + 0x01, 0x0a, 0x14, 0x54, 0x69, 0x6b, 0x54, 0x6f, 0x6b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, + 0x6e, 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, + 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x22, + 0xcb, 0x02, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x67, 0x72, 0x61, 0x6d, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x67, 0x72, 0x61, 0x6d, 0x12, + 0x16, 0x0a, 0x06, 0x74, 0x69, 0x6b, 0x74, 0x6f, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x74, 0x69, 0x6b, 0x74, 0x6f, 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, + 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x62, 0x6c, 0x75, 0x65, 0x73, 0x6b, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x62, 0x6c, 0x75, 0x65, 0x73, 0x6b, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x61, 0x63, 0x65, 0x62, + 0x6f, 0x6f, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x61, 0x63, 0x65, 0x62, + 0x6f, 0x6f, 0x6b, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x69, 0x6e, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x69, 0x6e, 0x12, + 0x18, 0x0a, 0x07, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x77, 0x69, + 0x74, 0x74, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x77, 0x69, 0x74, + 0x74, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x79, 0x6f, 0x75, 0x74, 0x75, 0x62, 0x65, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x79, 0x6f, 0x75, 0x74, 0x75, 0x62, 0x65, 0x22, 0xdf, 0x01, + 0x0a, 0x13, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x16, 0xe2, 0xdf, 0x1f, 0x12, 0x2a, 0x0e, 0x69, 0x64, 0xe4, 0xb8, 0x8d, 0xe8, 0x83, + 0xbd, 0xe4, 0xb8, 0xba, 0xe7, 0xa9, 0xba, 0x58, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x35, 0x0a, + 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1b, + 0xe2, 0xdf, 0x1f, 0x17, 0x2a, 0x13, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0xe4, 0xb8, 0x8d, + 0xe8, 0x83, 0xbd, 0xe4, 0xb8, 0xba, 0xe7, 0xa9, 0xba, 0x58, 0x01, 0x52, 0x07, 0x63, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x49, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x42, 0x2b, 0xe2, 0xdf, 0x1f, 0x27, 0x2a, 0x21, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0xe5, 0xb9, 0xb3, 0xe5, 0x8f, 0xb0, 0xe5, 0x88, + 0x97, 0xe8, 0xa1, 0xa8, 0xe4, 0xb8, 0x8d, 0xe8, 0x83, 0xbd, 0xe4, 0xb8, 0xba, 0xe7, 0xa9, 0xba, + 0x58, 0x01, 0x60, 0x01, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x12, + 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x22, + 0xae, 0x01, 0x0a, 0x16, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x65, 0x70, + 0x6c, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, + 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, + 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x22, 0xc5, 0x01, 0x0a, 0x13, 0x54, 0x69, 0x6b, 0x54, 0x6f, 0x6b, 0x52, 0x65, 0x70, 0x6c, 0x79, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x28, + 0x0a, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, + 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, + 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, + 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x18, + 0x0a, 0x07, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x49, 0x64, 0x22, 0xd8, 0x01, 0x0a, 0x14, 0x42, 0x6c, 0x75, + 0x65, 0x73, 0x6b, 0x79, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, + 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x6f, 0x73, + 0x74, 0x55, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6f, 0x73, 0x74, + 0x55, 0x72, 0x6c, 0x22, 0xad, 0x01, 0x0a, 0x15, 0x46, 0x61, 0x63, 0x65, 0x62, 0x6f, 0x6f, 0x6b, + 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, + 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, + 0x74, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, + 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x22, 0xad, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x49, 0x6e, + 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, + 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, + 0x74, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, + 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x22, 0xc6, 0x01, 0x0a, 0x14, 0x54, 0x77, 0x69, 0x74, 0x74, 0x65, 0x72, 0x52, + 0x65, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, + 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6d, 0x6d, + 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, + 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, + 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x6f, 0x73, 0x74, 0x55, 0x72, 0x6c, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6f, 0x73, 0x74, 0x55, 0x72, 0x6c, 0x22, 0xac, 0x01, 0x0a, + 0x14, 0x59, 0x6f, 0x75, 0x54, 0x75, 0x62, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, + 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6d, 0x6d, + 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, + 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x22, 0xc1, 0x04, 0x0a, 0x14, + 0x52, 0x65, 0x70, 0x6c, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, + 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3e, 0x0a, 0x09, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x67, 0x72, 0x61, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, + 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x67, 0x72, + 0x61, 0x6d, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, + 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x35, 0x0a, 0x06, 0x74, 0x69, + 0x6b, 0x74, 0x6f, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x72, 0x79, + 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x54, 0x69, 0x6b, 0x54, 0x6f, 0x6b, 0x52, 0x65, 0x70, 0x6c, + 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x06, 0x74, 0x69, 0x6b, 0x74, 0x6f, + 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, + 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x38, 0x0a, 0x07, 0x62, 0x6c, 0x75, 0x65, 0x73, + 0x6b, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, + 0x61, 0x72, 0x65, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x73, 0x6b, 0x79, 0x52, 0x65, 0x70, 0x6c, 0x79, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x07, 0x62, 0x6c, 0x75, 0x65, 0x73, 0x6b, + 0x79, 0x12, 0x3b, 0x0a, 0x08, 0x66, 0x61, 0x63, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x46, + 0x61, 0x63, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x66, 0x61, 0x63, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x12, 0x3b, + 0x0a, 0x08, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x69, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1f, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, + 0x65, 0x64, 0x49, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x52, 0x08, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x69, 0x6e, 0x12, 0x38, 0x0a, 0x07, 0x74, + 0x77, 0x69, 0x74, 0x74, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, + 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x54, 0x77, 0x69, 0x74, 0x74, 0x65, 0x72, 0x52, + 0x65, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x07, 0x74, 0x77, + 0x69, 0x74, 0x74, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x07, 0x79, 0x6f, 0x75, 0x74, 0x75, 0x62, 0x65, + 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, + 0x65, 0x2e, 0x59, 0x6f, 0x75, 0x54, 0x75, 0x62, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x07, 0x79, 0x6f, 0x75, 0x74, 0x75, 0x62, 0x65, 0x22, + 0xb2, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, + 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1c, 0xe2, 0xdf, 0x1f, 0x18, 0x2a, 0x14, 0xe5, + 0xb8, 0x96, 0xe5, 0xad, 0x90, 0x49, 0x44, 0xe4, 0xb8, 0x8d, 0xe8, 0x83, 0xbd, 0xe4, 0xb8, 0xba, + 0xe7, 0xa9, 0xba, 0x58, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x49, 0x0a, 0x09, 0x70, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, 0x2b, 0xe2, 0xdf, + 0x1f, 0x27, 0x2a, 0x21, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0xe5, 0xb9, 0xb3, + 0xe5, 0x8f, 0xb0, 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0xe4, 0xb8, 0x8d, 0xe8, 0x83, 0xbd, 0xe4, + 0xb8, 0xba, 0xe7, 0xa9, 0xba, 0x58, 0x01, 0x60, 0x01, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, + 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x4b, 0x65, 0x79, 0x22, 0xee, 0x01, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x73, 0x74, + 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x42, 0x79, 0x53, 0x6f, 0x63, 0x69, 0x61, + 0x6c, 0x49, 0x44, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x22, 0xe2, 0xdf, 0x1f, 0x1e, 0x2a, 0x1a, 0x53, 0x6f, + 0x63, 0x69, 0x61, 0x6c, 0x20, 0x50, 0x6f, 0x73, 0x74, 0x20, 0x49, 0x44, 0xe4, 0xb8, 0x8d, 0xe8, + 0x83, 0xbd, 0xe4, 0xb8, 0xba, 0xe7, 0xa9, 0xba, 0x58, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x49, + 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x09, 0x42, 0x2b, 0xe2, 0xdf, 0x1f, 0x27, 0x2a, 0x21, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x73, 0xe5, 0xb9, 0xb3, 0xe5, 0x8f, 0xb0, 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0xe4, 0xb8, + 0x8d, 0xe8, 0x83, 0xbd, 0xe4, 0xb8, 0xba, 0xe7, 0xa9, 0xba, 0x58, 0x01, 0x60, 0x01, 0x52, 0x09, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x73, 0x65, 0x61, + 0x72, 0x63, 0x68, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x10, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x4b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x22, 0xe6, 0x02, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x73, + 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, + 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, + 0x0a, 0x07, 0x62, 0x6c, 0x75, 0x65, 0x73, 0x6b, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x62, 0x6c, 0x75, 0x65, 0x73, 0x6b, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x61, 0x63, 0x65, + 0x62, 0x6f, 0x6f, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x61, 0x63, 0x65, + 0x62, 0x6f, 0x6f, 0x6b, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x67, 0x72, 0x61, + 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x67, 0x72, + 0x61, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x69, 0x6e, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x69, 0x6e, 0x12, 0x1c, + 0x0a, 0x09, 0x70, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x65, 0x73, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x70, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, + 0x73, 0x6e, 0x61, 0x70, 0x63, 0x68, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x73, 0x6e, 0x61, 0x70, 0x63, 0x68, 0x61, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x68, 0x72, 0x65, + 0x61, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x68, 0x72, 0x65, 0x61, + 0x64, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x69, 0x6b, 0x74, 0x6f, 0x6b, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x74, 0x69, 0x6b, 0x74, 0x6f, 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x77, + 0x69, 0x74, 0x74, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x77, 0x69, + 0x74, 0x74, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x79, 0x6f, 0x75, 0x74, 0x75, 0x62, 0x65, 0x18, + 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x79, 0x6f, 0x75, 0x74, 0x75, 0x62, 0x65, 0x22, 0x86, + 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x6c, 0x41, 0x6e, 0x61, 0x6c, + 0x79, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x49, 0x0a, 0x09, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, + 0x2b, 0xe2, 0xdf, 0x1f, 0x27, 0x2a, 0x21, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, + 0xe5, 0xb9, 0xb3, 0xe5, 0x8f, 0xb0, 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0xe4, 0xb8, 0x8d, 0xe8, + 0x83, 0xbd, 0xe4, 0xb8, 0xba, 0xe7, 0xa9, 0xba, 0x58, 0x01, 0x60, 0x01, 0x52, 0x09, 0x70, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x22, 0xee, 0x02, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x53, + 0x6f, 0x63, 0x69, 0x61, 0x6c, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, + 0x0a, 0x07, 0x62, 0x6c, 0x75, 0x65, 0x73, 0x6b, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x62, 0x6c, 0x75, 0x65, 0x73, 0x6b, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x61, 0x63, 0x65, + 0x62, 0x6f, 0x6f, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x61, 0x63, 0x65, + 0x62, 0x6f, 0x6f, 0x6b, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x6d, 0x62, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x67, 0x6d, 0x62, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x67, + 0x72, 0x61, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, + 0x67, 0x72, 0x61, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x69, 0x6e, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x69, 0x6e, + 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x65, 0x73, 0x74, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x65, 0x73, 0x74, 0x12, 0x16, + 0x0a, 0x06, 0x72, 0x65, 0x64, 0x64, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x72, 0x65, 0x64, 0x64, 0x69, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x63, 0x68, + 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x63, 0x68, + 0x61, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x12, 0x16, 0x0a, 0x06, + 0x74, 0x69, 0x6b, 0x74, 0x6f, 0x6b, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x69, + 0x6b, 0x74, 0x6f, 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x77, 0x69, 0x74, 0x74, 0x65, 0x72, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x77, 0x69, 0x74, 0x74, 0x65, 0x72, 0x12, 0x18, + 0x0a, 0x07, 0x79, 0x6f, 0x75, 0x74, 0x75, 0x62, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x79, 0x6f, 0x75, 0x74, 0x75, 0x62, 0x65, 0x22, 0xb3, 0x01, 0x0a, 0x13, 0x41, 0x75, 0x74, + 0x6f, 0x48, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x32, 0x0a, 0x04, 0x70, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1e, + 0xe2, 0xdf, 0x1f, 0x1a, 0x2a, 0x16, 0x70, 0x6f, 0x73, 0x74, 0xe5, 0x86, 0x85, 0xe5, 0xae, 0xb9, + 0xe4, 0xb8, 0x8d, 0xe8, 0x83, 0xbd, 0xe4, 0xb8, 0xba, 0xe7, 0xa9, 0xba, 0x58, 0x01, 0x52, 0x04, + 0x70, 0x6f, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x61, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x03, 0x6d, 0x61, 0x78, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x1e, + 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x22, 0x88, + 0x01, 0x0a, 0x14, 0x41, 0x75, 0x74, 0x6f, 0x48, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x73, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x6f, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, + 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, + 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x72, 0x0a, 0x19, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x48, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x35, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x68, 0x74, 0x61, + 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1b, 0xe2, 0xdf, 0x1f, 0x17, 0x2a, 0x13, 0x68, + 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0xe4, 0xb8, 0x8d, 0xe8, 0x83, 0xbd, 0xe4, 0xb8, 0xba, 0xe7, + 0xa9, 0xba, 0x58, 0x01, 0x52, 0x07, 0x68, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x12, 0x1e, 0x0a, + 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x22, 0xac, 0x01, + 0x0a, 0x1a, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x48, 0x61, 0x73, + 0x68, 0x74, 0x61, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x68, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x68, + 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x12, 0x16, + 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, + 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, + 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x49, 0x0a, 0x15, + 0x48, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x76, 0x69, 0x65, 0x77, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x76, 0x69, 0x65, 0x77, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x71, 0x0a, 0x18, 0x52, 0x65, 0x63, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x64, 0x48, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x35, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x1b, 0xe2, 0xdf, 0x1f, 0x17, 0x2a, 0x13, 0x6b, 0x65, 0x79, 0x77, + 0x6f, 0x72, 0x64, 0xe4, 0xb8, 0x8d, 0xe8, 0x83, 0xbd, 0xe4, 0xb8, 0xba, 0xe7, 0xa9, 0xba, 0x58, + 0x01, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x22, 0xde, 0x01, 0x0a, 0x19, 0x52, + 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x48, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, + 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, + 0x72, 0x64, 0x12, 0x49, 0x0a, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x72, + 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x52, 0x65, + 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x72, 0x65, + 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x16, 0x0a, + 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, + 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, + 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x8e, 0x01, 0x0a, 0x15, + 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x48, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x35, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1b, 0xe2, 0xdf, 0x1f, 0x17, 0x2a, 0x13, 0x6b, 0x65, + 0x79, 0x77, 0x6f, 0x72, 0x64, 0xe4, 0xb8, 0x8d, 0xe8, 0x83, 0xbd, 0xe4, 0xb8, 0xba, 0xe7, 0xa9, + 0xba, 0x58, 0x01, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1e, 0x0a, 0x0a, + 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, + 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x22, 0x37, 0x0a, 0x11, + 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x48, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x24, 0x0a, 0x12, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x48, + 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x49, 0x0a, 0x15, 0x53, + 0x65, 0x61, 0x72, 0x63, 0x68, 0x48, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x43, 0x68, 0x69, 0x6c, + 0x64, 0x72, 0x65, 0x6e, 0x12, 0x30, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x53, 0x65, + 0x61, 0x72, 0x63, 0x68, 0x48, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x43, 0x68, 0x69, 0x6c, 0x64, + 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xb5, 0x02, 0x0a, 0x12, 0x53, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x48, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x12, 0x18, 0x0a, + 0x07, 0x63, 0x61, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x63, 0x61, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, + 0x72, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x72, 0x79, 0x73, + 0x68, 0x61, 0x72, 0x65, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x48, 0x61, 0x73, 0x68, 0x74, + 0x61, 0x67, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x52, 0x08, 0x63, 0x68, 0x69, 0x6c, + 0x64, 0x72, 0x65, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x63, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x69, + 0x6b, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6c, + 0x69, 0x6b, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x65, 0x64, 0x69, + 0x61, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x64, + 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x55, + 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x55, + 0x72, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x65, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x6e, 0x6b, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x65, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x6e, 0x6b, + 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0xc9, + 0x02, 0x0a, 0x16, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x48, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x35, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x53, 0x65, + 0x61, 0x72, 0x63, 0x68, 0x48, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x07, 0x68, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x12, 0x42, 0x0a, 0x0d, 0x73, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1c, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x48, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x52, 0x0d, 0x73, + 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x65, 0x78, 0x74, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6e, 0x65, 0x78, 0x74, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, + 0x63, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, + 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x8c, 0x0e, 0x0a, 0x08, 0x41, + 0x79, 0x72, 0x73, 0x68, 0x61, 0x72, 0x65, 0x12, 0x35, 0x0a, 0x04, 0x50, 0x6f, 0x73, 0x74, 0x12, + 0x15, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, + 0x65, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, + 0x0a, 0x07, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x12, 0x18, 0x2e, 0x61, 0x72, 0x79, 0x73, + 0x68, 0x61, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x47, + 0x65, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, + 0x0a, 0x07, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x18, 0x2e, 0x61, 0x72, 0x79, 0x73, + 0x68, 0x61, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x47, + 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, + 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, + 0x1e, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1f, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x4a, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x12, + 0x1c, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, + 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x66, + 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x0b, + 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x4a, 0x57, 0x54, 0x12, 0x1c, 0x2e, 0x61, 0x72, + 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x4a, + 0x57, 0x54, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x61, 0x72, 0x79, 0x73, + 0x68, 0x61, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x4a, 0x57, 0x54, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x48, + 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1b, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, + 0x65, 0x2e, 0x47, 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x47, + 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x53, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x42, + 0x79, 0x49, 0x64, 0x12, 0x1f, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x47, + 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, + 0x47, 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x65, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x48, 0x69, 0x73, + 0x74, 0x6f, 0x72, 0x79, 0x42, 0x79, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x25, + 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x48, 0x69, 0x73, + 0x74, 0x6f, 0x72, 0x79, 0x42, 0x79, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, + 0x2e, 0x47, 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x79, 0x50, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, + 0x0b, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x2e, 0x61, + 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x61, 0x72, 0x79, + 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x0b, 0x47, 0x65, 0x74, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x1c, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, + 0x61, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, + 0x65, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x0b, 0x50, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, + 0x50, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x6f, + 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x47, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, + 0x1b, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x61, + 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, + 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x0d, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x2e, 0x61, 0x72, + 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x61, 0x72, + 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x0c, + 0x52, 0x65, 0x70, 0x6c, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1d, 0x2e, 0x61, + 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x43, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x61, 0x72, + 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x43, 0x6f, 0x6d, 0x6d, + 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x59, 0x0a, 0x10, 0x47, + 0x65, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x12, + 0x21, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, + 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x47, 0x65, + 0x74, 0x50, 0x6f, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6d, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x73, + 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x42, 0x79, 0x53, 0x6f, 0x63, 0x69, + 0x61, 0x6c, 0x49, 0x44, 0x12, 0x2b, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, + 0x47, 0x65, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, + 0x42, 0x79, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x6c, 0x49, 0x44, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, + 0x50, 0x6f, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5f, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x53, 0x6f, 0x63, 0x69, + 0x61, 0x6c, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x12, 0x23, 0x2e, 0x61, 0x72, + 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x6c, + 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x24, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x53, + 0x6f, 0x63, 0x69, 0x61, 0x6c, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x0c, 0x41, 0x75, 0x74, 0x6f, 0x48, 0x61, + 0x73, 0x68, 0x74, 0x61, 0x67, 0x73, 0x12, 0x1d, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, + 0x65, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x48, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, + 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x48, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5f, 0x0a, 0x12, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x42, 0x61, + 0x6e, 0x6e, 0x65, 0x64, 0x48, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x12, 0x23, 0x2e, 0x61, 0x72, + 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x42, 0x61, 0x6e, 0x6e, + 0x65, 0x64, 0x48, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x24, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x43, 0x68, 0x65, 0x63, + 0x6b, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x48, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x11, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, + 0x65, 0x6e, 0x64, 0x48, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x73, 0x12, 0x22, 0x2e, 0x61, 0x72, + 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, + 0x48, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x23, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x64, 0x48, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x53, 0x0a, 0x0e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x48, 0x61, + 0x73, 0x68, 0x74, 0x61, 0x67, 0x73, 0x12, 0x1f, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, + 0x65, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x48, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x61, 0x72, 0x79, 0x73, 0x68, 0x61, + 0x72, 0x65, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x48, 0x61, 0x73, 0x68, 0x74, 0x61, 0x67, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x0c, 0x5a, 0x0a, 0x2e, 0x2f, 0x61, + 0x72, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_pb_ayrshare_proto_rawDescOnce sync.Once + file_pb_ayrshare_proto_rawDescData = file_pb_ayrshare_proto_rawDesc +) + +func file_pb_ayrshare_proto_rawDescGZIP() []byte { + file_pb_ayrshare_proto_rawDescOnce.Do(func() { + file_pb_ayrshare_proto_rawDescData = protoimpl.X.CompressGZIP(file_pb_ayrshare_proto_rawDescData) + }) + return file_pb_ayrshare_proto_rawDescData +} + +var file_pb_ayrshare_proto_msgTypes = make([]protoimpl.MessageInfo, 107) +var file_pb_ayrshare_proto_goTypes = []interface{}{ + (*UserTag)(nil), // 0: aryshare.UserTag + (*InstagramOptions)(nil), // 1: aryshare.InstagramOptions + (*TikTokOptions)(nil), // 2: aryshare.TikTokOptions + (*PostRequest)(nil), // 3: aryshare.PostRequest + (*PostId)(nil), // 4: aryshare.PostId + (*PostItem)(nil), // 5: aryshare.PostItem + (*PostResponse)(nil), // 6: aryshare.PostResponse + (*GetPostRequest)(nil), // 7: aryshare.GetPostRequest + (*GetPostResponse)(nil), // 8: aryshare.GetPostResponse + (*GetUserRequest)(nil), // 9: aryshare.GetUserRequest + (*Timestamp)(nil), // 10: aryshare.Timestamp + (*TwitterUsage)(nil), // 11: aryshare.TwitterUsage + (*DisplayName)(nil), // 12: aryshare.DisplayName + (*GetUserResponse)(nil), // 13: aryshare.GetUserResponse + (*CreateProfileRequest)(nil), // 14: aryshare.CreateProfileRequest + (*CreateProfileResponse)(nil), // 15: aryshare.CreateProfileResponse + (*GetProfilesRequest)(nil), // 16: aryshare.GetProfilesRequest + (*ProfileItem)(nil), // 17: aryshare.ProfileItem + (*Pagination)(nil), // 18: aryshare.Pagination + (*GetProfilesResponse)(nil), // 19: aryshare.GetProfilesResponse + (*Email)(nil), // 20: aryshare.Email + (*GenerateJWTRequest)(nil), // 21: aryshare.GenerateJWTRequest + (*GenerateJWTResponse)(nil), // 22: aryshare.GenerateJWTResponse + (*HistoryPostId)(nil), // 23: aryshare.HistoryPostId + (*HistoryItem)(nil), // 24: aryshare.HistoryItem + (*GetHistoryRequest)(nil), // 25: aryshare.GetHistoryRequest + (*GetHistoryResponse)(nil), // 26: aryshare.GetHistoryResponse + (*GetHistoryByIdRequest)(nil), // 27: aryshare.GetHistoryByIdRequest + (*GetHistoryByIdResponse)(nil), // 28: aryshare.GetHistoryByIdResponse + (*PlatformPost)(nil), // 29: aryshare.PlatformPost + (*GetHistoryByPlatformRequest)(nil), // 30: aryshare.GetHistoryByPlatformRequest + (*GetHistoryByPlatformResponse)(nil), // 31: aryshare.GetHistoryByPlatformResponse + (*SendMessageRequest)(nil), // 32: aryshare.SendMessageRequest + (*MessageItem)(nil), // 33: aryshare.MessageItem + (*SendMessageResponse)(nil), // 34: aryshare.SendMessageResponse + (*GetMessagesRequest)(nil), // 35: aryshare.GetMessagesRequest + (*MessageAttachment)(nil), // 36: aryshare.MessageAttachment + (*MessageSenderDetails)(nil), // 37: aryshare.MessageSenderDetails + (*MessageRecipientDetails)(nil), // 38: aryshare.MessageRecipientDetails + (*MessageReaction)(nil), // 39: aryshare.MessageReaction + (*GetMessagesItem)(nil), // 40: aryshare.GetMessagesItem + (*ConversationParticipant)(nil), // 41: aryshare.ConversationParticipant + (*ConversationDetail)(nil), // 42: aryshare.ConversationDetail + (*GetMessagesResponse)(nil), // 43: aryshare.GetMessagesResponse + (*PostCommentRequest)(nil), // 44: aryshare.PostCommentRequest + (*InstagramCommentResponse)(nil), // 45: aryshare.InstagramCommentResponse + (*TikTokCommentResponse)(nil), // 46: aryshare.TikTokCommentResponse + (*BlueskyCommentResponse)(nil), // 47: aryshare.BlueskyCommentResponse + (*FacebookCommentResponse)(nil), // 48: aryshare.FacebookCommentResponse + (*LinkedInCommentResponse)(nil), // 49: aryshare.LinkedInCommentResponse + (*TwitterCommentResponse)(nil), // 50: aryshare.TwitterCommentResponse + (*YouTubeCommentResponse)(nil), // 51: aryshare.YouTubeCommentResponse + (*PlatformError)(nil), // 52: aryshare.PlatformError + (*PostCommentResponse)(nil), // 53: aryshare.PostCommentResponse + (*GetCommentRequest)(nil), // 54: aryshare.GetCommentRequest + (*InstagramUser)(nil), // 55: aryshare.InstagramUser + (*InstagramUserInfo)(nil), // 56: aryshare.InstagramUserInfo + (*InstagramComment)(nil), // 57: aryshare.InstagramComment + (*TikTokComment)(nil), // 58: aryshare.TikTokComment + (*BlueskyComment)(nil), // 59: aryshare.BlueskyComment + (*FacebookUser)(nil), // 60: aryshare.FacebookUser + (*FacebookParent)(nil), // 61: aryshare.FacebookParent + (*FacebookComment)(nil), // 62: aryshare.FacebookComment + (*LinkedInMedia)(nil), // 63: aryshare.LinkedInMedia + (*LinkedInFrom)(nil), // 64: aryshare.LinkedInFrom + (*LinkedInComment)(nil), // 65: aryshare.LinkedInComment + (*RedditUser)(nil), // 66: aryshare.RedditUser + (*RedditComment)(nil), // 67: aryshare.RedditComment + (*ThreadsComment)(nil), // 68: aryshare.ThreadsComment + (*TwitterPublicMetrics)(nil), // 69: aryshare.TwitterPublicMetrics + (*TwitterReferencedTweet)(nil), // 70: aryshare.TwitterReferencedTweet + (*TwitterReplyTo)(nil), // 71: aryshare.TwitterReplyTo + (*TwitterComment)(nil), // 72: aryshare.TwitterComment + (*YouTubeReply)(nil), // 73: aryshare.YouTubeReply + (*YouTubeComment)(nil), // 74: aryshare.YouTubeComment + (*GetCommentResponse)(nil), // 75: aryshare.GetCommentResponse + (*DeleteCommentRequest)(nil), // 76: aryshare.DeleteCommentRequest + (*InstagramDeleteResponse)(nil), // 77: aryshare.InstagramDeleteResponse + (*TikTokDeleteResponse)(nil), // 78: aryshare.TikTokDeleteResponse + (*DeleteCommentResponse)(nil), // 79: aryshare.DeleteCommentResponse + (*ReplyCommentRequest)(nil), // 80: aryshare.ReplyCommentRequest + (*InstagramReplyResponse)(nil), // 81: aryshare.InstagramReplyResponse + (*TikTokReplyResponse)(nil), // 82: aryshare.TikTokReplyResponse + (*BlueskyReplyResponse)(nil), // 83: aryshare.BlueskyReplyResponse + (*FacebookReplyResponse)(nil), // 84: aryshare.FacebookReplyResponse + (*LinkedInReplyResponse)(nil), // 85: aryshare.LinkedInReplyResponse + (*TwitterReplyResponse)(nil), // 86: aryshare.TwitterReplyResponse + (*YouTubeReplyResponse)(nil), // 87: aryshare.YouTubeReplyResponse + (*ReplyCommentResponse)(nil), // 88: aryshare.ReplyCommentResponse + (*GetPostAnalyticsRequest)(nil), // 89: aryshare.GetPostAnalyticsRequest + (*GetPostAnalyticsBySocialIDRequest)(nil), // 90: aryshare.GetPostAnalyticsBySocialIDRequest + (*GetPostAnalyticsResponse)(nil), // 91: aryshare.GetPostAnalyticsResponse + (*GetSocialAnalyticsRequest)(nil), // 92: aryshare.GetSocialAnalyticsRequest + (*GetSocialAnalyticsResponse)(nil), // 93: aryshare.GetSocialAnalyticsResponse + (*AutoHashtagsRequest)(nil), // 94: aryshare.AutoHashtagsRequest + (*AutoHashtagsResponse)(nil), // 95: aryshare.AutoHashtagsResponse + (*CheckBannedHashtagRequest)(nil), // 96: aryshare.CheckBannedHashtagRequest + (*CheckBannedHashtagResponse)(nil), // 97: aryshare.CheckBannedHashtagResponse + (*HashtagRecommendation)(nil), // 98: aryshare.HashtagRecommendation + (*RecommendHashtagsRequest)(nil), // 99: aryshare.RecommendHashtagsRequest + (*RecommendHashtagsResponse)(nil), // 100: aryshare.RecommendHashtagsResponse + (*SearchHashtagsRequest)(nil), // 101: aryshare.SearchHashtagsRequest + (*SearchHashtagInfo)(nil), // 102: aryshare.SearchHashtagInfo + (*SearchHashtagChild)(nil), // 103: aryshare.SearchHashtagChild + (*SearchHashtagChildren)(nil), // 104: aryshare.SearchHashtagChildren + (*SearchHashtagMedia)(nil), // 105: aryshare.SearchHashtagMedia + (*SearchHashtagsResponse)(nil), // 106: aryshare.SearchHashtagsResponse +} +var file_pb_ayrshare_proto_depIdxs = []int32{ + 0, // 0: aryshare.InstagramOptions.userTags:type_name -> aryshare.UserTag + 1, // 1: aryshare.PostRequest.instagramOptions:type_name -> aryshare.InstagramOptions + 2, // 2: aryshare.PostRequest.tikTokOptions:type_name -> aryshare.TikTokOptions + 4, // 3: aryshare.PostItem.postIds:type_name -> aryshare.PostId + 5, // 4: aryshare.PostResponse.posts:type_name -> aryshare.PostItem + 4, // 5: aryshare.PostResponse.postIds:type_name -> aryshare.PostId + 4, // 6: aryshare.GetPostResponse.postIds:type_name -> aryshare.PostId + 11, // 7: aryshare.DisplayName.twitterUsage:type_name -> aryshare.TwitterUsage + 10, // 8: aryshare.GetUserResponse.created:type_name -> aryshare.Timestamp + 12, // 9: aryshare.GetUserResponse.displayNames:type_name -> aryshare.DisplayName + 10, // 10: aryshare.ProfileItem.created:type_name -> aryshare.Timestamp + 17, // 11: aryshare.GetProfilesResponse.profiles:type_name -> aryshare.ProfileItem + 18, // 12: aryshare.GetProfilesResponse.pagination:type_name -> aryshare.Pagination + 20, // 13: aryshare.GenerateJWTRequest.email:type_name -> aryshare.Email + 23, // 14: aryshare.HistoryItem.postIds:type_name -> aryshare.HistoryPostId + 10, // 15: aryshare.HistoryItem.scheduleDate:type_name -> aryshare.Timestamp + 24, // 16: aryshare.GetHistoryResponse.history:type_name -> aryshare.HistoryItem + 23, // 17: aryshare.GetHistoryByIdResponse.postIds:type_name -> aryshare.HistoryPostId + 10, // 18: aryshare.GetHistoryByIdResponse.scheduleDate:type_name -> aryshare.Timestamp + 29, // 19: aryshare.GetHistoryByPlatformResponse.posts:type_name -> aryshare.PlatformPost + 33, // 20: aryshare.SendMessageResponse.messages:type_name -> aryshare.MessageItem + 37, // 21: aryshare.GetMessagesItem.senderDetails:type_name -> aryshare.MessageSenderDetails + 38, // 22: aryshare.GetMessagesItem.recipientDetails:type_name -> aryshare.MessageRecipientDetails + 36, // 23: aryshare.GetMessagesItem.attachments:type_name -> aryshare.MessageAttachment + 39, // 24: aryshare.GetMessagesItem.reactions:type_name -> aryshare.MessageReaction + 41, // 25: aryshare.ConversationDetail.participant:type_name -> aryshare.ConversationParticipant + 40, // 26: aryshare.GetMessagesResponse.messages:type_name -> aryshare.GetMessagesItem + 42, // 27: aryshare.GetMessagesResponse.conversationsDetails:type_name -> aryshare.ConversationDetail + 45, // 28: aryshare.PostCommentResponse.instagram:type_name -> aryshare.InstagramCommentResponse + 46, // 29: aryshare.PostCommentResponse.tiktok:type_name -> aryshare.TikTokCommentResponse + 52, // 30: aryshare.PostCommentResponse.errors:type_name -> aryshare.PlatformError + 47, // 31: aryshare.PostCommentResponse.bluesky:type_name -> aryshare.BlueskyCommentResponse + 48, // 32: aryshare.PostCommentResponse.facebook:type_name -> aryshare.FacebookCommentResponse + 49, // 33: aryshare.PostCommentResponse.linkedin:type_name -> aryshare.LinkedInCommentResponse + 50, // 34: aryshare.PostCommentResponse.twitter:type_name -> aryshare.TwitterCommentResponse + 51, // 35: aryshare.PostCommentResponse.youtube:type_name -> aryshare.YouTubeCommentResponse + 55, // 36: aryshare.InstagramComment.from:type_name -> aryshare.InstagramUser + 57, // 37: aryshare.InstagramComment.replies:type_name -> aryshare.InstagramComment + 56, // 38: aryshare.InstagramComment.user:type_name -> aryshare.InstagramUserInfo + 58, // 39: aryshare.TikTokComment.replies:type_name -> aryshare.TikTokComment + 59, // 40: aryshare.BlueskyComment.replies:type_name -> aryshare.BlueskyComment + 60, // 41: aryshare.FacebookParent.from:type_name -> aryshare.FacebookUser + 60, // 42: aryshare.FacebookComment.from:type_name -> aryshare.FacebookUser + 61, // 43: aryshare.FacebookComment.parent:type_name -> aryshare.FacebookParent + 62, // 44: aryshare.FacebookComment.replies:type_name -> aryshare.FacebookComment + 64, // 45: aryshare.LinkedInComment.from:type_name -> aryshare.LinkedInFrom + 63, // 46: aryshare.LinkedInComment.media:type_name -> aryshare.LinkedInMedia + 66, // 47: aryshare.RedditComment.from:type_name -> aryshare.RedditUser + 68, // 48: aryshare.ThreadsComment.replies:type_name -> aryshare.ThreadsComment + 69, // 49: aryshare.TwitterReplyTo.publicMetrics:type_name -> aryshare.TwitterPublicMetrics + 69, // 50: aryshare.TwitterComment.publicMetrics:type_name -> aryshare.TwitterPublicMetrics + 70, // 51: aryshare.TwitterComment.referencedTweets:type_name -> aryshare.TwitterReferencedTweet + 71, // 52: aryshare.TwitterComment.replyTo:type_name -> aryshare.TwitterReplyTo + 73, // 53: aryshare.YouTubeComment.replies:type_name -> aryshare.YouTubeReply + 57, // 54: aryshare.GetCommentResponse.instagram:type_name -> aryshare.InstagramComment + 58, // 55: aryshare.GetCommentResponse.tiktok:type_name -> aryshare.TikTokComment + 59, // 56: aryshare.GetCommentResponse.bluesky:type_name -> aryshare.BlueskyComment + 62, // 57: aryshare.GetCommentResponse.facebook:type_name -> aryshare.FacebookComment + 65, // 58: aryshare.GetCommentResponse.linkedin:type_name -> aryshare.LinkedInComment + 67, // 59: aryshare.GetCommentResponse.reddit:type_name -> aryshare.RedditComment + 68, // 60: aryshare.GetCommentResponse.threads:type_name -> aryshare.ThreadsComment + 72, // 61: aryshare.GetCommentResponse.twitter:type_name -> aryshare.TwitterComment + 74, // 62: aryshare.GetCommentResponse.youtube:type_name -> aryshare.YouTubeComment + 81, // 63: aryshare.ReplyCommentResponse.instagram:type_name -> aryshare.InstagramReplyResponse + 82, // 64: aryshare.ReplyCommentResponse.tiktok:type_name -> aryshare.TikTokReplyResponse + 83, // 65: aryshare.ReplyCommentResponse.bluesky:type_name -> aryshare.BlueskyReplyResponse + 84, // 66: aryshare.ReplyCommentResponse.facebook:type_name -> aryshare.FacebookReplyResponse + 85, // 67: aryshare.ReplyCommentResponse.linkedin:type_name -> aryshare.LinkedInReplyResponse + 86, // 68: aryshare.ReplyCommentResponse.twitter:type_name -> aryshare.TwitterReplyResponse + 87, // 69: aryshare.ReplyCommentResponse.youtube:type_name -> aryshare.YouTubeReplyResponse + 98, // 70: aryshare.RecommendHashtagsResponse.recommendations:type_name -> aryshare.HashtagRecommendation + 103, // 71: aryshare.SearchHashtagChildren.data:type_name -> aryshare.SearchHashtagChild + 104, // 72: aryshare.SearchHashtagMedia.children:type_name -> aryshare.SearchHashtagChildren + 102, // 73: aryshare.SearchHashtagsResponse.hashtag:type_name -> aryshare.SearchHashtagInfo + 105, // 74: aryshare.SearchHashtagsResponse.searchResults:type_name -> aryshare.SearchHashtagMedia + 3, // 75: aryshare.Ayrshare.Post:input_type -> aryshare.PostRequest + 7, // 76: aryshare.Ayrshare.GetPost:input_type -> aryshare.GetPostRequest + 9, // 77: aryshare.Ayrshare.GetUser:input_type -> aryshare.GetUserRequest + 14, // 78: aryshare.Ayrshare.CreateProfile:input_type -> aryshare.CreateProfileRequest + 16, // 79: aryshare.Ayrshare.GetProfiles:input_type -> aryshare.GetProfilesRequest + 21, // 80: aryshare.Ayrshare.GenerateJWT:input_type -> aryshare.GenerateJWTRequest + 25, // 81: aryshare.Ayrshare.GetHistory:input_type -> aryshare.GetHistoryRequest + 27, // 82: aryshare.Ayrshare.GetHistoryById:input_type -> aryshare.GetHistoryByIdRequest + 30, // 83: aryshare.Ayrshare.GetHistoryByPlatform:input_type -> aryshare.GetHistoryByPlatformRequest + 32, // 84: aryshare.Ayrshare.SendMessage:input_type -> aryshare.SendMessageRequest + 35, // 85: aryshare.Ayrshare.GetMessages:input_type -> aryshare.GetMessagesRequest + 44, // 86: aryshare.Ayrshare.PostComment:input_type -> aryshare.PostCommentRequest + 54, // 87: aryshare.Ayrshare.GetComment:input_type -> aryshare.GetCommentRequest + 76, // 88: aryshare.Ayrshare.DeleteComment:input_type -> aryshare.DeleteCommentRequest + 80, // 89: aryshare.Ayrshare.ReplyComment:input_type -> aryshare.ReplyCommentRequest + 89, // 90: aryshare.Ayrshare.GetPostAnalytics:input_type -> aryshare.GetPostAnalyticsRequest + 90, // 91: aryshare.Ayrshare.GetPostAnalyticsBySocialID:input_type -> aryshare.GetPostAnalyticsBySocialIDRequest + 92, // 92: aryshare.Ayrshare.GetSocialAnalytics:input_type -> aryshare.GetSocialAnalyticsRequest + 94, // 93: aryshare.Ayrshare.AutoHashtags:input_type -> aryshare.AutoHashtagsRequest + 96, // 94: aryshare.Ayrshare.CheckBannedHashtag:input_type -> aryshare.CheckBannedHashtagRequest + 99, // 95: aryshare.Ayrshare.RecommendHashtags:input_type -> aryshare.RecommendHashtagsRequest + 101, // 96: aryshare.Ayrshare.SearchHashtags:input_type -> aryshare.SearchHashtagsRequest + 6, // 97: aryshare.Ayrshare.Post:output_type -> aryshare.PostResponse + 8, // 98: aryshare.Ayrshare.GetPost:output_type -> aryshare.GetPostResponse + 13, // 99: aryshare.Ayrshare.GetUser:output_type -> aryshare.GetUserResponse + 15, // 100: aryshare.Ayrshare.CreateProfile:output_type -> aryshare.CreateProfileResponse + 19, // 101: aryshare.Ayrshare.GetProfiles:output_type -> aryshare.GetProfilesResponse + 22, // 102: aryshare.Ayrshare.GenerateJWT:output_type -> aryshare.GenerateJWTResponse + 26, // 103: aryshare.Ayrshare.GetHistory:output_type -> aryshare.GetHistoryResponse + 28, // 104: aryshare.Ayrshare.GetHistoryById:output_type -> aryshare.GetHistoryByIdResponse + 31, // 105: aryshare.Ayrshare.GetHistoryByPlatform:output_type -> aryshare.GetHistoryByPlatformResponse + 34, // 106: aryshare.Ayrshare.SendMessage:output_type -> aryshare.SendMessageResponse + 43, // 107: aryshare.Ayrshare.GetMessages:output_type -> aryshare.GetMessagesResponse + 53, // 108: aryshare.Ayrshare.PostComment:output_type -> aryshare.PostCommentResponse + 75, // 109: aryshare.Ayrshare.GetComment:output_type -> aryshare.GetCommentResponse + 79, // 110: aryshare.Ayrshare.DeleteComment:output_type -> aryshare.DeleteCommentResponse + 88, // 111: aryshare.Ayrshare.ReplyComment:output_type -> aryshare.ReplyCommentResponse + 91, // 112: aryshare.Ayrshare.GetPostAnalytics:output_type -> aryshare.GetPostAnalyticsResponse + 91, // 113: aryshare.Ayrshare.GetPostAnalyticsBySocialID:output_type -> aryshare.GetPostAnalyticsResponse + 93, // 114: aryshare.Ayrshare.GetSocialAnalytics:output_type -> aryshare.GetSocialAnalyticsResponse + 95, // 115: aryshare.Ayrshare.AutoHashtags:output_type -> aryshare.AutoHashtagsResponse + 97, // 116: aryshare.Ayrshare.CheckBannedHashtag:output_type -> aryshare.CheckBannedHashtagResponse + 100, // 117: aryshare.Ayrshare.RecommendHashtags:output_type -> aryshare.RecommendHashtagsResponse + 106, // 118: aryshare.Ayrshare.SearchHashtags:output_type -> aryshare.SearchHashtagsResponse + 97, // [97:119] is the sub-list for method output_type + 75, // [75:97] is the sub-list for method input_type + 75, // [75:75] is the sub-list for extension type_name + 75, // [75:75] is the sub-list for extension extendee + 0, // [0:75] is the sub-list for field type_name +} + +func init() { file_pb_ayrshare_proto_init() } +func file_pb_ayrshare_proto_init() { + if File_pb_ayrshare_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_pb_ayrshare_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UserTag); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*InstagramOptions); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TikTokOptions); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PostRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PostId); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PostItem); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PostResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetPostRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetPostResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetUserRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Timestamp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TwitterUsage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DisplayName); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetUserResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateProfileRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateProfileResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetProfilesRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ProfileItem); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Pagination); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetProfilesResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Email); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenerateJWTRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenerateJWTResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*HistoryPostId); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*HistoryItem); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetHistoryRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetHistoryResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetHistoryByIdRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetHistoryByIdResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PlatformPost); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetHistoryByPlatformRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetHistoryByPlatformResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SendMessageRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MessageItem); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SendMessageResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetMessagesRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MessageAttachment); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MessageSenderDetails); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MessageRecipientDetails); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MessageReaction); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetMessagesItem); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConversationParticipant); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConversationDetail); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetMessagesResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PostCommentRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*InstagramCommentResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TikTokCommentResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueskyCommentResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FacebookCommentResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LinkedInCommentResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TwitterCommentResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*YouTubeCommentResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PlatformError); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PostCommentResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetCommentRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*InstagramUser); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*InstagramUserInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*InstagramComment); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TikTokComment); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueskyComment); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FacebookUser); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FacebookParent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FacebookComment); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LinkedInMedia); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LinkedInFrom); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LinkedInComment); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RedditUser); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RedditComment); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ThreadsComment); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TwitterPublicMetrics); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TwitterReferencedTweet); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TwitterReplyTo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TwitterComment); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*YouTubeReply); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*YouTubeComment); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetCommentResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteCommentRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*InstagramDeleteResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TikTokDeleteResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteCommentResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ReplyCommentRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*InstagramReplyResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TikTokReplyResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlueskyReplyResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FacebookReplyResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LinkedInReplyResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TwitterReplyResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*YouTubeReplyResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ReplyCommentResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetPostAnalyticsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetPostAnalyticsBySocialIDRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetPostAnalyticsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetSocialAnalyticsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetSocialAnalyticsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AutoHashtagsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AutoHashtagsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CheckBannedHashtagRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CheckBannedHashtagResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*HashtagRecommendation); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RecommendHashtagsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RecommendHashtagsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SearchHashtagsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SearchHashtagInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SearchHashtagChild); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SearchHashtagChildren); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SearchHashtagMedia); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_ayrshare_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SearchHashtagsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_pb_ayrshare_proto_msgTypes[16].OneofWrappers = []interface{}{ + (*GetProfilesRequest_ActionLogBool)(nil), + (*GetProfilesRequest_ActionLogInt)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_pb_ayrshare_proto_rawDesc, + NumEnums: 0, + NumMessages: 107, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_pb_ayrshare_proto_goTypes, + DependencyIndexes: file_pb_ayrshare_proto_depIdxs, + MessageInfos: file_pb_ayrshare_proto_msgTypes, + }.Build() + File_pb_ayrshare_proto = out.File + file_pb_ayrshare_proto_rawDesc = nil + file_pb_ayrshare_proto_goTypes = nil + file_pb_ayrshare_proto_depIdxs = nil +} diff --git a/api/aryshare/ayrshare.validator.pb.go b/api/aryshare/ayrshare.validator.pb.go new file mode 100644 index 0000000..2722c62 --- /dev/null +++ b/api/aryshare/ayrshare.validator.pb.go @@ -0,0 +1,900 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: pb/ayrshare.proto + +package aryshare + +import ( + fmt "fmt" + math "math" + proto "github.com/golang/protobuf/proto" + _ "google.golang.org/protobuf/types/descriptorpb" + _ "github.com/mwitkow/go-proto-validators" + github_com_mwitkow_go_proto_validators "github.com/mwitkow/go-proto-validators" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +func (this *UserTag) Validate() error { + return nil +} +func (this *InstagramOptions) Validate() error { + for _, item := range this.UserTags { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("UserTags", err) + } + } + } + return nil +} +func (this *TikTokOptions) Validate() error { + return nil +} +func (this *PostRequest) Validate() error { + if this.Post == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Post", fmt.Errorf(`post内容不能为空`)) + } + if len(this.Platforms) < 1 { + return github_com_mwitkow_go_proto_validators.FieldError("Platforms", fmt.Errorf(`platforms平台列表不能为空`)) + } + for _, item := range this.Platforms { + if item == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Platforms", fmt.Errorf(`platforms平台列表不能为空`)) + } + } + if this.InstagramOptions != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.InstagramOptions); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("InstagramOptions", err) + } + } + if this.TikTokOptions != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.TikTokOptions); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("TikTokOptions", err) + } + } + return nil +} +func (this *PostId) Validate() error { + return nil +} +func (this *PostItem) Validate() error { + for _, item := range this.PostIds { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("PostIds", err) + } + } + } + return nil +} +func (this *PostResponse) Validate() error { + for _, item := range this.Posts { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Posts", err) + } + } + } + for _, item := range this.PostIds { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("PostIds", err) + } + } + } + return nil +} +func (this *GetPostRequest) Validate() error { + if this.Id == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Id", fmt.Errorf(`帖子ID不能为空`)) + } + return nil +} +func (this *GetPostResponse) Validate() error { + for _, item := range this.PostIds { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("PostIds", err) + } + } + } + return nil +} +func (this *GetUserRequest) Validate() error { + return nil +} +func (this *Timestamp) Validate() error { + return nil +} +func (this *TwitterUsage) Validate() error { + return nil +} +func (this *DisplayName) Validate() error { + if this.TwitterUsage != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.TwitterUsage); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("TwitterUsage", err) + } + } + return nil +} +func (this *GetUserResponse) Validate() error { + if this.Created != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Created); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Created", err) + } + } + for _, item := range this.DisplayNames { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("DisplayNames", err) + } + } + } + return nil +} +func (this *CreateProfileRequest) Validate() error { + if this.Title == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Title", fmt.Errorf(`title不能为空`)) + } + return nil +} +func (this *CreateProfileResponse) Validate() error { + return nil +} +func (this *GetProfilesRequest) Validate() error { + return nil +} +func (this *ProfileItem) Validate() error { + if this.Created != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Created); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Created", err) + } + } + return nil +} +func (this *Pagination) Validate() error { + return nil +} +func (this *GetProfilesResponse) Validate() error { + for _, item := range this.Profiles { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Profiles", err) + } + } + } + if this.Pagination != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Pagination); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Pagination", err) + } + } + return nil +} +func (this *Email) Validate() error { + return nil +} +func (this *GenerateJWTRequest) Validate() error { + if this.ProfileKey == "" { + return github_com_mwitkow_go_proto_validators.FieldError("ProfileKey", fmt.Errorf(`profileKey不能为空`)) + } + if this.Email != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Email); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Email", err) + } + } + return nil +} +func (this *GenerateJWTResponse) Validate() error { + return nil +} +func (this *HistoryPostId) Validate() error { + return nil +} +func (this *HistoryItem) Validate() error { + for _, item := range this.PostIds { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("PostIds", err) + } + } + } + if this.ScheduleDate != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.ScheduleDate); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("ScheduleDate", err) + } + } + return nil +} +func (this *GetHistoryRequest) Validate() error { + return nil +} +func (this *GetHistoryResponse) Validate() error { + for _, item := range this.History { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("History", err) + } + } + } + return nil +} +func (this *GetHistoryByIdRequest) Validate() error { + if this.Id == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Id", fmt.Errorf(`帖子ID不能为空`)) + } + return nil +} +func (this *GetHistoryByIdResponse) Validate() error { + for _, item := range this.PostIds { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("PostIds", err) + } + } + } + if this.ScheduleDate != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.ScheduleDate); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("ScheduleDate", err) + } + } + return nil +} +func (this *PlatformPost) Validate() error { + return nil +} +func (this *GetHistoryByPlatformRequest) Validate() error { + if this.Platform == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Platform", fmt.Errorf(`平台名称不能为空`)) + } + return nil +} +func (this *GetHistoryByPlatformResponse) Validate() error { + for _, item := range this.Posts { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Posts", err) + } + } + } + return nil +} +func (this *SendMessageRequest) Validate() error { + if this.Platform == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Platform", fmt.Errorf(`平台不能为空`)) + } + if this.RecipientId == "" { + return github_com_mwitkow_go_proto_validators.FieldError("RecipientId", fmt.Errorf(`接收者ID不能为空`)) + } + return nil +} +func (this *MessageItem) Validate() error { + return nil +} +func (this *SendMessageResponse) Validate() error { + for _, item := range this.Messages { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Messages", err) + } + } + } + return nil +} +func (this *GetMessagesRequest) Validate() error { + if this.Platform == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Platform", fmt.Errorf(`平台不能为空`)) + } + return nil +} +func (this *MessageAttachment) Validate() error { + return nil +} +func (this *MessageSenderDetails) Validate() error { + return nil +} +func (this *MessageRecipientDetails) Validate() error { + return nil +} +func (this *MessageReaction) Validate() error { + return nil +} +func (this *GetMessagesItem) Validate() error { + if this.SenderDetails != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.SenderDetails); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("SenderDetails", err) + } + } + if this.RecipientDetails != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.RecipientDetails); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("RecipientDetails", err) + } + } + for _, item := range this.Attachments { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Attachments", err) + } + } + } + for _, item := range this.Reactions { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Reactions", err) + } + } + } + return nil +} +func (this *ConversationParticipant) Validate() error { + return nil +} +func (this *ConversationDetail) Validate() error { + if this.Participant != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Participant); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Participant", err) + } + } + return nil +} +func (this *GetMessagesResponse) Validate() error { + for _, item := range this.Messages { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Messages", err) + } + } + } + for _, item := range this.ConversationsDetails { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("ConversationsDetails", err) + } + } + } + return nil +} +func (this *PostCommentRequest) Validate() error { + if this.Id == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Id", fmt.Errorf(`id不能为空`)) + } + if this.Comment == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Comment", fmt.Errorf(`comment不能为空`)) + } + if len(this.Platforms) < 1 { + return github_com_mwitkow_go_proto_validators.FieldError("Platforms", fmt.Errorf(`platforms平台列表不能为空`)) + } + for _, item := range this.Platforms { + if item == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Platforms", fmt.Errorf(`platforms平台列表不能为空`)) + } + } + return nil +} +func (this *InstagramCommentResponse) Validate() error { + return nil +} +func (this *TikTokCommentResponse) Validate() error { + return nil +} +func (this *BlueskyCommentResponse) Validate() error { + return nil +} +func (this *FacebookCommentResponse) Validate() error { + return nil +} +func (this *LinkedInCommentResponse) Validate() error { + return nil +} +func (this *TwitterCommentResponse) Validate() error { + return nil +} +func (this *YouTubeCommentResponse) Validate() error { + return nil +} +func (this *PlatformError) Validate() error { + return nil +} +func (this *PostCommentResponse) Validate() error { + if this.Instagram != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Instagram); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Instagram", err) + } + } + if this.Tiktok != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Tiktok); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Tiktok", err) + } + } + for _, item := range this.Errors { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Errors", err) + } + } + } + if this.Bluesky != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Bluesky); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Bluesky", err) + } + } + if this.Facebook != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Facebook); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Facebook", err) + } + } + if this.Linkedin != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Linkedin); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Linkedin", err) + } + } + if this.Twitter != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Twitter); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Twitter", err) + } + } + if this.Youtube != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Youtube); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Youtube", err) + } + } + return nil +} +func (this *GetCommentRequest) Validate() error { + if this.Id == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Id", fmt.Errorf(`id不能为空`)) + } + return nil +} +func (this *InstagramUser) Validate() error { + return nil +} +func (this *InstagramUserInfo) Validate() error { + return nil +} +func (this *InstagramComment) Validate() error { + if this.From != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.From); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("From", err) + } + } + for _, item := range this.Replies { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Replies", err) + } + } + } + if this.User != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.User); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("User", err) + } + } + return nil +} +func (this *TikTokComment) Validate() error { + for _, item := range this.Replies { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Replies", err) + } + } + } + return nil +} +func (this *BlueskyComment) Validate() error { + for _, item := range this.Replies { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Replies", err) + } + } + } + return nil +} +func (this *FacebookUser) Validate() error { + return nil +} +func (this *FacebookParent) Validate() error { + if this.From != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.From); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("From", err) + } + } + return nil +} +func (this *FacebookComment) Validate() error { + if this.From != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.From); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("From", err) + } + } + if this.Parent != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Parent); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Parent", err) + } + } + for _, item := range this.Replies { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Replies", err) + } + } + } + return nil +} +func (this *LinkedInMedia) Validate() error { + return nil +} +func (this *LinkedInFrom) Validate() error { + return nil +} +func (this *LinkedInComment) Validate() error { + if this.From != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.From); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("From", err) + } + } + for _, item := range this.Media { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Media", err) + } + } + } + return nil +} +func (this *RedditUser) Validate() error { + return nil +} +func (this *RedditComment) Validate() error { + if this.From != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.From); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("From", err) + } + } + return nil +} +func (this *ThreadsComment) Validate() error { + for _, item := range this.Replies { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Replies", err) + } + } + } + return nil +} +func (this *TwitterPublicMetrics) Validate() error { + return nil +} +func (this *TwitterReferencedTweet) Validate() error { + return nil +} +func (this *TwitterReplyTo) Validate() error { + if this.PublicMetrics != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.PublicMetrics); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("PublicMetrics", err) + } + } + return nil +} +func (this *TwitterComment) Validate() error { + if this.PublicMetrics != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.PublicMetrics); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("PublicMetrics", err) + } + } + for _, item := range this.ReferencedTweets { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("ReferencedTweets", err) + } + } + } + if this.ReplyTo != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.ReplyTo); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("ReplyTo", err) + } + } + return nil +} +func (this *YouTubeReply) Validate() error { + return nil +} +func (this *YouTubeComment) Validate() error { + for _, item := range this.Replies { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Replies", err) + } + } + } + return nil +} +func (this *GetCommentResponse) Validate() error { + for _, item := range this.Instagram { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Instagram", err) + } + } + } + for _, item := range this.Tiktok { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Tiktok", err) + } + } + } + for _, item := range this.Bluesky { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Bluesky", err) + } + } + } + for _, item := range this.Facebook { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Facebook", err) + } + } + } + for _, item := range this.Linkedin { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Linkedin", err) + } + } + } + for _, item := range this.Reddit { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Reddit", err) + } + } + } + for _, item := range this.Threads { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Threads", err) + } + } + } + for _, item := range this.Twitter { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Twitter", err) + } + } + } + for _, item := range this.Youtube { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Youtube", err) + } + } + } + return nil +} +func (this *DeleteCommentRequest) Validate() error { + if this.Id == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Id", fmt.Errorf(`id不能为空`)) + } + return nil +} +func (this *InstagramDeleteResponse) Validate() error { + return nil +} +func (this *TikTokDeleteResponse) Validate() error { + return nil +} +func (this *DeleteCommentResponse) Validate() error { + return nil +} +func (this *ReplyCommentRequest) Validate() error { + if this.Id == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Id", fmt.Errorf(`id不能为空`)) + } + if this.Comment == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Comment", fmt.Errorf(`comment不能为空`)) + } + if len(this.Platforms) < 1 { + return github_com_mwitkow_go_proto_validators.FieldError("Platforms", fmt.Errorf(`platforms平台列表不能为空`)) + } + for _, item := range this.Platforms { + if item == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Platforms", fmt.Errorf(`platforms平台列表不能为空`)) + } + } + return nil +} +func (this *InstagramReplyResponse) Validate() error { + return nil +} +func (this *TikTokReplyResponse) Validate() error { + return nil +} +func (this *BlueskyReplyResponse) Validate() error { + return nil +} +func (this *FacebookReplyResponse) Validate() error { + return nil +} +func (this *LinkedInReplyResponse) Validate() error { + return nil +} +func (this *TwitterReplyResponse) Validate() error { + return nil +} +func (this *YouTubeReplyResponse) Validate() error { + return nil +} +func (this *ReplyCommentResponse) Validate() error { + if this.Instagram != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Instagram); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Instagram", err) + } + } + if this.Tiktok != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Tiktok); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Tiktok", err) + } + } + if this.Bluesky != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Bluesky); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Bluesky", err) + } + } + if this.Facebook != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Facebook); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Facebook", err) + } + } + if this.Linkedin != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Linkedin); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Linkedin", err) + } + } + if this.Twitter != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Twitter); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Twitter", err) + } + } + if this.Youtube != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Youtube); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Youtube", err) + } + } + return nil +} +func (this *GetPostAnalyticsRequest) Validate() error { + if this.Id == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Id", fmt.Errorf(`帖子ID不能为空`)) + } + if len(this.Platforms) < 1 { + return github_com_mwitkow_go_proto_validators.FieldError("Platforms", fmt.Errorf(`platforms平台列表不能为空`)) + } + for _, item := range this.Platforms { + if item == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Platforms", fmt.Errorf(`platforms平台列表不能为空`)) + } + } + return nil +} +func (this *GetPostAnalyticsBySocialIDRequest) Validate() error { + if this.Id == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Id", fmt.Errorf(`Social Post ID不能为空`)) + } + if len(this.Platforms) < 1 { + return github_com_mwitkow_go_proto_validators.FieldError("Platforms", fmt.Errorf(`platforms平台列表不能为空`)) + } + for _, item := range this.Platforms { + if item == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Platforms", fmt.Errorf(`platforms平台列表不能为空`)) + } + } + return nil +} +func (this *GetPostAnalyticsResponse) Validate() error { + return nil +} +func (this *GetSocialAnalyticsRequest) Validate() error { + if len(this.Platforms) < 1 { + return github_com_mwitkow_go_proto_validators.FieldError("Platforms", fmt.Errorf(`platforms平台列表不能为空`)) + } + for _, item := range this.Platforms { + if item == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Platforms", fmt.Errorf(`platforms平台列表不能为空`)) + } + } + return nil +} +func (this *GetSocialAnalyticsResponse) Validate() error { + return nil +} +func (this *AutoHashtagsRequest) Validate() error { + if this.Post == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Post", fmt.Errorf(`post内容不能为空`)) + } + return nil +} +func (this *AutoHashtagsResponse) Validate() error { + return nil +} +func (this *CheckBannedHashtagRequest) Validate() error { + if this.Hashtag == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Hashtag", fmt.Errorf(`hashtag不能为空`)) + } + return nil +} +func (this *CheckBannedHashtagResponse) Validate() error { + return nil +} +func (this *HashtagRecommendation) Validate() error { + return nil +} +func (this *RecommendHashtagsRequest) Validate() error { + if this.Keyword == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Keyword", fmt.Errorf(`keyword不能为空`)) + } + return nil +} +func (this *RecommendHashtagsResponse) Validate() error { + for _, item := range this.Recommendations { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Recommendations", err) + } + } + } + return nil +} +func (this *SearchHashtagsRequest) Validate() error { + if this.Keyword == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Keyword", fmt.Errorf(`keyword不能为空`)) + } + return nil +} +func (this *SearchHashtagInfo) Validate() error { + return nil +} +func (this *SearchHashtagChild) Validate() error { + return nil +} +func (this *SearchHashtagChildren) Validate() error { + for _, item := range this.Data { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Data", err) + } + } + } + return nil +} +func (this *SearchHashtagMedia) Validate() error { + if this.Children != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Children); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Children", err) + } + } + return nil +} +func (this *SearchHashtagsResponse) Validate() error { + if this.Hashtag != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Hashtag); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Hashtag", err) + } + } + for _, item := range this.SearchResults { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("SearchResults", err) + } + } + } + return nil +} diff --git a/api/aryshare/ayrshare_triple.pb.go b/api/aryshare/ayrshare_triple.pb.go new file mode 100644 index 0000000..6c186f4 --- /dev/null +++ b/api/aryshare/ayrshare_triple.pb.go @@ -0,0 +1,1108 @@ +// Code generated by protoc-gen-go-triple. DO NOT EDIT. +// versions: +// - protoc-gen-go-triple v1.0.8 +// - protoc v3.21.1 +// source: pb/ayrshare.proto + +package aryshare + +import ( + context "context" + protocol "dubbo.apache.org/dubbo-go/v3/protocol" + dubbo3 "dubbo.apache.org/dubbo-go/v3/protocol/dubbo3" + invocation "dubbo.apache.org/dubbo-go/v3/protocol/invocation" + grpc_go "github.com/dubbogo/grpc-go" + codes "github.com/dubbogo/grpc-go/codes" + metadata "github.com/dubbogo/grpc-go/metadata" + status "github.com/dubbogo/grpc-go/status" + common "github.com/dubbogo/triple/pkg/common" + constant "github.com/dubbogo/triple/pkg/common/constant" + triple "github.com/dubbogo/triple/pkg/triple" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc_go.SupportPackageIsVersion7 + +// AyrshareClient is the client API for Ayrshare service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type AyrshareClient interface { + // 帖子相关 api + Post(ctx context.Context, in *PostRequest, opts ...grpc_go.CallOption) (*PostResponse, common.ErrorWithAttachment) + GetPost(ctx context.Context, in *GetPostRequest, opts ...grpc_go.CallOption) (*GetPostResponse, common.ErrorWithAttachment) + // 用户相关 api + GetUser(ctx context.Context, in *GetUserRequest, opts ...grpc_go.CallOption) (*GetUserResponse, common.ErrorWithAttachment) + // 用户配置相关 api + CreateProfile(ctx context.Context, in *CreateProfileRequest, opts ...grpc_go.CallOption) (*CreateProfileResponse, common.ErrorWithAttachment) + GetProfiles(ctx context.Context, in *GetProfilesRequest, opts ...grpc_go.CallOption) (*GetProfilesResponse, common.ErrorWithAttachment) + GenerateJWT(ctx context.Context, in *GenerateJWTRequest, opts ...grpc_go.CallOption) (*GenerateJWTResponse, common.ErrorWithAttachment) + // 历史记录相关 api + GetHistory(ctx context.Context, in *GetHistoryRequest, opts ...grpc_go.CallOption) (*GetHistoryResponse, common.ErrorWithAttachment) + GetHistoryById(ctx context.Context, in *GetHistoryByIdRequest, opts ...grpc_go.CallOption) (*GetHistoryByIdResponse, common.ErrorWithAttachment) + GetHistoryByPlatform(ctx context.Context, in *GetHistoryByPlatformRequest, opts ...grpc_go.CallOption) (*GetHistoryByPlatformResponse, common.ErrorWithAttachment) + // 消息相关 api + SendMessage(ctx context.Context, in *SendMessageRequest, opts ...grpc_go.CallOption) (*SendMessageResponse, common.ErrorWithAttachment) + GetMessages(ctx context.Context, in *GetMessagesRequest, opts ...grpc_go.CallOption) (*GetMessagesResponse, common.ErrorWithAttachment) + // 评论相关 api + PostComment(ctx context.Context, in *PostCommentRequest, opts ...grpc_go.CallOption) (*PostCommentResponse, common.ErrorWithAttachment) + GetComment(ctx context.Context, in *GetCommentRequest, opts ...grpc_go.CallOption) (*GetCommentResponse, common.ErrorWithAttachment) + DeleteComment(ctx context.Context, in *DeleteCommentRequest, opts ...grpc_go.CallOption) (*DeleteCommentResponse, common.ErrorWithAttachment) + ReplyComment(ctx context.Context, in *ReplyCommentRequest, opts ...grpc_go.CallOption) (*ReplyCommentResponse, common.ErrorWithAttachment) + // 分析相关 api + GetPostAnalytics(ctx context.Context, in *GetPostAnalyticsRequest, opts ...grpc_go.CallOption) (*GetPostAnalyticsResponse, common.ErrorWithAttachment) + GetPostAnalyticsBySocialID(ctx context.Context, in *GetPostAnalyticsBySocialIDRequest, opts ...grpc_go.CallOption) (*GetPostAnalyticsResponse, common.ErrorWithAttachment) + GetSocialAnalytics(ctx context.Context, in *GetSocialAnalyticsRequest, opts ...grpc_go.CallOption) (*GetSocialAnalyticsResponse, common.ErrorWithAttachment) + // Hashtags 相关 api + AutoHashtags(ctx context.Context, in *AutoHashtagsRequest, opts ...grpc_go.CallOption) (*AutoHashtagsResponse, common.ErrorWithAttachment) + CheckBannedHashtag(ctx context.Context, in *CheckBannedHashtagRequest, opts ...grpc_go.CallOption) (*CheckBannedHashtagResponse, common.ErrorWithAttachment) + RecommendHashtags(ctx context.Context, in *RecommendHashtagsRequest, opts ...grpc_go.CallOption) (*RecommendHashtagsResponse, common.ErrorWithAttachment) + SearchHashtags(ctx context.Context, in *SearchHashtagsRequest, opts ...grpc_go.CallOption) (*SearchHashtagsResponse, common.ErrorWithAttachment) +} + +type ayrshareClient struct { + cc *triple.TripleConn +} + +type AyrshareClientImpl struct { + Post func(ctx context.Context, in *PostRequest) (*PostResponse, error) + GetPost func(ctx context.Context, in *GetPostRequest) (*GetPostResponse, error) + GetUser func(ctx context.Context, in *GetUserRequest) (*GetUserResponse, error) + CreateProfile func(ctx context.Context, in *CreateProfileRequest) (*CreateProfileResponse, error) + GetProfiles func(ctx context.Context, in *GetProfilesRequest) (*GetProfilesResponse, error) + GenerateJWT func(ctx context.Context, in *GenerateJWTRequest) (*GenerateJWTResponse, error) + GetHistory func(ctx context.Context, in *GetHistoryRequest) (*GetHistoryResponse, error) + GetHistoryById func(ctx context.Context, in *GetHistoryByIdRequest) (*GetHistoryByIdResponse, error) + GetHistoryByPlatform func(ctx context.Context, in *GetHistoryByPlatformRequest) (*GetHistoryByPlatformResponse, error) + SendMessage func(ctx context.Context, in *SendMessageRequest) (*SendMessageResponse, error) + GetMessages func(ctx context.Context, in *GetMessagesRequest) (*GetMessagesResponse, error) + PostComment func(ctx context.Context, in *PostCommentRequest) (*PostCommentResponse, error) + GetComment func(ctx context.Context, in *GetCommentRequest) (*GetCommentResponse, error) + DeleteComment func(ctx context.Context, in *DeleteCommentRequest) (*DeleteCommentResponse, error) + ReplyComment func(ctx context.Context, in *ReplyCommentRequest) (*ReplyCommentResponse, error) + GetPostAnalytics func(ctx context.Context, in *GetPostAnalyticsRequest) (*GetPostAnalyticsResponse, error) + GetPostAnalyticsBySocialID func(ctx context.Context, in *GetPostAnalyticsBySocialIDRequest) (*GetPostAnalyticsResponse, error) + GetSocialAnalytics func(ctx context.Context, in *GetSocialAnalyticsRequest) (*GetSocialAnalyticsResponse, error) + AutoHashtags func(ctx context.Context, in *AutoHashtagsRequest) (*AutoHashtagsResponse, error) + CheckBannedHashtag func(ctx context.Context, in *CheckBannedHashtagRequest) (*CheckBannedHashtagResponse, error) + RecommendHashtags func(ctx context.Context, in *RecommendHashtagsRequest) (*RecommendHashtagsResponse, error) + SearchHashtags func(ctx context.Context, in *SearchHashtagsRequest) (*SearchHashtagsResponse, error) +} + +func (c *AyrshareClientImpl) GetDubboStub(cc *triple.TripleConn) AyrshareClient { + return NewAyrshareClient(cc) +} + +func (c *AyrshareClientImpl) XXX_InterfaceName() string { + return "aryshare.Ayrshare" +} + +func NewAyrshareClient(cc *triple.TripleConn) AyrshareClient { + return &ayrshareClient{cc} +} + +func (c *ayrshareClient) Post(ctx context.Context, in *PostRequest, opts ...grpc_go.CallOption) (*PostResponse, common.ErrorWithAttachment) { + out := new(PostResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/Post", in, out) +} + +func (c *ayrshareClient) GetPost(ctx context.Context, in *GetPostRequest, opts ...grpc_go.CallOption) (*GetPostResponse, common.ErrorWithAttachment) { + out := new(GetPostResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetPost", in, out) +} + +func (c *ayrshareClient) GetUser(ctx context.Context, in *GetUserRequest, opts ...grpc_go.CallOption) (*GetUserResponse, common.ErrorWithAttachment) { + out := new(GetUserResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetUser", in, out) +} + +func (c *ayrshareClient) CreateProfile(ctx context.Context, in *CreateProfileRequest, opts ...grpc_go.CallOption) (*CreateProfileResponse, common.ErrorWithAttachment) { + out := new(CreateProfileResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/CreateProfile", in, out) +} + +func (c *ayrshareClient) GetProfiles(ctx context.Context, in *GetProfilesRequest, opts ...grpc_go.CallOption) (*GetProfilesResponse, common.ErrorWithAttachment) { + out := new(GetProfilesResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetProfiles", in, out) +} + +func (c *ayrshareClient) GenerateJWT(ctx context.Context, in *GenerateJWTRequest, opts ...grpc_go.CallOption) (*GenerateJWTResponse, common.ErrorWithAttachment) { + out := new(GenerateJWTResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GenerateJWT", in, out) +} + +func (c *ayrshareClient) GetHistory(ctx context.Context, in *GetHistoryRequest, opts ...grpc_go.CallOption) (*GetHistoryResponse, common.ErrorWithAttachment) { + out := new(GetHistoryResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetHistory", in, out) +} + +func (c *ayrshareClient) GetHistoryById(ctx context.Context, in *GetHistoryByIdRequest, opts ...grpc_go.CallOption) (*GetHistoryByIdResponse, common.ErrorWithAttachment) { + out := new(GetHistoryByIdResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetHistoryById", in, out) +} + +func (c *ayrshareClient) GetHistoryByPlatform(ctx context.Context, in *GetHistoryByPlatformRequest, opts ...grpc_go.CallOption) (*GetHistoryByPlatformResponse, common.ErrorWithAttachment) { + out := new(GetHistoryByPlatformResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetHistoryByPlatform", in, out) +} + +func (c *ayrshareClient) SendMessage(ctx context.Context, in *SendMessageRequest, opts ...grpc_go.CallOption) (*SendMessageResponse, common.ErrorWithAttachment) { + out := new(SendMessageResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/SendMessage", in, out) +} + +func (c *ayrshareClient) GetMessages(ctx context.Context, in *GetMessagesRequest, opts ...grpc_go.CallOption) (*GetMessagesResponse, common.ErrorWithAttachment) { + out := new(GetMessagesResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetMessages", in, out) +} + +func (c *ayrshareClient) PostComment(ctx context.Context, in *PostCommentRequest, opts ...grpc_go.CallOption) (*PostCommentResponse, common.ErrorWithAttachment) { + out := new(PostCommentResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/PostComment", in, out) +} + +func (c *ayrshareClient) GetComment(ctx context.Context, in *GetCommentRequest, opts ...grpc_go.CallOption) (*GetCommentResponse, common.ErrorWithAttachment) { + out := new(GetCommentResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetComment", in, out) +} + +func (c *ayrshareClient) DeleteComment(ctx context.Context, in *DeleteCommentRequest, opts ...grpc_go.CallOption) (*DeleteCommentResponse, common.ErrorWithAttachment) { + out := new(DeleteCommentResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/DeleteComment", in, out) +} + +func (c *ayrshareClient) ReplyComment(ctx context.Context, in *ReplyCommentRequest, opts ...grpc_go.CallOption) (*ReplyCommentResponse, common.ErrorWithAttachment) { + out := new(ReplyCommentResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/ReplyComment", in, out) +} + +func (c *ayrshareClient) GetPostAnalytics(ctx context.Context, in *GetPostAnalyticsRequest, opts ...grpc_go.CallOption) (*GetPostAnalyticsResponse, common.ErrorWithAttachment) { + out := new(GetPostAnalyticsResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetPostAnalytics", in, out) +} + +func (c *ayrshareClient) GetPostAnalyticsBySocialID(ctx context.Context, in *GetPostAnalyticsBySocialIDRequest, opts ...grpc_go.CallOption) (*GetPostAnalyticsResponse, common.ErrorWithAttachment) { + out := new(GetPostAnalyticsResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetPostAnalyticsBySocialID", in, out) +} + +func (c *ayrshareClient) GetSocialAnalytics(ctx context.Context, in *GetSocialAnalyticsRequest, opts ...grpc_go.CallOption) (*GetSocialAnalyticsResponse, common.ErrorWithAttachment) { + out := new(GetSocialAnalyticsResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetSocialAnalytics", in, out) +} + +func (c *ayrshareClient) AutoHashtags(ctx context.Context, in *AutoHashtagsRequest, opts ...grpc_go.CallOption) (*AutoHashtagsResponse, common.ErrorWithAttachment) { + out := new(AutoHashtagsResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/AutoHashtags", in, out) +} + +func (c *ayrshareClient) CheckBannedHashtag(ctx context.Context, in *CheckBannedHashtagRequest, opts ...grpc_go.CallOption) (*CheckBannedHashtagResponse, common.ErrorWithAttachment) { + out := new(CheckBannedHashtagResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/CheckBannedHashtag", in, out) +} + +func (c *ayrshareClient) RecommendHashtags(ctx context.Context, in *RecommendHashtagsRequest, opts ...grpc_go.CallOption) (*RecommendHashtagsResponse, common.ErrorWithAttachment) { + out := new(RecommendHashtagsResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/RecommendHashtags", in, out) +} + +func (c *ayrshareClient) SearchHashtags(ctx context.Context, in *SearchHashtagsRequest, opts ...grpc_go.CallOption) (*SearchHashtagsResponse, common.ErrorWithAttachment) { + out := new(SearchHashtagsResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/SearchHashtags", in, out) +} + +// AyrshareServer is the server API for Ayrshare service. +// All implementations must embed UnimplementedAyrshareServer +// for forward compatibility +type AyrshareServer interface { + // 帖子相关 api + Post(context.Context, *PostRequest) (*PostResponse, error) + GetPost(context.Context, *GetPostRequest) (*GetPostResponse, error) + // 用户相关 api + GetUser(context.Context, *GetUserRequest) (*GetUserResponse, error) + // 用户配置相关 api + CreateProfile(context.Context, *CreateProfileRequest) (*CreateProfileResponse, error) + GetProfiles(context.Context, *GetProfilesRequest) (*GetProfilesResponse, error) + GenerateJWT(context.Context, *GenerateJWTRequest) (*GenerateJWTResponse, error) + // 历史记录相关 api + GetHistory(context.Context, *GetHistoryRequest) (*GetHistoryResponse, error) + GetHistoryById(context.Context, *GetHistoryByIdRequest) (*GetHistoryByIdResponse, error) + GetHistoryByPlatform(context.Context, *GetHistoryByPlatformRequest) (*GetHistoryByPlatformResponse, error) + // 消息相关 api + SendMessage(context.Context, *SendMessageRequest) (*SendMessageResponse, error) + GetMessages(context.Context, *GetMessagesRequest) (*GetMessagesResponse, error) + // 评论相关 api + PostComment(context.Context, *PostCommentRequest) (*PostCommentResponse, error) + GetComment(context.Context, *GetCommentRequest) (*GetCommentResponse, error) + DeleteComment(context.Context, *DeleteCommentRequest) (*DeleteCommentResponse, error) + ReplyComment(context.Context, *ReplyCommentRequest) (*ReplyCommentResponse, error) + // 分析相关 api + GetPostAnalytics(context.Context, *GetPostAnalyticsRequest) (*GetPostAnalyticsResponse, error) + GetPostAnalyticsBySocialID(context.Context, *GetPostAnalyticsBySocialIDRequest) (*GetPostAnalyticsResponse, error) + GetSocialAnalytics(context.Context, *GetSocialAnalyticsRequest) (*GetSocialAnalyticsResponse, error) + // Hashtags 相关 api + AutoHashtags(context.Context, *AutoHashtagsRequest) (*AutoHashtagsResponse, error) + CheckBannedHashtag(context.Context, *CheckBannedHashtagRequest) (*CheckBannedHashtagResponse, error) + RecommendHashtags(context.Context, *RecommendHashtagsRequest) (*RecommendHashtagsResponse, error) + SearchHashtags(context.Context, *SearchHashtagsRequest) (*SearchHashtagsResponse, error) + mustEmbedUnimplementedAyrshareServer() +} + +// UnimplementedAyrshareServer must be embedded to have forward compatible implementations. +type UnimplementedAyrshareServer struct { + proxyImpl protocol.Invoker +} + +func (UnimplementedAyrshareServer) Post(context.Context, *PostRequest) (*PostResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Post not implemented") +} +func (UnimplementedAyrshareServer) GetPost(context.Context, *GetPostRequest) (*GetPostResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetPost not implemented") +} +func (UnimplementedAyrshareServer) GetUser(context.Context, *GetUserRequest) (*GetUserResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetUser not implemented") +} +func (UnimplementedAyrshareServer) CreateProfile(context.Context, *CreateProfileRequest) (*CreateProfileResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateProfile not implemented") +} +func (UnimplementedAyrshareServer) GetProfiles(context.Context, *GetProfilesRequest) (*GetProfilesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetProfiles not implemented") +} +func (UnimplementedAyrshareServer) GenerateJWT(context.Context, *GenerateJWTRequest) (*GenerateJWTResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GenerateJWT not implemented") +} +func (UnimplementedAyrshareServer) GetHistory(context.Context, *GetHistoryRequest) (*GetHistoryResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetHistory not implemented") +} +func (UnimplementedAyrshareServer) GetHistoryById(context.Context, *GetHistoryByIdRequest) (*GetHistoryByIdResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetHistoryById not implemented") +} +func (UnimplementedAyrshareServer) GetHistoryByPlatform(context.Context, *GetHistoryByPlatformRequest) (*GetHistoryByPlatformResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetHistoryByPlatform not implemented") +} +func (UnimplementedAyrshareServer) SendMessage(context.Context, *SendMessageRequest) (*SendMessageResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method SendMessage not implemented") +} +func (UnimplementedAyrshareServer) GetMessages(context.Context, *GetMessagesRequest) (*GetMessagesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetMessages not implemented") +} +func (UnimplementedAyrshareServer) PostComment(context.Context, *PostCommentRequest) (*PostCommentResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method PostComment not implemented") +} +func (UnimplementedAyrshareServer) GetComment(context.Context, *GetCommentRequest) (*GetCommentResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetComment not implemented") +} +func (UnimplementedAyrshareServer) DeleteComment(context.Context, *DeleteCommentRequest) (*DeleteCommentResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteComment not implemented") +} +func (UnimplementedAyrshareServer) ReplyComment(context.Context, *ReplyCommentRequest) (*ReplyCommentResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ReplyComment not implemented") +} +func (UnimplementedAyrshareServer) GetPostAnalytics(context.Context, *GetPostAnalyticsRequest) (*GetPostAnalyticsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetPostAnalytics not implemented") +} +func (UnimplementedAyrshareServer) GetPostAnalyticsBySocialID(context.Context, *GetPostAnalyticsBySocialIDRequest) (*GetPostAnalyticsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetPostAnalyticsBySocialID not implemented") +} +func (UnimplementedAyrshareServer) GetSocialAnalytics(context.Context, *GetSocialAnalyticsRequest) (*GetSocialAnalyticsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetSocialAnalytics not implemented") +} +func (UnimplementedAyrshareServer) AutoHashtags(context.Context, *AutoHashtagsRequest) (*AutoHashtagsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method AutoHashtags not implemented") +} +func (UnimplementedAyrshareServer) CheckBannedHashtag(context.Context, *CheckBannedHashtagRequest) (*CheckBannedHashtagResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CheckBannedHashtag not implemented") +} +func (UnimplementedAyrshareServer) RecommendHashtags(context.Context, *RecommendHashtagsRequest) (*RecommendHashtagsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RecommendHashtags not implemented") +} +func (UnimplementedAyrshareServer) SearchHashtags(context.Context, *SearchHashtagsRequest) (*SearchHashtagsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method SearchHashtags not implemented") +} +func (s *UnimplementedAyrshareServer) XXX_SetProxyImpl(impl protocol.Invoker) { + s.proxyImpl = impl +} + +func (s *UnimplementedAyrshareServer) XXX_GetProxyImpl() protocol.Invoker { + return s.proxyImpl +} + +func (s *UnimplementedAyrshareServer) XXX_ServiceDesc() *grpc_go.ServiceDesc { + return &Ayrshare_ServiceDesc +} +func (s *UnimplementedAyrshareServer) XXX_InterfaceName() string { + return "aryshare.Ayrshare" +} + +func (UnimplementedAyrshareServer) mustEmbedUnimplementedAyrshareServer() {} + +// UnsafeAyrshareServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to AyrshareServer will +// result in compilation errors. +type UnsafeAyrshareServer interface { + mustEmbedUnimplementedAyrshareServer() +} + +func RegisterAyrshareServer(s grpc_go.ServiceRegistrar, srv AyrshareServer) { + s.RegisterService(&Ayrshare_ServiceDesc, srv) +} + +func _Ayrshare_Post_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(PostRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("Post", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Ayrshare_GetPost_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(GetPostRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("GetPost", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Ayrshare_GetUser_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(GetUserRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("GetUser", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Ayrshare_CreateProfile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateProfileRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("CreateProfile", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Ayrshare_GetProfiles_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(GetProfilesRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("GetProfiles", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Ayrshare_GenerateJWT_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(GenerateJWTRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("GenerateJWT", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Ayrshare_GetHistory_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(GetHistoryRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("GetHistory", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Ayrshare_GetHistoryById_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(GetHistoryByIdRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("GetHistoryById", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Ayrshare_GetHistoryByPlatform_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(GetHistoryByPlatformRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("GetHistoryByPlatform", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Ayrshare_SendMessage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(SendMessageRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("SendMessage", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Ayrshare_GetMessages_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(GetMessagesRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("GetMessages", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Ayrshare_PostComment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(PostCommentRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("PostComment", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Ayrshare_GetComment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(GetCommentRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("GetComment", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Ayrshare_DeleteComment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteCommentRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("DeleteComment", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Ayrshare_ReplyComment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(ReplyCommentRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("ReplyComment", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Ayrshare_GetPostAnalytics_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(GetPostAnalyticsRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("GetPostAnalytics", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Ayrshare_GetPostAnalyticsBySocialID_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(GetPostAnalyticsBySocialIDRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("GetPostAnalyticsBySocialID", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Ayrshare_GetSocialAnalytics_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(GetSocialAnalyticsRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("GetSocialAnalytics", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Ayrshare_AutoHashtags_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(AutoHashtagsRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("AutoHashtags", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Ayrshare_CheckBannedHashtag_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(CheckBannedHashtagRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("CheckBannedHashtag", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Ayrshare_RecommendHashtags_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(RecommendHashtagsRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("RecommendHashtags", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Ayrshare_SearchHashtags_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(SearchHashtagsRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("SearchHashtags", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +// Ayrshare_ServiceDesc is the grpc_go.ServiceDesc for Ayrshare service. +// It's only intended for direct use with grpc_go.RegisterService, +// and not to be introspected or modified (even as a copy) +var Ayrshare_ServiceDesc = grpc_go.ServiceDesc{ + ServiceName: "aryshare.Ayrshare", + HandlerType: (*AyrshareServer)(nil), + Methods: []grpc_go.MethodDesc{ + { + MethodName: "Post", + Handler: _Ayrshare_Post_Handler, + }, + { + MethodName: "GetPost", + Handler: _Ayrshare_GetPost_Handler, + }, + { + MethodName: "GetUser", + Handler: _Ayrshare_GetUser_Handler, + }, + { + MethodName: "CreateProfile", + Handler: _Ayrshare_CreateProfile_Handler, + }, + { + MethodName: "GetProfiles", + Handler: _Ayrshare_GetProfiles_Handler, + }, + { + MethodName: "GenerateJWT", + Handler: _Ayrshare_GenerateJWT_Handler, + }, + { + MethodName: "GetHistory", + Handler: _Ayrshare_GetHistory_Handler, + }, + { + MethodName: "GetHistoryById", + Handler: _Ayrshare_GetHistoryById_Handler, + }, + { + MethodName: "GetHistoryByPlatform", + Handler: _Ayrshare_GetHistoryByPlatform_Handler, + }, + { + MethodName: "SendMessage", + Handler: _Ayrshare_SendMessage_Handler, + }, + { + MethodName: "GetMessages", + Handler: _Ayrshare_GetMessages_Handler, + }, + { + MethodName: "PostComment", + Handler: _Ayrshare_PostComment_Handler, + }, + { + MethodName: "GetComment", + Handler: _Ayrshare_GetComment_Handler, + }, + { + MethodName: "DeleteComment", + Handler: _Ayrshare_DeleteComment_Handler, + }, + { + MethodName: "ReplyComment", + Handler: _Ayrshare_ReplyComment_Handler, + }, + { + MethodName: "GetPostAnalytics", + Handler: _Ayrshare_GetPostAnalytics_Handler, + }, + { + MethodName: "GetPostAnalyticsBySocialID", + Handler: _Ayrshare_GetPostAnalyticsBySocialID_Handler, + }, + { + MethodName: "GetSocialAnalytics", + Handler: _Ayrshare_GetSocialAnalytics_Handler, + }, + { + MethodName: "AutoHashtags", + Handler: _Ayrshare_AutoHashtags_Handler, + }, + { + MethodName: "CheckBannedHashtag", + Handler: _Ayrshare_CheckBannedHashtag_Handler, + }, + { + MethodName: "RecommendHashtags", + Handler: _Ayrshare_RecommendHashtags_Handler, + }, + { + MethodName: "SearchHashtags", + Handler: _Ayrshare_SearchHashtags_Handler, + }, + }, + Streams: []grpc_go.StreamDesc{}, + Metadata: "pb/ayrshare.proto", +} diff --git a/pkg/cron/task.go b/pkg/cron/task.go index 659d0c2..b16026a 100644 --- a/pkg/cron/task.go +++ b/pkg/cron/task.go @@ -23,6 +23,9 @@ func InitTasks() error { err = cm.AddTask("artistAutoConfirmAnalysis", "0 */1 * * * *", ArtistAutoConfirmAnalysisTask) err = cm.AddTask("refreshWorkAnalysisApprovalStatus", "0 */1 * * * *", RefreshWorkAnalysisApprovalStatusTask) + + // 每天 00:30 和 12:30 执行 Ayrshare 指标采集任务 + err = cm.AddTask("ayrshareMetricsCollector", "30 0,12 * * *", AyrshareMetricsCollectorTask) if err != nil { log.Printf("添加测试任务失败: %v", err) } @@ -103,3 +106,8 @@ func ArtistAutoConfirmAnalysisTask() { serverCast.ProcessAnalysisTask(context.Background(), analysisUuid) } } + +// AyrshareMetricsCollectorTask Ayrshare 指标采集定时任务(每天 00:30 和 12:30 执行) +func AyrshareMetricsCollectorTask() { + serverCast.ExecuteAyrshareMetricsCollector() +} diff --git a/pkg/router/analysis.go b/pkg/router/analysis.go index 69eb3ff..373612f 100644 --- a/pkg/router/analysis.go +++ b/pkg/router/analysis.go @@ -10,6 +10,8 @@ import ( ) func AnalysisRouter(r *gin.RouterGroup) { + r.POST("analysis/trigger-ayrshare-metrics", serviceCast.TriggerAyrshareMetricsCollector) + analysis := r.Group("analysis") analysis.Use(middleware.CheckWebLogin(service.AccountProvider)) { @@ -29,6 +31,7 @@ func AnalysisRouter(r *gin.RouterGroup) { analysis.POST("artist-metrics-single", serviceCast.ArtistMetricsDailyWindow) // 艺人指标日窗口 analysis.POST("tobe-confirmed-list", serviceCast.TobeConfirmedList) // 待确认数据列表 analysis.POST("update-approval-id", serviceCast.UpdateWorkAnalysisApprovalID) // 更新作品分析审批ID + // analysis.POST("trigger-ayrshare-metrics", serviceCast.TriggerAyrshareMetricsCollector) // 手动触发 Ayrshare 指标采集任务 } diff --git a/pkg/service/cast/analysis.go b/pkg/service/cast/analysis.go index 5f53e23..5e362c1 100644 --- a/pkg/service/cast/analysis.go +++ b/pkg/service/cast/analysis.go @@ -2,8 +2,10 @@ package cast import ( "context" + "encoding/json" "errors" "fmt" + "fonchain-fiee/api/aryshare" "fonchain-fiee/api/bundle" "fonchain-fiee/api/cast" "fonchain-fiee/pkg/cache" @@ -17,6 +19,7 @@ import ( "dubbo.apache.org/dubbo-go/v3/common/constant" "github.com/gin-gonic/gin" + "github.com/google/uuid" "go.uber.org/zap" ) @@ -639,3 +642,545 @@ func autoConfirmAnalysis(ctx context.Context, analysisUuid string) (err error) { } return } + +// TriggerAyrshareMetricsCollector 手动触发 Ayrshare 指标采集任务 +func TriggerAyrshareMetricsCollector(ctx *gin.Context) { + // 在后台 goroutine 中执行任务,避免阻塞 HTTP 请求 + go func() { + // 同时使用 zap 和 fmt.Printf 确保日志输出到终端 + zap.L().Info("手动触发 Ayrshare 指标采集任务") + fmt.Printf("[%s] 手动触发 Ayrshare 指标采集任务\n", time.Now().Format("2006-01-02 15:04:05")) + executeAyrshareMetricsCollector() + }() + service.Success(ctx, map[string]string{ + "message": "任务已触发,正在后台执行", + }) + return +} + +// ExecuteAyrshareMetricsCollector 提供给定时任务调用的 Ayrshare 指标采集入口 +func ExecuteAyrshareMetricsCollector() { + executeAyrshareMetricsCollector() +} + +// executeAyrshareMetricsCollector 执行 Ayrshare 指标采集任务 +func executeAyrshareMetricsCollector() { + ctx := context.Background() + zap.L().Info("开始执行 Ayrshare 指标采集任务") + fmt.Printf("[%s] [INFO] 开始执行 Ayrshare 指标采集任务\n", time.Now().Format("2006-01-02 15:04:05")) + + // 获取当前日期(中国时区,格式:YYYYMMDD) + loc, _ := time.LoadLocation("Asia/Shanghai") + now := time.Now().In(loc) + dateCN := now.Year()*10000 + int(now.Month())*100 + now.Day() + + // 第一步:获取所有状态为1的艺人AyrShare信息 + mediaMetricsList, err := collectMediaMetricsForAyrshare(ctx, dateCN) + if err != nil { + zap.L().Error("采集账号指标失败", zap.Error(err)) + fmt.Printf("[%s] [ERROR] 采集账号指标失败: %v\n", time.Now().Format("2006-01-02 15:04:05"), err) + return + } + + // 批量插入账号指标 + if len(mediaMetricsList) > 0 { + req := &cast.UpsertMediaMetricsDailyBatchReq{ + Data: mediaMetricsList, + } + resp, err := service.CastProvider.UpsertMediaMetricsDailyBatch(ctx, req) + if err != nil { + zap.L().Error("批量插入账号指标失败", zap.Error(err)) + fmt.Printf("[%s] [ERROR] 批量插入账号指标失败: %v\n", time.Now().Format("2006-01-02 15:04:05"), err) + } else if resp != nil && resp.Success { + zap.L().Info("批量插入账号指标成功", zap.Int("count", len(mediaMetricsList))) + fmt.Printf("[%s] [INFO] 批量插入账号指标成功,数量: %d\n", time.Now().Format("2006-01-02 15:04:05"), len(mediaMetricsList)) + } + } + + // 第二步:获取作品指标 + workMetricsList, err := collectWorkMetricsForAyrshare(ctx, dateCN) + if err != nil { + zap.L().Error("采集作品指标失败", zap.Error(err)) + fmt.Printf("[%s] [ERROR] 采集作品指标失败: %v\n", time.Now().Format("2006-01-02 15:04:05"), err) + return + } + + // 批量插入作品指标 + if len(workMetricsList) > 0 { + req := &cast.UpsertWorkMetricsDailyBatchReq{ + Data: workMetricsList, + } + resp, err := service.CastProvider.UpsertWorkMetricsDailyBatch(ctx, req) + if err != nil { + zap.L().Error("批量插入作品指标失败", zap.Error(err)) + fmt.Printf("[%s] [ERROR] 批量插入作品指标失败: %v\n", time.Now().Format("2006-01-02 15:04:05"), err) + } else if resp != nil && resp.Success { + zap.L().Info("批量插入作品指标成功", zap.Int("count", len(workMetricsList))) + fmt.Printf("[%s] [INFO] 批量插入作品指标成功,数量: %d\n", time.Now().Format("2006-01-02 15:04:05"), len(workMetricsList)) + } + } + + zap.L().Info("Ayrshare 指标采集任务执行完成") + fmt.Printf("[%s] [INFO] Ayrshare 指标采集任务执行完成\n", time.Now().Format("2006-01-02 15:04:05")) +} + +// collectMediaMetricsForAyrshare 采集账号指标 +func collectMediaMetricsForAyrshare(ctx context.Context, dateCN int) ([]*cast.MediaMetricsDailyItem, error) { + metricsList := make([]*cast.MediaMetricsDailyItem, 0) + page := int32(1) + pageSize := int32(500) + fmt.Printf("[%s] [INFO] 开始采集账号指标\n", time.Now().Format("2006-01-02 15:04:05")) + + for { + // 获取状态为1的艺人AyrShare信息 + req := &cast.GetArtistAyrShareInfoReq{ + Status: 1, // 状态为1表示有效 + Page: page, + PageSize: pageSize, + } + resp, err := service.CastProvider.GetArtistAyrShareInfo(ctx, req) + if err != nil { + zap.L().Error("获取艺人AyrShare信息失败", zap.Error(err), zap.Int32("page", page)) + fmt.Printf("[%s] [ERROR] 获取艺人AyrShare信息失败,页码: %d, 错误: %v\n", time.Now().Format("2006-01-02 15:04:05"), page, err) + return metricsList, err + } + + if resp == nil || resp.Data == nil || len(resp.Data) == 0 { + break + } + + fmt.Printf("[%s] [INFO] 获取到第 %d 页艺人信息,数量: %d\n", time.Now().Format("2006-01-02 15:04:05"), page, len(resp.Data)) + + // 对每个艺人调用 GetSocialAnalytics + for _, artistInfo := range resp.Data { + if artistInfo.ProfileKey == "" { + zap.L().Warn("艺人ProfileKey为空,跳过", zap.String("artistUuid", artistInfo.ArtistUuid)) + fmt.Printf("[%s] [WARN] 艺人ProfileKey为空,跳过,artistUuid: %s\n", time.Now().Format("2006-01-02 15:04:05"), artistInfo.ArtistUuid) + continue + } + + // 调用 GetSocialAnalytics,平台为 ["instagram", "tiktok"] + socialReq := &aryshare.GetSocialAnalyticsRequest{ + Platforms: []string{"instagram", "tiktok"}, + ProfileKey: artistInfo.ProfileKey, + } + socialResp, err := service.AyrshareProvider.GetSocialAnalytics(ctx, socialReq) + if err != nil { + zap.L().Warn("获取社交分析数据失败", zap.Error(err), zap.String("profileKey", artistInfo.ProfileKey)) + fmt.Printf("[%s] [WARN] 获取社交分析数据失败,profileKey: %s, 错误: %v\n", time.Now().Format("2006-01-02 15:04:05"), artistInfo.ProfileKey, err) + continue + } + + fmt.Println("socialResp", socialResp) + + // 解析 JSON 数据并构建指标 + items := parseSocialAnalyticsToMediaMetricsForAyrshare(socialResp, artistInfo, dateCN) + metricsList = append(metricsList, items...) + + // 避免请求过于频繁 + time.Sleep(200 * time.Millisecond) + } + + // 如果返回的数据少于 pageSize,说明已经是最后一页 + if len(resp.Data) < int(pageSize) { + break + } + page++ + } + + fmt.Printf("[%s] [INFO] 账号指标采集完成,共采集 %d 条\n", time.Now().Format("2006-01-02 15:04:05"), len(metricsList)) + fmt.Println("metricsList", metricsList) + return metricsList, nil +} + +// parseSocialAnalyticsToMediaMetricsForAyrshare 解析社交分析数据并转换为媒体指标 +func parseSocialAnalyticsToMediaMetricsForAyrshare(socialResp *aryshare.GetSocialAnalyticsResponse, artistInfo *cast.ArtistAyrShareInfo, dateCN int) []*cast.MediaMetricsDailyItem { + items := make([]*cast.MediaMetricsDailyItem, 0) + + // 解析 Instagram 数据 + if socialResp.Instagram != "" { + // 调试:打印 Instagram JSON 字符串的前500字符 + instaPreview := socialResp.Instagram + if len(instaPreview) > 500 { + instaPreview = instaPreview[:500] + "..." + } + fmt.Printf("[%s] [DEBUG] Instagram JSON 字符串预览: %s\n", time.Now().Format("2006-01-02 15:04:05"), instaPreview) + + item := parsePlatformDataForAyrshare(socialResp.Instagram, "instagram", artistInfo, dateCN) + if item != nil { + items = append(items, item) + fmt.Printf("[%s] [INFO] 解析 Instagram 账号指标成功,艺人: %s\n", time.Now().Format("2006-01-02 15:04:05"), artistInfo.ArtistUuid) + } + } + + // 解析 TikTok 数据 + if socialResp.Tiktok != "" { + // 调试:打印 TikTok JSON 字符串的前500字符 + tiktokPreview := socialResp.Tiktok + if len(tiktokPreview) > 500 { + tiktokPreview = tiktokPreview[:500] + "..." + } + fmt.Printf("[%s] [DEBUG] TikTok JSON 字符串预览: %s\n", time.Now().Format("2006-01-02 15:04:05"), tiktokPreview) + + item := parsePlatformDataForAyrshare(socialResp.Tiktok, "tiktok", artistInfo, dateCN) + if item != nil { + items = append(items, item) + fmt.Printf("[%s] [INFO] 解析 TikTok 账号指标成功,艺人: %s\n", time.Now().Format("2006-01-02 15:04:05"), artistInfo.ArtistUuid) + } + } + + fmt.Println("items", items) + fmt.Println("items length", len(items)) + + return items +} + +// parsePlatformDataForAyrshare 解析平台数据(JSON格式) +func parsePlatformDataForAyrshare(jsonData, platform string, artistInfo *cast.ArtistAyrShareInfo, dateCN int) *cast.MediaMetricsDailyItem { + // 调试:打印原始 JSON 数据(截取前500字符避免日志过长) + jsonPreview := jsonData + fmt.Printf("parsePlatformDataForAyrshare 原始 JSON 数据: %s\n", jsonPreview) + + var rootData map[string]interface{} + if err := json.Unmarshal([]byte(jsonData), &rootData); err != nil { + zap.L().Warn("解析平台数据失败", zap.Error(err), zap.String("platform", platform)) + fmt.Printf("parsePlatformDataForAyrshare 解析平台数据失败,平台: %s, 错误: %v\n", platform, err) + return nil + } + + // 调试:打印根数据的所有 key + rootKeys := make([]string, 0, len(rootData)) + for k := range rootData { + rootKeys = append(rootKeys, k) + } + fmt.Printf("parsePlatformDataForAyrshare 根数据字段: %v\n", rootKeys) + + // 根据平台映射平台ID:1 TikTok, 3 Instagram + var platformID uint32 + if platform == "tiktok" { + platformID = 1 + } else if platform == "instagram" { + platformID = 3 + } else { + return nil + } + + // 从根数据中提取 analytics 对象,实际数据在 analytics 字段下 + var analyticsData map[string]interface{} + if analyticsVal, ok := rootData["analytics"]; ok { + if analyticsMap, ok := analyticsVal.(map[string]interface{}); ok { + analyticsData = analyticsMap + } else { + fmt.Printf("parsePlatformDataForAyrshare analytics 字段类型不正确: %T\n", analyticsVal) + } + } else { + fmt.Printf("[%s] [WARN] %s 根数据中没有找到 analytics 字段\n", time.Now().Format("2006-01-02 15:04:05"), platform) + } + + // 如果没有 analytics 字段,尝试直接从根数据提取(兼容旧格式) + if analyticsData == nil { + analyticsData = rootData + fmt.Printf("parsePlatformDataForAyrshare 使用根数据作为 analytics 数据\n") + } + + // 调试:打印 analytics 数据的所有 key,帮助诊断字段名 + if len(analyticsData) > 0 { + keys := make([]string, 0, len(analyticsData)) + for k := range analyticsData { + keys = append(keys, k) + } + fmt.Printf("parsePlatformDataForAyrshare analytics 数据字段: %v\n", keys) + } else { + fmt.Printf("parsePlatformDataForAyrshare analytics 数据为空\n") + } + + // 提取指标数据(根据 Ayrshare API 的实际返回结构) + // Instagram 字段:followersCount, likeCount, mediaCount, viewsCount, commentsCount + // TikTok 字段:videoCountTotal, viewCountTotal, commentCountTotal, shareCountTotal + item := &cast.MediaMetricsDailyItem{ + Uuid: uuid.NewString(), + ArtistUuid: artistInfo.ArtistUuid, + MediaAccUserID: "", // MediaAccUserID 需要通过其他接口获取,暂时留空 + MediaName: "", // MediaName 需要通过其他接口获取,暂时留空 + ArtistName: "", // ArtistName 需要通过其他接口获取,暂时留空 + ArtistPhone: "", // ArtistPhone 需要通过其他接口获取,暂时留空 + PlatformID: platformID, + Date: int32(dateCN), + // 粉丝数:Instagram 使用 followsCount,TikTok 可能没有直接对应字段 + FansCount: extractInt64ForAyrshare(analyticsData, "followsCount", "followersCount", "followers", "followerCount", "fans", "fanCount"), + // 观看量:Instagram 使用 viewsCount,TikTok 使用 viewCountTotal + ViewsCount: extractInt64ForAyrshare(analyticsData, "viewCountTotal", "viewsCount", "views", "viewCount", "viewCountPeriod"), + // 点赞数:Instagram 使用 likeCount + LikesCount: extractInt64ForAyrshare(analyticsData, "likeCount", "likes", "likesCount", "likeCountTotal"), + // 评论数:Instagram 使用 commentsCount,TikTok 使用 commentCountTotal + CommentsCount: extractInt64ForAyrshare(analyticsData, "commentCountTotal", "commentsCount", "comments", "commentCount", "commentCountPeriod"), + // 分享数:Instagram 使用 reachCount,TikTok 使用 shareCountTotal + SharesCount: extractInt64ForAyrshare(analyticsData, "shareCountTotal", "shares", "shareCount", "sharesCount", "shareCountPeriod"), + // 视频数:Instagram 使用 mediaCount,TikTok 使用 videoCountTotal + VideoCount: extractInt64ForAyrshare(analyticsData, "mediaCount", "videoCountTotal", "videos", "videoCount", "videosCount"), + // 图片/媒体数:Instagram 可能没有直接对应字段,使用 posts 等 + ImageCount: extractInt64ForAyrshare(analyticsData, "posts", "postCount", "postsCount", "images", "imageCount", "imagesCount"), + } + + // 调试:打印提取到的指标值 + fmt.Printf("parsePlatformDataForAyrshare 提取的指标 - 粉丝数: %d, 观看量: %d, 点赞数: %d, 评论数: %d, 分享数: %d, 视频数: %d, 图片数: %d\n", + item.FansCount, item.ViewsCount, item.LikesCount, item.CommentsCount, item.SharesCount, item.VideoCount, item.ImageCount) + + return item +} + +// extractInt64ForAyrshare 从 map 中提取 int64 值,尝试多个可能的 key +// getMapKeys 获取 map 的所有键,用于调试 +func getMapKeys(m map[string]interface{}) []string { + keys := make([]string, 0, len(m)) + for k := range m { + keys = append(keys, k) + } + return keys +} + +func extractInt64ForAyrshare(data map[string]interface{}, keys ...string) int64 { + for _, key := range keys { + if val, ok := data[key]; ok { + // 调试:打印找到的字段和值 + fmt.Printf("extractInt64ForAyrshare 找到字段 %s, 值: %v, 类型: %T\n", key, val, val) + switch v := val.(type) { + case float64: + return int64(v) + case int64: + return v + case int: + return int64(v) + case int32: + return int64(v) + case string: + // 如果是字符串,尝试解析为数字 + if key == "viewCountPeriod" || key == "commentCountPeriod" || key == "shareCountPeriod" { + // 这些字段是字符串,跳过 + continue + } + // 尝试将字符串解析为数字 + if num, err := strconv.ParseInt(v, 10, 64); err == nil { + return num + } + if num, err := strconv.ParseFloat(v, 64); err == nil { + return int64(num) + } + } + } + } + return 0 +} + +// collectWorkMetricsForAyrshare 采集作品指标 +func collectWorkMetricsForAyrshare(ctx context.Context, dateCN int) ([]*cast.WorkMetricsDailyItem, error) { + metricsList := make([]*cast.WorkMetricsDailyItem, 0) + fmt.Printf("[%s] [INFO] 开始采集作品指标\n", time.Now().Format("2006-01-02 15:04:05")) + + // 调用 ListWorkPlatformInfo,PlatformIDs=[1,3], PublishMediaStatus=2, PageSize=99999999 + req := &cast.ListWorkPlatformInfoReq{ + PlatformIDs: []uint32{1, 3}, // 1 TikTok, 3 Instagram + PublishMediaStatus: 2, // 状态为2 + Page: 1, + PageSize: 99999999, + } + resp, err := service.CastProvider.ListWorkPlatformInfo(ctx, req) + if err != nil { + return metricsList, err + } + + fmt.Println("--------------------------------") + fmt.Println("66666666666666666666666666666") + fmt.Println("resp", resp) + fmt.Println("66666666666666666666666666666") + fmt.Println("--------------------------------") + + if resp == nil || resp.Data == nil || len(resp.Data) == 0 { + zap.L().Info("没有作品平台信息") + return metricsList, nil + } + + // 对每个作品调用 GetPostAnalytics + for _, platformInfo := range resp.Data { + if platformInfo.PublishMediaID == "" || platformInfo.WorkUuid == "" { + continue + } + + // 只处理 TikTok(1) 和 Instagram(3) 平台 + if platformInfo.PlatformID != 1 && platformInfo.PlatformID != 3 { + continue + } + + // 通过 ArtistUuid 获取艺人的 AyrShare 信息,获取 profileKey + artistAyrShareReq := &cast.GetArtistAyrShareInfoReq{ + ArtistUuid: platformInfo.ArtistUuid, + Status: 1, // 状态为1表示有效 + Page: 1, + PageSize: 1, + } + artistAyrShareResp, err := service.CastProvider.GetArtistAyrShareInfo(ctx, artistAyrShareReq) + if err != nil || artistAyrShareResp == nil || len(artistAyrShareResp.Data) == 0 { + zap.L().Warn("获取艺人AyrShare信息失败", zap.Error(err), zap.String("artistUuid", platformInfo.ArtistUuid)) + fmt.Printf("collectWorkMetricsForAyrshare 获取艺人AyrShare信息失败,artistUuid: %s, 错误: %v\n", platformInfo.ArtistUuid, err) + continue + } + + profileKey := artistAyrShareResp.Data[0].ProfileKey + if profileKey == "" { + zap.L().Warn("作品ProfileKey为空,跳过", zap.String("workUuid", platformInfo.WorkUuid)) + fmt.Printf("collectWorkMetricsForAyrshare 作品ProfileKey为空,跳过,workUuid: %s\n", platformInfo.WorkUuid) + continue + } + + // 调用 GetPostAnalytics 接口 + var postReq *aryshare.GetPostAnalyticsRequest + if platformInfo.PlatformID == 1 { + // TikTok 平台 + postReq = &aryshare.GetPostAnalyticsRequest{ + Id: platformInfo.PublishMediaID, + Platforms: []string{"tiktok"}, + ProfileKey: profileKey, + } + } else if platformInfo.PlatformID == 3 { + // Instagram 平台 + postReq = &aryshare.GetPostAnalyticsRequest{ + Id: platformInfo.PublishMediaID, + Platforms: []string{"instagram"}, + ProfileKey: profileKey, + } + } + + postResp, err := service.AyrshareProvider.GetPostAnalytics(ctx, postReq) + fmt.Println("--------------------------------") + fmt.Println("postResp", postResp) + fmt.Println("--------------------------------") + if err != nil { + zap.L().Warn("获取作品分析数据失败", zap.Error(err), zap.String("publishMediaID", platformInfo.PublishMediaID)) + fmt.Printf("collectWorkMetricsForAyrshare 获取作品分析数据失败,publishMediaID: %s, 错误: %v\n", platformInfo.PublishMediaID, err) + continue + } + + // 解析作品分析数据并构建指标 + item := parsePostAnalyticsToWorkMetricsForAyrshare(postResp, platformInfo, dateCN) + if item != nil { + fmt.Println("--------------------------------") + fmt.Println("test") + fmt.Println("item", item) + fmt.Println("--------------------------------") + metricsList = append(metricsList, item) + fmt.Printf("collectWorkMetricsForAyrshare 解析作品指标成功,workUuid: %s, platformID: %d\n", platformInfo.WorkUuid, platformInfo.PlatformID) + } + + // 避免请求过于频繁 + time.Sleep(200 * time.Millisecond) + } + + fmt.Println("--------------------------------") + fmt.Println("metricsList", metricsList) + fmt.Println("--------------------------------") + + fmt.Printf("collectWorkMetricsForAyrshare 作品指标采集完成,共采集 %d 条\n", len(metricsList)) + return metricsList, nil +} + +// parsePostAnalyticsToWorkMetricsForAyrshare 解析作品分析数据并转换为作品指标 +func parsePostAnalyticsToWorkMetricsForAyrshare(postResp *aryshare.GetPostAnalyticsResponse, platformInfo *cast.WorkPlatformInfo, dateCN int) *cast.WorkMetricsDailyItem { + fmt.Println("--------------------------------") + fmt.Println("44444444444444444444444444444") + fmt.Println("platformInfo", platformInfo) + fmt.Println("44444444444444444444444444444") + fmt.Println("--------------------------------") + // 根据平台ID选择对应的 JSON 数据 + var jsonData string + if platformInfo.PlatformID == 1 { // TikTok + jsonData = postResp.Tiktok + } else if platformInfo.PlatformID == 3 { // Instagram + jsonData = postResp.Instagram + } else { + return nil + } + + if jsonData == "" { + return nil + } + + // 解析 JSON 数据 + var rootData map[string]interface{} + if err := json.Unmarshal([]byte(jsonData), &rootData); err != nil { + zap.L().Warn("解析作品分析数据失败", zap.Error(err)) + fmt.Printf("parsePostAnalyticsToWorkMetricsForAyrshare 解析作品分析数据失败,workUuid: %s, 错误: %v\n", platformInfo.WorkUuid, err) + return nil + } + + // 调试:打印根数据的键 + fmt.Printf("[DEBUG] 根数据包含的键: %v\n", getMapKeys(rootData)) + + // 从根数据中提取 analytics 对象,实际数据可能在 analytics 字段下 + var analyticsData map[string]interface{} + if analyticsVal, ok := rootData["analytics"]; ok { + if analyticsMap, ok := analyticsVal.(map[string]interface{}); ok { + analyticsData = analyticsMap + fmt.Printf("analytics 字段提取数据,包含的键: %v\n", getMapKeys(analyticsData)) + } + } + + // 如果没有 analytics 字段,尝试直接从根数据提取(兼容旧格式) + if analyticsData == nil { + analyticsData = rootData + fmt.Printf("parsePostAnalyticsToWorkMetricsForAyrshare 使用根数据作为 analyticsData,包含的键: %v\n", getMapKeys(analyticsData)) + } + + // 构建作品指标项,使用 ListWorkPlatformInfo 返回的字段信息 + item := &cast.WorkMetricsDailyItem{ + Uuid: uuid.NewString(), + WorkUuid: platformInfo.WorkUuid, + ArtistUuid: platformInfo.ArtistUuid, + MediaAccUserID: platformInfo.PlatformUserID, // 使用平台用户ID + MediaName: platformInfo.PlatformUserName, // 平台用户名 + ArtistName: platformInfo.ArtistName, // 艺人名字 + ArtistPhone: platformInfo.ArtistPhone, // 艺人手机号 + PlatformID: platformInfo.PlatformID, + Date: int32(dateCN), + } + + // 根据平台ID使用不同的字段提取逻辑 + if platformInfo.PlatformID == 3 { + // Instagram 平台 + // 访问量:使用 viewsCount + item.ViewsCount = extractInt64ForAyrshare(analyticsData, "viewsCount", "viewCount", "views") + // 点赞数:使用 likeCount + item.LikesCount = extractInt64ForAyrshare(analyticsData, "likeCount", "likes", "likesCount") + // 评论数:Instagram 可能没有评论数字段,尝试多种可能 + item.CommentsCount = extractInt64ForAyrshare(analyticsData, "commentsCount", "commentCount", "comments") + // 分享数:使用 sharesCount(注意是复数形式) + item.SharesCount = extractInt64ForAyrshare(analyticsData, "sharesCount", "shareCount", "shares") + + // 打印解析结果 + fmt.Printf("parsePostAnalyticsToWorkMetricsForAyrshare Instagram 作品指标解析完成 - workUuid: %s, 访问量: %d, 点赞数: %d, 评论数: %d, 分享数: %d\n", + platformInfo.WorkUuid, + item.ViewsCount, item.LikesCount, item.CommentsCount, item.SharesCount) + } else if platformInfo.PlatformID == 1 { + // TikTok 平台 + // 访问量:使用 viewCountTotal + item.ViewsCount = extractInt64ForAyrshare(analyticsData, "viewCountTotal", "viewCount", "views", "videoViews") + // 点赞数:使用 likeCount + item.LikesCount = extractInt64ForAyrshare(analyticsData, "likeCount", "likes", "likesCount") + // 评论数:使用 commentCountTotal + item.CommentsCount = extractInt64ForAyrshare(analyticsData, "commentCountTotal", "commentCount", "comments", "commentsCount") + // 分享数:使用 shareCountTotal + item.SharesCount = extractInt64ForAyrshare(analyticsData, "shareCountTotal", "shareCount", "shares", "sharesCount") + + // 打印解析结果 + fmt.Printf("parsePostAnalyticsToWorkMetricsForAyrshare TikTok 作品指标解析完成 - workUuid: %s, 访问量: %d, 点赞数: %d, 评论数: %d, 分享数: %d\n", + platformInfo.WorkUuid, + item.ViewsCount, item.LikesCount, item.CommentsCount, item.SharesCount) + } + + fmt.Println("--------------------------------") + fmt.Println("5555555555555555555555") + fmt.Println("item", item) + fmt.Println("5555555555555555555555") + fmt.Println("--------------------------------") + + return item +} From 2651af4f88c465973cc392f342695598d96caaf9 Mon Sep 17 00:00:00 2001 From: cjy Date: Thu, 18 Dec 2025 10:41:12 +0800 Subject: [PATCH 2/9] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=B2=A1=E6=9C=89?= =?UTF-8?q?=E6=8F=92=E5=85=A5=E8=87=AA=E5=AA=92=E4=BD=93=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/cast/cast.pb.go | 6377 +++++++++++++++++----------------- api/cast/cast.pb.validate.go | 239 +- api/cast/cast_triple.pb.go | 45 + pkg/service/cast/analysis.go | 40 + 4 files changed, 3586 insertions(+), 3115 deletions(-) diff --git a/api/cast/cast.pb.go b/api/cast/cast.pb.go index f018b63..ac42227 100644 --- a/api/cast/cast.pb.go +++ b/api/cast/cast.pb.go @@ -364,7 +364,7 @@ type MediaUserListReq struct { CreateEndDate string `protobuf:"bytes,9,opt,name=createEndDate,proto3" json:"createEndDate"` AuthStatus AuthStatusENUM `protobuf:"varint,10,opt,name=authStatus,proto3,enum=Cast.AuthStatusENUM" json:"authStatus"` MediaUserID string `protobuf:"bytes,11,opt,name=mediaUserID,proto3" json:"mediaUserID"` - NeedStat bool `protobuf:"varint,12,opt,name=needStat,proto3" json:"needStat"` + NeedStats bool `protobuf:"varint,12,opt,name=needStats,proto3" json:"needStats"` } func (x *MediaUserListReq) Reset() { @@ -476,9 +476,9 @@ func (x *MediaUserListReq) GetMediaUserID() string { return "" } -func (x *MediaUserListReq) GetNeedStat() bool { +func (x *MediaUserListReq) GetNeedStats() bool { if x != nil { - return x.NeedStat + return x.NeedStats } return false } @@ -1768,6 +1768,108 @@ func (x *MediaInfoResp) GetInfo() *MediaUserInfo { return nil } +type MediaInfoByPlatformReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ArtistUuid string `protobuf:"bytes,1,opt,name=artistUuid,proto3" json:"artistUuid"` + PlatformID PlatformIDENUM `protobuf:"varint,2,opt,name=platformID,proto3,enum=Cast.PlatformIDENUM" json:"platformID"` +} + +func (x *MediaInfoByPlatformReq) Reset() { + *x = MediaInfoByPlatformReq{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_fiee_cast_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MediaInfoByPlatformReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MediaInfoByPlatformReq) ProtoMessage() {} + +func (x *MediaInfoByPlatformReq) ProtoReflect() protoreflect.Message { + mi := &file_pb_fiee_cast_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MediaInfoByPlatformReq.ProtoReflect.Descriptor instead. +func (*MediaInfoByPlatformReq) Descriptor() ([]byte, []int) { + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{15} +} + +func (x *MediaInfoByPlatformReq) GetArtistUuid() string { + if x != nil { + return x.ArtistUuid + } + return "" +} + +func (x *MediaInfoByPlatformReq) GetPlatformID() PlatformIDENUM { + if x != nil { + return x.PlatformID + } + return PlatformIDENUM_UNKNOWN +} + +type MediaInfoByPlatformResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Info *MediaUserInfo `protobuf:"bytes,1,opt,name=info,proto3" json:"info"` +} + +func (x *MediaInfoByPlatformResp) Reset() { + *x = MediaInfoByPlatformResp{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_fiee_cast_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MediaInfoByPlatformResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MediaInfoByPlatformResp) ProtoMessage() {} + +func (x *MediaInfoByPlatformResp) ProtoReflect() protoreflect.Message { + mi := &file_pb_fiee_cast_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MediaInfoByPlatformResp.ProtoReflect.Descriptor instead. +func (*MediaInfoByPlatformResp) Descriptor() ([]byte, []int) { + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{16} +} + +func (x *MediaInfoByPlatformResp) GetInfo() *MediaUserInfo { + if x != nil { + return x.Info + } + return nil +} + type WorkListReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1798,7 +1900,7 @@ type WorkListReq struct { func (x *WorkListReq) Reset() { *x = WorkListReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[15] + mi := &file_pb_fiee_cast_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1811,7 +1913,7 @@ func (x *WorkListReq) String() string { func (*WorkListReq) ProtoMessage() {} func (x *WorkListReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[15] + mi := &file_pb_fiee_cast_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1824,7 +1926,7 @@ func (x *WorkListReq) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkListReq.ProtoReflect.Descriptor instead. func (*WorkListReq) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{15} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{17} } func (x *WorkListReq) GetArtistVal() string { @@ -1979,7 +2081,7 @@ type WorkListResp struct { func (x *WorkListResp) Reset() { *x = WorkListResp{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[16] + mi := &file_pb_fiee_cast_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1992,7 +2094,7 @@ func (x *WorkListResp) String() string { func (*WorkListResp) ProtoMessage() {} func (x *WorkListResp) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[16] + mi := &file_pb_fiee_cast_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2005,7 +2107,7 @@ func (x *WorkListResp) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkListResp.ProtoReflect.Descriptor instead. func (*WorkListResp) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{16} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{18} } func (x *WorkListResp) GetData() []*WorkListResp_Info { @@ -2033,7 +2135,7 @@ type WorkDetailReq struct { func (x *WorkDetailReq) Reset() { *x = WorkDetailReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[17] + mi := &file_pb_fiee_cast_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2046,7 +2148,7 @@ func (x *WorkDetailReq) String() string { func (*WorkDetailReq) ProtoMessage() {} func (x *WorkDetailReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[17] + mi := &file_pb_fiee_cast_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2059,7 +2161,7 @@ func (x *WorkDetailReq) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkDetailReq.ProtoReflect.Descriptor instead. func (*WorkDetailReq) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{17} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{19} } func (x *WorkDetailReq) GetWorkUuid() string { @@ -2087,7 +2189,7 @@ type WorkLogInfo struct { func (x *WorkLogInfo) Reset() { *x = WorkLogInfo{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[18] + mi := &file_pb_fiee_cast_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2100,7 +2202,7 @@ func (x *WorkLogInfo) String() string { func (*WorkLogInfo) ProtoMessage() {} func (x *WorkLogInfo) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[18] + mi := &file_pb_fiee_cast_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2113,7 +2215,7 @@ func (x *WorkLogInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkLogInfo.ProtoReflect.Descriptor instead. func (*WorkLogInfo) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{18} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{20} } func (x *WorkLogInfo) GetWorkUuid() string { @@ -2208,7 +2310,7 @@ type WorkDetailResp struct { func (x *WorkDetailResp) Reset() { *x = WorkDetailResp{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[19] + mi := &file_pb_fiee_cast_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2221,7 +2323,7 @@ func (x *WorkDetailResp) String() string { func (*WorkDetailResp) ProtoMessage() {} func (x *WorkDetailResp) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[19] + mi := &file_pb_fiee_cast_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2234,7 +2336,7 @@ func (x *WorkDetailResp) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkDetailResp.ProtoReflect.Descriptor instead. func (*WorkDetailResp) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{19} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{21} } func (x *WorkDetailResp) GetWorkUuid() string { @@ -2416,7 +2518,7 @@ type UpdateStatusReq struct { func (x *UpdateStatusReq) Reset() { *x = UpdateStatusReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[20] + mi := &file_pb_fiee_cast_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2429,7 +2531,7 @@ func (x *UpdateStatusReq) String() string { func (*UpdateStatusReq) ProtoMessage() {} func (x *UpdateStatusReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[20] + mi := &file_pb_fiee_cast_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2442,7 +2544,7 @@ func (x *UpdateStatusReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateStatusReq.ProtoReflect.Descriptor instead. func (*UpdateStatusReq) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{20} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{22} } func (x *UpdateStatusReq) GetWorkAction() WorkActionENUM { @@ -2512,7 +2614,7 @@ type MediaAccountsReq struct { func (x *MediaAccountsReq) Reset() { *x = MediaAccountsReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[21] + mi := &file_pb_fiee_cast_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2525,7 +2627,7 @@ func (x *MediaAccountsReq) String() string { func (*MediaAccountsReq) ProtoMessage() {} func (x *MediaAccountsReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[21] + mi := &file_pb_fiee_cast_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2538,7 +2640,7 @@ func (x *MediaAccountsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use MediaAccountsReq.ProtoReflect.Descriptor instead. func (*MediaAccountsReq) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{21} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{23} } func (x *MediaAccountsReq) GetArtistUuid() string { @@ -2559,7 +2661,7 @@ type MediaAccountsResp struct { func (x *MediaAccountsResp) Reset() { *x = MediaAccountsResp{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[22] + mi := &file_pb_fiee_cast_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2572,7 +2674,7 @@ func (x *MediaAccountsResp) String() string { func (*MediaAccountsResp) ProtoMessage() {} func (x *MediaAccountsResp) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[22] + mi := &file_pb_fiee_cast_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2585,7 +2687,7 @@ func (x *MediaAccountsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use MediaAccountsResp.ProtoReflect.Descriptor instead. func (*MediaAccountsResp) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{22} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{24} } func (x *MediaAccountsResp) GetData() []*MediaAccountsResp_Info { @@ -2608,7 +2710,7 @@ type MediaWorksReq struct { func (x *MediaWorksReq) Reset() { *x = MediaWorksReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[23] + mi := &file_pb_fiee_cast_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2621,7 +2723,7 @@ func (x *MediaWorksReq) String() string { func (*MediaWorksReq) ProtoMessage() {} func (x *MediaWorksReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[23] + mi := &file_pb_fiee_cast_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2634,7 +2736,7 @@ func (x *MediaWorksReq) ProtoReflect() protoreflect.Message { // Deprecated: Use MediaWorksReq.ProtoReflect.Descriptor instead. func (*MediaWorksReq) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{23} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{25} } func (x *MediaWorksReq) GetMediaAccountUuid() string { @@ -2670,7 +2772,7 @@ type MediaWorksResp struct { func (x *MediaWorksResp) Reset() { *x = MediaWorksResp{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[24] + mi := &file_pb_fiee_cast_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2683,7 +2785,7 @@ func (x *MediaWorksResp) String() string { func (*MediaWorksResp) ProtoMessage() {} func (x *MediaWorksResp) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[24] + mi := &file_pb_fiee_cast_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2696,7 +2798,7 @@ func (x *MediaWorksResp) ProtoReflect() protoreflect.Message { // Deprecated: Use MediaWorksResp.ProtoReflect.Descriptor instead. func (*MediaWorksResp) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{24} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{26} } func (x *MediaWorksResp) GetCount() int64 { @@ -2724,7 +2826,7 @@ type PublishReq struct { func (x *PublishReq) Reset() { *x = PublishReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[25] + mi := &file_pb_fiee_cast_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2737,7 +2839,7 @@ func (x *PublishReq) String() string { func (*PublishReq) ProtoMessage() {} func (x *PublishReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[25] + mi := &file_pb_fiee_cast_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2750,7 +2852,7 @@ func (x *PublishReq) ProtoReflect() protoreflect.Message { // Deprecated: Use PublishReq.ProtoReflect.Descriptor instead. func (*PublishReq) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{25} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{27} } func (x *PublishReq) GetWorkUuids() []string { @@ -2771,7 +2873,7 @@ type PublishResp struct { func (x *PublishResp) Reset() { *x = PublishResp{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[26] + mi := &file_pb_fiee_cast_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2784,7 +2886,7 @@ func (x *PublishResp) String() string { func (*PublishResp) ProtoMessage() {} func (x *PublishResp) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[26] + mi := &file_pb_fiee_cast_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2797,7 +2899,7 @@ func (x *PublishResp) ProtoReflect() protoreflect.Message { // Deprecated: Use PublishResp.ProtoReflect.Descriptor instead. func (*PublishResp) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{26} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{28} } func (x *PublishResp) GetData() []*PublishResp_Info { @@ -2820,7 +2922,7 @@ type RePublishReq struct { func (x *RePublishReq) Reset() { *x = RePublishReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[27] + mi := &file_pb_fiee_cast_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2833,7 +2935,7 @@ func (x *RePublishReq) String() string { func (*RePublishReq) ProtoMessage() {} func (x *RePublishReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[27] + mi := &file_pb_fiee_cast_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2846,7 +2948,7 @@ func (x *RePublishReq) ProtoReflect() protoreflect.Message { // Deprecated: Use RePublishReq.ProtoReflect.Descriptor instead. func (*RePublishReq) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{27} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{29} } func (x *RePublishReq) GetWorkUuid() string { @@ -2882,7 +2984,7 @@ type RePublishResp struct { func (x *RePublishResp) Reset() { *x = RePublishResp{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[28] + mi := &file_pb_fiee_cast_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2895,7 +2997,7 @@ func (x *RePublishResp) String() string { func (*RePublishResp) ProtoMessage() {} func (x *RePublishResp) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[28] + mi := &file_pb_fiee_cast_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2908,7 +3010,7 @@ func (x *RePublishResp) ProtoReflect() protoreflect.Message { // Deprecated: Use RePublishResp.ProtoReflect.Descriptor instead. func (*RePublishResp) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{28} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{30} } func (x *RePublishResp) GetArtistUuid() string { @@ -2936,7 +3038,7 @@ type DelWorkReq struct { func (x *DelWorkReq) Reset() { *x = DelWorkReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[29] + mi := &file_pb_fiee_cast_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2949,7 +3051,7 @@ func (x *DelWorkReq) String() string { func (*DelWorkReq) ProtoMessage() {} func (x *DelWorkReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[29] + mi := &file_pb_fiee_cast_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2962,7 +3064,7 @@ func (x *DelWorkReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DelWorkReq.ProtoReflect.Descriptor instead. func (*DelWorkReq) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{29} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{31} } func (x *DelWorkReq) GetWorkUuid() string { @@ -2983,7 +3085,7 @@ type WorkInfoReq struct { func (x *WorkInfoReq) Reset() { *x = WorkInfoReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[30] + mi := &file_pb_fiee_cast_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2996,7 +3098,7 @@ func (x *WorkInfoReq) String() string { func (*WorkInfoReq) ProtoMessage() {} func (x *WorkInfoReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[30] + mi := &file_pb_fiee_cast_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3009,7 +3111,7 @@ func (x *WorkInfoReq) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkInfoReq.ProtoReflect.Descriptor instead. func (*WorkInfoReq) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{30} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{32} } func (x *WorkInfoReq) GetWorkUuid() string { @@ -3035,7 +3137,7 @@ type WorkInfoResp struct { func (x *WorkInfoResp) Reset() { *x = WorkInfoResp{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[31] + mi := &file_pb_fiee_cast_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3048,7 +3150,7 @@ func (x *WorkInfoResp) String() string { func (*WorkInfoResp) ProtoMessage() {} func (x *WorkInfoResp) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[31] + mi := &file_pb_fiee_cast_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3061,7 +3163,7 @@ func (x *WorkInfoResp) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkInfoResp.ProtoReflect.Descriptor instead. func (*WorkInfoResp) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{31} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{33} } func (x *WorkInfoResp) GetWorkStatus() uint32 { @@ -3117,7 +3219,7 @@ type ArtistInfoReq struct { func (x *ArtistInfoReq) Reset() { *x = ArtistInfoReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[32] + mi := &file_pb_fiee_cast_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3130,7 +3232,7 @@ func (x *ArtistInfoReq) String() string { func (*ArtistInfoReq) ProtoMessage() {} func (x *ArtistInfoReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[32] + mi := &file_pb_fiee_cast_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3143,7 +3245,7 @@ func (x *ArtistInfoReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ArtistInfoReq.ProtoReflect.Descriptor instead. func (*ArtistInfoReq) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{32} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{34} } func (x *ArtistInfoReq) GetArtistUuid() string { @@ -3167,7 +3269,7 @@ type ArtistInfoResp struct { func (x *ArtistInfoResp) Reset() { *x = ArtistInfoResp{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[33] + mi := &file_pb_fiee_cast_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3180,7 +3282,7 @@ func (x *ArtistInfoResp) String() string { func (*ArtistInfoResp) ProtoMessage() {} func (x *ArtistInfoResp) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[33] + mi := &file_pb_fiee_cast_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3193,7 +3295,7 @@ func (x *ArtistInfoResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ArtistInfoResp.ProtoReflect.Descriptor instead. func (*ArtistInfoResp) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{33} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{35} } func (x *ArtistInfoResp) GetTikTokEffectiveCount() uint32 { @@ -3235,7 +3337,7 @@ type ImportWorkBatchReq struct { func (x *ImportWorkBatchReq) Reset() { *x = ImportWorkBatchReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[34] + mi := &file_pb_fiee_cast_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3248,7 +3350,7 @@ func (x *ImportWorkBatchReq) String() string { func (*ImportWorkBatchReq) ProtoMessage() {} func (x *ImportWorkBatchReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[34] + mi := &file_pb_fiee_cast_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3261,7 +3363,7 @@ func (x *ImportWorkBatchReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ImportWorkBatchReq.ProtoReflect.Descriptor instead. func (*ImportWorkBatchReq) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{34} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{36} } func (x *ImportWorkBatchReq) GetImageWorks() []*UpdateWorkImageReq { @@ -3284,7 +3386,7 @@ type ImportWorkBatchResp struct { func (x *ImportWorkBatchResp) Reset() { *x = ImportWorkBatchResp{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[35] + mi := &file_pb_fiee_cast_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3297,7 +3399,7 @@ func (x *ImportWorkBatchResp) String() string { func (*ImportWorkBatchResp) ProtoMessage() {} func (x *ImportWorkBatchResp) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[35] + mi := &file_pb_fiee_cast_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3310,7 +3412,7 @@ func (x *ImportWorkBatchResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ImportWorkBatchResp.ProtoReflect.Descriptor instead. func (*ImportWorkBatchResp) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{35} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{37} } func (x *ImportWorkBatchResp) GetImageWorks() []*UpdateWorkImageReq { @@ -3353,7 +3455,7 @@ type PlatformInfo struct { func (x *PlatformInfo) Reset() { *x = PlatformInfo{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[36] + mi := &file_pb_fiee_cast_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3366,7 +3468,7 @@ func (x *PlatformInfo) String() string { func (*PlatformInfo) ProtoMessage() {} func (x *PlatformInfo) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[36] + mi := &file_pb_fiee_cast_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3379,7 +3481,7 @@ func (x *PlatformInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use PlatformInfo.ProtoReflect.Descriptor instead. func (*PlatformInfo) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{36} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{38} } func (x *PlatformInfo) GetWorkUuid() string { @@ -3456,7 +3558,7 @@ type UpdateWorkPlatformInfoReq struct { func (x *UpdateWorkPlatformInfoReq) Reset() { *x = UpdateWorkPlatformInfoReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[37] + mi := &file_pb_fiee_cast_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3469,7 +3571,7 @@ func (x *UpdateWorkPlatformInfoReq) String() string { func (*UpdateWorkPlatformInfoReq) ProtoMessage() {} func (x *UpdateWorkPlatformInfoReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[37] + mi := &file_pb_fiee_cast_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3482,7 +3584,7 @@ func (x *UpdateWorkPlatformInfoReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateWorkPlatformInfoReq.ProtoReflect.Descriptor instead. func (*UpdateWorkPlatformInfoReq) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{37} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{39} } func (x *UpdateWorkPlatformInfoReq) GetPlatformInfoData() []*PlatformInfo { @@ -3503,7 +3605,7 @@ type UpdateWorkPlatformInfoResp struct { func (x *UpdateWorkPlatformInfoResp) Reset() { *x = UpdateWorkPlatformInfoResp{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[38] + mi := &file_pb_fiee_cast_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3516,7 +3618,7 @@ func (x *UpdateWorkPlatformInfoResp) String() string { func (*UpdateWorkPlatformInfoResp) ProtoMessage() {} func (x *UpdateWorkPlatformInfoResp) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[38] + mi := &file_pb_fiee_cast_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3529,7 +3631,7 @@ func (x *UpdateWorkPlatformInfoResp) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateWorkPlatformInfoResp.ProtoReflect.Descriptor instead. func (*UpdateWorkPlatformInfoResp) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{38} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{40} } func (x *UpdateWorkPlatformInfoResp) GetWorkUuid() []string { @@ -3553,7 +3655,7 @@ type UpdateWorkPublishLogReq struct { func (x *UpdateWorkPublishLogReq) Reset() { *x = UpdateWorkPublishLogReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[39] + mi := &file_pb_fiee_cast_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3566,7 +3668,7 @@ func (x *UpdateWorkPublishLogReq) String() string { func (*UpdateWorkPublishLogReq) ProtoMessage() {} func (x *UpdateWorkPublishLogReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[39] + mi := &file_pb_fiee_cast_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3579,7 +3681,7 @@ func (x *UpdateWorkPublishLogReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateWorkPublishLogReq.ProtoReflect.Descriptor instead. func (*UpdateWorkPublishLogReq) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{39} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{41} } func (x *UpdateWorkPublishLogReq) GetWorkUuid() string { @@ -3621,7 +3723,7 @@ type RefreshWorkListReq struct { func (x *RefreshWorkListReq) Reset() { *x = RefreshWorkListReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[40] + mi := &file_pb_fiee_cast_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3634,7 +3736,7 @@ func (x *RefreshWorkListReq) String() string { func (*RefreshWorkListReq) ProtoMessage() {} func (x *RefreshWorkListReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[40] + mi := &file_pb_fiee_cast_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3647,7 +3749,7 @@ func (x *RefreshWorkListReq) ProtoReflect() protoreflect.Message { // Deprecated: Use RefreshWorkListReq.ProtoReflect.Descriptor instead. func (*RefreshWorkListReq) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{40} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{42} } func (x *RefreshWorkListReq) GetPublishStatus() uint32 { @@ -3668,7 +3770,7 @@ type RefreshWorkListResp struct { func (x *RefreshWorkListResp) Reset() { *x = RefreshWorkListResp{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[41] + mi := &file_pb_fiee_cast_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3681,7 +3783,7 @@ func (x *RefreshWorkListResp) String() string { func (*RefreshWorkListResp) ProtoMessage() {} func (x *RefreshWorkListResp) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[41] + mi := &file_pb_fiee_cast_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3694,7 +3796,7 @@ func (x *RefreshWorkListResp) ProtoReflect() protoreflect.Message { // Deprecated: Use RefreshWorkListResp.ProtoReflect.Descriptor instead. func (*RefreshWorkListResp) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{41} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{43} } func (x *RefreshWorkListResp) GetData() []*RefreshWorkListResp_Info { @@ -3715,7 +3817,7 @@ type OAuthAccountReq struct { func (x *OAuthAccountReq) Reset() { *x = OAuthAccountReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[42] + mi := &file_pb_fiee_cast_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3728,7 +3830,7 @@ func (x *OAuthAccountReq) String() string { func (*OAuthAccountReq) ProtoMessage() {} func (x *OAuthAccountReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[42] + mi := &file_pb_fiee_cast_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3741,7 +3843,7 @@ func (x *OAuthAccountReq) ProtoReflect() protoreflect.Message { // Deprecated: Use OAuthAccountReq.ProtoReflect.Descriptor instead. func (*OAuthAccountReq) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{42} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{44} } func (x *OAuthAccountReq) GetMediaAccountUuid() string { @@ -3762,7 +3864,7 @@ type OAuthAccountResp struct { func (x *OAuthAccountResp) Reset() { *x = OAuthAccountResp{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[43] + mi := &file_pb_fiee_cast_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3775,7 +3877,7 @@ func (x *OAuthAccountResp) String() string { func (*OAuthAccountResp) ProtoMessage() {} func (x *OAuthAccountResp) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[43] + mi := &file_pb_fiee_cast_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3788,7 +3890,7 @@ func (x *OAuthAccountResp) ProtoReflect() protoreflect.Message { // Deprecated: Use OAuthAccountResp.ProtoReflect.Descriptor instead. func (*OAuthAccountResp) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{43} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{45} } func (x *OAuthAccountResp) GetUrl() string { @@ -3809,7 +3911,7 @@ type OAuthAccountV2Req struct { func (x *OAuthAccountV2Req) Reset() { *x = OAuthAccountV2Req{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[44] + mi := &file_pb_fiee_cast_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3822,7 +3924,7 @@ func (x *OAuthAccountV2Req) String() string { func (*OAuthAccountV2Req) ProtoMessage() {} func (x *OAuthAccountV2Req) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[44] + mi := &file_pb_fiee_cast_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3835,7 +3937,7 @@ func (x *OAuthAccountV2Req) ProtoReflect() protoreflect.Message { // Deprecated: Use OAuthAccountV2Req.ProtoReflect.Descriptor instead. func (*OAuthAccountV2Req) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{44} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{46} } func (x *OAuthAccountV2Req) GetMediaAccountUuid() string { @@ -3859,7 +3961,7 @@ type OAuthAccountV2Resp struct { func (x *OAuthAccountV2Resp) Reset() { *x = OAuthAccountV2Resp{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[45] + mi := &file_pb_fiee_cast_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3872,7 +3974,7 @@ func (x *OAuthAccountV2Resp) String() string { func (*OAuthAccountV2Resp) ProtoMessage() {} func (x *OAuthAccountV2Resp) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[45] + mi := &file_pb_fiee_cast_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3885,7 +3987,7 @@ func (x *OAuthAccountV2Resp) ProtoReflect() protoreflect.Message { // Deprecated: Use OAuthAccountV2Resp.ProtoReflect.Descriptor instead. func (*OAuthAccountV2Resp) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{45} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{47} } func (x *OAuthAccountV2Resp) GetArtistUuid() string { @@ -3929,7 +4031,7 @@ type OAuthYoutubeTokenReq struct { func (x *OAuthYoutubeTokenReq) Reset() { *x = OAuthYoutubeTokenReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[46] + mi := &file_pb_fiee_cast_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3942,7 +4044,7 @@ func (x *OAuthYoutubeTokenReq) String() string { func (*OAuthYoutubeTokenReq) ProtoMessage() {} func (x *OAuthYoutubeTokenReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[46] + mi := &file_pb_fiee_cast_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3955,7 +4057,7 @@ func (x *OAuthYoutubeTokenReq) ProtoReflect() protoreflect.Message { // Deprecated: Use OAuthYoutubeTokenReq.ProtoReflect.Descriptor instead. func (*OAuthYoutubeTokenReq) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{46} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{48} } func (x *OAuthYoutubeTokenReq) GetMediaAccountUuid() string { @@ -3985,7 +4087,7 @@ type OAuthYoutubeTokenResp struct { func (x *OAuthYoutubeTokenResp) Reset() { *x = OAuthYoutubeTokenResp{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[47] + mi := &file_pb_fiee_cast_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3998,7 +4100,7 @@ func (x *OAuthYoutubeTokenResp) String() string { func (*OAuthYoutubeTokenResp) ProtoMessage() {} func (x *OAuthYoutubeTokenResp) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[47] + mi := &file_pb_fiee_cast_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4011,7 +4113,7 @@ func (x *OAuthYoutubeTokenResp) ProtoReflect() protoreflect.Message { // Deprecated: Use OAuthYoutubeTokenResp.ProtoReflect.Descriptor instead. func (*OAuthYoutubeTokenResp) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{47} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{49} } func (x *OAuthYoutubeTokenResp) GetAccessToken() string { @@ -4048,7 +4150,7 @@ type OAuthCodeToTokenReq struct { func (x *OAuthCodeToTokenReq) Reset() { *x = OAuthCodeToTokenReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[48] + mi := &file_pb_fiee_cast_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4061,7 +4163,7 @@ func (x *OAuthCodeToTokenReq) String() string { func (*OAuthCodeToTokenReq) ProtoMessage() {} func (x *OAuthCodeToTokenReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[48] + mi := &file_pb_fiee_cast_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4074,7 +4176,7 @@ func (x *OAuthCodeToTokenReq) ProtoReflect() protoreflect.Message { // Deprecated: Use OAuthCodeToTokenReq.ProtoReflect.Descriptor instead. func (*OAuthCodeToTokenReq) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{48} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{50} } func (x *OAuthCodeToTokenReq) GetCode() string { @@ -4107,7 +4209,7 @@ type OAuthCodeToTokenResp struct { func (x *OAuthCodeToTokenResp) Reset() { *x = OAuthCodeToTokenResp{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[49] + mi := &file_pb_fiee_cast_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4120,7 +4222,7 @@ func (x *OAuthCodeToTokenResp) String() string { func (*OAuthCodeToTokenResp) ProtoMessage() {} func (x *OAuthCodeToTokenResp) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[49] + mi := &file_pb_fiee_cast_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4133,7 +4235,7 @@ func (x *OAuthCodeToTokenResp) ProtoReflect() protoreflect.Message { // Deprecated: Use OAuthCodeToTokenResp.ProtoReflect.Descriptor instead. func (*OAuthCodeToTokenResp) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{49} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{51} } type UpdateOAuthReq struct { @@ -4147,7 +4249,7 @@ type UpdateOAuthReq struct { func (x *UpdateOAuthReq) Reset() { *x = UpdateOAuthReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[50] + mi := &file_pb_fiee_cast_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4160,7 +4262,7 @@ func (x *UpdateOAuthReq) String() string { func (*UpdateOAuthReq) ProtoMessage() {} func (x *UpdateOAuthReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[50] + mi := &file_pb_fiee_cast_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4173,7 +4275,7 @@ func (x *UpdateOAuthReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateOAuthReq.ProtoReflect.Descriptor instead. func (*UpdateOAuthReq) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{50} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{52} } func (x *UpdateOAuthReq) GetData() []*UpdateOAuthReq_Info { @@ -4196,7 +4298,7 @@ type RefreshTokenReq struct { func (x *RefreshTokenReq) Reset() { *x = RefreshTokenReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[51] + mi := &file_pb_fiee_cast_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4209,7 +4311,7 @@ func (x *RefreshTokenReq) String() string { func (*RefreshTokenReq) ProtoMessage() {} func (x *RefreshTokenReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[51] + mi := &file_pb_fiee_cast_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4222,7 +4324,7 @@ func (x *RefreshTokenReq) ProtoReflect() protoreflect.Message { // Deprecated: Use RefreshTokenReq.ProtoReflect.Descriptor instead. func (*RefreshTokenReq) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{51} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{53} } func (x *RefreshTokenReq) GetRefreshToken() string { @@ -4258,7 +4360,7 @@ type RefreshTokenResp struct { func (x *RefreshTokenResp) Reset() { *x = RefreshTokenResp{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[52] + mi := &file_pb_fiee_cast_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4271,7 +4373,7 @@ func (x *RefreshTokenResp) String() string { func (*RefreshTokenResp) ProtoMessage() {} func (x *RefreshTokenResp) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[52] + mi := &file_pb_fiee_cast_proto_msgTypes[54] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4284,7 +4386,7 @@ func (x *RefreshTokenResp) ProtoReflect() protoreflect.Message { // Deprecated: Use RefreshTokenResp.ProtoReflect.Descriptor instead. func (*RefreshTokenResp) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{52} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{54} } func (x *RefreshTokenResp) GetAccessToken() string { @@ -4314,7 +4416,7 @@ type PublishMediaInfoReq struct { func (x *PublishMediaInfoReq) Reset() { *x = PublishMediaInfoReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[53] + mi := &file_pb_fiee_cast_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4327,7 +4429,7 @@ func (x *PublishMediaInfoReq) String() string { func (*PublishMediaInfoReq) ProtoMessage() {} func (x *PublishMediaInfoReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[53] + mi := &file_pb_fiee_cast_proto_msgTypes[55] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4340,7 +4442,7 @@ func (x *PublishMediaInfoReq) ProtoReflect() protoreflect.Message { // Deprecated: Use PublishMediaInfoReq.ProtoReflect.Descriptor instead. func (*PublishMediaInfoReq) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{53} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{55} } func (x *PublishMediaInfoReq) GetWorkUuid() string { @@ -4378,7 +4480,7 @@ type PublishMediaInfoResp struct { func (x *PublishMediaInfoResp) Reset() { *x = PublishMediaInfoResp{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[54] + mi := &file_pb_fiee_cast_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4391,7 +4493,7 @@ func (x *PublishMediaInfoResp) String() string { func (*PublishMediaInfoResp) ProtoMessage() {} func (x *PublishMediaInfoResp) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[54] + mi := &file_pb_fiee_cast_proto_msgTypes[56] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4404,7 +4506,7 @@ func (x *PublishMediaInfoResp) ProtoReflect() protoreflect.Message { // Deprecated: Use PublishMediaInfoResp.ProtoReflect.Descriptor instead. func (*PublishMediaInfoResp) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{54} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{56} } func (x *PublishMediaInfoResp) GetWorkUuid() string { @@ -4456,7 +4558,7 @@ type UpdateVideoScriptReq struct { func (x *UpdateVideoScriptReq) Reset() { *x = UpdateVideoScriptReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[55] + mi := &file_pb_fiee_cast_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4469,7 +4571,7 @@ func (x *UpdateVideoScriptReq) String() string { func (*UpdateVideoScriptReq) ProtoMessage() {} func (x *UpdateVideoScriptReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[55] + mi := &file_pb_fiee_cast_proto_msgTypes[57] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4482,7 +4584,7 @@ func (x *UpdateVideoScriptReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateVideoScriptReq.ProtoReflect.Descriptor instead. func (*UpdateVideoScriptReq) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{55} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{57} } func (x *UpdateVideoScriptReq) GetUuid() string { @@ -4559,7 +4661,7 @@ type UpdateVideoScriptResp struct { func (x *UpdateVideoScriptResp) Reset() { *x = UpdateVideoScriptResp{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[56] + mi := &file_pb_fiee_cast_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4572,7 +4674,7 @@ func (x *UpdateVideoScriptResp) String() string { func (*UpdateVideoScriptResp) ProtoMessage() {} func (x *UpdateVideoScriptResp) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[56] + mi := &file_pb_fiee_cast_proto_msgTypes[58] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4585,7 +4687,7 @@ func (x *UpdateVideoScriptResp) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateVideoScriptResp.ProtoReflect.Descriptor instead. func (*UpdateVideoScriptResp) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{56} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{58} } func (x *UpdateVideoScriptResp) GetUuid() string { @@ -4607,7 +4709,7 @@ type GetVideoScriptReq struct { func (x *GetVideoScriptReq) Reset() { *x = GetVideoScriptReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[57] + mi := &file_pb_fiee_cast_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4620,7 +4722,7 @@ func (x *GetVideoScriptReq) String() string { func (*GetVideoScriptReq) ProtoMessage() {} func (x *GetVideoScriptReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[57] + mi := &file_pb_fiee_cast_proto_msgTypes[59] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4633,7 +4735,7 @@ func (x *GetVideoScriptReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetVideoScriptReq.ProtoReflect.Descriptor instead. func (*GetVideoScriptReq) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{57} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{59} } func (x *GetVideoScriptReq) GetUuid() string { @@ -4666,7 +4768,7 @@ type GetVideoScriptResp struct { func (x *GetVideoScriptResp) Reset() { *x = GetVideoScriptResp{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[58] + mi := &file_pb_fiee_cast_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4679,7 +4781,7 @@ func (x *GetVideoScriptResp) String() string { func (*GetVideoScriptResp) ProtoMessage() {} func (x *GetVideoScriptResp) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[58] + mi := &file_pb_fiee_cast_proto_msgTypes[60] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4692,7 +4794,7 @@ func (x *GetVideoScriptResp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetVideoScriptResp.ProtoReflect.Descriptor instead. func (*GetVideoScriptResp) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{58} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{60} } func (x *GetVideoScriptResp) GetUuid() string { @@ -4806,7 +4908,7 @@ type ListVideoScriptsReq struct { func (x *ListVideoScriptsReq) Reset() { *x = ListVideoScriptsReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[59] + mi := &file_pb_fiee_cast_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4819,7 +4921,7 @@ func (x *ListVideoScriptsReq) String() string { func (*ListVideoScriptsReq) ProtoMessage() {} func (x *ListVideoScriptsReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[59] + mi := &file_pb_fiee_cast_proto_msgTypes[61] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4832,7 +4934,7 @@ func (x *ListVideoScriptsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListVideoScriptsReq.ProtoReflect.Descriptor instead. func (*ListVideoScriptsReq) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{59} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{61} } func (x *ListVideoScriptsReq) GetTitle() string { @@ -4922,7 +5024,7 @@ type VideoScriptInfo struct { func (x *VideoScriptInfo) Reset() { *x = VideoScriptInfo{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[60] + mi := &file_pb_fiee_cast_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4935,7 +5037,7 @@ func (x *VideoScriptInfo) String() string { func (*VideoScriptInfo) ProtoMessage() {} func (x *VideoScriptInfo) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[60] + mi := &file_pb_fiee_cast_proto_msgTypes[62] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4948,7 +5050,7 @@ func (x *VideoScriptInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use VideoScriptInfo.ProtoReflect.Descriptor instead. func (*VideoScriptInfo) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{60} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{62} } func (x *VideoScriptInfo) GetUuid() string { @@ -5061,7 +5163,7 @@ type ListVideoScriptsResp struct { func (x *ListVideoScriptsResp) Reset() { *x = ListVideoScriptsResp{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[61] + mi := &file_pb_fiee_cast_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5074,7 +5176,7 @@ func (x *ListVideoScriptsResp) String() string { func (*ListVideoScriptsResp) ProtoMessage() {} func (x *ListVideoScriptsResp) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[61] + mi := &file_pb_fiee_cast_proto_msgTypes[63] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5087,7 +5189,7 @@ func (x *ListVideoScriptsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListVideoScriptsResp.ProtoReflect.Descriptor instead. func (*ListVideoScriptsResp) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{61} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{63} } func (x *ListVideoScriptsResp) GetData() []*VideoScriptInfo { @@ -5116,7 +5218,7 @@ type DeleteVideoScriptReq struct { func (x *DeleteVideoScriptReq) Reset() { *x = DeleteVideoScriptReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[62] + mi := &file_pb_fiee_cast_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5129,7 +5231,7 @@ func (x *DeleteVideoScriptReq) String() string { func (*DeleteVideoScriptReq) ProtoMessage() {} func (x *DeleteVideoScriptReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[62] + mi := &file_pb_fiee_cast_proto_msgTypes[64] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5142,7 +5244,7 @@ func (x *DeleteVideoScriptReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteVideoScriptReq.ProtoReflect.Descriptor instead. func (*DeleteVideoScriptReq) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{62} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{64} } func (x *DeleteVideoScriptReq) GetUuid() string { @@ -5163,7 +5265,7 @@ type UpdateVideoScriptBatchReq struct { func (x *UpdateVideoScriptBatchReq) Reset() { *x = UpdateVideoScriptBatchReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[63] + mi := &file_pb_fiee_cast_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5176,7 +5278,7 @@ func (x *UpdateVideoScriptBatchReq) String() string { func (*UpdateVideoScriptBatchReq) ProtoMessage() {} func (x *UpdateVideoScriptBatchReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[63] + mi := &file_pb_fiee_cast_proto_msgTypes[65] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5189,7 +5291,7 @@ func (x *UpdateVideoScriptBatchReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateVideoScriptBatchReq.ProtoReflect.Descriptor instead. func (*UpdateVideoScriptBatchReq) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{63} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{65} } func (x *UpdateVideoScriptBatchReq) GetData() []*VideoScriptInfo { @@ -5212,7 +5314,7 @@ type UpdateVideoScriptBatchResp struct { func (x *UpdateVideoScriptBatchResp) Reset() { *x = UpdateVideoScriptBatchResp{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[64] + mi := &file_pb_fiee_cast_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5225,7 +5327,7 @@ func (x *UpdateVideoScriptBatchResp) String() string { func (*UpdateVideoScriptBatchResp) ProtoMessage() {} func (x *UpdateVideoScriptBatchResp) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[64] + mi := &file_pb_fiee_cast_proto_msgTypes[66] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5238,7 +5340,7 @@ func (x *UpdateVideoScriptBatchResp) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateVideoScriptBatchResp.ProtoReflect.Descriptor instead. func (*UpdateVideoScriptBatchResp) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{64} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{66} } func (x *UpdateVideoScriptBatchResp) GetData() []*VideoScriptInfo { @@ -5276,7 +5378,7 @@ type UpdateScriptStatusReq struct { func (x *UpdateScriptStatusReq) Reset() { *x = UpdateScriptStatusReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[65] + mi := &file_pb_fiee_cast_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5289,7 +5391,7 @@ func (x *UpdateScriptStatusReq) String() string { func (*UpdateScriptStatusReq) ProtoMessage() {} func (x *UpdateScriptStatusReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[65] + mi := &file_pb_fiee_cast_proto_msgTypes[67] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5302,7 +5404,7 @@ func (x *UpdateScriptStatusReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateScriptStatusReq.ProtoReflect.Descriptor instead. func (*UpdateScriptStatusReq) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{65} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{67} } func (x *UpdateScriptStatusReq) GetWorkAction() WorkActionENUM { @@ -5346,7 +5448,7 @@ type SetLayoutReq struct { func (x *SetLayoutReq) Reset() { *x = SetLayoutReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[66] + mi := &file_pb_fiee_cast_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5359,7 +5461,7 @@ func (x *SetLayoutReq) String() string { func (*SetLayoutReq) ProtoMessage() {} func (x *SetLayoutReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[66] + mi := &file_pb_fiee_cast_proto_msgTypes[68] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5372,7 +5474,7 @@ func (x *SetLayoutReq) ProtoReflect() protoreflect.Message { // Deprecated: Use SetLayoutReq.ProtoReflect.Descriptor instead. func (*SetLayoutReq) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{66} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{68} } func (x *SetLayoutReq) GetUserID() string { @@ -5408,7 +5510,7 @@ type GetLayoutReq struct { func (x *GetLayoutReq) Reset() { *x = GetLayoutReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[67] + mi := &file_pb_fiee_cast_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5421,7 +5523,7 @@ func (x *GetLayoutReq) String() string { func (*GetLayoutReq) ProtoMessage() {} func (x *GetLayoutReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[67] + mi := &file_pb_fiee_cast_proto_msgTypes[69] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5434,7 +5536,7 @@ func (x *GetLayoutReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetLayoutReq.ProtoReflect.Descriptor instead. func (*GetLayoutReq) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{67} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{69} } func (x *GetLayoutReq) GetUserID() string { @@ -5463,7 +5565,7 @@ type GetLayoutResp struct { func (x *GetLayoutResp) Reset() { *x = GetLayoutResp{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[68] + mi := &file_pb_fiee_cast_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5476,7 +5578,7 @@ func (x *GetLayoutResp) String() string { func (*GetLayoutResp) ProtoMessage() {} func (x *GetLayoutResp) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[68] + mi := &file_pb_fiee_cast_proto_msgTypes[70] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5489,7 +5591,7 @@ func (x *GetLayoutResp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetLayoutResp.ProtoReflect.Descriptor instead. func (*GetLayoutResp) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{68} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{70} } func (x *GetLayoutResp) GetData() string { @@ -5520,7 +5622,7 @@ type UpdatePromptReq struct { func (x *UpdatePromptReq) Reset() { *x = UpdatePromptReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[69] + mi := &file_pb_fiee_cast_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5533,7 +5635,7 @@ func (x *UpdatePromptReq) String() string { func (*UpdatePromptReq) ProtoMessage() {} func (x *UpdatePromptReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[69] + mi := &file_pb_fiee_cast_proto_msgTypes[71] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5546,7 +5648,7 @@ func (x *UpdatePromptReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdatePromptReq.ProtoReflect.Descriptor instead. func (*UpdatePromptReq) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{69} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{71} } func (x *UpdatePromptReq) GetPromptUuid() string { @@ -5581,7 +5683,7 @@ type DeletePromptReq struct { func (x *DeletePromptReq) Reset() { *x = DeletePromptReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[70] + mi := &file_pb_fiee_cast_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5594,7 +5696,7 @@ func (x *DeletePromptReq) String() string { func (*DeletePromptReq) ProtoMessage() {} func (x *DeletePromptReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[70] + mi := &file_pb_fiee_cast_proto_msgTypes[72] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5607,7 +5709,7 @@ func (x *DeletePromptReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeletePromptReq.ProtoReflect.Descriptor instead. func (*DeletePromptReq) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{70} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{72} } func (x *DeletePromptReq) GetPromptUuid() string { @@ -5628,7 +5730,7 @@ type GetPromptReq struct { func (x *GetPromptReq) Reset() { *x = GetPromptReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[71] + mi := &file_pb_fiee_cast_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5641,7 +5743,7 @@ func (x *GetPromptReq) String() string { func (*GetPromptReq) ProtoMessage() {} func (x *GetPromptReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[71] + mi := &file_pb_fiee_cast_proto_msgTypes[73] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5654,7 +5756,7 @@ func (x *GetPromptReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetPromptReq.ProtoReflect.Descriptor instead. func (*GetPromptReq) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{71} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{73} } func (x *GetPromptReq) GetPromptUuid() string { @@ -5678,7 +5780,7 @@ type GetPromptResp struct { func (x *GetPromptResp) Reset() { *x = GetPromptResp{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[72] + mi := &file_pb_fiee_cast_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5691,7 +5793,7 @@ func (x *GetPromptResp) String() string { func (*GetPromptResp) ProtoMessage() {} func (x *GetPromptResp) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[72] + mi := &file_pb_fiee_cast_proto_msgTypes[74] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5704,7 +5806,7 @@ func (x *GetPromptResp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetPromptResp.ProtoReflect.Descriptor instead. func (*GetPromptResp) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{72} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{74} } func (x *GetPromptResp) GetPromptUuid() string { @@ -5752,7 +5854,7 @@ type ListPromptsReq struct { func (x *ListPromptsReq) Reset() { *x = ListPromptsReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[73] + mi := &file_pb_fiee_cast_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5765,7 +5867,7 @@ func (x *ListPromptsReq) String() string { func (*ListPromptsReq) ProtoMessage() {} func (x *ListPromptsReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[73] + mi := &file_pb_fiee_cast_proto_msgTypes[75] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5778,7 +5880,7 @@ func (x *ListPromptsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListPromptsReq.ProtoReflect.Descriptor instead. func (*ListPromptsReq) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{73} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{75} } func (x *ListPromptsReq) GetPrompt() string { @@ -5848,7 +5950,7 @@ type PromptInfo struct { func (x *PromptInfo) Reset() { *x = PromptInfo{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[74] + mi := &file_pb_fiee_cast_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5861,7 +5963,7 @@ func (x *PromptInfo) String() string { func (*PromptInfo) ProtoMessage() {} func (x *PromptInfo) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[74] + mi := &file_pb_fiee_cast_proto_msgTypes[76] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5874,7 +5976,7 @@ func (x *PromptInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use PromptInfo.ProtoReflect.Descriptor instead. func (*PromptInfo) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{74} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{76} } func (x *PromptInfo) GetPromptUuid() string { @@ -5945,7 +6047,7 @@ type ListPromptsResp struct { func (x *ListPromptsResp) Reset() { *x = ListPromptsResp{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[75] + mi := &file_pb_fiee_cast_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5958,7 +6060,7 @@ func (x *ListPromptsResp) String() string { func (*ListPromptsResp) ProtoMessage() {} func (x *ListPromptsResp) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[75] + mi := &file_pb_fiee_cast_proto_msgTypes[77] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5971,7 +6073,7 @@ func (x *ListPromptsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListPromptsResp.ProtoReflect.Descriptor instead. func (*ListPromptsResp) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{75} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{77} } func (x *ListPromptsResp) GetData() []*PromptInfo { @@ -5999,7 +6101,7 @@ type UpdatePromptBatchReq struct { func (x *UpdatePromptBatchReq) Reset() { *x = UpdatePromptBatchReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[76] + mi := &file_pb_fiee_cast_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6012,7 +6114,7 @@ func (x *UpdatePromptBatchReq) String() string { func (*UpdatePromptBatchReq) ProtoMessage() {} func (x *UpdatePromptBatchReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[76] + mi := &file_pb_fiee_cast_proto_msgTypes[78] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6025,7 +6127,7 @@ func (x *UpdatePromptBatchReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdatePromptBatchReq.ProtoReflect.Descriptor instead. func (*UpdatePromptBatchReq) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{76} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{78} } func (x *UpdatePromptBatchReq) GetData() []*PromptInfo { @@ -6048,7 +6150,7 @@ type UpdatePromptBatchResp struct { func (x *UpdatePromptBatchResp) Reset() { *x = UpdatePromptBatchResp{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[77] + mi := &file_pb_fiee_cast_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6061,7 +6163,7 @@ func (x *UpdatePromptBatchResp) String() string { func (*UpdatePromptBatchResp) ProtoMessage() {} func (x *UpdatePromptBatchResp) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[77] + mi := &file_pb_fiee_cast_proto_msgTypes[79] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6074,7 +6176,7 @@ func (x *UpdatePromptBatchResp) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdatePromptBatchResp.ProtoReflect.Descriptor instead. func (*UpdatePromptBatchResp) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{77} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{79} } func (x *UpdatePromptBatchResp) GetData() []*PromptInfo { @@ -6113,7 +6215,7 @@ type ArtistInfo struct { func (x *ArtistInfo) Reset() { *x = ArtistInfo{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[78] + mi := &file_pb_fiee_cast_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6126,7 +6228,7 @@ func (x *ArtistInfo) String() string { func (*ArtistInfo) ProtoMessage() {} func (x *ArtistInfo) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[78] + mi := &file_pb_fiee_cast_proto_msgTypes[80] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6139,7 +6241,7 @@ func (x *ArtistInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ArtistInfo.ProtoReflect.Descriptor instead. func (*ArtistInfo) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{78} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{80} } func (x *ArtistInfo) GetArtistUuid() string { @@ -6182,7 +6284,7 @@ type UpdateArtistReq struct { func (x *UpdateArtistReq) Reset() { *x = UpdateArtistReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[79] + mi := &file_pb_fiee_cast_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6195,7 +6297,7 @@ func (x *UpdateArtistReq) String() string { func (*UpdateArtistReq) ProtoMessage() {} func (x *UpdateArtistReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[79] + mi := &file_pb_fiee_cast_proto_msgTypes[81] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6208,7 +6310,7 @@ func (x *UpdateArtistReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateArtistReq.ProtoReflect.Descriptor instead. func (*UpdateArtistReq) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{79} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{81} } func (x *UpdateArtistReq) GetArtistInfo() *ArtistInfo { @@ -6236,7 +6338,7 @@ type UpdateArtistResp struct { func (x *UpdateArtistResp) Reset() { *x = UpdateArtistResp{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[80] + mi := &file_pb_fiee_cast_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6249,7 +6351,7 @@ func (x *UpdateArtistResp) String() string { func (*UpdateArtistResp) ProtoMessage() {} func (x *UpdateArtistResp) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[80] + mi := &file_pb_fiee_cast_proto_msgTypes[82] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6262,7 +6364,7 @@ func (x *UpdateArtistResp) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateArtistResp.ProtoReflect.Descriptor instead. func (*UpdateArtistResp) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{80} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{82} } func (x *UpdateArtistResp) GetArtistUuid() string { @@ -6283,7 +6385,7 @@ type GetArtistReq struct { func (x *GetArtistReq) Reset() { *x = GetArtistReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[81] + mi := &file_pb_fiee_cast_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6296,7 +6398,7 @@ func (x *GetArtistReq) String() string { func (*GetArtistReq) ProtoMessage() {} func (x *GetArtistReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[81] + mi := &file_pb_fiee_cast_proto_msgTypes[83] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6309,7 +6411,7 @@ func (x *GetArtistReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetArtistReq.ProtoReflect.Descriptor instead. func (*GetArtistReq) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{81} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{83} } func (x *GetArtistReq) GetArtistUuid() string { @@ -6331,7 +6433,7 @@ type GetArtistResp struct { func (x *GetArtistResp) Reset() { *x = GetArtistResp{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[82] + mi := &file_pb_fiee_cast_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6344,7 +6446,7 @@ func (x *GetArtistResp) String() string { func (*GetArtistResp) ProtoMessage() {} func (x *GetArtistResp) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[82] + mi := &file_pb_fiee_cast_proto_msgTypes[84] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6357,7 +6459,7 @@ func (x *GetArtistResp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetArtistResp.ProtoReflect.Descriptor instead. func (*GetArtistResp) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{82} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{84} } func (x *GetArtistResp) GetArtistInfo() *ArtistInfo { @@ -6409,7 +6511,7 @@ type CreateWorkAnalysisReq struct { func (x *CreateWorkAnalysisReq) Reset() { *x = CreateWorkAnalysisReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[83] + mi := &file_pb_fiee_cast_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6422,7 +6524,7 @@ func (x *CreateWorkAnalysisReq) String() string { func (*CreateWorkAnalysisReq) ProtoMessage() {} func (x *CreateWorkAnalysisReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[83] + mi := &file_pb_fiee_cast_proto_msgTypes[85] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6435,7 +6537,7 @@ func (x *CreateWorkAnalysisReq) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateWorkAnalysisReq.ProtoReflect.Descriptor instead. func (*CreateWorkAnalysisReq) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{83} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{85} } func (x *CreateWorkAnalysisReq) GetUuid() string { @@ -6617,7 +6719,7 @@ type CreateWorkAnalysisResp struct { func (x *CreateWorkAnalysisResp) Reset() { *x = CreateWorkAnalysisResp{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[84] + mi := &file_pb_fiee_cast_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6630,7 +6732,7 @@ func (x *CreateWorkAnalysisResp) String() string { func (*CreateWorkAnalysisResp) ProtoMessage() {} func (x *CreateWorkAnalysisResp) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[84] + mi := &file_pb_fiee_cast_proto_msgTypes[86] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6643,7 +6745,7 @@ func (x *CreateWorkAnalysisResp) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateWorkAnalysisResp.ProtoReflect.Descriptor instead. func (*CreateWorkAnalysisResp) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{84} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{86} } func (x *CreateWorkAnalysisResp) GetUuid() string { @@ -6684,7 +6786,7 @@ type UpdateWorkAnalysisReq struct { func (x *UpdateWorkAnalysisReq) Reset() { *x = UpdateWorkAnalysisReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[85] + mi := &file_pb_fiee_cast_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6697,7 +6799,7 @@ func (x *UpdateWorkAnalysisReq) String() string { func (*UpdateWorkAnalysisReq) ProtoMessage() {} func (x *UpdateWorkAnalysisReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[85] + mi := &file_pb_fiee_cast_proto_msgTypes[87] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6710,7 +6812,7 @@ func (x *UpdateWorkAnalysisReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateWorkAnalysisReq.ProtoReflect.Descriptor instead. func (*UpdateWorkAnalysisReq) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{85} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{87} } func (x *UpdateWorkAnalysisReq) GetUuid() string { @@ -6878,7 +6980,7 @@ type UpdateWorkAnalysisStatusReq struct { func (x *UpdateWorkAnalysisStatusReq) Reset() { *x = UpdateWorkAnalysisStatusReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[86] + mi := &file_pb_fiee_cast_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6891,7 +6993,7 @@ func (x *UpdateWorkAnalysisStatusReq) String() string { func (*UpdateWorkAnalysisStatusReq) ProtoMessage() {} func (x *UpdateWorkAnalysisStatusReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[86] + mi := &file_pb_fiee_cast_proto_msgTypes[88] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6904,7 +7006,7 @@ func (x *UpdateWorkAnalysisStatusReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateWorkAnalysisStatusReq.ProtoReflect.Descriptor instead. func (*UpdateWorkAnalysisStatusReq) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{86} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{88} } func (x *UpdateWorkAnalysisStatusReq) GetWorkAction() WorkActionENUM { @@ -6982,7 +7084,7 @@ type WorkAnalysisLogInfo struct { func (x *WorkAnalysisLogInfo) Reset() { *x = WorkAnalysisLogInfo{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[87] + mi := &file_pb_fiee_cast_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6995,7 +7097,7 @@ func (x *WorkAnalysisLogInfo) String() string { func (*WorkAnalysisLogInfo) ProtoMessage() {} func (x *WorkAnalysisLogInfo) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[87] + mi := &file_pb_fiee_cast_proto_msgTypes[89] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7008,7 +7110,7 @@ func (x *WorkAnalysisLogInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkAnalysisLogInfo.ProtoReflect.Descriptor instead. func (*WorkAnalysisLogInfo) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{87} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{89} } func (x *WorkAnalysisLogInfo) GetWorkUuid() string { @@ -7093,7 +7195,7 @@ type WorkAnalysisFansSeries struct { func (x *WorkAnalysisFansSeries) Reset() { *x = WorkAnalysisFansSeries{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[88] + mi := &file_pb_fiee_cast_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7106,7 +7208,7 @@ func (x *WorkAnalysisFansSeries) String() string { func (*WorkAnalysisFansSeries) ProtoMessage() {} func (x *WorkAnalysisFansSeries) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[88] + mi := &file_pb_fiee_cast_proto_msgTypes[90] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7119,7 +7221,7 @@ func (x *WorkAnalysisFansSeries) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkAnalysisFansSeries.ProtoReflect.Descriptor instead. func (*WorkAnalysisFansSeries) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{88} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{90} } func (x *WorkAnalysisFansSeries) GetUuid() string { @@ -7197,7 +7299,7 @@ type WorkAnalysisViewsSeries struct { func (x *WorkAnalysisViewsSeries) Reset() { *x = WorkAnalysisViewsSeries{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[89] + mi := &file_pb_fiee_cast_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7210,7 +7312,7 @@ func (x *WorkAnalysisViewsSeries) String() string { func (*WorkAnalysisViewsSeries) ProtoMessage() {} func (x *WorkAnalysisViewsSeries) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[89] + mi := &file_pb_fiee_cast_proto_msgTypes[91] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7223,7 +7325,7 @@ func (x *WorkAnalysisViewsSeries) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkAnalysisViewsSeries.ProtoReflect.Descriptor instead. func (*WorkAnalysisViewsSeries) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{89} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{91} } func (x *WorkAnalysisViewsSeries) GetUuid() string { @@ -7301,7 +7403,7 @@ type WorkAnalysisLikesSeries struct { func (x *WorkAnalysisLikesSeries) Reset() { *x = WorkAnalysisLikesSeries{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[90] + mi := &file_pb_fiee_cast_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7314,7 +7416,7 @@ func (x *WorkAnalysisLikesSeries) String() string { func (*WorkAnalysisLikesSeries) ProtoMessage() {} func (x *WorkAnalysisLikesSeries) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[90] + mi := &file_pb_fiee_cast_proto_msgTypes[92] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7327,7 +7429,7 @@ func (x *WorkAnalysisLikesSeries) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkAnalysisLikesSeries.ProtoReflect.Descriptor instead. func (*WorkAnalysisLikesSeries) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{90} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{92} } func (x *WorkAnalysisLikesSeries) GetUuid() string { @@ -7405,7 +7507,7 @@ type WorkAnalysisCommentsSeries struct { func (x *WorkAnalysisCommentsSeries) Reset() { *x = WorkAnalysisCommentsSeries{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[91] + mi := &file_pb_fiee_cast_proto_msgTypes[93] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7418,7 +7520,7 @@ func (x *WorkAnalysisCommentsSeries) String() string { func (*WorkAnalysisCommentsSeries) ProtoMessage() {} func (x *WorkAnalysisCommentsSeries) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[91] + mi := &file_pb_fiee_cast_proto_msgTypes[93] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7431,7 +7533,7 @@ func (x *WorkAnalysisCommentsSeries) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkAnalysisCommentsSeries.ProtoReflect.Descriptor instead. func (*WorkAnalysisCommentsSeries) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{91} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{93} } func (x *WorkAnalysisCommentsSeries) GetUuid() string { @@ -7509,7 +7611,7 @@ type WorkAnalysisSharesSeries struct { func (x *WorkAnalysisSharesSeries) Reset() { *x = WorkAnalysisSharesSeries{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[92] + mi := &file_pb_fiee_cast_proto_msgTypes[94] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7522,7 +7624,7 @@ func (x *WorkAnalysisSharesSeries) String() string { func (*WorkAnalysisSharesSeries) ProtoMessage() {} func (x *WorkAnalysisSharesSeries) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[92] + mi := &file_pb_fiee_cast_proto_msgTypes[94] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7535,7 +7637,7 @@ func (x *WorkAnalysisSharesSeries) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkAnalysisSharesSeries.ProtoReflect.Descriptor instead. func (*WorkAnalysisSharesSeries) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{92} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{94} } func (x *WorkAnalysisSharesSeries) GetUuid() string { @@ -7609,7 +7711,7 @@ type WorkAnalysisTopCities struct { func (x *WorkAnalysisTopCities) Reset() { *x = WorkAnalysisTopCities{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[93] + mi := &file_pb_fiee_cast_proto_msgTypes[95] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7622,7 +7724,7 @@ func (x *WorkAnalysisTopCities) String() string { func (*WorkAnalysisTopCities) ProtoMessage() {} func (x *WorkAnalysisTopCities) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[93] + mi := &file_pb_fiee_cast_proto_msgTypes[95] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7635,7 +7737,7 @@ func (x *WorkAnalysisTopCities) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkAnalysisTopCities.ProtoReflect.Descriptor instead. func (*WorkAnalysisTopCities) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{93} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{95} } func (x *WorkAnalysisTopCities) GetUuid() string { @@ -7681,7 +7783,7 @@ type WorkAnalysisMostActiveDay struct { func (x *WorkAnalysisMostActiveDay) Reset() { *x = WorkAnalysisMostActiveDay{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[94] + mi := &file_pb_fiee_cast_proto_msgTypes[96] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7694,7 +7796,7 @@ func (x *WorkAnalysisMostActiveDay) String() string { func (*WorkAnalysisMostActiveDay) ProtoMessage() {} func (x *WorkAnalysisMostActiveDay) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[94] + mi := &file_pb_fiee_cast_proto_msgTypes[96] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7707,7 +7809,7 @@ func (x *WorkAnalysisMostActiveDay) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkAnalysisMostActiveDay.ProtoReflect.Descriptor instead. func (*WorkAnalysisMostActiveDay) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{94} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{96} } func (x *WorkAnalysisMostActiveDay) GetUuid() string { @@ -7753,7 +7855,7 @@ type WorkAnalysisBestPostTime struct { func (x *WorkAnalysisBestPostTime) Reset() { *x = WorkAnalysisBestPostTime{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[95] + mi := &file_pb_fiee_cast_proto_msgTypes[97] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7766,7 +7868,7 @@ func (x *WorkAnalysisBestPostTime) String() string { func (*WorkAnalysisBestPostTime) ProtoMessage() {} func (x *WorkAnalysisBestPostTime) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[95] + mi := &file_pb_fiee_cast_proto_msgTypes[97] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7779,7 +7881,7 @@ func (x *WorkAnalysisBestPostTime) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkAnalysisBestPostTime.ProtoReflect.Descriptor instead. func (*WorkAnalysisBestPostTime) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{95} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{97} } func (x *WorkAnalysisBestPostTime) GetUuid() string { @@ -7826,7 +7928,7 @@ type WorkAnalysisExtra struct { func (x *WorkAnalysisExtra) Reset() { *x = WorkAnalysisExtra{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[96] + mi := &file_pb_fiee_cast_proto_msgTypes[98] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7839,7 +7941,7 @@ func (x *WorkAnalysisExtra) String() string { func (*WorkAnalysisExtra) ProtoMessage() {} func (x *WorkAnalysisExtra) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[96] + mi := &file_pb_fiee_cast_proto_msgTypes[98] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7852,7 +7954,7 @@ func (x *WorkAnalysisExtra) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkAnalysisExtra.ProtoReflect.Descriptor instead. func (*WorkAnalysisExtra) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{96} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{98} } func (x *WorkAnalysisExtra) GetAnalysisUuid() string { @@ -7901,7 +8003,7 @@ type GetWorkAnalysisDetailReq struct { func (x *GetWorkAnalysisDetailReq) Reset() { *x = GetWorkAnalysisDetailReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[97] + mi := &file_pb_fiee_cast_proto_msgTypes[99] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7914,7 +8016,7 @@ func (x *GetWorkAnalysisDetailReq) String() string { func (*GetWorkAnalysisDetailReq) ProtoMessage() {} func (x *GetWorkAnalysisDetailReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[97] + mi := &file_pb_fiee_cast_proto_msgTypes[99] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7927,7 +8029,7 @@ func (x *GetWorkAnalysisDetailReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetWorkAnalysisDetailReq.ProtoReflect.Descriptor instead. func (*GetWorkAnalysisDetailReq) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{97} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{99} } func (x *GetWorkAnalysisDetailReq) GetUuid() string { @@ -7948,7 +8050,7 @@ type GetLatestWorkAnalysisReq struct { func (x *GetLatestWorkAnalysisReq) Reset() { *x = GetLatestWorkAnalysisReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[98] + mi := &file_pb_fiee_cast_proto_msgTypes[100] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7961,7 +8063,7 @@ func (x *GetLatestWorkAnalysisReq) String() string { func (*GetLatestWorkAnalysisReq) ProtoMessage() {} func (x *GetLatestWorkAnalysisReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[98] + mi := &file_pb_fiee_cast_proto_msgTypes[100] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7974,7 +8076,7 @@ func (x *GetLatestWorkAnalysisReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetLatestWorkAnalysisReq.ProtoReflect.Descriptor instead. func (*GetLatestWorkAnalysisReq) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{98} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{100} } func (x *GetLatestWorkAnalysisReq) GetSubNum() string { @@ -8032,7 +8134,7 @@ type GetWorkAnalysisResp struct { func (x *GetWorkAnalysisResp) Reset() { *x = GetWorkAnalysisResp{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[99] + mi := &file_pb_fiee_cast_proto_msgTypes[101] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8045,7 +8147,7 @@ func (x *GetWorkAnalysisResp) String() string { func (*GetWorkAnalysisResp) ProtoMessage() {} func (x *GetWorkAnalysisResp) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[99] + mi := &file_pb_fiee_cast_proto_msgTypes[101] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8058,7 +8160,7 @@ func (x *GetWorkAnalysisResp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetWorkAnalysisResp.ProtoReflect.Descriptor instead. func (*GetWorkAnalysisResp) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{99} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{101} } func (x *GetWorkAnalysisResp) GetUuid() string { @@ -8377,7 +8479,7 @@ type GetWorkAnalysisDetailResp struct { func (x *GetWorkAnalysisDetailResp) Reset() { *x = GetWorkAnalysisDetailResp{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[100] + mi := &file_pb_fiee_cast_proto_msgTypes[102] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8390,7 +8492,7 @@ func (x *GetWorkAnalysisDetailResp) String() string { func (*GetWorkAnalysisDetailResp) ProtoMessage() {} func (x *GetWorkAnalysisDetailResp) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[100] + mi := &file_pb_fiee_cast_proto_msgTypes[102] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8403,7 +8505,7 @@ func (x *GetWorkAnalysisDetailResp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetWorkAnalysisDetailResp.ProtoReflect.Descriptor instead. func (*GetWorkAnalysisDetailResp) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{100} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{102} } func (x *GetWorkAnalysisDetailResp) GetUuid() string { @@ -8709,7 +8811,7 @@ type ListWorkAnalysisReq struct { func (x *ListWorkAnalysisReq) Reset() { *x = ListWorkAnalysisReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[101] + mi := &file_pb_fiee_cast_proto_msgTypes[103] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8722,7 +8824,7 @@ func (x *ListWorkAnalysisReq) String() string { func (*ListWorkAnalysisReq) ProtoMessage() {} func (x *ListWorkAnalysisReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[101] + mi := &file_pb_fiee_cast_proto_msgTypes[103] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8735,7 +8837,7 @@ func (x *ListWorkAnalysisReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListWorkAnalysisReq.ProtoReflect.Descriptor instead. func (*ListWorkAnalysisReq) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{101} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{103} } func (x *ListWorkAnalysisReq) GetUuidList() []string { @@ -8854,7 +8956,7 @@ type WorkAnalysisInfo struct { func (x *WorkAnalysisInfo) Reset() { *x = WorkAnalysisInfo{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[102] + mi := &file_pb_fiee_cast_proto_msgTypes[104] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8867,7 +8969,7 @@ func (x *WorkAnalysisInfo) String() string { func (*WorkAnalysisInfo) ProtoMessage() {} func (x *WorkAnalysisInfo) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[102] + mi := &file_pb_fiee_cast_proto_msgTypes[104] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8880,7 +8982,7 @@ func (x *WorkAnalysisInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkAnalysisInfo.ProtoReflect.Descriptor instead. func (*WorkAnalysisInfo) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{102} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{104} } func (x *WorkAnalysisInfo) GetUuid() string { @@ -9000,7 +9102,7 @@ type ListWorkAnalysisResp struct { func (x *ListWorkAnalysisResp) Reset() { *x = ListWorkAnalysisResp{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[103] + mi := &file_pb_fiee_cast_proto_msgTypes[105] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9013,7 +9115,7 @@ func (x *ListWorkAnalysisResp) String() string { func (*ListWorkAnalysisResp) ProtoMessage() {} func (x *ListWorkAnalysisResp) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[103] + mi := &file_pb_fiee_cast_proto_msgTypes[105] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9026,7 +9128,7 @@ func (x *ListWorkAnalysisResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListWorkAnalysisResp.ProtoReflect.Descriptor instead. func (*ListWorkAnalysisResp) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{103} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{105} } func (x *ListWorkAnalysisResp) GetData() []*WorkAnalysisInfo { @@ -9054,7 +9156,7 @@ type DeleteWorkAnalysisReq struct { func (x *DeleteWorkAnalysisReq) Reset() { *x = DeleteWorkAnalysisReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[104] + mi := &file_pb_fiee_cast_proto_msgTypes[106] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9067,7 +9169,7 @@ func (x *DeleteWorkAnalysisReq) String() string { func (*DeleteWorkAnalysisReq) ProtoMessage() {} func (x *DeleteWorkAnalysisReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[104] + mi := &file_pb_fiee_cast_proto_msgTypes[106] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9080,7 +9182,7 @@ func (x *DeleteWorkAnalysisReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteWorkAnalysisReq.ProtoReflect.Descriptor instead. func (*DeleteWorkAnalysisReq) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{104} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{106} } func (x *DeleteWorkAnalysisReq) GetUuid() string { @@ -9109,7 +9211,7 @@ type ArtistDataListReq struct { func (x *ArtistDataListReq) Reset() { *x = ArtistDataListReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[105] + mi := &file_pb_fiee_cast_proto_msgTypes[107] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9122,7 +9224,7 @@ func (x *ArtistDataListReq) String() string { func (*ArtistDataListReq) ProtoMessage() {} func (x *ArtistDataListReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[105] + mi := &file_pb_fiee_cast_proto_msgTypes[107] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9135,7 +9237,7 @@ func (x *ArtistDataListReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ArtistDataListReq.ProtoReflect.Descriptor instead. func (*ArtistDataListReq) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{105} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{107} } func (x *ArtistDataListReq) GetArtistVal() string { @@ -9224,7 +9326,7 @@ type ArtistDataRespItem struct { func (x *ArtistDataRespItem) Reset() { *x = ArtistDataRespItem{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[106] + mi := &file_pb_fiee_cast_proto_msgTypes[108] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9237,7 +9339,7 @@ func (x *ArtistDataRespItem) String() string { func (*ArtistDataRespItem) ProtoMessage() {} func (x *ArtistDataRespItem) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[106] + mi := &file_pb_fiee_cast_proto_msgTypes[108] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9250,7 +9352,7 @@ func (x *ArtistDataRespItem) ProtoReflect() protoreflect.Message { // Deprecated: Use ArtistDataRespItem.ProtoReflect.Descriptor instead. func (*ArtistDataRespItem) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{106} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{108} } func (x *ArtistDataRespItem) GetArtistName() string { @@ -9399,7 +9501,7 @@ type ArtistDataListResp struct { func (x *ArtistDataListResp) Reset() { *x = ArtistDataListResp{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[107] + mi := &file_pb_fiee_cast_proto_msgTypes[109] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9412,7 +9514,7 @@ func (x *ArtistDataListResp) String() string { func (*ArtistDataListResp) ProtoMessage() {} func (x *ArtistDataListResp) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[107] + mi := &file_pb_fiee_cast_proto_msgTypes[109] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9425,7 +9527,7 @@ func (x *ArtistDataListResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ArtistDataListResp.ProtoReflect.Descriptor instead. func (*ArtistDataListResp) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{107} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{109} } func (x *ArtistDataListResp) GetData() []*ArtistDataRespItem { @@ -9458,7 +9560,7 @@ type MediaDataListReq struct { func (x *MediaDataListReq) Reset() { *x = MediaDataListReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[108] + mi := &file_pb_fiee_cast_proto_msgTypes[110] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9471,7 +9573,7 @@ func (x *MediaDataListReq) String() string { func (*MediaDataListReq) ProtoMessage() {} func (x *MediaDataListReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[108] + mi := &file_pb_fiee_cast_proto_msgTypes[110] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9484,7 +9586,7 @@ func (x *MediaDataListReq) ProtoReflect() protoreflect.Message { // Deprecated: Use MediaDataListReq.ProtoReflect.Descriptor instead. func (*MediaDataListReq) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{108} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{110} } func (x *MediaDataListReq) GetArtistVal() string { @@ -9548,7 +9650,7 @@ type MediaDataListItem struct { func (x *MediaDataListItem) Reset() { *x = MediaDataListItem{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[109] + mi := &file_pb_fiee_cast_proto_msgTypes[111] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9561,7 +9663,7 @@ func (x *MediaDataListItem) String() string { func (*MediaDataListItem) ProtoMessage() {} func (x *MediaDataListItem) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[109] + mi := &file_pb_fiee_cast_proto_msgTypes[111] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9574,7 +9676,7 @@ func (x *MediaDataListItem) ProtoReflect() protoreflect.Message { // Deprecated: Use MediaDataListItem.ProtoReflect.Descriptor instead. func (*MediaDataListItem) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{109} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{111} } func (x *MediaDataListItem) GetArtistName() string { @@ -9695,7 +9797,7 @@ type MediaDataListResp struct { func (x *MediaDataListResp) Reset() { *x = MediaDataListResp{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[110] + mi := &file_pb_fiee_cast_proto_msgTypes[112] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9708,7 +9810,7 @@ func (x *MediaDataListResp) String() string { func (*MediaDataListResp) ProtoMessage() {} func (x *MediaDataListResp) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[110] + mi := &file_pb_fiee_cast_proto_msgTypes[112] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9721,7 +9823,7 @@ func (x *MediaDataListResp) ProtoReflect() protoreflect.Message { // Deprecated: Use MediaDataListResp.ProtoReflect.Descriptor instead. func (*MediaDataListResp) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{110} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{112} } func (x *MediaDataListResp) GetData() []*MediaDataListItem { @@ -9750,7 +9852,7 @@ type DataOverviewReq struct { func (x *DataOverviewReq) Reset() { *x = DataOverviewReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[111] + mi := &file_pb_fiee_cast_proto_msgTypes[113] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9763,7 +9865,7 @@ func (x *DataOverviewReq) String() string { func (*DataOverviewReq) ProtoMessage() {} func (x *DataOverviewReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[111] + mi := &file_pb_fiee_cast_proto_msgTypes[113] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9776,7 +9878,7 @@ func (x *DataOverviewReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DataOverviewReq.ProtoReflect.Descriptor instead. func (*DataOverviewReq) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{111} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{113} } func (x *DataOverviewReq) GetDate() string { @@ -9817,7 +9919,7 @@ type DataOverviewResp struct { func (x *DataOverviewResp) Reset() { *x = DataOverviewResp{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[112] + mi := &file_pb_fiee_cast_proto_msgTypes[114] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9830,7 +9932,7 @@ func (x *DataOverviewResp) String() string { func (*DataOverviewResp) ProtoMessage() {} func (x *DataOverviewResp) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[112] + mi := &file_pb_fiee_cast_proto_msgTypes[114] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9843,7 +9945,7 @@ func (x *DataOverviewResp) ProtoReflect() protoreflect.Message { // Deprecated: Use DataOverviewResp.ProtoReflect.Descriptor instead. func (*DataOverviewResp) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{112} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{114} } func (x *DataOverviewResp) GetAccountCount() int64 { @@ -10003,7 +10105,7 @@ type ArtistMetricsSeriesReq struct { func (x *ArtistMetricsSeriesReq) Reset() { *x = ArtistMetricsSeriesReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[113] + mi := &file_pb_fiee_cast_proto_msgTypes[115] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10016,7 +10118,7 @@ func (x *ArtistMetricsSeriesReq) String() string { func (*ArtistMetricsSeriesReq) ProtoMessage() {} func (x *ArtistMetricsSeriesReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[113] + mi := &file_pb_fiee_cast_proto_msgTypes[115] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10029,7 +10131,7 @@ func (x *ArtistMetricsSeriesReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ArtistMetricsSeriesReq.ProtoReflect.Descriptor instead. func (*ArtistMetricsSeriesReq) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{113} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{115} } func (x *ArtistMetricsSeriesReq) GetArtistUUID() string { @@ -10092,7 +10194,7 @@ type ArtistMetricsSeriesResp struct { func (x *ArtistMetricsSeriesResp) Reset() { *x = ArtistMetricsSeriesResp{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[114] + mi := &file_pb_fiee_cast_proto_msgTypes[116] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10105,7 +10207,7 @@ func (x *ArtistMetricsSeriesResp) String() string { func (*ArtistMetricsSeriesResp) ProtoMessage() {} func (x *ArtistMetricsSeriesResp) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[114] + mi := &file_pb_fiee_cast_proto_msgTypes[116] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10118,7 +10220,7 @@ func (x *ArtistMetricsSeriesResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ArtistMetricsSeriesResp.ProtoReflect.Descriptor instead. func (*ArtistMetricsSeriesResp) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{114} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{116} } func (x *ArtistMetricsSeriesResp) GetFansSeries() *WorkAnalysisFansSeries { @@ -10184,7 +10286,7 @@ type ArtistMetricsDailyWindowReq struct { func (x *ArtistMetricsDailyWindowReq) Reset() { *x = ArtistMetricsDailyWindowReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[115] + mi := &file_pb_fiee_cast_proto_msgTypes[117] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10197,7 +10299,7 @@ func (x *ArtistMetricsDailyWindowReq) String() string { func (*ArtistMetricsDailyWindowReq) ProtoMessage() {} func (x *ArtistMetricsDailyWindowReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[115] + mi := &file_pb_fiee_cast_proto_msgTypes[117] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10210,7 +10312,7 @@ func (x *ArtistMetricsDailyWindowReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ArtistMetricsDailyWindowReq.ProtoReflect.Descriptor instead. func (*ArtistMetricsDailyWindowReq) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{115} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{117} } func (x *ArtistMetricsDailyWindowReq) GetArtistUUID() string { @@ -10247,7 +10349,7 @@ type SimplePoint struct { func (x *SimplePoint) Reset() { *x = SimplePoint{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[116] + mi := &file_pb_fiee_cast_proto_msgTypes[118] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10260,7 +10362,7 @@ func (x *SimplePoint) String() string { func (*SimplePoint) ProtoMessage() {} func (x *SimplePoint) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[116] + mi := &file_pb_fiee_cast_proto_msgTypes[118] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10273,7 +10375,7 @@ func (x *SimplePoint) ProtoReflect() protoreflect.Message { // Deprecated: Use SimplePoint.ProtoReflect.Descriptor instead. func (*SimplePoint) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{116} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{118} } func (x *SimplePoint) GetDate() int32 { @@ -10303,7 +10405,7 @@ type BestPostTimePoint struct { func (x *BestPostTimePoint) Reset() { *x = BestPostTimePoint{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[117] + mi := &file_pb_fiee_cast_proto_msgTypes[119] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10316,7 +10418,7 @@ func (x *BestPostTimePoint) String() string { func (*BestPostTimePoint) ProtoMessage() {} func (x *BestPostTimePoint) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[117] + mi := &file_pb_fiee_cast_proto_msgTypes[119] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10329,7 +10431,7 @@ func (x *BestPostTimePoint) ProtoReflect() protoreflect.Message { // Deprecated: Use BestPostTimePoint.ProtoReflect.Descriptor instead. func (*BestPostTimePoint) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{117} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{119} } func (x *BestPostTimePoint) GetTimePoint() string { @@ -10359,7 +10461,7 @@ type MostActiveDayPoint struct { func (x *MostActiveDayPoint) Reset() { *x = MostActiveDayPoint{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[118] + mi := &file_pb_fiee_cast_proto_msgTypes[120] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10372,7 +10474,7 @@ func (x *MostActiveDayPoint) String() string { func (*MostActiveDayPoint) ProtoMessage() {} func (x *MostActiveDayPoint) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[118] + mi := &file_pb_fiee_cast_proto_msgTypes[120] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10385,7 +10487,7 @@ func (x *MostActiveDayPoint) ProtoReflect() protoreflect.Message { // Deprecated: Use MostActiveDayPoint.ProtoReflect.Descriptor instead. func (*MostActiveDayPoint) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{118} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{120} } func (x *MostActiveDayPoint) GetDay() int32 { @@ -10425,7 +10527,7 @@ type ArtistMetricsDailyWindowResp struct { func (x *ArtistMetricsDailyWindowResp) Reset() { *x = ArtistMetricsDailyWindowResp{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[119] + mi := &file_pb_fiee_cast_proto_msgTypes[121] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10438,7 +10540,7 @@ func (x *ArtistMetricsDailyWindowResp) String() string { func (*ArtistMetricsDailyWindowResp) ProtoMessage() {} func (x *ArtistMetricsDailyWindowResp) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[119] + mi := &file_pb_fiee_cast_proto_msgTypes[121] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10451,7 +10553,7 @@ func (x *ArtistMetricsDailyWindowResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ArtistMetricsDailyWindowResp.ProtoReflect.Descriptor instead. func (*ArtistMetricsDailyWindowResp) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{119} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{121} } func (x *ArtistMetricsDailyWindowResp) GetFansCount() int64 { @@ -10552,7 +10654,7 @@ type TobeConfirmedListReq struct { func (x *TobeConfirmedListReq) Reset() { *x = TobeConfirmedListReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[120] + mi := &file_pb_fiee_cast_proto_msgTypes[122] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10565,7 +10667,7 @@ func (x *TobeConfirmedListReq) String() string { func (*TobeConfirmedListReq) ProtoMessage() {} func (x *TobeConfirmedListReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[120] + mi := &file_pb_fiee_cast_proto_msgTypes[122] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10578,7 +10680,7 @@ func (x *TobeConfirmedListReq) ProtoReflect() protoreflect.Message { // Deprecated: Use TobeConfirmedListReq.ProtoReflect.Descriptor instead. func (*TobeConfirmedListReq) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{120} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{122} } func (x *TobeConfirmedListReq) GetArtistUuid() string { @@ -10629,7 +10731,7 @@ type TobeConfirmedItem struct { func (x *TobeConfirmedItem) Reset() { *x = TobeConfirmedItem{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[121] + mi := &file_pb_fiee_cast_proto_msgTypes[123] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10642,7 +10744,7 @@ func (x *TobeConfirmedItem) String() string { func (*TobeConfirmedItem) ProtoMessage() {} func (x *TobeConfirmedItem) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[121] + mi := &file_pb_fiee_cast_proto_msgTypes[123] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10655,7 +10757,7 @@ func (x *TobeConfirmedItem) ProtoReflect() protoreflect.Message { // Deprecated: Use TobeConfirmedItem.ProtoReflect.Descriptor instead. func (*TobeConfirmedItem) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{121} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{123} } func (x *TobeConfirmedItem) GetUuid() string { @@ -10783,7 +10885,7 @@ type TobeConfirmedListResp struct { func (x *TobeConfirmedListResp) Reset() { *x = TobeConfirmedListResp{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[122] + mi := &file_pb_fiee_cast_proto_msgTypes[124] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10796,7 +10898,7 @@ func (x *TobeConfirmedListResp) String() string { func (*TobeConfirmedListResp) ProtoMessage() {} func (x *TobeConfirmedListResp) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[122] + mi := &file_pb_fiee_cast_proto_msgTypes[124] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10809,7 +10911,7 @@ func (x *TobeConfirmedListResp) ProtoReflect() protoreflect.Message { // Deprecated: Use TobeConfirmedListResp.ProtoReflect.Descriptor instead. func (*TobeConfirmedListResp) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{122} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{124} } func (x *TobeConfirmedListResp) GetData() []*TobeConfirmedItem { @@ -10838,7 +10940,7 @@ type UpdateWorkAnalysisApprovalIDReq struct { func (x *UpdateWorkAnalysisApprovalIDReq) Reset() { *x = UpdateWorkAnalysisApprovalIDReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[123] + mi := &file_pb_fiee_cast_proto_msgTypes[125] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10851,7 +10953,7 @@ func (x *UpdateWorkAnalysisApprovalIDReq) String() string { func (*UpdateWorkAnalysisApprovalIDReq) ProtoMessage() {} func (x *UpdateWorkAnalysisApprovalIDReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[123] + mi := &file_pb_fiee_cast_proto_msgTypes[125] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10864,7 +10966,7 @@ func (x *UpdateWorkAnalysisApprovalIDReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateWorkAnalysisApprovalIDReq.ProtoReflect.Descriptor instead. func (*UpdateWorkAnalysisApprovalIDReq) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{123} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{125} } func (x *UpdateWorkAnalysisApprovalIDReq) GetUuid() string { @@ -10907,7 +11009,7 @@ type MediaMetricsDailyItem struct { func (x *MediaMetricsDailyItem) Reset() { *x = MediaMetricsDailyItem{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[124] + mi := &file_pb_fiee_cast_proto_msgTypes[126] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10920,7 +11022,7 @@ func (x *MediaMetricsDailyItem) String() string { func (*MediaMetricsDailyItem) ProtoMessage() {} func (x *MediaMetricsDailyItem) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[124] + mi := &file_pb_fiee_cast_proto_msgTypes[126] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10933,7 +11035,7 @@ func (x *MediaMetricsDailyItem) ProtoReflect() protoreflect.Message { // Deprecated: Use MediaMetricsDailyItem.ProtoReflect.Descriptor instead. func (*MediaMetricsDailyItem) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{124} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{126} } func (x *MediaMetricsDailyItem) GetUuid() string { @@ -11053,7 +11155,7 @@ type UpsertMediaMetricsDailyBatchReq struct { func (x *UpsertMediaMetricsDailyBatchReq) Reset() { *x = UpsertMediaMetricsDailyBatchReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[125] + mi := &file_pb_fiee_cast_proto_msgTypes[127] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11066,7 +11168,7 @@ func (x *UpsertMediaMetricsDailyBatchReq) String() string { func (*UpsertMediaMetricsDailyBatchReq) ProtoMessage() {} func (x *UpsertMediaMetricsDailyBatchReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[125] + mi := &file_pb_fiee_cast_proto_msgTypes[127] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11079,7 +11181,7 @@ func (x *UpsertMediaMetricsDailyBatchReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpsertMediaMetricsDailyBatchReq.ProtoReflect.Descriptor instead. func (*UpsertMediaMetricsDailyBatchReq) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{125} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{127} } func (x *UpsertMediaMetricsDailyBatchReq) GetData() []*MediaMetricsDailyItem { @@ -11101,7 +11203,7 @@ type UpsertMediaMetricsDailyBatchResp struct { func (x *UpsertMediaMetricsDailyBatchResp) Reset() { *x = UpsertMediaMetricsDailyBatchResp{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[126] + mi := &file_pb_fiee_cast_proto_msgTypes[128] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11114,7 +11216,7 @@ func (x *UpsertMediaMetricsDailyBatchResp) String() string { func (*UpsertMediaMetricsDailyBatchResp) ProtoMessage() {} func (x *UpsertMediaMetricsDailyBatchResp) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[126] + mi := &file_pb_fiee_cast_proto_msgTypes[128] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11127,7 +11229,7 @@ func (x *UpsertMediaMetricsDailyBatchResp) ProtoReflect() protoreflect.Message { // Deprecated: Use UpsertMediaMetricsDailyBatchResp.ProtoReflect.Descriptor instead. func (*UpsertMediaMetricsDailyBatchResp) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{126} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{128} } func (x *UpsertMediaMetricsDailyBatchResp) GetSuccess() bool { @@ -11161,7 +11263,7 @@ type WorkMetricsDailyItem struct { func (x *WorkMetricsDailyItem) Reset() { *x = WorkMetricsDailyItem{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[127] + mi := &file_pb_fiee_cast_proto_msgTypes[129] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11174,7 +11276,7 @@ func (x *WorkMetricsDailyItem) String() string { func (*WorkMetricsDailyItem) ProtoMessage() {} func (x *WorkMetricsDailyItem) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[127] + mi := &file_pb_fiee_cast_proto_msgTypes[129] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11187,7 +11289,7 @@ func (x *WorkMetricsDailyItem) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkMetricsDailyItem.ProtoReflect.Descriptor instead. func (*WorkMetricsDailyItem) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{127} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{129} } func (x *WorkMetricsDailyItem) GetUuid() string { @@ -11293,7 +11395,7 @@ type UpsertWorkMetricsDailyBatchReq struct { func (x *UpsertWorkMetricsDailyBatchReq) Reset() { *x = UpsertWorkMetricsDailyBatchReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[128] + mi := &file_pb_fiee_cast_proto_msgTypes[130] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11306,7 +11408,7 @@ func (x *UpsertWorkMetricsDailyBatchReq) String() string { func (*UpsertWorkMetricsDailyBatchReq) ProtoMessage() {} func (x *UpsertWorkMetricsDailyBatchReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[128] + mi := &file_pb_fiee_cast_proto_msgTypes[130] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11319,7 +11421,7 @@ func (x *UpsertWorkMetricsDailyBatchReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpsertWorkMetricsDailyBatchReq.ProtoReflect.Descriptor instead. func (*UpsertWorkMetricsDailyBatchReq) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{128} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{130} } func (x *UpsertWorkMetricsDailyBatchReq) GetData() []*WorkMetricsDailyItem { @@ -11341,7 +11443,7 @@ type UpsertWorkMetricsDailyBatchResp struct { func (x *UpsertWorkMetricsDailyBatchResp) Reset() { *x = UpsertWorkMetricsDailyBatchResp{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[129] + mi := &file_pb_fiee_cast_proto_msgTypes[131] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11354,7 +11456,7 @@ func (x *UpsertWorkMetricsDailyBatchResp) String() string { func (*UpsertWorkMetricsDailyBatchResp) ProtoMessage() {} func (x *UpsertWorkMetricsDailyBatchResp) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[129] + mi := &file_pb_fiee_cast_proto_msgTypes[131] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11367,7 +11469,7 @@ func (x *UpsertWorkMetricsDailyBatchResp) ProtoReflect() protoreflect.Message { // Deprecated: Use UpsertWorkMetricsDailyBatchResp.ProtoReflect.Descriptor instead. func (*UpsertWorkMetricsDailyBatchResp) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{129} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{131} } func (x *UpsertWorkMetricsDailyBatchResp) GetSuccess() bool { @@ -11393,7 +11495,7 @@ type GetArtistAyrShareInfoReq struct { func (x *GetArtistAyrShareInfoReq) Reset() { *x = GetArtistAyrShareInfoReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[130] + mi := &file_pb_fiee_cast_proto_msgTypes[132] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11406,7 +11508,7 @@ func (x *GetArtistAyrShareInfoReq) String() string { func (*GetArtistAyrShareInfoReq) ProtoMessage() {} func (x *GetArtistAyrShareInfoReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[130] + mi := &file_pb_fiee_cast_proto_msgTypes[132] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11419,7 +11521,7 @@ func (x *GetArtistAyrShareInfoReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetArtistAyrShareInfoReq.ProtoReflect.Descriptor instead. func (*GetArtistAyrShareInfoReq) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{130} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{132} } func (x *GetArtistAyrShareInfoReq) GetArtistUuid() string { @@ -11477,7 +11579,7 @@ type ArtistAyrShareInfo struct { func (x *ArtistAyrShareInfo) Reset() { *x = ArtistAyrShareInfo{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[131] + mi := &file_pb_fiee_cast_proto_msgTypes[133] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11490,7 +11592,7 @@ func (x *ArtistAyrShareInfo) String() string { func (*ArtistAyrShareInfo) ProtoMessage() {} func (x *ArtistAyrShareInfo) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[131] + mi := &file_pb_fiee_cast_proto_msgTypes[133] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11503,7 +11605,7 @@ func (x *ArtistAyrShareInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ArtistAyrShareInfo.ProtoReflect.Descriptor instead. func (*ArtistAyrShareInfo) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{131} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{133} } func (x *ArtistAyrShareInfo) GetUuid() string { @@ -11582,7 +11684,7 @@ type GetArtistAyrShareInfoResp struct { func (x *GetArtistAyrShareInfoResp) Reset() { *x = GetArtistAyrShareInfoResp{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[132] + mi := &file_pb_fiee_cast_proto_msgTypes[134] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11595,7 +11697,7 @@ func (x *GetArtistAyrShareInfoResp) String() string { func (*GetArtistAyrShareInfoResp) ProtoMessage() {} func (x *GetArtistAyrShareInfoResp) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[132] + mi := &file_pb_fiee_cast_proto_msgTypes[134] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11608,7 +11710,7 @@ func (x *GetArtistAyrShareInfoResp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetArtistAyrShareInfoResp.ProtoReflect.Descriptor instead. func (*GetArtistAyrShareInfoResp) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{132} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{134} } func (x *GetArtistAyrShareInfoResp) GetData() []*ArtistAyrShareInfo { @@ -11640,7 +11742,7 @@ type ListWorkPlatformInfoReq struct { func (x *ListWorkPlatformInfoReq) Reset() { *x = ListWorkPlatformInfoReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[133] + mi := &file_pb_fiee_cast_proto_msgTypes[135] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11653,7 +11755,7 @@ func (x *ListWorkPlatformInfoReq) String() string { func (*ListWorkPlatformInfoReq) ProtoMessage() {} func (x *ListWorkPlatformInfoReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[133] + mi := &file_pb_fiee_cast_proto_msgTypes[135] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11666,7 +11768,7 @@ func (x *ListWorkPlatformInfoReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListWorkPlatformInfoReq.ProtoReflect.Descriptor instead. func (*ListWorkPlatformInfoReq) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{133} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{135} } func (x *ListWorkPlatformInfoReq) GetPlatformIDs() []uint32 { @@ -11724,7 +11826,7 @@ type WorkPlatformInfo struct { func (x *WorkPlatformInfo) Reset() { *x = WorkPlatformInfo{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[134] + mi := &file_pb_fiee_cast_proto_msgTypes[136] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11737,7 +11839,7 @@ func (x *WorkPlatformInfo) String() string { func (*WorkPlatformInfo) ProtoMessage() {} func (x *WorkPlatformInfo) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[134] + mi := &file_pb_fiee_cast_proto_msgTypes[136] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11750,7 +11852,7 @@ func (x *WorkPlatformInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkPlatformInfo.ProtoReflect.Descriptor instead. func (*WorkPlatformInfo) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{134} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{136} } func (x *WorkPlatformInfo) GetUuid() string { @@ -11871,7 +11973,7 @@ type ListWorkPlatformInfoResp struct { func (x *ListWorkPlatformInfoResp) Reset() { *x = ListWorkPlatformInfoResp{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[135] + mi := &file_pb_fiee_cast_proto_msgTypes[137] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11884,7 +11986,7 @@ func (x *ListWorkPlatformInfoResp) String() string { func (*ListWorkPlatformInfoResp) ProtoMessage() {} func (x *ListWorkPlatformInfoResp) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[135] + mi := &file_pb_fiee_cast_proto_msgTypes[137] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11897,7 +11999,7 @@ func (x *ListWorkPlatformInfoResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListWorkPlatformInfoResp.ProtoReflect.Descriptor instead. func (*ListWorkPlatformInfoResp) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{135} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{137} } func (x *ListWorkPlatformInfoResp) GetData() []*WorkPlatformInfo { @@ -11946,7 +12048,7 @@ type WorkListResp_Info struct { func (x *WorkListResp_Info) Reset() { *x = WorkListResp_Info{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[136] + mi := &file_pb_fiee_cast_proto_msgTypes[138] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11959,7 +12061,7 @@ func (x *WorkListResp_Info) String() string { func (*WorkListResp_Info) ProtoMessage() {} func (x *WorkListResp_Info) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[136] + mi := &file_pb_fiee_cast_proto_msgTypes[138] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11972,7 +12074,7 @@ func (x *WorkListResp_Info) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkListResp_Info.ProtoReflect.Descriptor instead. func (*WorkListResp_Info) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{16, 0} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{18, 0} } func (x *WorkListResp_Info) GetWorkUuid() string { @@ -12145,7 +12247,7 @@ type MediaAccountsResp_Info struct { func (x *MediaAccountsResp_Info) Reset() { *x = MediaAccountsResp_Info{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[138] + mi := &file_pb_fiee_cast_proto_msgTypes[140] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12158,7 +12260,7 @@ func (x *MediaAccountsResp_Info) String() string { func (*MediaAccountsResp_Info) ProtoMessage() {} func (x *MediaAccountsResp_Info) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[138] + mi := &file_pb_fiee_cast_proto_msgTypes[140] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12171,7 +12273,7 @@ func (x *MediaAccountsResp_Info) ProtoReflect() protoreflect.Message { // Deprecated: Use MediaAccountsResp_Info.ProtoReflect.Descriptor instead. func (*MediaAccountsResp_Info) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{22, 0} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{24, 0} } func (x *MediaAccountsResp_Info) GetPlatformID() uint32 { @@ -12236,7 +12338,7 @@ type MediaWorksResp_Info struct { func (x *MediaWorksResp_Info) Reset() { *x = MediaWorksResp_Info{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[139] + mi := &file_pb_fiee_cast_proto_msgTypes[141] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12249,7 +12351,7 @@ func (x *MediaWorksResp_Info) String() string { func (*MediaWorksResp_Info) ProtoMessage() {} func (x *MediaWorksResp_Info) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[139] + mi := &file_pb_fiee_cast_proto_msgTypes[141] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12262,7 +12364,7 @@ func (x *MediaWorksResp_Info) ProtoReflect() protoreflect.Message { // Deprecated: Use MediaWorksResp_Info.ProtoReflect.Descriptor instead. func (*MediaWorksResp_Info) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{24, 0} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{26, 0} } func (x *MediaWorksResp_Info) GetWorkUuid() string { @@ -12347,7 +12449,7 @@ type PublishResp_Info struct { func (x *PublishResp_Info) Reset() { *x = PublishResp_Info{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[140] + mi := &file_pb_fiee_cast_proto_msgTypes[142] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12360,7 +12462,7 @@ func (x *PublishResp_Info) String() string { func (*PublishResp_Info) ProtoMessage() {} func (x *PublishResp_Info) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[140] + mi := &file_pb_fiee_cast_proto_msgTypes[142] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12373,7 +12475,7 @@ func (x *PublishResp_Info) ProtoReflect() protoreflect.Message { // Deprecated: Use PublishResp_Info.ProtoReflect.Descriptor instead. func (*PublishResp_Info) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{26, 0} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{28, 0} } func (x *PublishResp_Info) GetArtistUuid() string { @@ -12403,7 +12505,7 @@ type RefreshWorkListResp_Info struct { func (x *RefreshWorkListResp_Info) Reset() { *x = RefreshWorkListResp_Info{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[141] + mi := &file_pb_fiee_cast_proto_msgTypes[143] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12416,7 +12518,7 @@ func (x *RefreshWorkListResp_Info) String() string { func (*RefreshWorkListResp_Info) ProtoMessage() {} func (x *RefreshWorkListResp_Info) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[141] + mi := &file_pb_fiee_cast_proto_msgTypes[143] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12429,7 +12531,7 @@ func (x *RefreshWorkListResp_Info) ProtoReflect() protoreflect.Message { // Deprecated: Use RefreshWorkListResp_Info.ProtoReflect.Descriptor instead. func (*RefreshWorkListResp_Info) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{41, 0} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{43, 0} } func (x *RefreshWorkListResp_Info) GetWorkUuid() string { @@ -12469,7 +12571,7 @@ type RefreshWorkListResp_Info_PlatformInfo struct { func (x *RefreshWorkListResp_Info_PlatformInfo) Reset() { *x = RefreshWorkListResp_Info_PlatformInfo{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[142] + mi := &file_pb_fiee_cast_proto_msgTypes[144] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12482,7 +12584,7 @@ func (x *RefreshWorkListResp_Info_PlatformInfo) String() string { func (*RefreshWorkListResp_Info_PlatformInfo) ProtoMessage() {} func (x *RefreshWorkListResp_Info_PlatformInfo) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[142] + mi := &file_pb_fiee_cast_proto_msgTypes[144] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12495,7 +12597,7 @@ func (x *RefreshWorkListResp_Info_PlatformInfo) ProtoReflect() protoreflect.Mess // Deprecated: Use RefreshWorkListResp_Info_PlatformInfo.ProtoReflect.Descriptor instead. func (*RefreshWorkListResp_Info_PlatformInfo) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{41, 0, 0} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{43, 0, 0} } func (x *RefreshWorkListResp_Info_PlatformInfo) GetPublishMediaID() string { @@ -12555,7 +12657,7 @@ type UpdateOAuthReq_Info struct { func (x *UpdateOAuthReq_Info) Reset() { *x = UpdateOAuthReq_Info{} if protoimpl.UnsafeEnabled { - mi := &file_pb_fiee_cast_proto_msgTypes[143] + mi := &file_pb_fiee_cast_proto_msgTypes[145] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12568,7 +12670,7 @@ func (x *UpdateOAuthReq_Info) String() string { func (*UpdateOAuthReq_Info) ProtoMessage() {} func (x *UpdateOAuthReq_Info) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[143] + mi := &file_pb_fiee_cast_proto_msgTypes[145] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12581,7 +12683,7 @@ func (x *UpdateOAuthReq_Info) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateOAuthReq_Info.ProtoReflect.Descriptor instead. func (*UpdateOAuthReq_Info) Descriptor() ([]byte, []int) { - return file_pb_fiee_cast_proto_rawDescGZIP(), []int{50, 0} + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{52, 0} } func (x *UpdateOAuthReq_Info) GetArtistUuid() string { @@ -12629,7 +12731,7 @@ var file_pb_fiee_cast_proto_rawDesc = []byte{ 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x15, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, - 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc6, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc8, 0x03, 0x0a, 0x10, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x56, 0x61, @@ -12656,985 +12758,1262 @@ var file_pb_fiee_cast_proto_rawDesc = []byte{ 0x75, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x45, 0x4e, 0x55, 0x4d, 0x52, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x6d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x6e, - 0x65, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6e, - 0x65, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x22, 0xa3, 0x05, 0x0a, 0x0d, 0x4d, 0x65, 0x64, 0x69, - 0x61, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2a, 0x0a, 0x10, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x10, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x73, 0x65, - 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, - 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, - 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, - 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, - 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, - 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, - 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x6d, 0x61, 0x6e, 0x61, 0x67, - 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x6d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x6e, + 0x65, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, + 0x6e, 0x65, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x22, 0xa3, 0x05, 0x0a, 0x0d, 0x4d, 0x65, + 0x64, 0x69, 0x61, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2a, 0x0a, 0x10, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, + 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, + 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, + 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, + 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x72, + 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, + 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, + 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x6d, 0x61, 0x6e, + 0x61, 0x67, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x55, 0x75, + 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, + 0x72, 0x55, 0x75, 0x69, 0x64, 0x12, 0x2a, 0x0a, 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, + 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x44, 0x61, 0x74, 0x65, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x44, + 0x61, 0x74, 0x65, 0x12, 0x34, 0x0a, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x41, + 0x75, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x45, 0x4e, 0x55, 0x4d, 0x52, 0x0a, 0x61, + 0x75, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x70, 0x65, 0x6e, + 0x64, 0x69, 0x6e, 0x67, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x56, 0x69, 0x64, + 0x65, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x75, 0x70, 0x6c, 0x6f, 0x61, + 0x64, 0x65, 0x64, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0c, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x12, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x56, 0x69, 0x64, + 0x65, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x72, 0x65, 0x6c, 0x65, 0x61, + 0x73, 0x65, 0x64, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x12, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x56, 0x69, 0x64, + 0x65, 0x6f, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x2a, 0x0a, 0x10, 0x70, 0x65, 0x6e, 0x64, 0x69, + 0x6e, 0x67, 0x50, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x10, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x73, 0x74, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x50, + 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, + 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x50, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x50, 0x6f, 0x73, + 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x72, 0x65, + 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x50, 0x6f, 0x73, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x22, + 0x52, 0x0a, 0x11, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x27, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x55, + 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, + 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x22, 0xd1, 0x03, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, + 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x12, 0x34, 0x0a, + 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x14, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x49, 0x44, 0x45, 0x4e, 0x55, 0x4d, 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x49, 0x44, 0x12, 0x2a, 0x0a, 0x10, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, + 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x26, 0x0a, 0x0e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x49, + 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, + 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, + 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, + 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, + 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, + 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x72, + 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x6d, 0x65, 0x64, + 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, + 0x55, 0x75, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x72, 0x55, 0x75, 0x69, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x6d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x55, 0x75, 0x69, 0x64, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x55, - 0x75, 0x69, 0x64, 0x12, 0x2a, 0x0a, 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6d, + 0x65, 0x12, 0x30, 0x0a, 0x13, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, + 0x41, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, + 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x41, 0x72, 0x65, 0x61, 0x43, + 0x6f, 0x64, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, + 0x4e, 0x75, 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x72, 0x74, 0x69, 0x73, + 0x74, 0x53, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x22, 0x44, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x2a, 0x0a, 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6d, 0x65, 0x64, + 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x22, 0x3e, 0x0a, + 0x10, 0x55, 0x6e, 0x62, 0x69, 0x6e, 0x64, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x52, 0x65, + 0x71, 0x12, 0x2a, 0x0a, 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6d, 0x65, 0x64, + 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x22, 0x41, 0x0a, + 0x11, 0x55, 0x6e, 0x62, 0x69, 0x6e, 0x64, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x2c, 0x0a, 0x11, 0x6f, 0x6c, 0x64, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x72, 0x74, + 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6f, + 0x6c, 0x64, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, + 0x22, 0x88, 0x01, 0x0a, 0x0e, 0x42, 0x69, 0x6e, 0x64, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, + 0x52, 0x65, 0x71, 0x12, 0x2a, 0x0a, 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, - 0x20, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x44, 0x61, 0x74, 0x65, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x44, 0x61, 0x74, - 0x65, 0x12, 0x34, 0x0a, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x41, 0x75, 0x74, - 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x45, 0x4e, 0x55, 0x4d, 0x52, 0x0a, 0x61, 0x75, 0x74, - 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x70, 0x65, 0x6e, 0x64, 0x69, - 0x6e, 0x67, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x11, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x56, 0x69, 0x64, 0x65, 0x6f, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x65, - 0x64, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x12, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x56, 0x69, 0x64, 0x65, 0x6f, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, - 0x64, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x12, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x56, 0x69, 0x64, 0x65, 0x6f, - 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x2a, 0x0a, 0x10, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, - 0x50, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x10, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x50, 0x6f, 0x73, - 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x75, 0x70, - 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x50, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, - 0x2c, 0x0a, 0x11, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x50, 0x6f, 0x73, 0x74, 0x54, - 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x72, 0x65, 0x6c, 0x65, - 0x61, 0x73, 0x65, 0x64, 0x50, 0x6f, 0x73, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x52, 0x0a, - 0x11, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x27, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x13, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x73, 0x65, - 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x22, 0xd1, 0x03, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x64, 0x69, - 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x12, 0x34, 0x0a, 0x0a, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x20, 0x0a, 0x0b, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x55, 0x75, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x55, 0x75, 0x69, + 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xf4, 0x06, 0x0a, 0x12, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, + 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x6d, 0x65, + 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x73, 0x18, + 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x6d, 0x65, 0x64, 0x69, + 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x05, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x0b, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x49, 0x44, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x43, 0x61, + 0x73, 0x74, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x45, 0x4e, 0x55, + 0x4d, 0x52, 0x0b, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x73, 0x12, 0x3b, + 0x0a, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x31, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x50, 0x75, + 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x70, 0x75, 0x62, + 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x31, 0x12, 0x3b, 0x0a, 0x0e, 0x70, + 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x32, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, + 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, + 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x32, 0x12, 0x3b, 0x0a, 0x0e, 0x70, 0x75, 0x62, 0x6c, + 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x33, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x13, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x33, 0x12, 0x3b, 0x0a, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x34, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, + 0x43, 0x61, 0x73, 0x74, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x52, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x34, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x6f, + 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, + 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, + 0x55, 0x75, 0x69, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, + 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, + 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x72, 0x74, + 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, + 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, + 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x13, 0x61, 0x72, 0x74, 0x69, + 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x41, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x18, + 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, + 0x6e, 0x65, 0x41, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x69, 0x6e, 0x65, 0x4e, 0x6f, 0x18, 0x12, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x06, 0x6c, 0x69, 0x6e, 0x65, 0x4e, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, + 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, + 0x72, 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x14, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x22, 0x0a, 0x0c, + 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x18, 0x15, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x4e, 0x75, 0x6d, + 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x16, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x55, 0x75, 0x69, 0x64, + 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x55, 0x75, 0x69, 0x64, 0x73, 0x18, + 0x17, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x55, 0x75, 0x69, + 0x64, 0x73, 0x22, 0x31, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, + 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x6f, 0x72, + 0x6b, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, + 0x6b, 0x55, 0x75, 0x69, 0x64, 0x22, 0xbf, 0x01, 0x0a, 0x0d, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, + 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x24, 0x0a, 0x0d, 0x66, 0x6f, 0x72, 0x62, 0x69, + 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, + 0x66, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x0a, + 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x63, 0x61, 0x6e, 0x4a, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, + 0x63, 0x61, 0x6e, 0x4a, 0x6f, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x6e, 0x51, 0x75, + 0x6f, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x63, 0x61, 0x6e, 0x51, 0x75, + 0x6f, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x61, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, + 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x63, 0x61, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, + 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x73, 0x41, 0x49, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x04, 0x69, 0x73, 0x41, 0x49, 0x22, 0x8d, 0x07, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x52, 0x65, 0x71, 0x12, 0x14, + 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, + 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1a, + 0x0a, 0x08, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x55, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x55, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, + 0x76, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, + 0x76, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x2c, 0x0a, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, + 0x75, 0x69, 0x64, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x61, 0x6d, + 0x65, 0x73, 0x12, 0x36, 0x0a, 0x0b, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, + 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x50, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x45, 0x4e, 0x55, 0x4d, 0x52, 0x0b, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x73, 0x12, 0x3b, 0x0a, 0x0e, 0x70, 0x75, + 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x31, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, + 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x31, 0x12, 0x3b, 0x0a, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, + 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x32, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x13, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x32, 0x12, 0x3b, 0x0a, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x33, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x43, + 0x61, 0x73, 0x74, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x52, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x33, 0x12, 0x3b, 0x0a, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x34, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x43, 0x61, 0x73, 0x74, + 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, + 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x34, 0x12, 0x16, + 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, + 0x69, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, + 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, + 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, + 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, + 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, + 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, + 0x6d, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x13, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, + 0x6f, 0x6e, 0x65, 0x41, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x13, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x41, 0x72, + 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x18, 0x12, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x2a, + 0x0a, 0x10, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x4d, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x4d, 0x73, 0x12, 0x37, 0x0a, 0x0b, 0x61, 0x75, + 0x74, 0x6f, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x15, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x50, 0x75, 0x62, 0x6c, 0x69, + 0x73, 0x68, 0x45, 0x4e, 0x55, 0x4d, 0x52, 0x0b, 0x61, 0x75, 0x74, 0x6f, 0x50, 0x75, 0x62, 0x6c, + 0x69, 0x73, 0x68, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x55, 0x75, 0x69, + 0x64, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x55, + 0x75, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, + 0x4e, 0x75, 0x6d, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x72, 0x74, 0x69, 0x73, + 0x74, 0x53, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x22, 0x31, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1a, + 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x22, 0x90, 0x01, 0x0a, 0x0c, 0x4d, + 0x65, 0x64, 0x69, 0x61, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0a, 0x61, + 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x34, 0x0a, 0x0a, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x45, 0x4e, 0x55, 0x4d, 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x12, 0x2a, 0x0a, 0x10, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x73, 0x65, - 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, - 0x0e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, - 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, - 0x75, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, - 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, - 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, - 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, - 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, - 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, - 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, - 0x75, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x55, 0x75, - 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, - 0x72, 0x55, 0x75, 0x69, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, - 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, - 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x30, 0x0a, 0x13, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x41, 0x72, - 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x61, 0x72, - 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x41, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, - 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x4e, 0x75, - 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x53, - 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x22, 0x44, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, - 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x2a, 0x0a, 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, - 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, - 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x22, 0x3e, 0x0a, 0x10, 0x55, - 0x6e, 0x62, 0x69, 0x6e, 0x64, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, - 0x2a, 0x0a, 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, - 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, - 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x22, 0x41, 0x0a, 0x11, 0x55, - 0x6e, 0x62, 0x69, 0x6e, 0x64, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, - 0x12, 0x2c, 0x0a, 0x11, 0x6f, 0x6c, 0x64, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x72, 0x74, 0x69, 0x73, - 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6f, 0x6c, 0x64, - 0x42, 0x69, 0x6e, 0x64, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x22, 0x88, - 0x01, 0x0a, 0x0e, 0x42, 0x69, 0x6e, 0x64, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x52, 0x65, - 0x71, 0x12, 0x2a, 0x0a, 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6d, 0x65, 0x64, - 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x20, 0x0a, - 0x0b, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x55, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x55, 0x75, 0x69, 0x64, 0x12, - 0x28, 0x0a, 0x0f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, - 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, - 0x72, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xf4, 0x06, 0x0a, 0x12, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, - 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x12, 0x16, 0x0a, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x6d, 0x65, 0x64, 0x69, - 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x73, 0x18, 0x04, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x55, 0x75, 0x69, 0x64, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, - 0x61, 0x6d, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x0b, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x49, 0x44, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x43, 0x61, 0x73, 0x74, - 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x45, 0x4e, 0x55, 0x4d, 0x52, - 0x0b, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x73, 0x12, 0x3b, 0x0a, 0x0e, - 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x31, 0x18, 0x07, + 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x70, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x38, 0x0a, + 0x0d, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x27, + 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x43, + 0x61, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x22, 0x6e, 0x0a, 0x16, 0x4d, 0x65, 0x64, 0x69, 0x61, + 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x65, + 0x71, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, + 0x64, 0x12, 0x34, 0x0a, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x50, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x45, 0x4e, 0x55, 0x4d, 0x52, 0x0a, 0x70, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x22, 0x42, 0x0a, 0x17, 0x4d, 0x65, 0x64, 0x69, 0x61, + 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x27, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x13, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x73, 0x65, + 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x22, 0xcd, 0x05, 0x0a, 0x0b, + 0x57, 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x61, + 0x72, 0x74, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x77, 0x6f, 0x72, + 0x6b, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x28, 0x0a, + 0x0f, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x53, 0x74, + 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x6d, 0x69, + 0x74, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, + 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x34, 0x0a, + 0x15, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, + 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, + 0x61, 0x72, 0x74, 0x12, 0x30, 0x0a, 0x13, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x13, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, + 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x77, + 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x6d, + 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x6d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x12, + 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, + 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, + 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, + 0x2c, 0x0a, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, + 0x75, 0x69, 0x64, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x6d, 0x65, 0x64, 0x69, + 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x73, 0x12, 0x1a, 0x0a, + 0x08, 0x63, 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x08, 0x63, 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x72, 0x74, + 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0c, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, + 0x0c, 0x74, 0x69, 0x6b, 0x74, 0x6f, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x12, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x74, 0x69, 0x6b, 0x74, 0x6f, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x13, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, + 0x1a, 0x0a, 0x08, 0x64, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x08, 0x64, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xce, 0x06, 0x0a, 0x0c, + 0x57, 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2b, 0x0a, 0x04, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x43, 0x61, 0x73, + 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x1a, + 0xfa, 0x05, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, + 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, + 0x55, 0x75, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, + 0x6f, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, + 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x22, 0x0a, 0x0c, + 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, + 0x12, 0x1e, 0x0a, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x2a, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x54, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, + 0x0d, 0x52, 0x0b, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x73, 0x12, 0x2c, + 0x0a, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x61, + 0x6d, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x11, + 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, + 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x6d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x0c, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x55, 0x73, 0x65, + 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, + 0x72, 0x55, 0x75, 0x69, 0x64, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x6d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x72, 0x55, 0x75, 0x69, 0x64, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x70, + 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x44, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, + 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x63, 0x6f, + 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x55, 0x75, 0x69, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x72, 0x74, 0x69, + 0x73, 0x74, 0x53, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, + 0x74, 0x69, 0x6b, 0x74, 0x6f, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x13, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x0c, 0x74, 0x69, 0x6b, 0x74, 0x6f, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x14, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, + 0x0a, 0x08, 0x64, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x08, 0x64, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x22, 0x2b, 0x0a, 0x0d, + 0x57, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, + 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x22, 0xfb, 0x01, 0x0a, 0x0b, 0x57, 0x6f, + 0x72, 0x6b, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x6f, 0x72, + 0x6b, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, + 0x6b, 0x55, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x78, 0x74, + 0x72, 0x61, 0x44, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x65, 0x78, + 0x74, 0x72, 0x61, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1e, 0x0a, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x77, 0x6f, 0x72, + 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x93, 0x08, 0x0a, 0x0e, 0x57, 0x6f, 0x72, 0x6b, + 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x6f, + 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, + 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, + 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x12, 0x2c, + 0x0a, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, + 0x69, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x73, 0x12, 0x2c, 0x0a, 0x11, + 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, + 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0d, 0x52, + 0x0b, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x73, 0x12, 0x1e, 0x0a, 0x0a, + 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3b, 0x0a, 0x0e, + 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x31, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x31, 0x12, 0x3b, 0x0a, 0x0e, 0x70, 0x75, 0x62, - 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x32, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x32, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x32, 0x12, 0x3b, 0x0a, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, - 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x33, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, + 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x33, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x33, 0x12, 0x3b, 0x0a, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x34, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x43, 0x61, + 0x6e, 0x66, 0x69, 0x67, 0x34, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x34, - 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, - 0x55, 0x75, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, - 0x55, 0x75, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, - 0x69, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, - 0x55, 0x75, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, - 0x6f, 0x6e, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, - 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, - 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, - 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x13, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, - 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x41, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x10, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x13, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, - 0x41, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x69, 0x6e, 0x65, 0x4e, 0x6f, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x06, 0x6c, 0x69, 0x6e, 0x65, 0x4e, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61, - 0x72, 0x6b, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, - 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x72, - 0x74, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x12, 0x1e, - 0x0a, 0x0a, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x16, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x20, - 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x55, 0x75, 0x69, 0x64, 0x73, 0x18, 0x17, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x55, 0x75, 0x69, 0x64, 0x73, - 0x22, 0x31, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x49, 0x6d, - 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, - 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, - 0x75, 0x69, 0x64, 0x22, 0xbf, 0x01, 0x0a, 0x0d, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x24, 0x0a, 0x0d, 0x66, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x43, - 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x66, 0x6f, - 0x72, 0x62, 0x69, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x70, - 0x75, 0x62, 0x6c, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, - 0x61, 0x6e, 0x4a, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x63, 0x61, - 0x6e, 0x4a, 0x6f, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x6e, 0x51, 0x75, 0x6f, 0x74, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x63, 0x61, 0x6e, 0x51, 0x75, 0x6f, 0x74, - 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x61, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x63, 0x61, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x73, 0x41, 0x49, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x04, 0x69, 0x73, 0x41, 0x49, 0x22, 0x8d, 0x07, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x57, 0x6f, 0x72, 0x6b, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, - 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, - 0x76, 0x69, 0x64, 0x65, 0x6f, 0x55, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x76, 0x69, 0x64, 0x65, 0x6f, 0x55, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x76, 0x65, - 0x72, 0x55, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x76, 0x65, - 0x72, 0x55, 0x72, 0x6c, 0x12, 0x2c, 0x0a, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, - 0x64, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x6d, - 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, - 0x12, 0x36, 0x0a, 0x0b, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x73, 0x18, - 0x07, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x50, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x45, 0x4e, 0x55, 0x4d, 0x52, 0x0b, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x73, 0x12, 0x3b, 0x0a, 0x0e, 0x70, 0x75, 0x62, 0x6c, - 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x31, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x13, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x31, 0x12, 0x3b, 0x0a, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x32, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, - 0x43, 0x61, 0x73, 0x74, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x52, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x32, 0x12, 0x3b, 0x0a, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x33, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x43, 0x61, 0x73, - 0x74, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, - 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x33, 0x12, - 0x3b, 0x0a, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x34, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x50, - 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x70, 0x75, - 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x34, 0x12, 0x16, 0x0a, 0x06, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, - 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, - 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x0e, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, - 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x18, - 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, - 0x6e, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, - 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x13, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, - 0x65, 0x41, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x13, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x41, 0x72, 0x65, 0x61, - 0x43, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x12, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x2a, 0x0a, 0x10, - 0x63, 0x6f, 0x76, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x4d, 0x73, - 0x18, 0x13, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x4d, 0x73, 0x12, 0x37, 0x0a, 0x0b, 0x61, 0x75, 0x74, 0x6f, - 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, - 0x43, 0x61, 0x73, 0x74, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, - 0x45, 0x4e, 0x55, 0x4d, 0x52, 0x0b, 0x61, 0x75, 0x74, 0x6f, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, - 0x68, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, - 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x55, 0x75, 0x69, - 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x4e, 0x75, - 0x6d, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x53, - 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x22, 0x31, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, - 0x6f, 0x72, 0x6b, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1a, 0x0a, 0x08, + 0x12, 0x1a, 0x0a, 0x08, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x55, 0x72, 0x6c, 0x18, 0x0d, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x55, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, + 0x63, 0x6f, 0x76, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x63, 0x6f, 0x76, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x70, 0x70, 0x72, + 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x44, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, + 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x44, 0x12, 0x33, 0x0a, 0x0b, 0x57, 0x6f, 0x72, 0x6b, + 0x4c, 0x6f, 0x67, 0x44, 0x61, 0x74, 0x61, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, + 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x0b, 0x57, 0x6f, 0x72, 0x6b, 0x4c, 0x6f, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x22, 0x0a, + 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x11, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, + 0x79, 0x12, 0x4a, 0x0a, 0x0c, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x44, 0x61, 0x74, + 0x61, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, + 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x4d, 0x65, + 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x0c, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2a, 0x0a, + 0x10, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x4d, + 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x4d, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, + 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, + 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x6e, 0x65, 0x65, + 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x73, 0x18, 0x19, 0x20, 0x03, + 0x28, 0x05, 0x52, 0x0f, 0x6e, 0x65, 0x65, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x49, 0x44, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, + 0x4e, 0x75, 0x6d, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x72, 0x74, 0x69, 0x73, + 0x74, 0x53, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x1a, 0x54, 0x0a, 0x11, 0x4d, 0x65, 0x64, 0x69, 0x61, + 0x41, 0x63, 0x63, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x29, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, + 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xca, 0x02, + 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, + 0x71, 0x12, 0x34, 0x0a, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, + 0x6b, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x4e, 0x55, 0x4d, 0x52, 0x0a, 0x77, 0x6f, 0x72, + 0x6b, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, + 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, + 0x75, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x49, + 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, + 0x6c, 0x49, 0x44, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x52, 0x65, + 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x72, 0x6d, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x72, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, + 0x24, 0x0a, 0x0d, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x52, 0x65, 0x70, 0x6c, 0x79, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, + 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x37, 0x0a, 0x0b, 0x61, 0x75, 0x74, 0x6f, 0x50, 0x75, 0x62, + 0x6c, 0x69, 0x73, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x43, 0x61, 0x73, + 0x74, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x45, 0x4e, 0x55, + 0x4d, 0x52, 0x0b, 0x61, 0x75, 0x74, 0x6f, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x12, 0x1a, + 0x0a, 0x08, 0x63, 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x08, 0x63, 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0x32, 0x0a, 0x10, 0x4d, 0x65, + 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x12, 0x1e, + 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x22, 0xa2, + 0x02, 0x0a, 0x11, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x30, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x1a, 0xda, 0x01, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x1e, 0x0a, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x12, + 0x1c, 0x0a, 0x09, 0x66, 0x61, 0x6e, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x09, 0x66, 0x61, 0x6e, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, + 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x61, + 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x2a, 0x0a, 0x10, 0x6d, + 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x2a, 0x0a, 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, + 0x61, 0x6d, 0x65, 0x22, 0x6b, 0x0a, 0x0d, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x57, 0x6f, 0x72, 0x6b, + 0x73, 0x52, 0x65, 0x71, 0x12, 0x2a, 0x0a, 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, + 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, + 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, + 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, + 0x22, 0x8a, 0x03, 0x0a, 0x0e, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2d, 0x0a, 0x04, 0x64, 0x61, 0x74, + 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4d, + 0x65, 0x64, 0x69, 0x61, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x1a, 0xb2, 0x02, 0x0a, 0x04, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, + 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, + 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x22, 0x0a, + 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, + 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, + 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x69, + 0x6d, 0x61, 0x67, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x55, 0x72, + 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x55, 0x72, + 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x22, 0x2a, 0x0a, + 0x0a, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x77, + 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, + 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x73, 0x22, 0x85, 0x01, 0x0a, 0x0b, 0x50, 0x75, + 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2a, 0x0a, 0x04, 0x64, 0x61, 0x74, + 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x50, + 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x4a, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1e, 0x0a, + 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x22, 0x0a, + 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, + 0x79, 0x22, 0x86, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, + 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x12, 0x2c, + 0x0a, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, + 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x73, 0x12, 0x2c, 0x0a, 0x11, + 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x53, 0x0a, 0x0d, 0x52, 0x65, + 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x61, + 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x77, + 0x6f, 0x72, 0x6b, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x22, + 0x28, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, + 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x22, 0x29, 0x0a, 0x0b, 0x57, 0x6f, 0x72, + 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, + 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, + 0x55, 0x75, 0x69, 0x64, 0x22, 0xe6, 0x01, 0x0a, 0x0c, 0x57, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, + 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, + 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, + 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, + 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, + 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, + 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x30, 0x0a, 0x13, 0x61, 0x72, 0x74, 0x69, 0x73, + 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x41, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, + 0x65, 0x41, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x77, 0x6f, 0x72, + 0x6b, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x22, 0x2f, 0x0a, + 0x0d, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x12, 0x1e, + 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x22, 0xd4, + 0x01, 0x0a, 0x0e, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x32, 0x0a, 0x14, 0x54, 0x69, 0x6b, 0x54, 0x6f, 0x6b, 0x45, 0x66, 0x66, 0x65, 0x63, + 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x14, 0x54, 0x69, 0x6b, 0x54, 0x6f, 0x6b, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x15, 0x59, 0x6f, 0x75, 0x54, 0x75, 0x62, 0x65, + 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x15, 0x59, 0x6f, 0x75, 0x54, 0x75, 0x62, 0x65, 0x45, 0x66, 0x66, + 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x49, + 0x6e, 0x73, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x49, 0x6e, 0x73, 0x45, 0x66, 0x66, 0x65, 0x63, + 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x44, 0x4d, 0x45, + 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x10, 0x44, 0x4d, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x4e, 0x0a, 0x12, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x57, + 0x6f, 0x72, 0x6b, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x12, 0x38, 0x0a, 0x0a, 0x69, + 0x6d, 0x61, 0x67, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x18, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, + 0x6b, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x52, 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65, + 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x22, 0x91, 0x01, 0x0a, 0x13, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, + 0x57, 0x6f, 0x72, 0x6b, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x12, 0x38, 0x0a, + 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x18, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, + 0x6f, 0x72, 0x6b, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x52, 0x0a, 0x69, 0x6d, 0x61, + 0x67, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x75, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x73, + 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x66, + 0x61, 0x69, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, + 0x66, 0x61, 0x69, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xdd, 0x02, 0x0a, 0x0c, 0x50, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x6f, + 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, + 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x12, 0x2a, 0x0a, 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, + 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x54, 0x79, 0x70, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, + 0x65, 0x73, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, + 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x12, 0x26, 0x0a, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, + 0x68, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, + 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x49, 0x64, 0x12, 0x3d, + 0x0a, 0x0d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x50, 0x75, 0x62, + 0x6c, 0x69, 0x73, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x45, 0x4e, 0x55, 0x4d, 0x52, 0x0d, + 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, + 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, + 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x55, 0x75, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x75, 0x69, 0x64, 0x22, 0x5b, 0x0a, 0x19, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x12, 0x3e, 0x0a, 0x10, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x12, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x10, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x6e, + 0x66, 0x6f, 0x44, 0x61, 0x74, 0x61, 0x22, 0x38, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x57, 0x6f, 0x72, 0x6b, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, + 0x22, 0x9b, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x50, + 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x22, 0x90, 0x01, 0x0a, 0x0c, 0x4d, 0x65, 0x64, - 0x69, 0x61, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x12, 0x34, 0x0a, 0x0a, 0x70, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x43, + 0x61, 0x73, 0x74, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x45, 0x4e, + 0x55, 0x4d, 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x12, 0x16, + 0x0a, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3a, + 0x0a, 0x12, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x65, 0x71, 0x12, 0x24, 0x0a, 0x0d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x70, 0x75, 0x62, + 0x6c, 0x69, 0x73, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xe2, 0x03, 0x0a, 0x13, 0x52, + 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x32, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1e, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x57, + 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x96, 0x03, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x1a, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x12, 0x57, 0x0a, 0x10, 0x50, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x44, 0x61, 0x74, 0x61, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x66, + 0x72, 0x65, 0x73, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x10, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x6e, 0x66, 0x6f, + 0x44, 0x61, 0x74, 0x61, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, + 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x4b, 0x65, 0x79, 0x1a, 0xf8, 0x01, 0x0a, 0x0c, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x26, 0x0a, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, + 0x4d, 0x65, 0x64, 0x69, 0x61, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, + 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x49, 0x44, 0x12, 0x34, 0x0a, + 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x14, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x49, 0x44, 0x45, 0x4e, 0x55, 0x4d, 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x49, 0x44, 0x12, 0x2e, 0x0a, 0x12, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4d, 0x65, + 0x64, 0x69, 0x61, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x12, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x73, 0x65, 0x72, + 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x55, + 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x55, 0x75, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, + 0x3d, 0x0a, 0x0f, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, + 0x65, 0x71, 0x12, 0x2a, 0x0a, 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6d, 0x65, + 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x22, 0x24, + 0x0a, 0x10, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x75, 0x72, 0x6c, 0x22, 0x3f, 0x0a, 0x11, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x41, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x56, 0x32, 0x52, 0x65, 0x71, 0x12, 0x2a, 0x0a, 0x10, 0x6d, 0x65, 0x64, + 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x55, 0x75, 0x69, 0x64, 0x22, 0x8e, 0x01, 0x0a, 0x12, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1e, 0x0a, 0x0a, + 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, + 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x1e, 0x0a, 0x0a, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, + 0x61, 0x75, 0x74, 0x68, 0x55, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, + 0x75, 0x74, 0x68, 0x55, 0x72, 0x6c, 0x22, 0x56, 0x0a, 0x14, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x59, + 0x6f, 0x75, 0x74, 0x75, 0x62, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x2a, + 0x0a, 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, + 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x7d, + 0x0a, 0x15, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x59, 0x6f, 0x75, 0x74, 0x75, 0x62, 0x65, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x72, 0x65, 0x66, + 0x72, 0x65, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0c, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1e, 0x0a, + 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x77, 0x0a, + 0x13, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x64, 0x65, 0x54, 0x6f, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, + 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, + 0x12, 0x34, 0x0a, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x50, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x45, 0x4e, 0x55, 0x4d, 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x22, 0x16, 0x0a, 0x14, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x43, + 0x6f, 0x64, 0x65, 0x54, 0x6f, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0xf8, + 0x01, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x52, 0x65, + 0x71, 0x12, 0x2d, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x41, 0x75, + 0x74, 0x68, 0x52, 0x65, 0x71, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, + 0x1a, 0xb6, 0x01, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x34, 0x0a, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x45, 0x4e, 0x55, 0x4d, 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x12, - 0x2a, 0x0a, 0x10, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x4e, - 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x38, 0x0a, 0x0d, 0x4d, - 0x65, 0x64, 0x69, 0x61, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x27, 0x0a, 0x04, - 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x43, 0x61, 0x73, - 0x74, 0x2e, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x22, 0xcd, 0x05, 0x0a, 0x0b, 0x57, 0x6f, 0x72, 0x6b, 0x4c, 0x69, - 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x56, - 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, - 0x56, 0x61, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, - 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x61, 0x74, 0x65, 0x67, - 0x6f, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x43, - 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x75, 0x62, 0x6d, 0x69, - 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0f, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x45, 0x6e, 0x64, 0x54, 0x69, - 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, - 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x34, 0x0a, 0x15, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x30, 0x0a, - 0x13, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, - 0x65, 0x45, 0x6e, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x12, - 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, - 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, - 0x56, 0x61, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6d, 0x61, 0x6e, 0x61, 0x67, - 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, - 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, - 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x6d, 0x65, 0x64, - 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x73, 0x18, 0x0e, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x73, 0x74, 0x54, - 0x79, 0x70, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63, 0x6f, 0x73, 0x74, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x55, 0x75, 0x69, - 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x55, - 0x75, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, - 0x4e, 0x75, 0x6d, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x72, 0x74, 0x69, 0x73, - 0x74, 0x53, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x74, 0x69, 0x6b, 0x74, 0x6f, - 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x74, - 0x69, 0x6b, 0x74, 0x6f, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x69, - 0x6e, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, - 0x69, 0x6e, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x6d, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x64, 0x6d, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xce, 0x06, 0x0a, 0x0c, 0x57, 0x6f, 0x72, 0x6b, 0x4c, 0x69, - 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, - 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0xfa, 0x05, 0x0a, 0x04, 0x49, 0x6e, - 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x12, 0x1e, - 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, - 0x0a, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, - 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x61, - 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x77, 0x6f, - 0x72, 0x6b, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x77, 0x6f, - 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, - 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x75, - 0x62, 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x49, 0x44, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0b, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x6d, 0x65, 0x64, 0x69, - 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x0a, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, - 0x75, 0x69, 0x64, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x55, - 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, - 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, - 0x12, 0x22, 0x0a, 0x0c, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x55, 0x75, 0x69, 0x64, 0x73, - 0x18, 0x0d, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x55, - 0x75, 0x69, 0x64, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, - 0x49, 0x44, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, - 0x61, 0x6c, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, - 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x63, 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x10, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x55, 0x75, 0x69, 0x64, - 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, - 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x54, 0x69, 0x74, - 0x6c, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x4e, - 0x75, 0x6d, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, - 0x53, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x74, 0x69, 0x6b, 0x74, 0x6f, 0x6b, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x74, 0x69, - 0x6b, 0x74, 0x6f, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, - 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x69, - 0x6e, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x6d, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x64, 0x6d, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x54, - 0x79, 0x70, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x22, 0x2b, 0x0a, 0x0d, 0x57, 0x6f, 0x72, 0x6b, 0x44, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, - 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, - 0x75, 0x69, 0x64, 0x22, 0xfb, 0x01, 0x0a, 0x0b, 0x57, 0x6f, 0x72, 0x6b, 0x4c, 0x6f, 0x67, 0x49, - 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x12, - 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, - 0x22, 0x0a, 0x0c, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x49, - 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, - 0x72, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, - 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x78, 0x74, 0x72, 0x61, 0x44, 0x61, 0x74, 0x61, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x65, 0x78, 0x74, 0x72, 0x61, 0x44, 0x61, 0x74, - 0x61, 0x12, 0x1e, 0x0a, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x22, 0x93, 0x08, 0x0a, 0x0e, 0x57, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x52, 0x65, 0x73, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, + 0x12, 0x0a, 0x04, 0x61, 0x73, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, + 0x73, 0x49, 0x44, 0x12, 0x2a, 0x0a, 0x10, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, + 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x18, 0x0a, 0x07, 0x61, 0x75, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x61, 0x75, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x83, 0x01, 0x0a, 0x0f, 0x52, 0x65, + 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x22, 0x0a, + 0x0c, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x12, 0x34, 0x0a, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x50, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x45, 0x4e, 0x55, 0x4d, 0x52, 0x0a, 0x70, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, + 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, + 0x5c, 0x0a, 0x10, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x26, 0x0a, 0x0e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, 0x7f, 0x0a, + 0x13, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, - 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x12, 0x16, 0x0a, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x6d, 0x65, 0x64, 0x69, - 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x73, 0x18, 0x05, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x55, 0x75, 0x69, 0x64, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, - 0x61, 0x6d, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x49, 0x44, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0b, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3b, 0x0a, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, - 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x31, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, - 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x52, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x31, 0x12, 0x3b, 0x0a, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x32, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x43, 0x61, - 0x73, 0x74, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x52, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x32, - 0x12, 0x3b, 0x0a, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x33, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, - 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x70, - 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x33, 0x12, 0x3b, 0x0a, - 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x34, 0x18, - 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x50, 0x75, 0x62, - 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x70, 0x75, 0x62, 0x6c, - 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x34, 0x12, 0x1a, 0x0a, 0x08, 0x76, 0x69, - 0x64, 0x65, 0x6f, 0x55, 0x72, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x69, - 0x64, 0x65, 0x6f, 0x55, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x55, - 0x72, 0x6c, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x55, - 0x72, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x44, - 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, - 0x49, 0x44, 0x12, 0x33, 0x0a, 0x0b, 0x57, 0x6f, 0x72, 0x6b, 0x4c, 0x6f, 0x67, 0x44, 0x61, 0x74, - 0x61, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, - 0x6f, 0x72, 0x6b, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x57, 0x6f, 0x72, 0x6b, - 0x4c, 0x6f, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x22, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x43, - 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x77, - 0x6f, 0x72, 0x6b, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x4a, 0x0a, 0x0c, 0x6d, - 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x44, 0x61, 0x74, 0x61, 0x18, 0x12, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x26, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, - 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x6d, 0x65, 0x64, 0x69, 0x61, - 0x41, 0x63, 0x63, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2a, 0x0a, 0x10, 0x63, 0x6f, 0x76, 0x65, 0x72, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x4d, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x10, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x4d, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x55, 0x75, 0x69, - 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x55, - 0x75, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, - 0x64, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, - 0x75, 0x69, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x6e, 0x65, 0x65, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x73, 0x18, 0x19, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0f, 0x6e, 0x65, - 0x65, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x73, 0x12, 0x22, 0x0a, - 0x0c, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x18, 0x1a, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x4e, 0x75, - 0x6d, 0x1a, 0x54, 0x0a, 0x11, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x44, 0x61, 0x74, - 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x29, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4d, - 0x65, 0x64, 0x69, 0x61, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xca, 0x02, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x12, 0x34, 0x0a, 0x0a, 0x77, - 0x6f, 0x72, 0x6b, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x14, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x45, 0x4e, 0x55, 0x4d, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x12, 0x1e, 0x0a, - 0x0a, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x44, 0x12, 0x24, 0x0a, - 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x52, 0x65, 0x6d, - 0x61, 0x72, 0x6b, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x72, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x70, 0x70, - 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0d, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, - 0x37, 0x0a, 0x0b, 0x61, 0x75, 0x74, 0x6f, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x41, 0x75, 0x74, 0x6f, - 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x45, 0x4e, 0x55, 0x4d, 0x52, 0x0b, 0x61, 0x75, 0x74, - 0x6f, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x73, 0x74, - 0x54, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x63, 0x6f, 0x73, 0x74, - 0x54, 0x79, 0x70, 0x65, 0x22, 0x32, 0x0a, 0x10, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, - 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, - 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x22, 0xa2, 0x02, 0x0a, 0x11, 0x4d, 0x65, 0x64, - 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x30, - 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x43, - 0x61, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, - 0x1a, 0xda, 0x01, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x61, 0x6e, - 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x66, 0x61, - 0x6e, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x77, 0x6f, 0x72, 0x6b, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, - 0x75, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, - 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x2a, 0x0a, 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, - 0x64, 0x12, 0x2a, 0x0a, 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6d, 0x65, 0x64, - 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x6b, 0x0a, - 0x0d, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x12, 0x2a, - 0x0a, 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, - 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, - 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x8a, 0x03, 0x0a, 0x0e, 0x4d, - 0x65, 0x64, 0x69, 0x61, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, - 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x12, 0x2d, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x19, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x57, 0x6f, - 0x72, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, - 0x74, 0x61, 0x1a, 0xb2, 0x02, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x77, - 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, - 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, + 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, + 0x12, 0x2c, 0x0a, 0x11, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4d, 0x65, 0x64, 0x69, + 0x61, 0x55, 0x75, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x70, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x75, 0x69, 0x64, 0x22, 0x94, + 0x01, 0x0a, 0x14, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, + 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, + 0x75, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, + 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x49, 0x44, 0x12, 0x2c, 0x0a, 0x11, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4d, + 0x65, 0x64, 0x69, 0x61, 0x55, 0x75, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x75, 0x69, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x22, 0x9e, 0x02, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x56, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x65, 0x71, 0x12, 0x12, + 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, + 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x75, 0x69, + 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, + 0x55, 0x75, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x4e, + 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, + 0x55, 0x75, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, + 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, + 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x72, 0x74, + 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x72, 0x74, 0x69, + 0x73, 0x74, 0x4e, 0x75, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x72, 0x74, + 0x69, 0x73, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, + 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x2b, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x56, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, + 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, + 0x75, 0x69, 0x64, 0x22, 0x27, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x53, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x22, 0x8c, 0x03, 0x0a, + 0x12, 0x47, 0x65, 0x74, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x43, - 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x77, - 0x6f, 0x72, 0x6b, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x77, - 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x73, - 0x75, 0x62, 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, - 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x12, - 0x1a, 0x0a, 0x08, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x55, 0x72, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x55, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x63, - 0x6f, 0x76, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, - 0x6f, 0x76, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x22, 0x2a, 0x0a, 0x0a, 0x50, 0x75, 0x62, 0x6c, 0x69, - 0x73, 0x68, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, - 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, - 0x69, 0x64, 0x73, 0x22, 0x85, 0x01, 0x0a, 0x0b, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x2a, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x16, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, - 0x52, 0x65, 0x73, 0x70, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x1a, - 0x4a, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, - 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, - 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x43, - 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x77, - 0x6f, 0x72, 0x6b, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x22, 0x86, 0x01, 0x0a, 0x0c, - 0x52, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, - 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x12, 0x2c, 0x0a, 0x11, 0x6d, 0x65, 0x64, 0x69, - 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x55, 0x75, 0x69, 0x64, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, - 0x61, 0x6d, 0x65, 0x73, 0x22, 0x53, 0x0a, 0x0d, 0x52, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, - 0x68, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, - 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, - 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x61, 0x74, - 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x77, 0x6f, 0x72, - 0x6b, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x22, 0x28, 0x0a, 0x0a, 0x44, 0x65, 0x6c, - 0x57, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, - 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, - 0x75, 0x69, 0x64, 0x22, 0x29, 0x0a, 0x0b, 0x57, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x22, 0xe6, - 0x01, 0x0a, 0x0c, 0x57, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x1e, 0x0a, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, - 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, + 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, - 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, + 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x20, 0x0a, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x04, + 0x20, 0x0a, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, - 0x65, 0x12, 0x30, 0x0a, 0x13, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, - 0x41, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, - 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x41, 0x72, 0x65, 0x61, 0x43, - 0x6f, 0x64, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x61, 0x74, 0x65, 0x67, - 0x6f, 0x72, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x43, - 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x22, 0x2f, 0x0a, 0x0d, 0x41, 0x72, 0x74, 0x69, 0x73, - 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, - 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, - 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x22, 0xd4, 0x01, 0x0a, 0x0e, 0x41, 0x72, 0x74, - 0x69, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x32, 0x0a, 0x14, 0x54, - 0x69, 0x6b, 0x54, 0x6f, 0x6b, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x14, 0x54, 0x69, 0x6b, 0x54, 0x6f, - 0x6b, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, - 0x34, 0x0a, 0x15, 0x59, 0x6f, 0x75, 0x54, 0x75, 0x62, 0x65, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, - 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x15, - 0x59, 0x6f, 0x75, 0x54, 0x75, 0x62, 0x65, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x49, 0x6e, 0x73, 0x45, 0x66, 0x66, 0x65, - 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x11, 0x49, 0x6e, 0x73, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x44, 0x4d, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x44, - 0x4d, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, - 0x4e, 0x0a, 0x12, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x42, 0x61, 0x74, - 0x63, 0x68, 0x52, 0x65, 0x71, 0x12, 0x38, 0x0a, 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x57, 0x6f, - 0x72, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x43, 0x61, 0x73, 0x74, - 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x49, 0x6d, 0x61, 0x67, 0x65, - 0x52, 0x65, 0x71, 0x52, 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x22, - 0x91, 0x01, 0x0a, 0x13, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x42, 0x61, - 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x12, 0x38, 0x0a, 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65, - 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x43, 0x61, - 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x49, 0x6d, 0x61, - 0x67, 0x65, 0x52, 0x65, 0x71, 0x52, 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x57, 0x6f, 0x72, 0x6b, - 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x61, 0x69, 0x6c, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x61, 0x69, 0x6c, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x22, 0xdd, 0x02, 0x0a, 0x0c, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, - 0x12, 0x2a, 0x0a, 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x55, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6d, 0x65, 0x64, 0x69, - 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, - 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, - 0x0a, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, - 0x12, 0x26, 0x0a, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4d, 0x65, 0x64, 0x69, 0x61, - 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, - 0x68, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x49, 0x64, 0x12, 0x3d, 0x0a, 0x0d, 0x70, 0x75, 0x62, 0x6c, - 0x69, 0x73, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x17, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x45, 0x4e, 0x55, 0x4d, 0x52, 0x0d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, - 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, - 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, - 0x22, 0x0a, 0x0c, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x75, 0x69, 0x64, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, - 0x75, 0x69, 0x64, 0x22, 0x5b, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, - 0x6b, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, - 0x12, 0x3e, 0x0a, 0x10, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x6e, 0x66, 0x6f, - 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x43, 0x61, 0x73, - 0x74, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x10, - 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x44, 0x61, 0x74, 0x61, - 0x22, 0x38, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x50, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1a, - 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x22, 0x9b, 0x01, 0x0a, 0x17, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, - 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, - 0x69, 0x64, 0x12, 0x34, 0x0a, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x50, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x45, 0x4e, 0x55, 0x4d, 0x52, 0x0a, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3a, 0x0a, 0x12, 0x52, 0x65, 0x66, 0x72, - 0x65, 0x73, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x24, - 0x0a, 0x0d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x22, 0xe2, 0x03, 0x0a, 0x13, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, - 0x57, 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x32, 0x0a, 0x04, - 0x44, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x43, 0x61, 0x73, - 0x74, 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, - 0x1a, 0x96, 0x03, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x6f, 0x72, - 0x6b, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, - 0x6b, 0x55, 0x75, 0x69, 0x64, 0x12, 0x57, 0x0a, 0x10, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x2b, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x57, 0x6f, - 0x72, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x2e, - 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x10, 0x50, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1e, - 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x1a, 0xf8, - 0x01, 0x0a, 0x0c, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, - 0x26, 0x0a, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x49, - 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, - 0x4d, 0x65, 0x64, 0x69, 0x61, 0x49, 0x44, 0x12, 0x34, 0x0a, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x43, 0x61, - 0x73, 0x74, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x45, 0x4e, 0x55, - 0x4d, 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x12, 0x2e, 0x0a, - 0x12, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x70, 0x75, 0x62, 0x6c, 0x69, - 0x73, 0x68, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x20, 0x0a, - 0x0b, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, - 0x22, 0x0a, 0x0c, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x75, 0x69, 0x64, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, - 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x3d, 0x0a, 0x0f, 0x4f, 0x41, 0x75, - 0x74, 0x68, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x12, 0x2a, 0x0a, 0x10, - 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x22, 0x24, 0x0a, 0x10, 0x4f, 0x41, 0x75, 0x74, - 0x68, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, - 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x3f, - 0x0a, 0x11, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x56, 0x32, - 0x52, 0x65, 0x71, 0x12, 0x2a, 0x0a, 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6d, - 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x22, - 0x8e, 0x01, 0x0a, 0x12, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, - 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, - 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, - 0x65, 0x4b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x66, - 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x75, 0x74, 0x68, 0x55, 0x72, - 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x75, 0x74, 0x68, 0x55, 0x72, 0x6c, - 0x22, 0x56, 0x0a, 0x14, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x59, 0x6f, 0x75, 0x74, 0x75, 0x62, 0x65, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x2a, 0x0a, 0x10, 0x6d, 0x65, 0x64, 0x69, - 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x55, 0x75, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x7d, 0x0a, 0x15, 0x4f, 0x41, 0x75, 0x74, - 0x68, 0x59, 0x6f, 0x75, 0x74, 0x75, 0x62, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x66, 0x72, 0x65, - 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, - 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x65, 0x78, 0x70, - 0x69, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x77, 0x0a, 0x13, 0x4f, 0x41, 0x75, 0x74, 0x68, - 0x43, 0x6f, 0x64, 0x65, 0x54, 0x6f, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x12, - 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, - 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x34, 0x0a, 0x0a, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, - 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, - 0x45, 0x4e, 0x55, 0x4d, 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, - 0x22, 0x16, 0x0a, 0x14, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x64, 0x65, 0x54, 0x6f, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0xf8, 0x01, 0x0a, 0x0e, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x52, 0x65, 0x71, 0x12, 0x2d, 0x0a, 0x04, 0x44, - 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x43, 0x61, 0x73, 0x74, - 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x52, 0x65, 0x71, 0x2e, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x1a, 0xb6, 0x01, 0x0a, 0x04, 0x49, - 0x6e, 0x66, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, - 0x75, 0x69, 0x64, 0x12, 0x34, 0x0a, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, - 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x50, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x45, 0x4e, 0x55, 0x4d, 0x52, 0x0a, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x73, 0x49, - 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x73, 0x49, 0x44, 0x12, 0x2a, 0x0a, - 0x10, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x75, 0x74, - 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x75, 0x74, 0x49, - 0x6e, 0x66, 0x6f, 0x22, 0x83, 0x01, 0x0a, 0x0f, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x22, 0x0a, 0x0c, 0x72, 0x65, 0x66, 0x72, 0x65, - 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, - 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x34, 0x0a, 0x0a, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x14, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, - 0x44, 0x45, 0x4e, 0x55, 0x4d, 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, - 0x44, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, 0x5c, 0x0a, 0x10, 0x52, 0x65, 0x66, - 0x72, 0x65, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x20, 0x0a, - 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, - 0x26, 0x0a, 0x0e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x49, - 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, 0x7f, 0x0a, 0x13, 0x50, 0x75, 0x62, 0x6c, 0x69, - 0x73, 0x68, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x12, 0x1a, - 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x12, 0x2c, 0x0a, 0x11, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x75, 0x69, 0x64, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4d, - 0x65, 0x64, 0x69, 0x61, 0x55, 0x75, 0x69, 0x64, 0x22, 0x94, 0x01, 0x0a, 0x14, 0x50, 0x75, 0x62, - 0x6c, 0x69, 0x73, 0x68, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x12, 0x1e, 0x0a, - 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x12, 0x2c, 0x0a, - 0x11, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x75, - 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x75, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x69, - 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x22, - 0x9e, 0x02, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x53, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, - 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x75, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x75, 0x69, 0x64, 0x12, 0x20, - 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, - 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, - 0x6e, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x75, 0x6d, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x75, 0x6d, - 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, - 0x22, 0x2b, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x53, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x22, 0x27, 0x0a, - 0x11, 0x47, 0x65, 0x74, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, - 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x22, 0x8c, 0x03, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x56, 0x69, - 0x64, 0x65, 0x6f, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x12, 0x0a, - 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, - 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, - 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, - 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, - 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, - 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, - 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x72, 0x74, - 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x75, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x75, 0x69, 0x64, 0x12, 0x20, 0x0a, - 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x1e, 0x0a, 0x0a, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0a, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, - 0x1c, 0x0a, 0x09, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x75, 0x6d, 0x18, 0x0b, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, - 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, - 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, - 0x6c, 0x49, 0x44, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x70, 0x72, 0x6f, - 0x76, 0x61, 0x6c, 0x49, 0x44, 0x22, 0xb5, 0x02, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x69, - 0x64, 0x65, 0x6f, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, - 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, - 0x74, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x61, - 0x72, 0x74, 0x69, 0x73, 0x74, 0x4b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4b, 0x65, 0x79, 0x77, 0x6f, - 0x72, 0x64, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x4b, 0x65, - 0x79, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x6f, 0x72, 0x4b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x28, 0x0a, - 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, - 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x45, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, - 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, - 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1e, 0x0a, - 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x22, 0xa5, 0x03, - 0x0a, 0x0f, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, - 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, - 0x75, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, - 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, - 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, - 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, - 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, - 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x71, 0x75, 0x6f, 0x74, 0x65, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x71, 0x75, 0x6f, - 0x74, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x6f, 0x72, 0x55, 0x75, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x75, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x44, 0x61, - 0x74, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, - 0x75, 0x6d, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, - 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x0d, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x73, - 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x57, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x69, 0x64, - 0x65, 0x6f, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x29, 0x0a, + 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x75, 0x69, 0x64, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x55, + 0x75, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x4e, 0x61, + 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, + 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x71, 0x75, 0x6f, 0x74, 0x65, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, + 0x75, 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, + 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x0c, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x1e, 0x0a, 0x0a, 0x61, + 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x44, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x44, 0x22, 0xb5, 0x02, 0x0a, 0x13, + 0x4c, 0x69, 0x73, 0x74, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, + 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4b, 0x65, 0x79, 0x77, 0x6f, + 0x72, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x72, 0x74, 0x69, 0x73, + 0x74, 0x4b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x6f, 0x72, 0x4b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x4b, 0x65, 0x79, 0x77, 0x6f, + 0x72, 0x64, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, + 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x24, 0x0a, + 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x64, 0x44, + 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, + 0x69, 0x7a, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, + 0x69, 0x7a, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, + 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, + 0x75, 0x69, 0x64, 0x22, 0xa5, 0x03, 0x0a, 0x0f, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, + 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, + 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x61, + 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x61, + 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x61, + 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x1e, 0x0a, + 0x0a, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0a, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x0a, + 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x75, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x75, 0x69, 0x64, 0x12, + 0x20, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x44, 0x61, 0x74, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, + 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x75, 0x6d, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, + 0x61, 0x72, 0x6b, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, + 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x0e, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x57, 0x0a, 0x14, 0x4c, + 0x69, 0x73, 0x74, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x29, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x15, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x14, + 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x2a, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x69, + 0x64, 0x65, 0x6f, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, + 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, + 0x22, 0x46, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x53, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x12, 0x29, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x49, 0x6e, - 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x2a, - 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x22, 0x46, 0x0a, 0x19, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x42, - 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x12, 0x29, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, + 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x89, 0x01, 0x0a, 0x1a, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x42, 0x61, + 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x12, 0x29, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, - 0x74, 0x61, 0x22, 0x89, 0x01, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x69, 0x64, - 0x65, 0x6f, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x29, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x15, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x22, 0x0a, 0x0c, - 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0c, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x61, 0x69, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x61, 0x69, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xa7, - 0x01, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x12, 0x34, 0x0a, 0x0a, 0x77, 0x6f, 0x72, 0x6b, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x43, - 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x4e, - 0x55, 0x4d, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, - 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, - 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x44, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, - 0x49, 0x44, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x52, 0x65, - 0x70, 0x6c, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x72, 0x6f, - 0x76, 0x61, 0x6c, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x56, 0x0a, 0x0c, 0x53, 0x65, 0x74, 0x4c, - 0x61, 0x79, 0x6f, 0x75, 0x74, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, - 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, - 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x64, 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x6f, 0x72, 0x6d, 0x4e, 0x61, 0x6d, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x6f, 0x72, 0x6d, 0x4e, 0x61, 0x6d, 0x65, - 0x22, 0x42, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x52, 0x65, 0x71, - 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x6f, 0x72, 0x6d, - 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x6f, 0x72, 0x6d, - 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x3f, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x79, 0x6f, 0x75, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x6f, 0x72, - 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x6f, 0x72, - 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x79, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, - 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x52, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6d, - 0x70, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, - 0x6f, 0x6d, 0x70, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x6f, 0x6d, - 0x70, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, - 0x12, 0x2e, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, - 0x72, 0x79, 0x45, 0x4e, 0x55, 0x4d, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, - 0x22, 0x31, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, - 0x52, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x55, 0x75, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x55, - 0x75, 0x69, 0x64, 0x22, 0x2e, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, - 0x52, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x55, 0x75, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x55, - 0x75, 0x69, 0x64, 0x22, 0x93, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x70, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x55, + 0x74, 0x61, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x61, 0x69, 0x6c, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x61, 0x69, 0x6c, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xa7, 0x01, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x12, 0x34, + 0x0a, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x4e, 0x55, 0x4d, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x70, 0x70, 0x72, + 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, + 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x44, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x70, 0x70, 0x72, + 0x6f, 0x76, 0x61, 0x6c, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0d, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x56, + 0x0a, 0x0c, 0x53, 0x65, 0x74, 0x4c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x52, 0x65, 0x71, 0x12, 0x16, + 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x6f, + 0x72, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x6f, + 0x72, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x42, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x79, + 0x6f, 0x75, 0x74, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1a, + 0x0a, 0x08, 0x66, 0x6f, 0x72, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x66, 0x6f, 0x72, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x3f, 0x0a, 0x0d, 0x47, 0x65, + 0x74, 0x4c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x64, + 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, + 0x1a, 0x0a, 0x08, 0x66, 0x6f, 0x72, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x66, 0x6f, 0x72, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x79, 0x0a, 0x0f, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x52, 0x65, 0x71, 0x12, 0x1e, + 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x16, + 0x0a, 0x06, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x12, 0x2e, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, + 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, + 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x4e, 0x55, 0x4d, 0x52, 0x08, 0x63, 0x61, + 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x22, 0x31, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x52, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, + 0x6d, 0x70, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, + 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x55, 0x75, 0x69, 0x64, 0x22, 0x2e, 0x0a, 0x0c, 0x47, 0x65, 0x74, + 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x52, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, + 0x6d, 0x70, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, + 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x55, 0x75, 0x69, 0x64, 0x22, 0x93, 0x01, 0x0a, 0x0d, 0x47, 0x65, + 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x70, + 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x70, + 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x72, 0x6f, + 0x6d, 0x70, 0x74, 0x12, 0x2e, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x43, 0x61, 0x74, + 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x4e, 0x55, 0x4d, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, + 0x6f, 0x72, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x75, 0x73, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, + 0xe4, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x73, 0x52, + 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x12, 0x2e, 0x0a, 0x08, 0x63, 0x61, + 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x43, + 0x61, 0x73, 0x74, 0x2e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x4e, 0x55, 0x4d, + 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, + 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, + 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x61, + 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x72, 0x61, 0x6e, 0x64, 0x12, 0x24, + 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x55, 0x73, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x55, 0x73, 0x65, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x65, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x65, 0x6e, 0x64, 0x55, 0x73, + 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xfc, 0x01, 0x0a, 0x0a, 0x50, 0x72, 0x6f, 0x6d, 0x70, + 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x12, 0x2e, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, - 0x4e, 0x55, 0x4d, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x1a, 0x0a, - 0x08, 0x75, 0x73, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x08, 0x75, 0x73, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xe4, 0x01, 0x0a, 0x0e, 0x4c, 0x69, - 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x73, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, - 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x72, - 0x6f, 0x6d, 0x70, 0x74, 0x12, 0x2e, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x43, 0x61, - 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x4e, 0x55, 0x4d, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, - 0x67, 0x6f, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, - 0x53, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, - 0x53, 0x69, 0x7a, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x61, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x04, 0x72, 0x61, 0x6e, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x55, 0x73, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x0d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x55, 0x73, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, - 0x0a, 0x0b, 0x65, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x65, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x22, 0xfc, 0x01, 0x0a, 0x0a, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, - 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, - 0x16, 0x0a, 0x06, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x12, 0x2e, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, - 0x6f, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x43, 0x61, 0x73, 0x74, - 0x2e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x4e, 0x55, 0x4d, 0x52, 0x08, 0x63, - 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, - 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, - 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x75, 0x73, 0x65, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x69, 0x6e, 0x65, 0x4e, 0x6f, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6c, 0x69, 0x6e, 0x65, 0x4e, 0x6f, 0x12, 0x20, 0x0a, - 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x44, 0x61, 0x74, 0x65, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x44, 0x61, 0x74, 0x65, 0x22, - 0x4d, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x24, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x10, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x49, 0x6e, - 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x3c, - 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x42, 0x61, - 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x12, 0x24, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x6d, - 0x70, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x7f, 0x0a, 0x15, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x42, 0x61, 0x74, 0x63, - 0x68, 0x52, 0x65, 0x73, 0x70, 0x12, 0x24, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x70, - 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x22, 0x0a, 0x0c, 0x73, - 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0c, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, - 0x1c, 0x0a, 0x09, 0x66, 0x61, 0x69, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x09, 0x66, 0x61, 0x69, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x7a, 0x0a, - 0x0a, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x61, - 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x72, - 0x65, 0x66, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x65, 0x66, 0x49, - 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, - 0x79, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x73, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x22, 0x57, 0x0a, 0x0f, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x30, 0x0a, 0x0a, - 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x10, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x49, 0x6e, - 0x66, 0x6f, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, - 0x0a, 0x04, 0x55, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x55, 0x75, - 0x69, 0x64, 0x22, 0x32, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x72, 0x74, 0x69, - 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, - 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, - 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x22, 0x2e, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x41, 0x72, 0x74, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, - 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, - 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x22, 0x55, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x41, 0x72, 0x74, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x30, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, - 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x43, 0x61, - 0x73, 0x74, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x61, - 0x72, 0x74, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x55, 0x75, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x55, 0x75, 0x69, 0x64, 0x22, 0xa7, 0x06, - 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, - 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, + 0x4e, 0x55, 0x4d, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x16, 0x0a, + 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, + 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, + 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x08, 0x75, 0x73, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6c, + 0x69, 0x6e, 0x65, 0x4e, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6c, 0x69, 0x6e, + 0x65, 0x4e, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x44, 0x61, + 0x74, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x44, 0x61, 0x74, 0x65, 0x22, 0x4d, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, + 0x6d, 0x70, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x24, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x50, 0x72, + 0x6f, 0x6d, 0x70, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x14, + 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x3c, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, + 0x6f, 0x6d, 0x70, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x12, 0x24, 0x0a, 0x04, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x43, 0x61, 0x73, + 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x22, 0x7f, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6d, + 0x70, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x12, 0x24, 0x0a, 0x04, 0x64, + 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x43, 0x61, 0x73, 0x74, + 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, + 0x61, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x61, 0x69, 0x6c, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x61, 0x69, 0x6c, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x22, 0x7a, 0x0a, 0x0a, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, + 0x64, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x66, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x72, 0x65, 0x66, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x62, 0x4e, 0x75, + 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x22, + 0x57, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x52, + 0x65, 0x71, 0x12, 0x30, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x41, 0x72, + 0x74, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x55, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x55, 0x75, 0x69, 0x64, 0x22, 0x32, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1e, 0x0a, 0x0a, + 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x22, 0x2e, 0x0a, 0x0c, + 0x47, 0x65, 0x74, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0a, + 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x22, 0x55, 0x0a, 0x0d, + 0x47, 0x65, 0x74, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x30, 0x0a, + 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x10, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x12, 0x0a, 0x04, 0x55, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x55, + 0x75, 0x69, 0x64, 0x22, 0xa7, 0x06, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, + 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, + 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, + 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x73, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, + 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, + 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x72, 0x74, + 0x69, 0x73, 0x74, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x72, 0x74, + 0x69, 0x73, 0x74, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, + 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, + 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x6e, 0x61, 0x6c, 0x79, + 0x73, 0x69, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x6e, 0x61, 0x6c, 0x79, + 0x73, 0x69, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x64, 0x66, + 0x55, 0x72, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x64, 0x66, 0x55, 0x72, + 0x6c, 0x12, 0x2c, 0x0a, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x6d, 0x65, + 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x26, 0x0a, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x56, 0x69, 0x64, + 0x65, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x49, + 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x14, 0x0a, 0x05, 0x76, 0x69, 0x65, 0x77, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, + 0x76, 0x69, 0x65, 0x77, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6b, 0x65, 0x73, 0x18, 0x0d, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6b, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, + 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63, + 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, + 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x12, + 0x1c, 0x0a, 0x09, 0x66, 0x61, 0x6e, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x10, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x09, 0x66, 0x61, 0x6e, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, + 0x09, 0x74, 0x6f, 0x70, 0x43, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x09, 0x74, 0x6f, 0x70, 0x43, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x6d, + 0x6f, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x61, 0x79, 0x18, 0x12, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0d, 0x6d, 0x6f, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x61, + 0x79, 0x12, 0x22, 0x0a, 0x0c, 0x62, 0x65, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x54, 0x69, 0x6d, + 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x62, 0x65, 0x73, 0x74, 0x50, 0x6f, 0x73, + 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, + 0x79, 0x70, 0x65, 0x46, 0x61, 0x6e, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x70, + 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x46, 0x61, 0x6e, 0x73, 0x12, 0x28, 0x0a, + 0x0f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x56, 0x69, 0x65, 0x77, 0x73, + 0x18, 0x16, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, 0x79, + 0x70, 0x65, 0x56, 0x69, 0x65, 0x77, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x70, 0x65, 0x72, 0x69, 0x6f, + 0x64, 0x54, 0x79, 0x70, 0x65, 0x4c, 0x69, 0x6b, 0x65, 0x73, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x0f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x4c, 0x69, 0x6b, 0x65, + 0x73, 0x12, 0x2e, 0x0a, 0x12, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x43, + 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x70, + 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, + 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x53, + 0x68, 0x61, 0x72, 0x65, 0x73, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x70, 0x65, 0x72, + 0x69, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x73, 0x22, 0x2c, 0x0a, + 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, + 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x22, 0xd1, 0x05, 0x0a, 0x15, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, + 0x69, 0x73, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x6e, 0x61, + 0x6c, 0x79, 0x73, 0x69, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x6e, 0x61, + 0x6c, 0x79, 0x73, 0x69, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, + 0x64, 0x66, 0x55, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x64, 0x66, + 0x55, 0x72, 0x6c, 0x12, 0x2c, 0x0a, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, + 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x56, + 0x69, 0x64, 0x65, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x77, 0x6f, 0x72, + 0x6b, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x69, 0x65, 0x77, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x05, 0x76, 0x69, 0x65, 0x77, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6b, 0x65, 0x73, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6b, 0x65, 0x73, 0x12, 0x1a, 0x0a, + 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x68, 0x61, + 0x72, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, + 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x61, 0x6e, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x61, 0x6e, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x1c, 0x0a, 0x09, 0x74, 0x6f, 0x70, 0x43, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x0d, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x09, 0x74, 0x6f, 0x70, 0x43, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x24, 0x0a, + 0x0d, 0x6d, 0x6f, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x61, 0x79, 0x18, 0x0e, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6d, 0x6f, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x44, 0x61, 0x79, 0x12, 0x22, 0x0a, 0x0c, 0x62, 0x65, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x54, + 0x69, 0x6d, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x62, 0x65, 0x73, 0x74, 0x50, + 0x6f, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, + 0x74, 0x55, 0x55, 0x49, 0x44, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, + 0x69, 0x73, 0x74, 0x55, 0x55, 0x49, 0x44, 0x12, 0x26, 0x0a, 0x0e, 0x70, 0x65, 0x72, 0x69, 0x6f, + 0x64, 0x54, 0x79, 0x70, 0x65, 0x46, 0x61, 0x6e, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x0e, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x46, 0x61, 0x6e, 0x73, 0x12, + 0x28, 0x0a, 0x0f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x56, 0x69, 0x65, + 0x77, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, + 0x54, 0x79, 0x70, 0x65, 0x56, 0x69, 0x65, 0x77, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x70, 0x65, 0x72, + 0x69, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x4c, 0x69, 0x6b, 0x65, 0x73, 0x18, 0x13, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x0f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x4c, 0x69, + 0x6b, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x12, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, 0x79, 0x70, + 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x12, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x65, + 0x6e, 0x74, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, 0x79, 0x70, + 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x70, + 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x73, 0x22, + 0xb7, 0x02, 0x0a, 0x1b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, + 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x12, + 0x34, 0x0a, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x4e, 0x55, 0x4d, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x70, 0x70, + 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, + 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x44, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x70, 0x70, + 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0d, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, + 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x52, + 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, + 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x63, + 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x22, 0xc9, 0x02, 0x0a, 0x13, 0x57, 0x6f, + 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, + 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, + 0x74, 0x6c, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, + 0x69, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x12, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, + 0x73, 0x69, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x12, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, + 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, + 0x75, 0x69, 0x64, 0x12, 0x2c, 0x0a, 0x11, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x45, + 0x78, 0x74, 0x72, 0x61, 0x44, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, + 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x45, 0x78, 0x74, 0x72, 0x61, 0x44, 0x61, 0x74, + 0x61, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, + 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x49, 0x44, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x49, 0x44, 0x22, 0xfe, 0x01, 0x0a, 0x16, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, + 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x46, 0x61, 0x6e, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, + 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x75, 0x75, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x61, 0x6e, 0x73, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x61, 0x6e, 0x73, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, + 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x4a, 0x53, 0x4f, 0x4e, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x81, 0x02, 0x0a, 0x17, 0x57, 0x6f, 0x72, 0x6b, 0x41, + 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x56, 0x69, 0x65, 0x77, 0x73, 0x53, 0x65, 0x72, 0x69, + 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x76, 0x69, 0x65, 0x77, 0x73, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x76, 0x69, 0x65, 0x77, + 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, + 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x69, + 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, + 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x44, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x1e, + 0x0a, 0x0a, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x4a, 0x53, 0x4f, 0x4e, 0x12, 0x1c, + 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x81, 0x02, 0x0a, 0x17, 0x57, + 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x4c, 0x69, 0x6b, 0x65, 0x73, + 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x6c, 0x69, + 0x6b, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, + 0x6c, 0x69, 0x6b, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x65, + 0x72, 0x69, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, + 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x64, 0x44, + 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, + 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x4a, 0x53, 0x4f, 0x4e, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x4a, 0x53, + 0x4f, 0x4e, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, + 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x8a, + 0x02, 0x0a, 0x1a, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x43, + 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x12, 0x0a, + 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, + 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, + 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x69, 0x6f, + 0x64, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70, 0x65, 0x72, + 0x69, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x44, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, + 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x4a, 0x53, 0x4f, 0x4e, 0x12, + 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, + 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x84, 0x02, 0x0a, 0x18, + 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x53, 0x68, 0x61, 0x72, + 0x65, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, + 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x0b, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, + 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, + 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, + 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x4a, 0x53, 0x4f, 0x4e, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, + 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x22, 0x87, 0x01, 0x0a, 0x15, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, + 0x73, 0x69, 0x73, 0x54, 0x6f, 0x70, 0x43, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, + 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, + 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x69, 0x74, 0x69, 0x65, 0x73, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x69, 0x74, 0x69, 0x65, 0x73, 0x4a, 0x53, 0x4f, 0x4e, + 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, + 0x0a, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x8b, 0x01, 0x0a, + 0x19, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x4d, 0x6f, 0x73, + 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x61, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x1e, + 0x0a, 0x0a, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x4a, 0x53, 0x4f, 0x4e, 0x12, 0x1c, + 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x8a, 0x01, 0x0a, 0x18, 0x57, + 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x42, 0x65, 0x73, 0x74, 0x50, + 0x6f, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x64, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x4a, 0x53, 0x4f, 0x4e, 0x12, 0x1c, 0x0a, 0x09, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0xc1, 0x01, 0x0a, 0x11, 0x57, 0x6f, 0x72, 0x6b, + 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x45, 0x78, 0x74, 0x72, 0x61, 0x12, 0x22, 0x0a, + 0x0c, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x55, 0x75, 0x69, + 0x64, 0x12, 0x30, 0x0a, 0x13, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x72, 0x6d, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x13, + 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x54, + 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x63, 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, + 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x2e, 0x0a, 0x18, 0x47, + 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x22, 0x32, 0x0a, 0x18, 0x47, + 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, + 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x62, 0x4e, 0x75, + 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x22, + 0xef, 0x0b, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, + 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, @@ -13646,1325 +14025,1065 @@ var file_pb_fiee_cast_proto_rawDesc = []byte{ 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, - 0x74, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x64, 0x66, 0x55, 0x72, 0x6c, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x64, 0x66, 0x55, 0x72, 0x6c, 0x12, 0x2c, 0x0a, 0x11, 0x6d, - 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x77, 0x6f, 0x72, - 0x6b, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x49, - 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x69, 0x65, - 0x77, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x69, 0x65, 0x77, 0x73, 0x12, - 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6b, 0x65, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, - 0x6c, 0x69, 0x6b, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, - 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, - 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x61, 0x6e, - 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x61, - 0x6e, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x6f, 0x70, 0x43, 0x69, - 0x74, 0x69, 0x65, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x6f, 0x70, 0x43, - 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x6d, 0x6f, 0x73, 0x74, 0x41, 0x63, 0x74, - 0x69, 0x76, 0x65, 0x44, 0x61, 0x79, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6d, 0x6f, - 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x61, 0x79, 0x12, 0x22, 0x0a, 0x0c, 0x62, - 0x65, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0c, 0x62, 0x65, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, - 0x26, 0x0a, 0x0e, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x46, 0x61, 0x6e, - 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, - 0x79, 0x70, 0x65, 0x46, 0x61, 0x6e, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x70, 0x65, 0x72, 0x69, 0x6f, - 0x64, 0x54, 0x79, 0x70, 0x65, 0x56, 0x69, 0x65, 0x77, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x0f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x56, 0x69, 0x65, 0x77, - 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x4c, - 0x69, 0x6b, 0x65, 0x73, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x70, 0x65, 0x72, 0x69, - 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x4c, 0x69, 0x6b, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x12, 0x70, - 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, - 0x73, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, - 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x70, - 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x73, 0x18, - 0x19, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, 0x79, 0x70, - 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x73, 0x22, 0x2c, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x75, 0x75, 0x69, 0x64, 0x22, 0xd1, 0x05, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x71, 0x12, - 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, - 0x75, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x12, - 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x64, 0x66, 0x55, 0x72, 0x6c, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x64, 0x66, 0x55, 0x72, 0x6c, 0x12, 0x2c, 0x0a, - 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x77, - 0x6f, 0x72, 0x6b, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6d, 0x61, 0x67, 0x65, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x77, 0x6f, 0x72, - 0x6b, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x69, 0x65, 0x77, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x69, 0x65, 0x77, - 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6b, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x05, 0x6c, 0x69, 0x6b, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, - 0x6e, 0x74, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, - 0x6e, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x66, - 0x61, 0x6e, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, - 0x66, 0x61, 0x6e, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x6f, 0x70, - 0x43, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x6f, - 0x70, 0x43, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x6d, 0x6f, 0x73, 0x74, 0x41, - 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x61, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, - 0x6d, 0x6f, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x61, 0x79, 0x12, 0x22, 0x0a, - 0x0c, 0x62, 0x65, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0f, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0c, 0x62, 0x65, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x55, 0x49, 0x44, 0x18, - 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x55, 0x49, - 0x44, 0x12, 0x26, 0x0a, 0x0e, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x46, - 0x61, 0x6e, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x70, 0x65, 0x72, 0x69, 0x6f, - 0x64, 0x54, 0x79, 0x70, 0x65, 0x46, 0x61, 0x6e, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x70, 0x65, 0x72, - 0x69, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x56, 0x69, 0x65, 0x77, 0x73, 0x18, 0x12, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x0f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x56, 0x69, - 0x65, 0x77, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, 0x79, 0x70, - 0x65, 0x4c, 0x69, 0x6b, 0x65, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x70, 0x65, - 0x72, 0x69, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x4c, 0x69, 0x6b, 0x65, 0x73, 0x12, 0x2e, 0x0a, - 0x12, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x65, - 0x6e, 0x74, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x70, 0x65, 0x72, 0x69, 0x6f, - 0x64, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2a, 0x0a, - 0x10, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, - 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, - 0x79, 0x70, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x73, 0x22, 0xb7, 0x02, 0x0a, 0x1b, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x12, 0x34, 0x0a, 0x0a, 0x77, 0x6f, 0x72, - 0x6b, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, - 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, - 0x4e, 0x55, 0x4d, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, - 0x75, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x49, - 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, - 0x6c, 0x49, 0x44, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x52, - 0x65, 0x70, 0x6c, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x72, - 0x6f, 0x76, 0x61, 0x6c, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x72, 0x6d, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, - 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, - 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x63, 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x54, - 0x79, 0x70, 0x65, 0x22, 0xc9, 0x02, 0x0a, 0x13, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, - 0x79, 0x73, 0x69, 0x73, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x77, - 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, - 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1e, 0x0a, - 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2e, 0x0a, - 0x12, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x77, 0x6f, 0x72, 0x6b, 0x41, - 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, - 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, - 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x2c, 0x0a, - 0x11, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x45, 0x78, 0x74, 0x72, 0x61, 0x44, 0x61, - 0x74, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, - 0x69, 0x73, 0x45, 0x78, 0x74, 0x72, 0x61, 0x44, 0x61, 0x74, 0x61, 0x12, 0x22, 0x0a, 0x0c, 0x6f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0c, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x1e, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x44, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x44, 0x22, - 0xfe, 0x01, 0x0a, 0x16, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, - 0x46, 0x61, 0x6e, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x1c, - 0x0a, 0x09, 0x66, 0x61, 0x6e, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x09, 0x66, 0x61, 0x6e, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, - 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x0a, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, - 0x64, 0x44, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x6e, 0x64, - 0x44, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x4a, 0x53, - 0x4f, 0x4e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x4a, 0x53, 0x4f, 0x4e, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, - 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, - 0x22, 0x81, 0x02, 0x0a, 0x17, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, - 0x73, 0x56, 0x69, 0x65, 0x77, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, - 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, - 0x12, 0x1e, 0x0a, 0x0a, 0x76, 0x69, 0x65, 0x77, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x76, 0x69, 0x65, 0x77, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x18, - 0x0a, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x4a, 0x53, 0x4f, 0x4e, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x64, 0x41, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x64, 0x41, 0x74, 0x22, 0x81, 0x02, 0x0a, 0x17, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, - 0x6c, 0x79, 0x73, 0x69, 0x73, 0x4c, 0x69, 0x6b, 0x65, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, - 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x75, 0x75, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x6c, 0x69, 0x6b, 0x65, 0x73, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6c, 0x69, 0x6b, 0x65, 0x73, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, 0x79, - 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, - 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, - 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x4a, 0x53, 0x4f, 0x4e, 0x12, 0x1c, 0x0a, 0x09, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x8a, 0x02, 0x0a, 0x1a, 0x57, 0x6f, 0x72, - 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, - 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x63, - 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, - 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x4a, 0x53, 0x4f, 0x4e, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x64, 0x41, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x84, 0x02, 0x0a, 0x18, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, - 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x53, 0x68, 0x61, 0x72, 0x65, 0x73, 0x53, 0x65, 0x72, 0x69, - 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x73, 0x68, 0x61, - 0x72, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x69, - 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70, 0x65, - 0x72, 0x69, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x44, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, - 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, - 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x4a, 0x53, 0x4f, 0x4e, - 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, - 0x0a, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x87, 0x01, 0x0a, - 0x15, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x6f, 0x70, - 0x43, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x69, - 0x74, 0x69, 0x65, 0x73, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x63, 0x69, 0x74, 0x69, 0x65, 0x73, 0x4a, 0x53, 0x4f, 0x4e, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x8b, 0x01, 0x0a, 0x19, 0x57, 0x6f, 0x72, 0x6b, 0x41, - 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x4d, 0x6f, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, - 0x65, 0x44, 0x61, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x4a, 0x53, 0x4f, 0x4e, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x64, 0x41, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x64, 0x41, 0x74, 0x22, 0x8a, 0x01, 0x0a, 0x18, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, - 0x6c, 0x79, 0x73, 0x69, 0x73, 0x42, 0x65, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x4a, - 0x53, 0x4f, 0x4e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x4a, 0x53, 0x4f, 0x4e, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x41, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, - 0x74, 0x22, 0xc1, 0x01, 0x0a, 0x11, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, - 0x69, 0x73, 0x45, 0x78, 0x74, 0x72, 0x61, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x6e, 0x61, 0x6c, 0x79, - 0x73, 0x69, 0x73, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, - 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x55, 0x75, 0x69, 0x64, 0x12, 0x30, 0x0a, 0x13, 0x61, - 0x72, 0x74, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x54, 0x69, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x13, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, - 0x08, 0x63, 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x08, 0x63, 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x64, 0x41, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x2e, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, - 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, - 0x71, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x75, 0x75, 0x69, 0x64, 0x22, 0x32, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, - 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, - 0x71, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x73, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x22, 0xef, 0x0b, 0x0a, 0x13, 0x47, 0x65, - 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x12, 0x1e, 0x0a, - 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, - 0x08, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x72, 0x74, - 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x61, - 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, - 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1e, 0x0a, - 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x44, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x44, 0x12, 0x22, 0x0a, - 0x0c, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x2e, 0x0a, 0x12, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, - 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x77, - 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, - 0x66, 0x69, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, - 0x63, 0x6f, 0x6d, 0x66, 0x69, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, - 0x6f, 0x73, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x12, - 0x1e, 0x0a, 0x0a, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0e, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, - 0x2a, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, - 0x69, 0x6d, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, - 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x44, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x70, - 0x64, 0x66, 0x55, 0x72, 0x6c, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x64, 0x66, - 0x55, 0x72, 0x6c, 0x12, 0x2c, 0x0a, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, - 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x56, - 0x69, 0x64, 0x65, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x77, 0x6f, 0x72, - 0x6b, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x69, 0x65, 0x77, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x05, 0x76, 0x69, 0x65, 0x77, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6b, 0x65, 0x73, - 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6b, 0x65, 0x73, 0x12, 0x1a, 0x0a, - 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x17, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x68, 0x61, - 0x72, 0x65, 0x73, 0x18, 0x18, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, - 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x61, 0x6e, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x19, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x61, 0x6e, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, - 0x1c, 0x0a, 0x09, 0x74, 0x6f, 0x70, 0x43, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x1a, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x09, 0x74, 0x6f, 0x70, 0x43, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x24, 0x0a, - 0x0d, 0x6d, 0x6f, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x61, 0x79, 0x18, 0x1b, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6d, 0x6f, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, - 0x44, 0x61, 0x79, 0x12, 0x22, 0x0a, 0x0c, 0x62, 0x65, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x54, - 0x69, 0x6d, 0x65, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x62, 0x65, 0x73, 0x74, 0x50, - 0x6f, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x64, 0x41, 0x74, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x3c, 0x0a, 0x0a, 0x66, 0x61, 0x6e, 0x73, 0x53, 0x65, 0x72, - 0x69, 0x65, 0x73, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x43, 0x61, 0x73, 0x74, - 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x46, 0x61, 0x6e, - 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x0a, 0x66, 0x61, 0x6e, 0x73, 0x53, 0x65, 0x72, - 0x69, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x0b, 0x76, 0x69, 0x65, 0x77, 0x73, 0x53, 0x65, 0x72, 0x69, - 0x65, 0x73, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, - 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x56, 0x69, 0x65, 0x77, - 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x0b, 0x76, 0x69, 0x65, 0x77, 0x73, 0x53, 0x65, - 0x72, 0x69, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x0b, 0x6c, 0x69, 0x6b, 0x65, 0x73, 0x53, 0x65, 0x72, - 0x69, 0x65, 0x73, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x43, 0x61, 0x73, 0x74, - 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x4c, 0x69, 0x6b, - 0x65, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x0b, 0x6c, 0x69, 0x6b, 0x65, 0x73, 0x53, - 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x48, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, - 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x21, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, - 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, - 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, - 0x0e, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, - 0x42, 0x0a, 0x0c, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, - 0x22, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, - 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x53, 0x68, 0x61, 0x72, 0x65, 0x73, 0x53, - 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x0c, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x53, 0x65, 0x72, - 0x69, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x0f, 0x74, 0x6f, 0x70, 0x43, 0x69, 0x74, 0x69, 0x65, 0x73, - 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x23, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x43, - 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, - 0x54, 0x6f, 0x70, 0x43, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x0f, 0x74, 0x6f, 0x70, 0x43, 0x69, - 0x74, 0x69, 0x65, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x51, 0x0a, 0x13, 0x6d, 0x6f, - 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x61, 0x79, 0x53, 0x65, 0x72, 0x69, 0x65, - 0x73, 0x18, 0x24, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, - 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x4d, 0x6f, 0x73, 0x74, 0x41, - 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x61, 0x79, 0x52, 0x13, 0x6d, 0x6f, 0x73, 0x74, 0x41, 0x63, - 0x74, 0x69, 0x76, 0x65, 0x44, 0x61, 0x79, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x4e, 0x0a, - 0x12, 0x62, 0x65, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, - 0x69, 0x65, 0x73, 0x18, 0x25, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x43, 0x61, 0x73, 0x74, - 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x42, 0x65, 0x73, - 0x74, 0x50, 0x6f, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x12, 0x62, 0x65, 0x73, 0x74, 0x50, - 0x6f, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x1c, 0x0a, - 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x26, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0xf1, 0x0c, 0x0a, 0x19, - 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x44, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x16, 0x0a, - 0x06, 0x73, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, - 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, - 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, - 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x49, - 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x49, - 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, - 0x6f, 0x6e, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x12, - 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, - 0x72, 0x49, 0x44, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x6f, 0x72, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, - 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x12, 0x77, 0x6f, 0x72, - 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, - 0x73, 0x69, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, - 0x73, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, - 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x66, 0x69, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, - 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x66, 0x69, 0x72, 0x6d, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x75, 0x62, 0x6d, 0x69, - 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x75, 0x62, - 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x10, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x49, - 0x44, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, - 0x6c, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x64, 0x66, 0x55, 0x72, 0x6c, 0x18, 0x11, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x64, 0x66, 0x55, 0x72, 0x6c, 0x12, 0x2c, 0x0a, 0x11, 0x6d, - 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x77, 0x6f, 0x72, - 0x6b, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x49, - 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x69, 0x65, - 0x77, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x69, 0x65, 0x77, 0x73, 0x12, - 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6b, 0x65, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, - 0x6c, 0x69, 0x6b, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, - 0x73, 0x18, 0x17, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, - 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x18, 0x18, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x61, 0x6e, - 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x19, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x61, - 0x6e, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x6f, 0x70, 0x43, 0x69, - 0x74, 0x69, 0x65, 0x73, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x6f, 0x70, 0x43, - 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x6d, 0x6f, 0x73, 0x74, 0x41, 0x63, 0x74, - 0x69, 0x76, 0x65, 0x44, 0x61, 0x79, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6d, 0x6f, - 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x61, 0x79, 0x12, 0x22, 0x0a, 0x0c, 0x62, - 0x65, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x1c, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0c, 0x62, 0x65, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, - 0x4b, 0x0a, 0x13, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x4c, - 0x6f, 0x67, 0x44, 0x61, 0x74, 0x61, 0x18, 0x1d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x43, - 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, - 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x13, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, - 0x6c, 0x79, 0x73, 0x69, 0x73, 0x4c, 0x6f, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3c, 0x0a, 0x0a, - 0x66, 0x61, 0x6e, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, - 0x79, 0x73, 0x69, 0x73, 0x46, 0x61, 0x6e, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x0a, - 0x66, 0x61, 0x6e, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x0b, 0x76, 0x69, - 0x65, 0x77, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1d, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, - 0x73, 0x69, 0x73, 0x56, 0x69, 0x65, 0x77, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x0b, - 0x76, 0x69, 0x65, 0x77, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x0b, 0x6c, - 0x69, 0x6b, 0x65, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1d, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, - 0x79, 0x73, 0x69, 0x73, 0x4c, 0x69, 0x6b, 0x65, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, - 0x0b, 0x6c, 0x69, 0x6b, 0x65, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x48, 0x0a, 0x0e, - 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x21, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, - 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, - 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, - 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x42, 0x0a, 0x0c, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, - 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x22, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x43, - 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, - 0x53, 0x68, 0x61, 0x72, 0x65, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x0c, 0x73, 0x68, - 0x61, 0x72, 0x65, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x0f, 0x74, 0x6f, - 0x70, 0x43, 0x69, 0x74, 0x69, 0x65, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x23, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x41, - 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x6f, 0x70, 0x43, 0x69, 0x74, 0x69, 0x65, 0x73, - 0x52, 0x0f, 0x74, 0x6f, 0x70, 0x43, 0x69, 0x74, 0x69, 0x65, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, - 0x73, 0x12, 0x51, 0x0a, 0x13, 0x6d, 0x6f, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, - 0x61, 0x79, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x24, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, + 0x74, 0x6c, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x49, + 0x44, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x4e, + 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x12, 0x77, 0x6f, 0x72, 0x6b, 0x41, + 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x12, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, + 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, + 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, + 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x66, 0x69, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x66, 0x69, 0x72, 0x6d, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x04, 0x63, 0x6f, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x54, + 0x69, 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x75, 0x62, 0x6d, 0x69, + 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x10, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, + 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x44, 0x18, + 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x49, + 0x44, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x64, 0x66, 0x55, 0x72, 0x6c, 0x18, 0x11, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x70, 0x64, 0x66, 0x55, 0x72, 0x6c, 0x12, 0x2c, 0x0a, 0x11, 0x6d, 0x65, 0x64, + 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x12, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x56, + 0x69, 0x64, 0x65, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x26, 0x0a, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6d, 0x61, + 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x69, 0x65, 0x77, 0x73, + 0x18, 0x15, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x69, 0x65, 0x77, 0x73, 0x12, 0x14, 0x0a, + 0x05, 0x6c, 0x69, 0x6b, 0x65, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, + 0x6b, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, + 0x17, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, + 0x16, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x18, 0x18, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x61, 0x6e, 0x73, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x19, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x61, 0x6e, 0x73, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x6f, 0x70, 0x43, 0x69, 0x74, 0x69, + 0x65, 0x73, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x6f, 0x70, 0x43, 0x69, 0x74, + 0x69, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x6d, 0x6f, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, + 0x65, 0x44, 0x61, 0x79, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6d, 0x6f, 0x73, 0x74, + 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x61, 0x79, 0x12, 0x22, 0x0a, 0x0c, 0x62, 0x65, 0x73, + 0x74, 0x50, 0x6f, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0c, 0x62, 0x65, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1c, 0x0a, + 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x3c, 0x0a, 0x0a, 0x66, + 0x61, 0x6e, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1c, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, + 0x73, 0x69, 0x73, 0x46, 0x61, 0x6e, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x0a, 0x66, + 0x61, 0x6e, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x0b, 0x76, 0x69, 0x65, + 0x77, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, - 0x69, 0x73, 0x4d, 0x6f, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x61, 0x79, 0x52, - 0x13, 0x6d, 0x6f, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x61, 0x79, 0x53, 0x65, - 0x72, 0x69, 0x65, 0x73, 0x12, 0x4e, 0x0a, 0x12, 0x62, 0x65, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, - 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x25, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1e, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, - 0x79, 0x73, 0x69, 0x73, 0x42, 0x65, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, - 0x52, 0x12, 0x62, 0x65, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, - 0x72, 0x69, 0x65, 0x73, 0x12, 0x2d, 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x26, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x41, - 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x45, 0x78, 0x74, 0x72, 0x61, 0x52, 0x05, 0x65, 0x78, - 0x74, 0x72, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, - 0x18, 0x27, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, - 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x28, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, - 0xc9, 0x03, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, - 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x75, 0x69, 0x64, 0x4c, - 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x75, 0x75, 0x69, 0x64, 0x4c, - 0x69, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x61, - 0x72, 0x74, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x66, 0x69, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x66, 0x69, 0x72, 0x6d, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x34, 0x0a, 0x15, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x15, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x30, 0x0a, 0x13, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x73, - 0x75, 0x62, 0x6d, 0x69, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x53, 0x74, 0x61, 0x72, - 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x45, - 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x75, - 0x62, 0x6d, 0x69, 0x74, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, - 0x61, 0x67, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, - 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0d, 0x52, - 0x0a, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x61, - 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x22, 0xe4, 0x03, 0x0a, 0x10, - 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x49, 0x6e, 0x66, 0x6f, - 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x75, 0x75, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, - 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, - 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x72, 0x74, 0x69, - 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, - 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x6f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x44, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2e, - 0x0a, 0x12, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x77, 0x6f, 0x72, 0x6b, - 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, - 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x66, 0x69, 0x72, - 0x6d, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x63, 0x6f, 0x6d, - 0x66, 0x69, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x75, 0x62, 0x6d, - 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x75, - 0x62, 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x10, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x64, 0x66, 0x55, 0x72, 0x6c, 0x18, 0x0d, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x64, 0x66, 0x55, 0x72, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, - 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x44, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x05, - 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x22, 0x58, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, - 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2a, 0x0a, 0x04, 0x64, 0x61, - 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, - 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x2b, 0x0a, 0x15, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, - 0x69, 0x73, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x22, 0xa5, 0x02, 0x0a, 0x11, 0x41, 0x72, - 0x74, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, - 0x1c, 0x0a, 0x09, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x12, 0x1e, 0x0a, - 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, - 0x10, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, - 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x65, 0x78, 0x70, - 0x69, 0x72, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x6e, - 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x53, - 0x74, 0x61, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x75, 0x62, 0x6d, - 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x73, - 0x75, 0x62, 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0d, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x6e, - 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x69, 0x73, 0x56, 0x69, 0x65, 0x77, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x0b, 0x76, + 0x69, 0x65, 0x77, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x0b, 0x6c, 0x69, + 0x6b, 0x65, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1d, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, + 0x73, 0x69, 0x73, 0x4c, 0x69, 0x6b, 0x65, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x0b, + 0x6c, 0x69, 0x6b, 0x65, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x48, 0x0a, 0x0e, 0x63, + 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x21, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x41, + 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x53, + 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x53, + 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x42, 0x0a, 0x0c, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x53, + 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x22, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x43, 0x61, + 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x53, + 0x68, 0x61, 0x72, 0x65, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x0c, 0x73, 0x68, 0x61, + 0x72, 0x65, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x0f, 0x74, 0x6f, 0x70, + 0x43, 0x69, 0x74, 0x69, 0x65, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x23, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, + 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x6f, 0x70, 0x43, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, + 0x0f, 0x74, 0x6f, 0x70, 0x43, 0x69, 0x74, 0x69, 0x65, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, + 0x12, 0x51, 0x0a, 0x13, 0x6d, 0x6f, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x61, + 0x79, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x24, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, + 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, + 0x73, 0x4d, 0x6f, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x61, 0x79, 0x52, 0x13, + 0x6d, 0x6f, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x61, 0x79, 0x53, 0x65, 0x72, + 0x69, 0x65, 0x73, 0x12, 0x4e, 0x0a, 0x12, 0x62, 0x65, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x54, + 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x25, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1e, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, + 0x73, 0x69, 0x73, 0x42, 0x65, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x52, + 0x12, 0x62, 0x65, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, + 0x69, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, + 0x18, 0x26, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, + 0x74, 0x22, 0xf1, 0x0c, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, + 0x6c, 0x79, 0x73, 0x69, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x12, + 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, + 0x75, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x61, + 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x61, + 0x72, 0x74, 0x69, 0x73, 0x74, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, + 0x72, 0x74, 0x69, 0x73, 0x74, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, + 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x72, + 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x6e, 0x61, + 0x6c, 0x79, 0x73, 0x69, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x6e, 0x61, + 0x6c, 0x79, 0x73, 0x69, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x6f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x44, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x6f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0c, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x2e, 0x0a, 0x12, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x77, 0x6f, 0x72, + 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, + 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x66, 0x69, + 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x63, 0x6f, + 0x6d, 0x66, 0x69, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x73, + 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x12, 0x1e, 0x0a, + 0x0a, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2a, 0x0a, + 0x10, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, + 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x70, 0x70, + 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x44, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, + 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x64, 0x66, + 0x55, 0x72, 0x6c, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x64, 0x66, 0x55, 0x72, + 0x6c, 0x12, 0x2c, 0x0a, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x6d, 0x65, + 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x26, 0x0a, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x56, 0x69, 0x64, + 0x65, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x49, + 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x14, 0x0a, 0x05, 0x76, 0x69, 0x65, 0x77, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, + 0x76, 0x69, 0x65, 0x77, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6b, 0x65, 0x73, 0x18, 0x16, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6b, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, + 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x17, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63, + 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, + 0x73, 0x18, 0x18, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x12, + 0x1c, 0x0a, 0x09, 0x66, 0x61, 0x6e, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x19, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x09, 0x66, 0x61, 0x6e, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, + 0x09, 0x74, 0x6f, 0x70, 0x43, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x09, 0x74, 0x6f, 0x70, 0x43, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x6d, + 0x6f, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x61, 0x79, 0x18, 0x1b, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0d, 0x6d, 0x6f, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x61, + 0x79, 0x12, 0x22, 0x0a, 0x0c, 0x62, 0x65, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x54, 0x69, 0x6d, + 0x65, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x62, 0x65, 0x73, 0x74, 0x50, 0x6f, 0x73, + 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x4b, 0x0a, 0x13, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, + 0x6c, 0x79, 0x73, 0x69, 0x73, 0x4c, 0x6f, 0x67, 0x44, 0x61, 0x74, 0x61, 0x18, 0x1d, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, + 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x13, 0x57, + 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x4c, 0x6f, 0x67, 0x44, 0x61, + 0x74, 0x61, 0x12, 0x3c, 0x0a, 0x0a, 0x66, 0x61, 0x6e, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, + 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, + 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x46, 0x61, 0x6e, 0x73, 0x53, 0x65, + 0x72, 0x69, 0x65, 0x73, 0x52, 0x0a, 0x66, 0x61, 0x6e, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, + 0x12, 0x3f, 0x0a, 0x0b, 0x76, 0x69, 0x65, 0x77, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, + 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, + 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x56, 0x69, 0x65, 0x77, 0x73, 0x53, 0x65, + 0x72, 0x69, 0x65, 0x73, 0x52, 0x0b, 0x76, 0x69, 0x65, 0x77, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, + 0x73, 0x12, 0x3f, 0x0a, 0x0b, 0x6c, 0x69, 0x6b, 0x65, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, + 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, + 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x4c, 0x69, 0x6b, 0x65, 0x73, 0x53, + 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x0b, 0x6c, 0x69, 0x6b, 0x65, 0x73, 0x53, 0x65, 0x72, 0x69, + 0x65, 0x73, 0x12, 0x48, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x53, 0x65, + 0x72, 0x69, 0x65, 0x73, 0x18, 0x21, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x43, 0x61, 0x73, + 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x43, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x0e, 0x63, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x42, 0x0a, 0x0c, + 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x22, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, + 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x53, 0x68, 0x61, 0x72, 0x65, 0x73, 0x53, 0x65, 0x72, 0x69, + 0x65, 0x73, 0x52, 0x0c, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, + 0x12, 0x45, 0x0a, 0x0f, 0x74, 0x6f, 0x70, 0x43, 0x69, 0x74, 0x69, 0x65, 0x73, 0x53, 0x65, 0x72, + 0x69, 0x65, 0x73, 0x18, 0x23, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x43, 0x61, 0x73, 0x74, + 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x6f, 0x70, + 0x43, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x0f, 0x74, 0x6f, 0x70, 0x43, 0x69, 0x74, 0x69, 0x65, + 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x51, 0x0a, 0x13, 0x6d, 0x6f, 0x73, 0x74, 0x41, + 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x61, 0x79, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x24, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, + 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x4d, 0x6f, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, + 0x76, 0x65, 0x44, 0x61, 0x79, 0x52, 0x13, 0x6d, 0x6f, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, + 0x65, 0x44, 0x61, 0x79, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x4e, 0x0a, 0x12, 0x62, 0x65, + 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, + 0x18, 0x25, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, + 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x42, 0x65, 0x73, 0x74, 0x50, 0x6f, + 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x12, 0x62, 0x65, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, + 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x2d, 0x0a, 0x05, 0x65, 0x78, + 0x74, 0x72, 0x61, 0x18, 0x26, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x43, 0x61, 0x73, 0x74, + 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x45, 0x78, 0x74, + 0x72, 0x61, 0x52, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x27, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x18, 0x28, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0xc9, 0x03, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, + 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, + 0x08, 0x75, 0x75, 0x69, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x08, 0x75, 0x75, 0x69, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x62, + 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x75, 0x62, 0x4e, 0x75, + 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x12, + 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x66, 0x69, + 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x63, 0x6f, + 0x6d, 0x66, 0x69, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x34, 0x0a, 0x15, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, + 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, + 0x30, 0x0a, 0x13, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, + 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x6e, + 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, + 0x54, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x75, 0x62, 0x6d, + 0x69, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x73, + 0x75, 0x62, 0x6d, 0x69, 0x74, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0d, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, - 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, - 0x65, 0x22, 0xd4, 0x05, 0x0a, 0x12, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, - 0x52, 0x65, 0x73, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, - 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, - 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, - 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, - 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x62, 0x4e, - 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x75, 0x62, 0x4e, 0x75, 0x6d, - 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, - 0x6e, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x18, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x18, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2e, 0x0a, 0x12, 0x64, 0x61, 0x74, 0x61, 0x41, 0x6e, 0x61, 0x6c, - 0x79, 0x73, 0x69, 0x73, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x12, 0x64, 0x61, 0x74, 0x61, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x4e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x12, 0x44, 0x0a, 0x1d, 0x64, 0x61, 0x74, 0x61, 0x41, 0x6e, 0x61, 0x6c, - 0x79, 0x73, 0x69, 0x73, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e, - 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x1d, 0x64, 0x61, 0x74, - 0x61, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x75, - 0x62, 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x61, - 0x6e, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, - 0x61, 0x6e, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x76, 0x69, 0x65, 0x77, - 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x76, 0x69, - 0x65, 0x77, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x6c, 0x69, 0x6b, 0x65, - 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6c, 0x69, - 0x6b, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, - 0x65, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, - 0x0a, 0x0b, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0f, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x0b, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x61, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x63, 0x61, 0x73, 0x74, 0x57, 0x6f, 0x72, - 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, - 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x65, 0x78, 0x70, - 0x69, 0x72, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x76, 0x69, 0x64, 0x65, - 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x76, 0x69, - 0x64, 0x65, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x6d, 0x61, 0x67, - 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x69, 0x6d, - 0x61, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x58, 0x0a, 0x12, 0x41, 0x72, 0x74, 0x69, - 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2c, - 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x43, - 0x61, 0x73, 0x74, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, - 0x73, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, + 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, + 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x18, + 0x0c, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4c, 0x69, 0x73, + 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, + 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, + 0x64, 0x22, 0xe4, 0x03, 0x0a, 0x10, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, + 0x69, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, + 0x62, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x75, 0x62, 0x4e, + 0x75, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x49, 0x44, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x49, 0x44, 0x12, 0x20, + 0x0a, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, + 0x12, 0x1e, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x44, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x44, + 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x12, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, + 0x79, 0x73, 0x69, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x12, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, + 0x63, 0x6f, 0x6d, 0x66, 0x69, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x66, 0x69, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, + 0x0a, 0x0a, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2a, + 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, + 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x64, + 0x66, 0x55, 0x72, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x64, 0x66, 0x55, + 0x72, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x44, + 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, + 0x49, 0x44, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x22, 0x58, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, + 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x12, 0x2a, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, + 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, + 0x69, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x22, 0xac, 0x01, 0x0a, 0x10, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x44, 0x61, 0x74, 0x61, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x72, 0x74, 0x69, 0x73, - 0x74, 0x56, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x72, 0x74, 0x69, - 0x73, 0x74, 0x56, 0x61, 0x6c, 0x12, 0x2a, 0x0a, 0x10, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x10, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, - 0x44, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, - 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, - 0x65, 0x22, 0x85, 0x04, 0x0a, 0x11, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x44, 0x61, 0x74, 0x61, 0x4c, - 0x69, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, - 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, - 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, - 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, - 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x62, 0x4e, 0x75, - 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x12, - 0x20, 0x0a, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, - 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x73, 0x65, - 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, - 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x12, 0x1e, 0x0a, - 0x0a, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1c, 0x0a, - 0x09, 0x66, 0x61, 0x6e, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, + 0x6e, 0x74, 0x22, 0x2b, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, + 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x75, + 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x22, + 0xa5, 0x02, 0x0a, 0x11, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x56, + 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, + 0x56, 0x61, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x54, 0x69, + 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x65, + 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, + 0x26, 0x0a, 0x0e, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x6e, + 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, + 0x54, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x75, 0x62, 0x6d, 0x69, + 0x74, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0f, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, + 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x45, + 0x6e, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, + 0x54, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, + 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, + 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0xd4, 0x05, 0x0a, 0x12, 0x41, 0x72, 0x74, 0x69, + 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1e, + 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, + 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x16, + 0x0a, 0x06, 0x73, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x73, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, + 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x72, 0x74, + 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x75, 0x6e, 0x64, + 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, + 0x6e, 0x64, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0d, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x3a, + 0x0a, 0x18, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x18, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2e, 0x0a, 0x12, 0x64, 0x61, + 0x74, 0x61, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x64, 0x61, 0x74, 0x61, 0x41, 0x6e, 0x61, 0x6c, + 0x79, 0x73, 0x69, 0x73, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x44, 0x0a, 0x1d, 0x64, 0x61, + 0x74, 0x61, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x1d, 0x64, 0x61, 0x74, 0x61, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x43, + 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x61, 0x6e, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x61, 0x6e, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, + 0x0a, 0x0a, 0x76, 0x69, 0x65, 0x77, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0a, 0x76, 0x69, 0x65, 0x77, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, + 0x0a, 0x0a, 0x6c, 0x69, 0x6b, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0a, 0x6c, 0x69, 0x6b, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x24, + 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x73, 0x68, 0x61, 0x72, 0x65, + 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x61, 0x73, 0x74, 0x57, 0x6f, + 0x72, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x63, + 0x61, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, + 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, + 0x0a, 0x0a, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x12, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0a, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, + 0x0a, 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x13, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x58, + 0x0a, 0x12, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x2c, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xac, 0x01, 0x0a, 0x10, 0x4d, 0x65, 0x64, + 0x69, 0x61, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, + 0x09, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x12, 0x2a, 0x0a, 0x10, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, + 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, + 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, + 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x85, 0x04, 0x0a, 0x11, 0x4d, 0x65, 0x64, 0x69, + 0x61, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1e, 0x0a, + 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, + 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x16, 0x0a, + 0x06, 0x73, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, + 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, + 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, + 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x10, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, + 0x44, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, + 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x54, + 0x69, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x61, 0x6e, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x61, 0x6e, 0x73, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x76, 0x69, 0x65, 0x77, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x76, 0x69, 0x65, 0x77, 0x73, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x6c, 0x69, 0x6b, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6c, 0x69, 0x6b, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, + 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x68, 0x61, 0x72, 0x65, + 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x73, 0x68, + 0x61, 0x72, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x61, 0x73, + 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0d, 0x63, 0x61, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x1e, 0x0a, 0x0a, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0e, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0a, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x1e, 0x0a, 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0f, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, + 0x56, 0x0a, 0x11, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x2b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x44, + 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x64, 0x61, 0x74, + 0x61, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x25, 0x0a, 0x0f, 0x44, 0x61, 0x74, 0x61, 0x4f, + 0x76, 0x65, 0x72, 0x76, 0x69, 0x65, 0x77, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, + 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x65, 0x22, 0xc0, + 0x06, 0x0a, 0x10, 0x44, 0x61, 0x74, 0x61, 0x4f, 0x76, 0x65, 0x72, 0x76, 0x69, 0x65, 0x77, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x74, 0x6f, 0x64, 0x61, 0x79, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x11, 0x74, 0x6f, 0x64, 0x61, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x61, 0x6e, 0x73, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x61, 0x6e, 0x73, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x74, 0x6f, 0x64, 0x61, 0x79, 0x46, 0x61, 0x6e, 0x73, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x74, 0x6f, 0x64, + 0x61, 0x79, 0x46, 0x61, 0x6e, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x76, + 0x69, 0x65, 0x77, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x0a, 0x76, 0x69, 0x65, 0x77, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x74, + 0x6f, 0x64, 0x61, 0x79, 0x56, 0x69, 0x65, 0x77, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x74, 0x6f, 0x64, 0x61, 0x79, 0x56, 0x69, 0x65, 0x77, 0x73, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x6c, 0x69, 0x6b, 0x65, 0x73, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6c, 0x69, 0x6b, 0x65, 0x73, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x74, 0x6f, 0x64, 0x61, 0x79, 0x4c, 0x69, + 0x6b, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, + 0x74, 0x6f, 0x64, 0x61, 0x79, 0x4c, 0x69, 0x6b, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x74, 0x6f, 0x64, 0x61, 0x79, 0x43, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x12, 0x74, 0x6f, 0x64, 0x61, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x73, 0x68, 0x61, 0x72, + 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x74, 0x6f, 0x64, 0x61, 0x79, + 0x53, 0x68, 0x61, 0x72, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x10, 0x74, 0x6f, 0x64, 0x61, 0x79, 0x53, 0x68, 0x61, 0x72, 0x65, 0x73, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x74, 0x6f, 0x64, 0x61, 0x79, 0x49, 0x6d, 0x61, 0x67, + 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x74, 0x6f, + 0x64, 0x61, 0x79, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, + 0x0a, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x0a, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x0a, + 0x0f, 0x74, 0x6f, 0x64, 0x61, 0x79, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x74, 0x6f, 0x64, 0x61, 0x79, 0x56, 0x69, 0x64, + 0x65, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x72, 0x6d, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x15, 0x74, 0x6f, 0x64, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x72, 0x6d, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x12, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x15, 0x74, 0x6f, 0x64, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, + 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x36, 0x0a, 0x16, 0x74, 0x6f, 0x42, + 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, 0x03, 0x52, 0x16, 0x74, 0x6f, 0x42, 0x65, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x6e, 0x67, 0x44, 0x61, + 0x74, 0x61, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x61, + 0x70, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x22, 0x90, 0x02, 0x0a, 0x16, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0a, + 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x55, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x55, 0x49, 0x44, 0x12, 0x26, 0x0a, 0x0e, + 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x46, 0x61, 0x6e, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, + 0x46, 0x61, 0x6e, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, 0x79, + 0x70, 0x65, 0x56, 0x69, 0x65, 0x77, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x70, + 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x56, 0x69, 0x65, 0x77, 0x73, 0x12, 0x28, + 0x0a, 0x0f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x4c, 0x69, 0x6b, 0x65, + 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, + 0x79, 0x70, 0x65, 0x4c, 0x69, 0x6b, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x12, 0x70, 0x65, 0x72, 0x69, + 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, + 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x70, 0x65, 0x72, 0x69, + 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x10, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x53, 0x68, + 0x61, 0x72, 0x65, 0x73, 0x22, 0xf2, 0x03, 0x0a, 0x17, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x12, 0x3c, 0x0a, 0x0a, 0x66, 0x61, 0x6e, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, + 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x46, 0x61, 0x6e, 0x73, 0x53, 0x65, 0x72, 0x69, + 0x65, 0x73, 0x52, 0x0a, 0x66, 0x61, 0x6e, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x3f, + 0x0a, 0x0b, 0x76, 0x69, 0x65, 0x77, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x41, + 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x56, 0x69, 0x65, 0x77, 0x73, 0x53, 0x65, 0x72, 0x69, + 0x65, 0x73, 0x52, 0x0b, 0x76, 0x69, 0x65, 0x77, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, + 0x3f, 0x0a, 0x0b, 0x6c, 0x69, 0x6b, 0x65, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, + 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x4c, 0x69, 0x6b, 0x65, 0x73, 0x53, 0x65, 0x72, + 0x69, 0x65, 0x73, 0x52, 0x0b, 0x6c, 0x69, 0x6b, 0x65, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, + 0x12, 0x48, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x72, 0x69, + 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, + 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x43, 0x6f, 0x6d, 0x6d, + 0x65, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x6d, + 0x65, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x42, 0x0a, 0x0c, 0x73, 0x68, + 0x61, 0x72, 0x65, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1e, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, + 0x79, 0x73, 0x69, 0x73, 0x53, 0x68, 0x61, 0x72, 0x65, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, + 0x52, 0x0c, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x42, + 0x0a, 0x0c, 0x62, 0x65, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, + 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x42, 0x65, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, + 0x54, 0x69, 0x6d, 0x65, 0x52, 0x0c, 0x62, 0x65, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x45, 0x0a, 0x0d, 0x6d, 0x6f, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x44, 0x61, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x43, 0x61, 0x73, 0x74, + 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x4d, 0x6f, 0x73, + 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x61, 0x79, 0x52, 0x0d, 0x6d, 0x6f, 0x73, 0x74, + 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x61, 0x79, 0x22, 0x71, 0x0a, 0x1b, 0x41, 0x72, 0x74, + 0x69, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x57, + 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x52, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, + 0x73, 0x74, 0x55, 0x55, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, + 0x74, 0x69, 0x73, 0x74, 0x55, 0x55, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x64, 0x61, 0x74, 0x65, 0x22, 0x37, 0x0a, 0x0b, + 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x64, + 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x64, 0x61, 0x74, 0x65, 0x12, + 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x47, 0x0a, 0x11, 0x42, 0x65, 0x73, 0x74, 0x50, 0x6f, 0x73, + 0x74, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, + 0x6d, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, + 0x69, 0x6d, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x3c, + 0x0a, 0x12, 0x4d, 0x6f, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x61, 0x79, 0x50, + 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x03, 0x64, 0x61, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x94, 0x04, 0x0a, + 0x1c, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x44, 0x61, + 0x69, 0x6c, 0x79, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1c, 0x0a, + 0x09, 0x66, 0x61, 0x6e, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x61, 0x6e, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x76, - 0x69, 0x65, 0x77, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x69, 0x65, 0x77, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x76, 0x69, 0x65, 0x77, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x6c, - 0x69, 0x6b, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x69, 0x6b, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6c, 0x69, 0x6b, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x63, - 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, + 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x61, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x63, 0x61, 0x73, 0x74, - 0x57, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x76, 0x69, 0x64, - 0x65, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x76, - 0x69, 0x64, 0x65, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x6d, 0x61, - 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x69, - 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x56, 0x0a, 0x11, 0x4d, 0x65, 0x64, - 0x69, 0x61, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2b, - 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x43, - 0x61, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, - 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x22, 0x25, 0x0a, 0x0f, 0x44, 0x61, 0x74, 0x61, 0x4f, 0x76, 0x65, 0x72, 0x76, 0x69, 0x65, - 0x77, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x65, 0x22, 0xc0, 0x06, 0x0a, 0x10, 0x44, 0x61, 0x74, - 0x61, 0x4f, 0x76, 0x65, 0x72, 0x76, 0x69, 0x65, 0x77, 0x52, 0x65, 0x73, 0x70, 0x12, 0x22, 0x0a, - 0x0c, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x0c, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x74, 0x6f, 0x64, 0x61, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x74, 0x6f, - 0x64, 0x61, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, - 0x1c, 0x0a, 0x09, 0x66, 0x61, 0x6e, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x09, 0x66, 0x61, 0x6e, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x26, 0x0a, - 0x0e, 0x74, 0x6f, 0x64, 0x61, 0x79, 0x46, 0x61, 0x6e, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x74, 0x6f, 0x64, 0x61, 0x79, 0x46, 0x61, 0x6e, 0x73, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x76, 0x69, 0x65, 0x77, 0x73, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x76, 0x69, 0x65, 0x77, 0x73, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x74, 0x6f, 0x64, 0x61, 0x79, 0x56, 0x69, - 0x65, 0x77, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, - 0x74, 0x6f, 0x64, 0x61, 0x79, 0x56, 0x69, 0x65, 0x77, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, - 0x1e, 0x0a, 0x0a, 0x6c, 0x69, 0x6b, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6c, 0x69, 0x6b, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, - 0x28, 0x0a, 0x0f, 0x74, 0x6f, 0x64, 0x61, 0x79, 0x4c, 0x69, 0x6b, 0x65, 0x73, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x74, 0x6f, 0x64, 0x61, 0x79, 0x4c, - 0x69, 0x6b, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x6d, - 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, - 0x2e, 0x0a, 0x12, 0x74, 0x6f, 0x64, 0x61, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x74, 0x6f, 0x64, - 0x61, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, - 0x20, 0x0a, 0x0b, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x74, 0x6f, 0x64, 0x61, 0x79, 0x53, 0x68, 0x61, 0x72, 0x65, 0x73, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x74, 0x6f, 0x64, - 0x61, 0x79, 0x53, 0x68, 0x61, 0x72, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, - 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x0a, - 0x0f, 0x74, 0x6f, 0x64, 0x61, 0x79, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x74, 0x6f, 0x64, 0x61, 0x79, 0x49, 0x6d, 0x61, - 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x76, 0x69, 0x64, 0x65, 0x6f, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x76, 0x69, 0x64, - 0x65, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x74, 0x6f, 0x64, 0x61, 0x79, - 0x56, 0x69, 0x64, 0x65, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x0f, 0x74, 0x6f, 0x64, 0x61, 0x79, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x44, 0x61, 0x74, 0x61, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x72, 0x6d, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x34, 0x0a, - 0x15, 0x74, 0x6f, 0x64, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x44, 0x61, 0x74, - 0x61, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x03, 0x52, 0x15, 0x74, 0x6f, - 0x64, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x12, 0x36, 0x0a, 0x16, 0x74, 0x6f, 0x42, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x72, 0x6d, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x13, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x16, 0x74, 0x6f, 0x42, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, - 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x61, - 0x70, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x69, - 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x90, 0x02, 0x0a, 0x16, - 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x53, 0x65, 0x72, - 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, - 0x55, 0x55, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, - 0x73, 0x74, 0x55, 0x55, 0x49, 0x44, 0x12, 0x26, 0x0a, 0x0e, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, - 0x54, 0x79, 0x70, 0x65, 0x46, 0x61, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, - 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x46, 0x61, 0x6e, 0x73, 0x12, 0x28, - 0x0a, 0x0f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x56, 0x69, 0x65, 0x77, - 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, - 0x79, 0x70, 0x65, 0x56, 0x69, 0x65, 0x77, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x70, 0x65, 0x72, 0x69, - 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x4c, 0x69, 0x6b, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x0f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x4c, 0x69, 0x6b, - 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x12, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, - 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, - 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, - 0x74, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, - 0x53, 0x68, 0x61, 0x72, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x70, 0x65, - 0x72, 0x69, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x73, 0x22, 0xf2, - 0x03, 0x0a, 0x17, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, - 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3c, 0x0a, 0x0a, 0x66, 0x61, - 0x6e, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, - 0x69, 0x73, 0x46, 0x61, 0x6e, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x0a, 0x66, 0x61, - 0x6e, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x0b, 0x76, 0x69, 0x65, 0x77, - 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, - 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, - 0x73, 0x56, 0x69, 0x65, 0x77, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x0b, 0x76, 0x69, - 0x65, 0x77, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x0b, 0x6c, 0x69, 0x6b, - 0x65, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, - 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, - 0x69, 0x73, 0x4c, 0x69, 0x6b, 0x65, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x0b, 0x6c, - 0x69, 0x6b, 0x65, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x48, 0x0a, 0x0e, 0x63, 0x6f, - 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, - 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x53, 0x65, - 0x72, 0x69, 0x65, 0x73, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x53, 0x65, - 0x72, 0x69, 0x65, 0x73, 0x12, 0x42, 0x0a, 0x0c, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x53, 0x65, - 0x72, 0x69, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x43, 0x61, 0x73, - 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x53, 0x68, - 0x61, 0x72, 0x65, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x0c, 0x73, 0x68, 0x61, 0x72, - 0x65, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x42, 0x0a, 0x0c, 0x62, 0x65, 0x73, 0x74, - 0x50, 0x6f, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, - 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, - 0x69, 0x73, 0x42, 0x65, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x0c, - 0x62, 0x65, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x45, 0x0a, 0x0d, - 0x6d, 0x6f, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x61, 0x79, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x41, - 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x4d, 0x6f, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, - 0x65, 0x44, 0x61, 0x79, 0x52, 0x0d, 0x6d, 0x6f, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, - 0x44, 0x61, 0x79, 0x22, 0x71, 0x0a, 0x1b, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x73, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x52, - 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x55, 0x49, 0x44, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x55, - 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x04, 0x64, 0x61, 0x74, 0x65, 0x22, 0x37, 0x0a, 0x0b, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, - 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x04, 0x64, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, - 0x47, 0x0a, 0x11, 0x42, 0x65, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x50, - 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x50, 0x6f, 0x69, 0x6e, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x50, 0x6f, 0x69, - 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x3c, 0x0a, 0x12, 0x4d, 0x6f, 0x73, 0x74, - 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x61, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x10, - 0x0a, 0x03, 0x64, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x64, 0x61, 0x79, - 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x94, 0x04, 0x0a, 0x1c, 0x41, 0x72, 0x74, 0x69, 0x73, - 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x57, 0x69, 0x6e, - 0x64, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x61, 0x6e, 0x73, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x61, 0x6e, 0x73, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x76, 0x69, 0x65, 0x77, 0x73, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x76, 0x69, 0x65, 0x77, 0x73, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x6c, 0x69, 0x6b, 0x65, 0x73, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6c, 0x69, 0x6b, 0x65, 0x73, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, - 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x63, 0x6f, - 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x73, - 0x68, 0x61, 0x72, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x0b, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x25, 0x0a, - 0x04, 0x66, 0x61, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x43, 0x61, - 0x73, 0x74, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x04, - 0x66, 0x61, 0x6e, 0x73, 0x12, 0x27, 0x0a, 0x05, 0x76, 0x69, 0x65, 0x77, 0x73, 0x18, 0x07, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, - 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x05, 0x76, 0x69, 0x65, 0x77, 0x73, 0x12, 0x27, 0x0a, - 0x05, 0x6c, 0x69, 0x6b, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x43, - 0x61, 0x73, 0x74, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, - 0x05, 0x6c, 0x69, 0x6b, 0x65, 0x73, 0x12, 0x2d, 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, - 0x74, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, - 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x08, 0x63, 0x6f, 0x6d, - 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x29, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x18, - 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x53, 0x69, 0x6d, - 0x70, 0x6c, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, - 0x12, 0x3b, 0x0a, 0x0c, 0x62, 0x65, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, - 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x42, 0x65, - 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, - 0x0c, 0x62, 0x65, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3e, 0x0a, - 0x0d, 0x6d, 0x6f, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x61, 0x79, 0x18, 0x0c, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4d, 0x6f, 0x73, 0x74, - 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x61, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x0d, - 0x6d, 0x6f, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x61, 0x79, 0x22, 0x66, 0x0a, - 0x14, 0x54, 0x6f, 0x62, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x4c, 0x69, - 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, - 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, - 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, - 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, - 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0xff, 0x03, 0x0a, 0x11, 0x54, 0x6f, 0x62, 0x65, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x75, - 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, - 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, - 0x22, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x61, 0x74, 0x65, 0x67, - 0x6f, 0x72, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, - 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, - 0x64, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x49, 0x64, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, - 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, - 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, - 0x75, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, - 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, - 0x63, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, - 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, - 0x1e, 0x0a, 0x0a, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, - 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x41, 0x74, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x41, - 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0d, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x08, 0x69, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, - 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x64, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x5a, 0x0a, 0x15, 0x54, 0x6f, 0x62, 0x65, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x12, 0x2b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, - 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x54, 0x6f, 0x62, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, - 0x6d, 0x65, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, - 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x22, 0x55, 0x0a, 0x1f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, - 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, - 0x6c, 0x49, 0x44, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x70, - 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x44, 0x22, 0xed, 0x03, 0x0a, 0x15, 0x4d, - 0x65, 0x64, 0x69, 0x61, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x44, 0x61, 0x69, 0x6c, 0x79, - 0x49, 0x74, 0x65, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, - 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, - 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x6d, 0x65, 0x64, 0x69, - 0x61, 0x41, 0x63, 0x63, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0e, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, - 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, - 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, - 0x0a, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, - 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, - 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, - 0x64, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x61, 0x6e, 0x73, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x61, 0x6e, 0x73, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x76, 0x69, 0x65, 0x77, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x76, 0x69, 0x65, 0x77, 0x73, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x6c, 0x69, 0x6b, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6c, 0x69, 0x6b, 0x65, 0x73, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x65, - 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x68, 0x61, 0x72, - 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x73, - 0x68, 0x61, 0x72, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x76, 0x69, - 0x64, 0x65, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, - 0x76, 0x69, 0x64, 0x65, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x6d, - 0x61, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, - 0x69, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x52, 0x0a, 0x1f, 0x55, 0x70, - 0x73, 0x65, 0x72, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, - 0x44, 0x61, 0x69, 0x6c, 0x79, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x12, 0x2f, 0x0a, - 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x43, 0x61, - 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x44, - 0x61, 0x69, 0x6c, 0x79, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x3c, - 0x0a, 0x20, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x4d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x73, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0xaa, 0x03, 0x0a, - 0x14, 0x57, 0x6f, 0x72, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x44, 0x61, 0x69, 0x6c, - 0x79, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x6f, 0x72, - 0x6b, 0x55, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, - 0x6b, 0x55, 0x75, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, - 0x75, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, - 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, - 0x63, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6d, - 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1c, 0x0a, - 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, - 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x61, - 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x1e, 0x0a, - 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x12, 0x12, 0x0a, - 0x04, 0x64, 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x64, 0x61, 0x74, - 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x76, 0x69, 0x65, 0x77, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x76, 0x69, 0x65, 0x77, 0x73, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x6c, 0x69, 0x6b, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6c, 0x69, 0x6b, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, - 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x68, 0x61, 0x72, 0x65, - 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x73, 0x68, - 0x61, 0x72, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x50, 0x0a, 0x1e, 0x55, 0x70, 0x73, - 0x65, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x44, 0x61, - 0x69, 0x6c, 0x79, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x12, 0x2e, 0x0a, 0x04, 0x64, - 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x43, 0x61, 0x73, 0x74, - 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x44, 0x61, 0x69, 0x6c, - 0x79, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x3b, 0x0a, 0x1f, 0x55, - 0x70, 0x73, 0x65, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, - 0x44, 0x61, 0x69, 0x6c, 0x79, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, - 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x9a, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, - 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x41, 0x79, 0x72, 0x53, 0x68, 0x61, 0x72, 0x65, 0x49, 0x6e, - 0x66, 0x6f, 0x52, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, - 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, - 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, - 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, - 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, - 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x9a, 0x02, 0x0a, 0x12, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, - 0x41, 0x79, 0x72, 0x53, 0x68, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x04, 0x66, 0x61, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x11, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x50, + 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x04, 0x66, 0x61, 0x6e, 0x73, 0x12, 0x27, 0x0a, 0x05, 0x76, 0x69, + 0x65, 0x77, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x43, 0x61, 0x73, 0x74, + 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x05, 0x76, 0x69, + 0x65, 0x77, 0x73, 0x12, 0x27, 0x0a, 0x05, 0x6c, 0x69, 0x6b, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, + 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x05, 0x6c, 0x69, 0x6b, 0x65, 0x73, 0x12, 0x2d, 0x0a, 0x08, + 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, + 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x50, 0x6f, 0x69, 0x6e, + 0x74, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x29, 0x0a, 0x06, 0x73, + 0x68, 0x61, 0x72, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x43, 0x61, + 0x73, 0x74, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x06, + 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x12, 0x3b, 0x0a, 0x0c, 0x62, 0x65, 0x73, 0x74, 0x50, 0x6f, + 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x43, + 0x61, 0x73, 0x74, 0x2e, 0x42, 0x65, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, + 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x0c, 0x62, 0x65, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x54, + 0x69, 0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x0d, 0x6d, 0x6f, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, + 0x65, 0x44, 0x61, 0x79, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x43, 0x61, 0x73, + 0x74, 0x2e, 0x4d, 0x6f, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x61, 0x79, 0x50, + 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x0d, 0x6d, 0x6f, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x44, 0x61, 0x79, 0x22, 0x66, 0x0a, 0x14, 0x54, 0x6f, 0x62, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x72, 0x6d, 0x65, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0a, 0x61, + 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, + 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, + 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0xff, 0x03, 0x0a, 0x11, + 0x54, 0x6f, 0x62, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x49, 0x74, 0x65, + 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x61, 0x74, + 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x77, 0x6f, 0x72, + 0x6b, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x77, 0x6f, 0x72, + 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x77, + 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x64, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x64, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x61, + 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, + 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x6d, + 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x55, 0x73, + 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x4e, 0x61, + 0x6d, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x65, 0x64, 0x69, 0x61, + 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, + 0x65, 0x64, 0x41, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x72, 0x6d, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x74, 0x65, 0x6d, 0x54, + 0x79, 0x70, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x69, 0x74, 0x65, 0x6d, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, + 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, + 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x0f, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, + 0x1c, 0x0a, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x10, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x5a, 0x0a, + 0x15, 0x54, 0x6f, 0x62, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x54, 0x6f, 0x62, 0x65, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x64, + 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x55, 0x0a, 0x1f, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x41, + 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x44, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, - 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, - 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x73, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x66, 0x49, - 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x65, 0x66, 0x49, 0x64, 0x12, 0x1e, - 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x2e, - 0x0a, 0x12, 0x61, 0x79, 0x72, 0x53, 0x68, 0x61, 0x72, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x61, 0x79, 0x72, 0x53, - 0x68, 0x61, 0x72, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x64, 0x41, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, - 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, - 0x41, 0x74, 0x22, 0x5f, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x41, - 0x79, 0x72, 0x53, 0x68, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x2c, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, - 0x43, 0x61, 0x73, 0x74, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x41, 0x79, 0x72, 0x53, 0x68, - 0x61, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, - 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x22, 0x9b, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, - 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x12, - 0x20, 0x0a, 0x0b, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0b, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, - 0x73, 0x12, 0x2e, 0x0a, 0x12, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4d, 0x65, 0x64, 0x69, - 0x61, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x70, - 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, - 0x65, 0x22, 0x88, 0x04, 0x0a, 0x10, 0x57, 0x6f, 0x72, 0x6b, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x6f, - 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, - 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x55, - 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x65, 0x64, - 0x69, 0x61, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x75, 0x62, 0x6c, - 0x69, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, - 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x12, 0x26, 0x0a, 0x0e, 0x70, 0x75, - 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x49, 0x44, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4d, 0x65, 0x64, 0x69, 0x61, - 0x49, 0x44, 0x12, 0x2e, 0x0a, 0x12, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4d, 0x65, 0x64, - 0x69, 0x61, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, - 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, - 0x55, 0x75, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, - 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x2a, 0x0a, 0x10, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x10, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x73, - 0x65, 0x72, 0x49, 0x44, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, - 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x72, - 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x22, 0x5c, 0x0a, 0x18, - 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2a, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, - 0x72, 0x6b, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, - 0x64, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2a, 0x47, 0x0a, 0x0e, 0x50, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x45, 0x4e, 0x55, 0x4d, 0x12, 0x0b, 0x0a, 0x07, - 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x54, 0x49, 0x4b, - 0x54, 0x4f, 0x4b, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x59, 0x4f, 0x55, 0x54, 0x55, 0x42, 0x45, - 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x49, 0x4e, 0x53, 0x10, 0x03, 0x12, 0x06, 0x0a, 0x02, 0x44, - 0x4d, 0x10, 0x04, 0x2a, 0x39, 0x0a, 0x0e, 0x41, 0x75, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x45, 0x4e, 0x55, 0x4d, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, - 0x41, 0x75, 0x74, 0x68, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x75, 0x74, 0x68, 0x4f, 0x6b, - 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x75, 0x74, 0x68, 0x4e, 0x6f, 0x10, 0x02, 0x2a, 0x81, - 0x01, 0x0a, 0x0e, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x4e, 0x55, - 0x4d, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x00, - 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x52, 0x4d, 0x10, 0x01, 0x12, 0x0c, 0x0a, - 0x08, 0x41, 0x50, 0x50, 0x52, 0x4f, 0x56, 0x41, 0x4c, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x41, - 0x50, 0x50, 0x52, 0x4f, 0x56, 0x41, 0x4c, 0x5f, 0x50, 0x41, 0x53, 0x53, 0x10, 0x03, 0x12, 0x13, - 0x0a, 0x0f, 0x41, 0x50, 0x50, 0x52, 0x4f, 0x56, 0x41, 0x4c, 0x5f, 0x52, 0x45, 0x4a, 0x45, 0x43, - 0x54, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x50, 0x50, 0x52, 0x4f, 0x56, 0x41, 0x4c, 0x5f, - 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x05, 0x12, 0x08, 0x0a, 0x04, 0x52, 0x45, 0x41, 0x44, - 0x10, 0x06, 0x2a, 0x56, 0x0a, 0x0f, 0x41, 0x75, 0x74, 0x6f, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, - 0x68, 0x45, 0x4e, 0x55, 0x4d, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x75, 0x74, 0x6f, 0x50, 0x75, 0x62, - 0x6c, 0x69, 0x73, 0x68, 0x5f, 0x55, 0x4e, 0x4b, 0x4f, 0x4e, 0x57, 0x10, 0x00, 0x12, 0x14, 0x0a, - 0x10, 0x41, 0x75, 0x74, 0x6f, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x5f, 0x54, 0x52, 0x55, - 0x45, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x41, 0x75, 0x74, 0x6f, 0x50, 0x75, 0x62, 0x6c, 0x69, - 0x73, 0x68, 0x5f, 0x46, 0x41, 0x4c, 0x53, 0x45, 0x10, 0x02, 0x2a, 0xa6, 0x01, 0x0a, 0x11, 0x50, - 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x45, 0x4e, 0x55, 0x4d, - 0x12, 0x19, 0x0a, 0x15, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4d, 0x65, 0x64, 0x69, 0x61, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x4e, 0x4f, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x50, - 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x5f, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x75, 0x62, 0x6c, 0x69, - 0x73, 0x68, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x44, 0x4f, - 0x4e, 0x45, 0x10, 0x02, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4d, - 0x65, 0x64, 0x69, 0x61, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x10, - 0x03, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4d, 0x65, 0x64, 0x69, - 0x61, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x45, 0x58, 0x43, 0x45, 0x50, 0x54, 0x49, 0x4f, - 0x4e, 0x10, 0x04, 0x2a, 0x59, 0x0a, 0x0c, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, - 0x4e, 0x55, 0x4d, 0x12, 0x14, 0x0a, 0x10, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x43, - 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x54, 0x49, 0x54, - 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x4e, 0x54, 0x10, - 0x02, 0x12, 0x09, 0x0a, 0x05, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, - 0x4c, 0x4f, 0x4e, 0x47, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x4e, 0x54, 0x10, 0x04, 0x32, 0xe7, - 0x22, 0x0a, 0x04, 0x43, 0x61, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x0d, 0x4d, 0x65, 0x64, 0x69, 0x61, - 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, - 0x4d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, - 0x1a, 0x17, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x73, 0x65, - 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x12, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x12, 0x1b, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, - 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, - 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x64, 0x69, - 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x42, - 0x0a, 0x0d, 0x55, 0x6e, 0x62, 0x69, 0x6e, 0x64, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x12, - 0x16, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x55, 0x6e, 0x62, 0x69, 0x6e, 0x64, 0x4d, 0x61, 0x6e, - 0x61, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x55, - 0x6e, 0x62, 0x69, 0x6e, 0x64, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, - 0x22, 0x00, 0x12, 0x3d, 0x0a, 0x0b, 0x42, 0x69, 0x6e, 0x64, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, - 0x72, 0x12, 0x14, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x4d, 0x61, 0x6e, - 0x61, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, - 0x00, 0x12, 0x48, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x49, - 0x6d, 0x61, 0x67, 0x65, 0x12, 0x18, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x19, - 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, - 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x0f, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x12, 0x18, - 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, - 0x56, 0x69, 0x64, 0x65, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x52, - 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x09, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x49, 0x6e, - 0x66, 0x6f, 0x12, 0x12, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4d, 0x65, - 0x64, 0x69, 0x61, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x33, 0x0a, - 0x08, 0x57, 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x11, 0x2e, 0x43, 0x61, 0x73, 0x74, - 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x43, - 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x22, 0x00, 0x12, 0x39, 0x0a, 0x0a, 0x57, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x12, 0x13, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, - 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x3f, 0x0a, - 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x15, 0x2e, - 0x43, 0x61, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x42, - 0x0a, 0x0d, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, - 0x16, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4d, - 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x22, 0x00, 0x12, 0x39, 0x0a, 0x0a, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x57, 0x6f, 0x72, 0x6b, 0x73, - 0x12, 0x13, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x57, 0x6f, 0x72, - 0x6b, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x64, - 0x69, 0x61, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x30, 0x0a, - 0x07, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x12, 0x10, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, - 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x43, 0x61, 0x73, - 0x74, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, - 0x36, 0x0a, 0x09, 0x52, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x12, 0x12, 0x2e, 0x43, - 0x61, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, 0x71, - 0x1a, 0x13, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, - 0x68, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x35, 0x0a, 0x07, 0x44, 0x65, 0x6c, 0x57, 0x6f, - 0x72, 0x6b, 0x12, 0x10, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x57, 0x6f, 0x72, - 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x33, - 0x0a, 0x08, 0x57, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x11, 0x2e, 0x43, 0x61, 0x73, - 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, - 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, - 0x70, 0x22, 0x00, 0x12, 0x39, 0x0a, 0x0a, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x13, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x41, 0x72, - 0x74, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x48, - 0x0a, 0x0f, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x42, 0x61, 0x74, 0x63, - 0x68, 0x12, 0x18, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x57, - 0x6f, 0x72, 0x6b, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x43, 0x61, - 0x73, 0x74, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x42, 0x61, 0x74, - 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x6e, - 0x66, 0x6f, 0x12, 0x1f, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x57, 0x6f, 0x72, 0x6b, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x4f, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4c, 0x6f, 0x67, 0x12, - 0x1d, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, - 0x6b, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x16, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x0f, 0x52, 0x65, 0x66, 0x72, - 0x65, 0x73, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x18, 0x2e, 0x43, 0x61, - 0x73, 0x74, 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x4c, 0x69, - 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x66, - 0x72, 0x65, 0x73, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x22, 0x00, 0x12, 0x3f, 0x0a, 0x0c, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x41, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x12, 0x15, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x41, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x43, 0x61, 0x73, 0x74, - 0x2e, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x22, 0x00, 0x12, 0x45, 0x0a, 0x0e, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x41, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x56, 0x32, 0x12, 0x17, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4f, 0x41, 0x75, - 0x74, 0x68, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x56, 0x32, 0x52, 0x65, 0x71, 0x1a, 0x18, - 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x41, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x10, 0x4f, 0x41, - 0x75, 0x74, 0x68, 0x43, 0x6f, 0x64, 0x65, 0x54, 0x6f, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x19, - 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x64, 0x65, 0x54, - 0x6f, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x43, 0x61, 0x73, 0x74, - 0x2e, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x64, 0x65, 0x54, 0x6f, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x3d, 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x12, 0x14, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x3f, 0x0a, 0x0c, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, - 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x15, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x52, 0x65, - 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, - 0x43, 0x61, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x10, 0x50, 0x75, 0x62, 0x6c, 0x69, - 0x73, 0x68, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x19, 0x2e, 0x43, 0x61, - 0x73, 0x74, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x50, 0x75, - 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, - 0x73, 0x70, 0x22, 0x00, 0x12, 0x38, 0x0a, 0x04, 0x54, 0x65, 0x73, 0x74, 0x12, 0x16, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x4e, - 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x12, 0x1a, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x65, 0x71, 0x1a, - 0x1b, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x69, 0x64, - 0x65, 0x6f, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x45, - 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x12, 0x17, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x69, 0x64, 0x65, 0x6f, - 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x43, 0x61, 0x73, 0x74, - 0x2e, 0x47, 0x65, 0x74, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x69, 0x64, - 0x65, 0x6f, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x12, 0x19, 0x2e, 0x43, 0x61, 0x73, 0x74, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x56, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x22, 0x00, 0x12, 0x49, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x69, 0x64, 0x65, - 0x6f, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x12, 0x1a, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x5d, 0x0a, - 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x1f, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x12, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x12, 0x1b, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x1a, - 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x09, 0x47, 0x65, 0x74, - 0x4c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x12, 0x12, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x47, 0x65, - 0x74, 0x4c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x43, 0x61, 0x73, - 0x74, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, - 0x00, 0x12, 0x39, 0x0a, 0x09, 0x53, 0x65, 0x74, 0x4c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x12, 0x12, - 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x53, 0x65, 0x74, 0x4c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x52, - 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x3f, 0x0a, 0x0c, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x12, 0x15, 0x2e, 0x43, - 0x61, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, - 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x3f, 0x0a, - 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x12, 0x15, 0x2e, - 0x43, 0x61, 0x73, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6d, 0x70, - 0x74, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x36, - 0x0a, 0x09, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x12, 0x12, 0x2e, 0x43, 0x61, - 0x73, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x52, 0x65, 0x71, 0x1a, - 0x13, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x3c, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, - 0x6f, 0x6d, 0x70, 0x74, 0x73, 0x12, 0x14, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x43, 0x61, - 0x73, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, - 0x6f, 0x6d, 0x70, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x1a, 0x2e, 0x43, 0x61, 0x73, 0x74, - 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x42, 0x61, 0x74, - 0x63, 0x68, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, - 0x73, 0x70, 0x22, 0x00, 0x12, 0x3f, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x72, - 0x74, 0x69, 0x73, 0x74, 0x12, 0x15, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x43, 0x61, - 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x41, 0x72, 0x74, 0x69, - 0x73, 0x74, 0x12, 0x12, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x72, 0x74, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x47, 0x65, - 0x74, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x51, 0x0a, - 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, - 0x73, 0x69, 0x73, 0x12, 0x1b, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x71, - 0x1a, 0x1c, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, - 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, - 0x12, 0x4b, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, - 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x12, 0x1b, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, - 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x57, 0x0a, - 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, - 0x73, 0x69, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x21, 0x2e, 0x43, 0x61, 0x73, 0x74, - 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, - 0x73, 0x69, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, - 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x12, 0x1e, 0x2e, 0x43, 0x61, 0x73, 0x74, - 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, - 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x43, 0x61, 0x73, 0x74, - 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, - 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x15, - 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, - 0x6c, 0x79, 0x73, 0x69, 0x73, 0x12, 0x1e, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x47, 0x65, 0x74, - 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, - 0x69, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x47, 0x65, 0x74, - 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, - 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x12, 0x19, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, - 0x71, 0x1a, 0x1a, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, - 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, - 0x4b, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, - 0x6c, 0x79, 0x73, 0x69, 0x73, 0x12, 0x1b, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, - 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x5f, 0x0a, 0x1c, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, - 0x69, 0x73, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x44, 0x12, 0x25, 0x2e, 0x43, - 0x61, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, - 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x44, - 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x45, 0x0a, - 0x0e, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x12, - 0x17, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, - 0x61, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, - 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x0d, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x44, 0x61, 0x74, - 0x61, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x64, - 0x69, 0x61, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, - 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x69, - 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x3f, 0x0a, 0x0c, 0x44, 0x61, 0x74, 0x61, - 0x4f, 0x76, 0x65, 0x72, 0x76, 0x69, 0x65, 0x77, 0x12, 0x15, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, - 0x44, 0x61, 0x74, 0x61, 0x4f, 0x76, 0x65, 0x72, 0x76, 0x69, 0x65, 0x77, 0x52, 0x65, 0x71, 0x1a, - 0x16, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x4f, 0x76, 0x65, 0x72, 0x76, - 0x69, 0x65, 0x77, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x13, 0x41, 0x72, 0x74, - 0x69, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, - 0x12, 0x1c, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1d, - 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, - 0x63, 0x0a, 0x18, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, - 0x44, 0x61, 0x69, 0x6c, 0x79, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x12, 0x21, 0x2e, 0x43, 0x61, - 0x73, 0x74, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, - 0x44, 0x61, 0x69, 0x6c, 0x79, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x52, 0x65, 0x71, 0x1a, 0x22, - 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x73, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x52, 0x65, - 0x73, 0x70, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x11, 0x54, 0x6f, 0x62, 0x65, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x72, 0x6d, 0x65, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x2e, 0x43, 0x61, 0x73, 0x74, - 0x2e, 0x54, 0x6f, 0x62, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x4c, 0x69, - 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x54, 0x6f, 0x62, - 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x1c, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x4d, 0x65, + 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x44, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x44, + 0x22, 0xed, 0x03, 0x0a, 0x15, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x73, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x1e, + 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x26, + 0x0a, 0x0e, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, + 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x4e, + 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, + 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, + 0x6f, 0x6e, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, + 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x49, 0x44, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x65, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x61, + 0x6e, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, + 0x61, 0x6e, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x76, 0x69, 0x65, 0x77, + 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x76, 0x69, + 0x65, 0x77, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x6c, 0x69, 0x6b, 0x65, + 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6c, 0x69, + 0x6b, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, + 0x65, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, + 0x0a, 0x0b, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0b, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x1e, 0x0a, 0x0a, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0e, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0f, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x22, 0x52, 0x0a, 0x1f, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x42, 0x61, 0x74, 0x63, 0x68, + 0x52, 0x65, 0x71, 0x12, 0x2f, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1b, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x73, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, + 0x64, 0x61, 0x74, 0x61, 0x22, 0x3c, 0x0a, 0x20, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x42, - 0x61, 0x74, 0x63, 0x68, 0x12, 0x25, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x73, 0x65, - 0x72, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x44, 0x61, - 0x69, 0x6c, 0x79, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x1a, 0x26, 0x2e, 0x43, 0x61, - 0x73, 0x74, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x4d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x73, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, - 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x1b, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x57, - 0x6f, 0x72, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x42, - 0x61, 0x74, 0x63, 0x68, 0x12, 0x24, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x73, 0x65, - 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x44, 0x61, 0x69, - 0x6c, 0x79, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x43, 0x61, 0x73, - 0x74, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x73, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, - 0x70, 0x22, 0x00, 0x12, 0x5a, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, - 0x41, 0x79, 0x72, 0x53, 0x68, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1e, 0x2e, 0x43, - 0x61, 0x73, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x41, 0x79, 0x72, - 0x53, 0x68, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x43, - 0x61, 0x73, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x41, 0x79, 0x72, - 0x53, 0x68, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, - 0x57, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x50, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1d, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x1e, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4c, 0x69, + 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x22, 0xaa, 0x03, 0x0a, 0x14, 0x57, 0x6f, 0x72, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x73, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x75, + 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, + 0x1a, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x61, + 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x6d, + 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x55, 0x73, 0x65, + 0x72, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x4e, 0x61, 0x6d, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, + 0x6f, 0x6e, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, + 0x44, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x04, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x76, 0x69, 0x65, 0x77, 0x73, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x76, 0x69, 0x65, + 0x77, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x6c, 0x69, 0x6b, 0x65, 0x73, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6c, 0x69, 0x6b, + 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x65, + 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, + 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x0a, + 0x0b, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0b, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, + 0x50, 0x0a, 0x1e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x4d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x73, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, + 0x71, 0x12, 0x2e, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x73, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x64, 0x61, 0x74, + 0x61, 0x22, 0x3b, 0x0a, 0x1f, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x42, 0x61, 0x74, 0x63, 0x68, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x9a, + 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x41, 0x79, 0x72, 0x53, + 0x68, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0a, 0x61, + 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, + 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x75, 0x62, + 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x70, + 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, + 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x9a, 0x02, 0x0a, 0x12, + 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x41, 0x79, 0x72, 0x53, 0x68, 0x61, 0x72, 0x65, 0x49, 0x6e, + 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, + 0x55, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, + 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x62, 0x4e, 0x75, 0x6d, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x12, 0x14, + 0x0a, 0x05, 0x72, 0x65, 0x66, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, + 0x65, 0x66, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, + 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x4b, 0x65, 0x79, 0x12, 0x2e, 0x0a, 0x12, 0x61, 0x79, 0x72, 0x53, 0x68, 0x61, 0x72, 0x65, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x12, 0x61, 0x79, 0x72, 0x53, 0x68, 0x61, 0x72, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x5f, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x41, + 0x72, 0x74, 0x69, 0x73, 0x74, 0x41, 0x79, 0x72, 0x53, 0x68, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2c, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x73, + 0x74, 0x41, 0x79, 0x72, 0x53, 0x68, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, + 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x9b, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x6e, - 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x42, 0x0d, 0x5a, 0x0b, 0x2e, 0x2f, 0x63, 0x61, - 0x73, 0x74, 0x3b, 0x63, 0x61, 0x73, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x66, 0x6f, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x49, 0x44, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0b, 0x70, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x73, 0x12, 0x2e, 0x0a, 0x12, 0x70, 0x75, 0x62, 0x6c, 0x69, + 0x73, 0x68, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x12, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4d, 0x65, 0x64, 0x69, + 0x61, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, + 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, + 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x88, 0x04, 0x0a, 0x10, 0x57, 0x6f, 0x72, 0x6b, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, + 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, + 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, + 0x6d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, + 0x0a, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x12, 0x20, + 0x0a, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, + 0x12, 0x26, 0x0a, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4d, 0x65, 0x64, 0x69, 0x61, + 0x49, 0x44, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, + 0x68, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x49, 0x44, 0x12, 0x2e, 0x0a, 0x12, 0x70, 0x75, 0x62, 0x6c, + 0x69, 0x73, 0x68, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4d, 0x65, 0x64, + 0x69, 0x61, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61, + 0x72, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, + 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, + 0x0a, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1e, 0x0a, 0x0a, + 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x2a, 0x0a, 0x10, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, + 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x70, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, + 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0e, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x18, + 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, + 0x6e, 0x65, 0x22, 0x5c, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x50, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2a, + 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x43, + 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x2a, 0x47, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x45, 0x4e, + 0x55, 0x4d, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, + 0x0a, 0x0a, 0x06, 0x54, 0x49, 0x4b, 0x54, 0x4f, 0x4b, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x59, + 0x4f, 0x55, 0x54, 0x55, 0x42, 0x45, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x49, 0x4e, 0x53, 0x10, + 0x03, 0x12, 0x06, 0x0a, 0x02, 0x44, 0x4d, 0x10, 0x04, 0x2a, 0x39, 0x0a, 0x0e, 0x41, 0x75, 0x74, + 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x45, 0x4e, 0x55, 0x4d, 0x12, 0x0f, 0x0a, 0x0b, 0x55, + 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x41, 0x75, 0x74, 0x68, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, + 0x41, 0x75, 0x74, 0x68, 0x4f, 0x6b, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x75, 0x74, 0x68, + 0x4e, 0x6f, 0x10, 0x02, 0x2a, 0x81, 0x01, 0x0a, 0x0e, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x45, 0x4e, 0x55, 0x4d, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x5f, 0x41, 0x43, + 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x52, + 0x4d, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x50, 0x50, 0x52, 0x4f, 0x56, 0x41, 0x4c, 0x10, + 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x41, 0x50, 0x50, 0x52, 0x4f, 0x56, 0x41, 0x4c, 0x5f, 0x50, 0x41, + 0x53, 0x53, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x50, 0x50, 0x52, 0x4f, 0x56, 0x41, 0x4c, + 0x5f, 0x52, 0x45, 0x4a, 0x45, 0x43, 0x54, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x50, 0x50, + 0x52, 0x4f, 0x56, 0x41, 0x4c, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x05, 0x12, 0x08, + 0x0a, 0x04, 0x52, 0x45, 0x41, 0x44, 0x10, 0x06, 0x2a, 0x56, 0x0a, 0x0f, 0x41, 0x75, 0x74, 0x6f, + 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x45, 0x4e, 0x55, 0x4d, 0x12, 0x16, 0x0a, 0x12, 0x41, + 0x75, 0x74, 0x6f, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x5f, 0x55, 0x4e, 0x4b, 0x4f, 0x4e, + 0x57, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x41, 0x75, 0x74, 0x6f, 0x50, 0x75, 0x62, 0x6c, 0x69, + 0x73, 0x68, 0x5f, 0x54, 0x52, 0x55, 0x45, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x41, 0x75, 0x74, + 0x6f, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x5f, 0x46, 0x41, 0x4c, 0x53, 0x45, 0x10, 0x02, + 0x2a, 0xa6, 0x01, 0x0a, 0x11, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x45, 0x4e, 0x55, 0x4d, 0x12, 0x19, 0x0a, 0x15, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, + 0x68, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x4e, 0x4f, 0x10, + 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4d, 0x65, 0x64, 0x69, + 0x61, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x1b, 0x0a, + 0x17, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x5f, 0x44, 0x4f, 0x4e, 0x45, 0x10, 0x02, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x75, + 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x10, 0x03, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x75, 0x62, 0x6c, 0x69, + 0x73, 0x68, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x45, 0x58, + 0x43, 0x45, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x2a, 0x59, 0x0a, 0x0c, 0x43, 0x61, 0x74, + 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x4e, 0x55, 0x4d, 0x12, 0x14, 0x0a, 0x10, 0x55, 0x4e, 0x4b, + 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x10, 0x00, 0x12, + 0x09, 0x0a, 0x05, 0x54, 0x49, 0x54, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x4f, + 0x4e, 0x54, 0x45, 0x4e, 0x54, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x49, 0x4d, 0x41, 0x47, 0x45, + 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x4c, 0x4f, 0x4e, 0x47, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x45, + 0x4e, 0x54, 0x10, 0x04, 0x32, 0xbd, 0x23, 0x0a, 0x04, 0x43, 0x61, 0x73, 0x74, 0x12, 0x42, 0x0a, + 0x0d, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, + 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x73, 0x65, 0x72, 0x4c, + 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4d, 0x65, + 0x64, 0x69, 0x61, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, + 0x00, 0x12, 0x51, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x64, 0x69, 0x61, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1b, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x0d, 0x55, 0x6e, 0x62, 0x69, 0x6e, 0x64, 0x4d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x72, 0x12, 0x16, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x55, 0x6e, 0x62, + 0x69, 0x6e, 0x64, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, + 0x43, 0x61, 0x73, 0x74, 0x2e, 0x55, 0x6e, 0x62, 0x69, 0x6e, 0x64, 0x4d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x3d, 0x0a, 0x0b, 0x42, 0x69, 0x6e, 0x64, + 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x12, 0x14, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x42, + 0x69, 0x6e, 0x64, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x18, 0x2e, 0x43, 0x61, 0x73, + 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x49, 0x6d, 0x61, 0x67, + 0x65, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, + 0x00, 0x12, 0x48, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x56, + 0x69, 0x64, 0x65, 0x6f, 0x12, 0x18, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x19, + 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, + 0x56, 0x69, 0x64, 0x65, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x09, 0x4d, + 0x65, 0x64, 0x69, 0x61, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, + 0x4d, 0x65, 0x64, 0x69, 0x61, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x43, + 0x61, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, + 0x70, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x13, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x49, 0x6e, 0x66, 0x6f, + 0x42, 0x79, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1c, 0x2e, 0x43, 0x61, 0x73, + 0x74, 0x2e, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x50, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, + 0x4d, 0x65, 0x64, 0x69, 0x61, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x50, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x33, 0x0a, 0x08, 0x57, 0x6f, 0x72, + 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x11, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, + 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, + 0x57, 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x39, + 0x0a, 0x0a, 0x57, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x13, 0x2e, 0x43, + 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, + 0x71, 0x1a, 0x14, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x3f, 0x0a, 0x0c, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x15, 0x2e, 0x43, 0x61, 0x73, 0x74, + 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, + 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x0d, 0x4d, 0x65, + 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x16, 0x2e, 0x43, 0x61, + 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, + 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x64, 0x69, 0x61, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x39, + 0x0a, 0x0a, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x12, 0x13, 0x2e, 0x43, + 0x61, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x52, 0x65, + 0x71, 0x1a, 0x14, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x57, 0x6f, + 0x72, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x30, 0x0a, 0x07, 0x50, 0x75, 0x62, + 0x6c, 0x69, 0x73, 0x68, 0x12, 0x10, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x50, 0x75, 0x62, 0x6c, + 0x69, 0x73, 0x68, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x50, 0x75, + 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x09, 0x52, + 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x12, 0x12, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, + 0x52, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x43, + 0x61, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, 0x73, + 0x70, 0x22, 0x00, 0x12, 0x35, 0x0a, 0x07, 0x44, 0x65, 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x12, 0x10, + 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x71, + 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x33, 0x0a, 0x08, 0x57, 0x6f, + 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x11, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, + 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x43, 0x61, 0x73, 0x74, + 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, + 0x39, 0x0a, 0x0a, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x13, 0x2e, + 0x43, 0x61, 0x73, 0x74, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x0f, 0x49, 0x6d, + 0x70, 0x6f, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x18, 0x2e, + 0x43, 0x61, 0x73, 0x74, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x42, + 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x49, + 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, + 0x73, 0x70, 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, + 0x72, 0x6b, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1f, + 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, + 0x20, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, + 0x6b, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, + 0x70, 0x22, 0x00, 0x12, 0x4f, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, + 0x6b, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4c, 0x6f, 0x67, 0x12, 0x1d, 0x2e, 0x43, 0x61, + 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x50, 0x75, 0x62, + 0x6c, 0x69, 0x73, 0x68, 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x0f, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x57, + 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x18, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x52, + 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, + 0x71, 0x1a, 0x19, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, + 0x57, 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x3f, + 0x0a, 0x0c, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x15, + 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4f, 0x41, 0x75, + 0x74, 0x68, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, + 0x45, 0x0a, 0x0e, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x56, + 0x32, 0x12, 0x17, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x41, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x56, 0x32, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x43, 0x61, 0x73, + 0x74, 0x2e, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x56, 0x32, + 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x10, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x43, + 0x6f, 0x64, 0x65, 0x54, 0x6f, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x19, 0x2e, 0x43, 0x61, 0x73, + 0x74, 0x2e, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x64, 0x65, 0x54, 0x6f, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4f, 0x41, 0x75, + 0x74, 0x68, 0x43, 0x6f, 0x64, 0x65, 0x54, 0x6f, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x22, 0x00, 0x12, 0x3d, 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x41, 0x75, + 0x74, 0x68, 0x12, 0x14, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x4f, 0x41, 0x75, 0x74, 0x68, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x22, 0x00, 0x12, 0x3f, 0x0a, 0x0c, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x12, 0x15, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, + 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x43, 0x61, 0x73, 0x74, + 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x10, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4d, 0x65, + 0x64, 0x69, 0x61, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x19, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x50, + 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, + 0x68, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, + 0x12, 0x38, 0x0a, 0x04, 0x54, 0x65, 0x73, 0x74, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x11, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x12, + 0x1a, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x69, 0x64, + 0x65, 0x6f, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x43, 0x61, + 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x45, 0x0a, 0x0e, 0x47, 0x65, + 0x74, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x12, 0x17, 0x2e, 0x43, + 0x61, 0x73, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x47, 0x65, 0x74, + 0x56, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, + 0x00, 0x12, 0x4b, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x73, 0x12, 0x19, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x52, 0x65, 0x71, + 0x1a, 0x1a, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x69, 0x64, 0x65, + 0x6f, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x49, + 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x12, 0x1a, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x65, 0x71, 0x1a, + 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x16, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x42, 0x61, + 0x74, 0x63, 0x68, 0x12, 0x1f, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x42, 0x61, 0x74, 0x63, + 0x68, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x42, 0x61, 0x74, + 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1b, + 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x79, 0x6f, + 0x75, 0x74, 0x12, 0x12, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x79, + 0x6f, 0x75, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x47, 0x65, + 0x74, 0x4c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x39, 0x0a, + 0x09, 0x53, 0x65, 0x74, 0x4c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x12, 0x12, 0x2e, 0x43, 0x61, 0x73, + 0x74, 0x2e, 0x53, 0x65, 0x74, 0x4c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x16, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x3f, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x12, 0x15, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x52, 0x65, 0x71, 0x1a, + 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x3f, 0x0a, 0x0c, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x12, 0x15, 0x2e, 0x43, 0x61, 0x73, 0x74, + 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x52, 0x65, 0x71, + 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x09, 0x47, 0x65, + 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x12, 0x12, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x47, + 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x43, 0x61, + 0x73, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x22, 0x00, 0x12, 0x3c, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, + 0x73, 0x12, 0x14, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, + 0x6d, 0x70, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, + 0x12, 0x4e, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, + 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x1a, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, + 0x71, 0x1a, 0x1b, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, + 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, + 0x12, 0x3f, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, + 0x12, 0x15, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x72, + 0x74, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, + 0x00, 0x12, 0x36, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x12, 0x12, + 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x52, + 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x72, 0x74, + 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x12, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x12, + 0x1b, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, + 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x43, + 0x61, 0x73, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, + 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x12, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, + 0x69, 0x73, 0x12, 0x1b, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x71, 0x1a, + 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x18, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x21, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x22, 0x00, 0x12, 0x54, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, + 0x6c, 0x79, 0x73, 0x69, 0x73, 0x12, 0x1e, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x47, 0x65, 0x74, + 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x44, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x47, 0x65, 0x74, + 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x44, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4c, + 0x61, 0x74, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, + 0x73, 0x12, 0x1e, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, + 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, + 0x71, 0x1a, 0x19, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, + 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x4b, + 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, + 0x69, 0x73, 0x12, 0x19, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, + 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, + 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, + 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x12, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, + 0x73, 0x12, 0x1b, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, + 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x16, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x5f, 0x0a, 0x1c, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x41, 0x70, + 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x44, 0x12, 0x25, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, + 0x69, 0x73, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, + 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x45, 0x0a, 0x0e, 0x41, 0x72, 0x74, + 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x17, 0x2e, 0x43, 0x61, + 0x73, 0x74, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x41, 0x72, 0x74, 0x69, + 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, + 0x12, 0x42, 0x0a, 0x0d, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, + 0x74, 0x12, 0x16, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x44, 0x61, + 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x43, 0x61, 0x73, 0x74, + 0x2e, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x22, 0x00, 0x12, 0x3f, 0x0a, 0x0c, 0x44, 0x61, 0x74, 0x61, 0x4f, 0x76, 0x65, 0x72, + 0x76, 0x69, 0x65, 0x77, 0x12, 0x15, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, + 0x4f, 0x76, 0x65, 0x72, 0x76, 0x69, 0x65, 0x77, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x43, 0x61, + 0x73, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x4f, 0x76, 0x65, 0x72, 0x76, 0x69, 0x65, 0x77, 0x52, + 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x13, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x1c, 0x2e, 0x43, + 0x61, 0x73, 0x74, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x73, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x43, 0x61, 0x73, + 0x74, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x53, + 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x63, 0x0a, 0x18, 0x41, + 0x72, 0x74, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x44, 0x61, 0x69, 0x6c, + 0x79, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x12, 0x21, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x41, + 0x72, 0x74, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x44, 0x61, 0x69, 0x6c, + 0x79, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x52, 0x65, 0x71, 0x1a, 0x22, 0x2e, 0x43, 0x61, 0x73, + 0x74, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x44, + 0x61, 0x69, 0x6c, 0x79, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, + 0x12, 0x4e, 0x0a, 0x11, 0x54, 0x6f, 0x62, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, + 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x54, 0x6f, 0x62, + 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, + 0x71, 0x1a, 0x1b, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x54, 0x6f, 0x62, 0x65, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, + 0x12, 0x6f, 0x0a, 0x1c, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x42, 0x61, 0x74, 0x63, 0x68, + 0x12, 0x25, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x4d, 0x65, + 0x64, 0x69, 0x61, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x42, + 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x1a, 0x26, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x55, + 0x70, 0x73, 0x65, 0x72, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x73, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x22, + 0x00, 0x12, 0x6c, 0x0a, 0x1b, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x42, 0x61, 0x74, 0x63, 0x68, + 0x12, 0x24, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x57, 0x6f, + 0x72, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x42, 0x61, + 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x55, 0x70, + 0x73, 0x65, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x44, + 0x61, 0x69, 0x6c, 0x79, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, + 0x5a, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x41, 0x79, 0x72, 0x53, + 0x68, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1e, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, + 0x47, 0x65, 0x74, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x41, 0x79, 0x72, 0x53, 0x68, 0x61, 0x72, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, + 0x47, 0x65, 0x74, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x41, 0x79, 0x72, 0x53, 0x68, 0x61, 0x72, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x14, 0x4c, + 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, + 0x6e, 0x66, 0x6f, 0x12, 0x1d, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, + 0x6f, 0x72, 0x6b, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x65, 0x71, 0x1a, 0x1e, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, + 0x72, 0x6b, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, + 0x73, 0x70, 0x22, 0x00, 0x42, 0x0d, 0x5a, 0x0b, 0x2e, 0x2f, 0x63, 0x61, 0x73, 0x74, 0x3b, 0x63, + 0x61, 0x73, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -14980,7 +15099,7 @@ func file_pb_fiee_cast_proto_rawDescGZIP() []byte { } var file_pb_fiee_cast_proto_enumTypes = make([]protoimpl.EnumInfo, 6) -var file_pb_fiee_cast_proto_msgTypes = make([]protoimpl.MessageInfo, 144) +var file_pb_fiee_cast_proto_msgTypes = make([]protoimpl.MessageInfo, 146) var file_pb_fiee_cast_proto_goTypes = []interface{}{ (PlatformIDENUM)(0), // 0: Cast.PlatformIDENUM (AuthStatusENUM)(0), // 1: Cast.AuthStatusENUM @@ -15003,136 +15122,138 @@ var file_pb_fiee_cast_proto_goTypes = []interface{}{ (*UpdateWorkVideoResp)(nil), // 18: Cast.UpdateWorkVideoResp (*MediaInfoReq)(nil), // 19: Cast.MediaInfoReq (*MediaInfoResp)(nil), // 20: Cast.MediaInfoResp - (*WorkListReq)(nil), // 21: Cast.WorkListReq - (*WorkListResp)(nil), // 22: Cast.WorkListResp - (*WorkDetailReq)(nil), // 23: Cast.WorkDetailReq - (*WorkLogInfo)(nil), // 24: Cast.WorkLogInfo - (*WorkDetailResp)(nil), // 25: Cast.WorkDetailResp - (*UpdateStatusReq)(nil), // 26: Cast.UpdateStatusReq - (*MediaAccountsReq)(nil), // 27: Cast.MediaAccountsReq - (*MediaAccountsResp)(nil), // 28: Cast.MediaAccountsResp - (*MediaWorksReq)(nil), // 29: Cast.MediaWorksReq - (*MediaWorksResp)(nil), // 30: Cast.MediaWorksResp - (*PublishReq)(nil), // 31: Cast.PublishReq - (*PublishResp)(nil), // 32: Cast.PublishResp - (*RePublishReq)(nil), // 33: Cast.RePublishReq - (*RePublishResp)(nil), // 34: Cast.RePublishResp - (*DelWorkReq)(nil), // 35: Cast.DelWorkReq - (*WorkInfoReq)(nil), // 36: Cast.WorkInfoReq - (*WorkInfoResp)(nil), // 37: Cast.WorkInfoResp - (*ArtistInfoReq)(nil), // 38: Cast.ArtistInfoReq - (*ArtistInfoResp)(nil), // 39: Cast.ArtistInfoResp - (*ImportWorkBatchReq)(nil), // 40: Cast.ImportWorkBatchReq - (*ImportWorkBatchResp)(nil), // 41: Cast.ImportWorkBatchResp - (*PlatformInfo)(nil), // 42: Cast.PlatformInfo - (*UpdateWorkPlatformInfoReq)(nil), // 43: Cast.UpdateWorkPlatformInfoReq - (*UpdateWorkPlatformInfoResp)(nil), // 44: Cast.UpdateWorkPlatformInfoResp - (*UpdateWorkPublishLogReq)(nil), // 45: Cast.UpdateWorkPublishLogReq - (*RefreshWorkListReq)(nil), // 46: Cast.RefreshWorkListReq - (*RefreshWorkListResp)(nil), // 47: Cast.RefreshWorkListResp - (*OAuthAccountReq)(nil), // 48: Cast.OAuthAccountReq - (*OAuthAccountResp)(nil), // 49: Cast.OAuthAccountResp - (*OAuthAccountV2Req)(nil), // 50: Cast.OAuthAccountV2Req - (*OAuthAccountV2Resp)(nil), // 51: Cast.OAuthAccountV2Resp - (*OAuthYoutubeTokenReq)(nil), // 52: Cast.OAuthYoutubeTokenReq - (*OAuthYoutubeTokenResp)(nil), // 53: Cast.OAuthYoutubeTokenResp - (*OAuthCodeToTokenReq)(nil), // 54: Cast.OAuthCodeToTokenReq - (*OAuthCodeToTokenResp)(nil), // 55: Cast.OAuthCodeToTokenResp - (*UpdateOAuthReq)(nil), // 56: Cast.UpdateOAuthReq - (*RefreshTokenReq)(nil), // 57: Cast.RefreshTokenReq - (*RefreshTokenResp)(nil), // 58: Cast.RefreshTokenResp - (*PublishMediaInfoReq)(nil), // 59: Cast.PublishMediaInfoReq - (*PublishMediaInfoResp)(nil), // 60: Cast.PublishMediaInfoResp - (*UpdateVideoScriptReq)(nil), // 61: Cast.UpdateVideoScriptReq - (*UpdateVideoScriptResp)(nil), // 62: Cast.UpdateVideoScriptResp - (*GetVideoScriptReq)(nil), // 63: Cast.GetVideoScriptReq - (*GetVideoScriptResp)(nil), // 64: Cast.GetVideoScriptResp - (*ListVideoScriptsReq)(nil), // 65: Cast.ListVideoScriptsReq - (*VideoScriptInfo)(nil), // 66: Cast.VideoScriptInfo - (*ListVideoScriptsResp)(nil), // 67: Cast.ListVideoScriptsResp - (*DeleteVideoScriptReq)(nil), // 68: Cast.DeleteVideoScriptReq - (*UpdateVideoScriptBatchReq)(nil), // 69: Cast.UpdateVideoScriptBatchReq - (*UpdateVideoScriptBatchResp)(nil), // 70: Cast.UpdateVideoScriptBatchResp - (*UpdateScriptStatusReq)(nil), // 71: Cast.UpdateScriptStatusReq - (*SetLayoutReq)(nil), // 72: Cast.SetLayoutReq - (*GetLayoutReq)(nil), // 73: Cast.GetLayoutReq - (*GetLayoutResp)(nil), // 74: Cast.GetLayoutResp - (*UpdatePromptReq)(nil), // 75: Cast.UpdatePromptReq - (*DeletePromptReq)(nil), // 76: Cast.DeletePromptReq - (*GetPromptReq)(nil), // 77: Cast.GetPromptReq - (*GetPromptResp)(nil), // 78: Cast.GetPromptResp - (*ListPromptsReq)(nil), // 79: Cast.ListPromptsReq - (*PromptInfo)(nil), // 80: Cast.PromptInfo - (*ListPromptsResp)(nil), // 81: Cast.ListPromptsResp - (*UpdatePromptBatchReq)(nil), // 82: Cast.UpdatePromptBatchReq - (*UpdatePromptBatchResp)(nil), // 83: Cast.UpdatePromptBatchResp - (*ArtistInfo)(nil), // 84: Cast.ArtistInfo - (*UpdateArtistReq)(nil), // 85: Cast.UpdateArtistReq - (*UpdateArtistResp)(nil), // 86: Cast.UpdateArtistResp - (*GetArtistReq)(nil), // 87: Cast.GetArtistReq - (*GetArtistResp)(nil), // 88: Cast.GetArtistResp - (*CreateWorkAnalysisReq)(nil), // 89: Cast.CreateWorkAnalysisReq - (*CreateWorkAnalysisResp)(nil), // 90: Cast.CreateWorkAnalysisResp - (*UpdateWorkAnalysisReq)(nil), // 91: Cast.UpdateWorkAnalysisReq - (*UpdateWorkAnalysisStatusReq)(nil), // 92: Cast.UpdateWorkAnalysisStatusReq - (*WorkAnalysisLogInfo)(nil), // 93: Cast.WorkAnalysisLogInfo - (*WorkAnalysisFansSeries)(nil), // 94: Cast.WorkAnalysisFansSeries - (*WorkAnalysisViewsSeries)(nil), // 95: Cast.WorkAnalysisViewsSeries - (*WorkAnalysisLikesSeries)(nil), // 96: Cast.WorkAnalysisLikesSeries - (*WorkAnalysisCommentsSeries)(nil), // 97: Cast.WorkAnalysisCommentsSeries - (*WorkAnalysisSharesSeries)(nil), // 98: Cast.WorkAnalysisSharesSeries - (*WorkAnalysisTopCities)(nil), // 99: Cast.WorkAnalysisTopCities - (*WorkAnalysisMostActiveDay)(nil), // 100: Cast.WorkAnalysisMostActiveDay - (*WorkAnalysisBestPostTime)(nil), // 101: Cast.WorkAnalysisBestPostTime - (*WorkAnalysisExtra)(nil), // 102: Cast.WorkAnalysisExtra - (*GetWorkAnalysisDetailReq)(nil), // 103: Cast.GetWorkAnalysisDetailReq - (*GetLatestWorkAnalysisReq)(nil), // 104: Cast.GetLatestWorkAnalysisReq - (*GetWorkAnalysisResp)(nil), // 105: Cast.GetWorkAnalysisResp - (*GetWorkAnalysisDetailResp)(nil), // 106: Cast.GetWorkAnalysisDetailResp - (*ListWorkAnalysisReq)(nil), // 107: Cast.ListWorkAnalysisReq - (*WorkAnalysisInfo)(nil), // 108: Cast.WorkAnalysisInfo - (*ListWorkAnalysisResp)(nil), // 109: Cast.ListWorkAnalysisResp - (*DeleteWorkAnalysisReq)(nil), // 110: Cast.DeleteWorkAnalysisReq - (*ArtistDataListReq)(nil), // 111: Cast.ArtistDataListReq - (*ArtistDataRespItem)(nil), // 112: Cast.ArtistDataRespItem - (*ArtistDataListResp)(nil), // 113: Cast.ArtistDataListResp - (*MediaDataListReq)(nil), // 114: Cast.MediaDataListReq - (*MediaDataListItem)(nil), // 115: Cast.MediaDataListItem - (*MediaDataListResp)(nil), // 116: Cast.MediaDataListResp - (*DataOverviewReq)(nil), // 117: Cast.DataOverviewReq - (*DataOverviewResp)(nil), // 118: Cast.DataOverviewResp - (*ArtistMetricsSeriesReq)(nil), // 119: Cast.ArtistMetricsSeriesReq - (*ArtistMetricsSeriesResp)(nil), // 120: Cast.ArtistMetricsSeriesResp - (*ArtistMetricsDailyWindowReq)(nil), // 121: Cast.ArtistMetricsDailyWindowReq - (*SimplePoint)(nil), // 122: Cast.SimplePoint - (*BestPostTimePoint)(nil), // 123: Cast.BestPostTimePoint - (*MostActiveDayPoint)(nil), // 124: Cast.MostActiveDayPoint - (*ArtistMetricsDailyWindowResp)(nil), // 125: Cast.ArtistMetricsDailyWindowResp - (*TobeConfirmedListReq)(nil), // 126: Cast.TobeConfirmedListReq - (*TobeConfirmedItem)(nil), // 127: Cast.TobeConfirmedItem - (*TobeConfirmedListResp)(nil), // 128: Cast.TobeConfirmedListResp - (*UpdateWorkAnalysisApprovalIDReq)(nil), // 129: Cast.UpdateWorkAnalysisApprovalIDReq - (*MediaMetricsDailyItem)(nil), // 130: Cast.MediaMetricsDailyItem - (*UpsertMediaMetricsDailyBatchReq)(nil), // 131: Cast.UpsertMediaMetricsDailyBatchReq - (*UpsertMediaMetricsDailyBatchResp)(nil), // 132: Cast.UpsertMediaMetricsDailyBatchResp - (*WorkMetricsDailyItem)(nil), // 133: Cast.WorkMetricsDailyItem - (*UpsertWorkMetricsDailyBatchReq)(nil), // 134: Cast.UpsertWorkMetricsDailyBatchReq - (*UpsertWorkMetricsDailyBatchResp)(nil), // 135: Cast.UpsertWorkMetricsDailyBatchResp - (*GetArtistAyrShareInfoReq)(nil), // 136: Cast.GetArtistAyrShareInfoReq - (*ArtistAyrShareInfo)(nil), // 137: Cast.ArtistAyrShareInfo - (*GetArtistAyrShareInfoResp)(nil), // 138: Cast.GetArtistAyrShareInfoResp - (*ListWorkPlatformInfoReq)(nil), // 139: Cast.ListWorkPlatformInfoReq - (*WorkPlatformInfo)(nil), // 140: Cast.WorkPlatformInfo - (*ListWorkPlatformInfoResp)(nil), // 141: Cast.ListWorkPlatformInfoResp - (*WorkListResp_Info)(nil), // 142: Cast.WorkListResp.Info - nil, // 143: Cast.WorkDetailResp.MediaAccDataEntry - (*MediaAccountsResp_Info)(nil), // 144: Cast.MediaAccountsResp.Info - (*MediaWorksResp_Info)(nil), // 145: Cast.MediaWorksResp.Info - (*PublishResp_Info)(nil), // 146: Cast.PublishResp.Info - (*RefreshWorkListResp_Info)(nil), // 147: Cast.RefreshWorkListResp.Info - (*RefreshWorkListResp_Info_PlatformInfo)(nil), // 148: Cast.RefreshWorkListResp.Info.PlatformInfo - (*UpdateOAuthReq_Info)(nil), // 149: Cast.UpdateOAuthReq.Info - (*emptypb.Empty)(nil), // 150: google.protobuf.Empty + (*MediaInfoByPlatformReq)(nil), // 21: Cast.MediaInfoByPlatformReq + (*MediaInfoByPlatformResp)(nil), // 22: Cast.MediaInfoByPlatformResp + (*WorkListReq)(nil), // 23: Cast.WorkListReq + (*WorkListResp)(nil), // 24: Cast.WorkListResp + (*WorkDetailReq)(nil), // 25: Cast.WorkDetailReq + (*WorkLogInfo)(nil), // 26: Cast.WorkLogInfo + (*WorkDetailResp)(nil), // 27: Cast.WorkDetailResp + (*UpdateStatusReq)(nil), // 28: Cast.UpdateStatusReq + (*MediaAccountsReq)(nil), // 29: Cast.MediaAccountsReq + (*MediaAccountsResp)(nil), // 30: Cast.MediaAccountsResp + (*MediaWorksReq)(nil), // 31: Cast.MediaWorksReq + (*MediaWorksResp)(nil), // 32: Cast.MediaWorksResp + (*PublishReq)(nil), // 33: Cast.PublishReq + (*PublishResp)(nil), // 34: Cast.PublishResp + (*RePublishReq)(nil), // 35: Cast.RePublishReq + (*RePublishResp)(nil), // 36: Cast.RePublishResp + (*DelWorkReq)(nil), // 37: Cast.DelWorkReq + (*WorkInfoReq)(nil), // 38: Cast.WorkInfoReq + (*WorkInfoResp)(nil), // 39: Cast.WorkInfoResp + (*ArtistInfoReq)(nil), // 40: Cast.ArtistInfoReq + (*ArtistInfoResp)(nil), // 41: Cast.ArtistInfoResp + (*ImportWorkBatchReq)(nil), // 42: Cast.ImportWorkBatchReq + (*ImportWorkBatchResp)(nil), // 43: Cast.ImportWorkBatchResp + (*PlatformInfo)(nil), // 44: Cast.PlatformInfo + (*UpdateWorkPlatformInfoReq)(nil), // 45: Cast.UpdateWorkPlatformInfoReq + (*UpdateWorkPlatformInfoResp)(nil), // 46: Cast.UpdateWorkPlatformInfoResp + (*UpdateWorkPublishLogReq)(nil), // 47: Cast.UpdateWorkPublishLogReq + (*RefreshWorkListReq)(nil), // 48: Cast.RefreshWorkListReq + (*RefreshWorkListResp)(nil), // 49: Cast.RefreshWorkListResp + (*OAuthAccountReq)(nil), // 50: Cast.OAuthAccountReq + (*OAuthAccountResp)(nil), // 51: Cast.OAuthAccountResp + (*OAuthAccountV2Req)(nil), // 52: Cast.OAuthAccountV2Req + (*OAuthAccountV2Resp)(nil), // 53: Cast.OAuthAccountV2Resp + (*OAuthYoutubeTokenReq)(nil), // 54: Cast.OAuthYoutubeTokenReq + (*OAuthYoutubeTokenResp)(nil), // 55: Cast.OAuthYoutubeTokenResp + (*OAuthCodeToTokenReq)(nil), // 56: Cast.OAuthCodeToTokenReq + (*OAuthCodeToTokenResp)(nil), // 57: Cast.OAuthCodeToTokenResp + (*UpdateOAuthReq)(nil), // 58: Cast.UpdateOAuthReq + (*RefreshTokenReq)(nil), // 59: Cast.RefreshTokenReq + (*RefreshTokenResp)(nil), // 60: Cast.RefreshTokenResp + (*PublishMediaInfoReq)(nil), // 61: Cast.PublishMediaInfoReq + (*PublishMediaInfoResp)(nil), // 62: Cast.PublishMediaInfoResp + (*UpdateVideoScriptReq)(nil), // 63: Cast.UpdateVideoScriptReq + (*UpdateVideoScriptResp)(nil), // 64: Cast.UpdateVideoScriptResp + (*GetVideoScriptReq)(nil), // 65: Cast.GetVideoScriptReq + (*GetVideoScriptResp)(nil), // 66: Cast.GetVideoScriptResp + (*ListVideoScriptsReq)(nil), // 67: Cast.ListVideoScriptsReq + (*VideoScriptInfo)(nil), // 68: Cast.VideoScriptInfo + (*ListVideoScriptsResp)(nil), // 69: Cast.ListVideoScriptsResp + (*DeleteVideoScriptReq)(nil), // 70: Cast.DeleteVideoScriptReq + (*UpdateVideoScriptBatchReq)(nil), // 71: Cast.UpdateVideoScriptBatchReq + (*UpdateVideoScriptBatchResp)(nil), // 72: Cast.UpdateVideoScriptBatchResp + (*UpdateScriptStatusReq)(nil), // 73: Cast.UpdateScriptStatusReq + (*SetLayoutReq)(nil), // 74: Cast.SetLayoutReq + (*GetLayoutReq)(nil), // 75: Cast.GetLayoutReq + (*GetLayoutResp)(nil), // 76: Cast.GetLayoutResp + (*UpdatePromptReq)(nil), // 77: Cast.UpdatePromptReq + (*DeletePromptReq)(nil), // 78: Cast.DeletePromptReq + (*GetPromptReq)(nil), // 79: Cast.GetPromptReq + (*GetPromptResp)(nil), // 80: Cast.GetPromptResp + (*ListPromptsReq)(nil), // 81: Cast.ListPromptsReq + (*PromptInfo)(nil), // 82: Cast.PromptInfo + (*ListPromptsResp)(nil), // 83: Cast.ListPromptsResp + (*UpdatePromptBatchReq)(nil), // 84: Cast.UpdatePromptBatchReq + (*UpdatePromptBatchResp)(nil), // 85: Cast.UpdatePromptBatchResp + (*ArtistInfo)(nil), // 86: Cast.ArtistInfo + (*UpdateArtistReq)(nil), // 87: Cast.UpdateArtistReq + (*UpdateArtistResp)(nil), // 88: Cast.UpdateArtistResp + (*GetArtistReq)(nil), // 89: Cast.GetArtistReq + (*GetArtistResp)(nil), // 90: Cast.GetArtistResp + (*CreateWorkAnalysisReq)(nil), // 91: Cast.CreateWorkAnalysisReq + (*CreateWorkAnalysisResp)(nil), // 92: Cast.CreateWorkAnalysisResp + (*UpdateWorkAnalysisReq)(nil), // 93: Cast.UpdateWorkAnalysisReq + (*UpdateWorkAnalysisStatusReq)(nil), // 94: Cast.UpdateWorkAnalysisStatusReq + (*WorkAnalysisLogInfo)(nil), // 95: Cast.WorkAnalysisLogInfo + (*WorkAnalysisFansSeries)(nil), // 96: Cast.WorkAnalysisFansSeries + (*WorkAnalysisViewsSeries)(nil), // 97: Cast.WorkAnalysisViewsSeries + (*WorkAnalysisLikesSeries)(nil), // 98: Cast.WorkAnalysisLikesSeries + (*WorkAnalysisCommentsSeries)(nil), // 99: Cast.WorkAnalysisCommentsSeries + (*WorkAnalysisSharesSeries)(nil), // 100: Cast.WorkAnalysisSharesSeries + (*WorkAnalysisTopCities)(nil), // 101: Cast.WorkAnalysisTopCities + (*WorkAnalysisMostActiveDay)(nil), // 102: Cast.WorkAnalysisMostActiveDay + (*WorkAnalysisBestPostTime)(nil), // 103: Cast.WorkAnalysisBestPostTime + (*WorkAnalysisExtra)(nil), // 104: Cast.WorkAnalysisExtra + (*GetWorkAnalysisDetailReq)(nil), // 105: Cast.GetWorkAnalysisDetailReq + (*GetLatestWorkAnalysisReq)(nil), // 106: Cast.GetLatestWorkAnalysisReq + (*GetWorkAnalysisResp)(nil), // 107: Cast.GetWorkAnalysisResp + (*GetWorkAnalysisDetailResp)(nil), // 108: Cast.GetWorkAnalysisDetailResp + (*ListWorkAnalysisReq)(nil), // 109: Cast.ListWorkAnalysisReq + (*WorkAnalysisInfo)(nil), // 110: Cast.WorkAnalysisInfo + (*ListWorkAnalysisResp)(nil), // 111: Cast.ListWorkAnalysisResp + (*DeleteWorkAnalysisReq)(nil), // 112: Cast.DeleteWorkAnalysisReq + (*ArtistDataListReq)(nil), // 113: Cast.ArtistDataListReq + (*ArtistDataRespItem)(nil), // 114: Cast.ArtistDataRespItem + (*ArtistDataListResp)(nil), // 115: Cast.ArtistDataListResp + (*MediaDataListReq)(nil), // 116: Cast.MediaDataListReq + (*MediaDataListItem)(nil), // 117: Cast.MediaDataListItem + (*MediaDataListResp)(nil), // 118: Cast.MediaDataListResp + (*DataOverviewReq)(nil), // 119: Cast.DataOverviewReq + (*DataOverviewResp)(nil), // 120: Cast.DataOverviewResp + (*ArtistMetricsSeriesReq)(nil), // 121: Cast.ArtistMetricsSeriesReq + (*ArtistMetricsSeriesResp)(nil), // 122: Cast.ArtistMetricsSeriesResp + (*ArtistMetricsDailyWindowReq)(nil), // 123: Cast.ArtistMetricsDailyWindowReq + (*SimplePoint)(nil), // 124: Cast.SimplePoint + (*BestPostTimePoint)(nil), // 125: Cast.BestPostTimePoint + (*MostActiveDayPoint)(nil), // 126: Cast.MostActiveDayPoint + (*ArtistMetricsDailyWindowResp)(nil), // 127: Cast.ArtistMetricsDailyWindowResp + (*TobeConfirmedListReq)(nil), // 128: Cast.TobeConfirmedListReq + (*TobeConfirmedItem)(nil), // 129: Cast.TobeConfirmedItem + (*TobeConfirmedListResp)(nil), // 130: Cast.TobeConfirmedListResp + (*UpdateWorkAnalysisApprovalIDReq)(nil), // 131: Cast.UpdateWorkAnalysisApprovalIDReq + (*MediaMetricsDailyItem)(nil), // 132: Cast.MediaMetricsDailyItem + (*UpsertMediaMetricsDailyBatchReq)(nil), // 133: Cast.UpsertMediaMetricsDailyBatchReq + (*UpsertMediaMetricsDailyBatchResp)(nil), // 134: Cast.UpsertMediaMetricsDailyBatchResp + (*WorkMetricsDailyItem)(nil), // 135: Cast.WorkMetricsDailyItem + (*UpsertWorkMetricsDailyBatchReq)(nil), // 136: Cast.UpsertWorkMetricsDailyBatchReq + (*UpsertWorkMetricsDailyBatchResp)(nil), // 137: Cast.UpsertWorkMetricsDailyBatchResp + (*GetArtistAyrShareInfoReq)(nil), // 138: Cast.GetArtistAyrShareInfoReq + (*ArtistAyrShareInfo)(nil), // 139: Cast.ArtistAyrShareInfo + (*GetArtistAyrShareInfoResp)(nil), // 140: Cast.GetArtistAyrShareInfoResp + (*ListWorkPlatformInfoReq)(nil), // 141: Cast.ListWorkPlatformInfoReq + (*WorkPlatformInfo)(nil), // 142: Cast.WorkPlatformInfo + (*ListWorkPlatformInfoResp)(nil), // 143: Cast.ListWorkPlatformInfoResp + (*WorkListResp_Info)(nil), // 144: Cast.WorkListResp.Info + nil, // 145: Cast.WorkDetailResp.MediaAccDataEntry + (*MediaAccountsResp_Info)(nil), // 146: Cast.MediaAccountsResp.Info + (*MediaWorksResp_Info)(nil), // 147: Cast.MediaWorksResp.Info + (*PublishResp_Info)(nil), // 148: Cast.PublishResp.Info + (*RefreshWorkListResp_Info)(nil), // 149: Cast.RefreshWorkListResp.Info + (*RefreshWorkListResp_Info_PlatformInfo)(nil), // 150: Cast.RefreshWorkListResp.Info.PlatformInfo + (*UpdateOAuthReq_Info)(nil), // 151: Cast.UpdateOAuthReq.Info + (*emptypb.Empty)(nil), // 152: google.protobuf.Empty } var file_pb_fiee_cast_proto_depIdxs = []int32{ 0, // 0: Cast.MediaUserListReq.platformID:type_name -> Cast.PlatformIDENUM @@ -15153,212 +15274,216 @@ var file_pb_fiee_cast_proto_depIdxs = []int32{ 3, // 15: Cast.UpdateWorkVideoReq.autoPublish:type_name -> Cast.AutoPublishENUM 0, // 16: Cast.MediaInfoReq.platformID:type_name -> Cast.PlatformIDENUM 7, // 17: Cast.MediaInfoResp.info:type_name -> Cast.MediaUserInfo - 142, // 18: Cast.WorkListResp.data:type_name -> Cast.WorkListResp.Info - 16, // 19: Cast.WorkDetailResp.publishConfig1:type_name -> Cast.PublishConfig - 16, // 20: Cast.WorkDetailResp.publishConfig2:type_name -> Cast.PublishConfig - 16, // 21: Cast.WorkDetailResp.publishConfig3:type_name -> Cast.PublishConfig - 16, // 22: Cast.WorkDetailResp.publishConfig4:type_name -> Cast.PublishConfig - 24, // 23: Cast.WorkDetailResp.WorkLogData:type_name -> Cast.WorkLogInfo - 143, // 24: Cast.WorkDetailResp.mediaAccData:type_name -> Cast.WorkDetailResp.MediaAccDataEntry - 2, // 25: Cast.UpdateStatusReq.workAction:type_name -> Cast.WorkActionENUM - 3, // 26: Cast.UpdateStatusReq.autoPublish:type_name -> Cast.AutoPublishENUM - 144, // 27: Cast.MediaAccountsResp.data:type_name -> Cast.MediaAccountsResp.Info - 145, // 28: Cast.MediaWorksResp.data:type_name -> Cast.MediaWorksResp.Info - 146, // 29: Cast.PublishResp.data:type_name -> Cast.PublishResp.Info - 14, // 30: Cast.ImportWorkBatchReq.imageWorks:type_name -> Cast.UpdateWorkImageReq - 14, // 31: Cast.ImportWorkBatchResp.imageWorks:type_name -> Cast.UpdateWorkImageReq - 4, // 32: Cast.PlatformInfo.publishStatus:type_name -> Cast.PublishStatusENUM - 42, // 33: Cast.UpdateWorkPlatformInfoReq.PlatformInfoData:type_name -> Cast.PlatformInfo - 0, // 34: Cast.UpdateWorkPublishLogReq.platformID:type_name -> Cast.PlatformIDENUM - 147, // 35: Cast.RefreshWorkListResp.Data:type_name -> Cast.RefreshWorkListResp.Info - 0, // 36: Cast.OAuthCodeToTokenReq.platformID:type_name -> Cast.PlatformIDENUM - 149, // 37: Cast.UpdateOAuthReq.Data:type_name -> Cast.UpdateOAuthReq.Info - 0, // 38: Cast.RefreshTokenReq.platformID:type_name -> Cast.PlatformIDENUM - 66, // 39: Cast.ListVideoScriptsResp.data:type_name -> Cast.VideoScriptInfo - 66, // 40: Cast.UpdateVideoScriptBatchReq.data:type_name -> Cast.VideoScriptInfo - 66, // 41: Cast.UpdateVideoScriptBatchResp.data:type_name -> Cast.VideoScriptInfo - 2, // 42: Cast.UpdateScriptStatusReq.workAction:type_name -> Cast.WorkActionENUM - 5, // 43: Cast.UpdatePromptReq.category:type_name -> Cast.CategoryENUM - 5, // 44: Cast.GetPromptResp.category:type_name -> Cast.CategoryENUM - 5, // 45: Cast.ListPromptsReq.category:type_name -> Cast.CategoryENUM - 5, // 46: Cast.PromptInfo.category:type_name -> Cast.CategoryENUM - 80, // 47: Cast.ListPromptsResp.data:type_name -> Cast.PromptInfo - 80, // 48: Cast.UpdatePromptBatchReq.data:type_name -> Cast.PromptInfo - 80, // 49: Cast.UpdatePromptBatchResp.data:type_name -> Cast.PromptInfo - 84, // 50: Cast.UpdateArtistReq.artistInfo:type_name -> Cast.ArtistInfo - 84, // 51: Cast.GetArtistResp.artistInfo:type_name -> Cast.ArtistInfo - 2, // 52: Cast.UpdateWorkAnalysisStatusReq.workAction:type_name -> Cast.WorkActionENUM - 94, // 53: Cast.GetWorkAnalysisResp.fansSeries:type_name -> Cast.WorkAnalysisFansSeries - 95, // 54: Cast.GetWorkAnalysisResp.viewsSeries:type_name -> Cast.WorkAnalysisViewsSeries - 96, // 55: Cast.GetWorkAnalysisResp.likesSeries:type_name -> Cast.WorkAnalysisLikesSeries - 97, // 56: Cast.GetWorkAnalysisResp.commentsSeries:type_name -> Cast.WorkAnalysisCommentsSeries - 98, // 57: Cast.GetWorkAnalysisResp.sharesSeries:type_name -> Cast.WorkAnalysisSharesSeries - 99, // 58: Cast.GetWorkAnalysisResp.topCitiesSeries:type_name -> Cast.WorkAnalysisTopCities - 100, // 59: Cast.GetWorkAnalysisResp.mostActiveDaySeries:type_name -> Cast.WorkAnalysisMostActiveDay - 101, // 60: Cast.GetWorkAnalysisResp.bestPostTimeSeries:type_name -> Cast.WorkAnalysisBestPostTime - 93, // 61: Cast.GetWorkAnalysisDetailResp.WorkAnalysisLogData:type_name -> Cast.WorkAnalysisLogInfo - 94, // 62: Cast.GetWorkAnalysisDetailResp.fansSeries:type_name -> Cast.WorkAnalysisFansSeries - 95, // 63: Cast.GetWorkAnalysisDetailResp.viewsSeries:type_name -> Cast.WorkAnalysisViewsSeries - 96, // 64: Cast.GetWorkAnalysisDetailResp.likesSeries:type_name -> Cast.WorkAnalysisLikesSeries - 97, // 65: Cast.GetWorkAnalysisDetailResp.commentsSeries:type_name -> Cast.WorkAnalysisCommentsSeries - 98, // 66: Cast.GetWorkAnalysisDetailResp.sharesSeries:type_name -> Cast.WorkAnalysisSharesSeries - 99, // 67: Cast.GetWorkAnalysisDetailResp.topCitiesSeries:type_name -> Cast.WorkAnalysisTopCities - 100, // 68: Cast.GetWorkAnalysisDetailResp.mostActiveDaySeries:type_name -> Cast.WorkAnalysisMostActiveDay - 101, // 69: Cast.GetWorkAnalysisDetailResp.bestPostTimeSeries:type_name -> Cast.WorkAnalysisBestPostTime - 102, // 70: Cast.GetWorkAnalysisDetailResp.extra:type_name -> Cast.WorkAnalysisExtra - 108, // 71: Cast.ListWorkAnalysisResp.data:type_name -> Cast.WorkAnalysisInfo - 112, // 72: Cast.ArtistDataListResp.data:type_name -> Cast.ArtistDataRespItem - 115, // 73: Cast.MediaDataListResp.data:type_name -> Cast.MediaDataListItem - 94, // 74: Cast.ArtistMetricsSeriesResp.fansSeries:type_name -> Cast.WorkAnalysisFansSeries - 95, // 75: Cast.ArtistMetricsSeriesResp.viewsSeries:type_name -> Cast.WorkAnalysisViewsSeries - 96, // 76: Cast.ArtistMetricsSeriesResp.likesSeries:type_name -> Cast.WorkAnalysisLikesSeries - 97, // 77: Cast.ArtistMetricsSeriesResp.commentsSeries:type_name -> Cast.WorkAnalysisCommentsSeries - 98, // 78: Cast.ArtistMetricsSeriesResp.sharesSeries:type_name -> Cast.WorkAnalysisSharesSeries - 101, // 79: Cast.ArtistMetricsSeriesResp.bestPostTime:type_name -> Cast.WorkAnalysisBestPostTime - 100, // 80: Cast.ArtistMetricsSeriesResp.mostActiveDay:type_name -> Cast.WorkAnalysisMostActiveDay - 122, // 81: Cast.ArtistMetricsDailyWindowResp.fans:type_name -> Cast.SimplePoint - 122, // 82: Cast.ArtistMetricsDailyWindowResp.views:type_name -> Cast.SimplePoint - 122, // 83: Cast.ArtistMetricsDailyWindowResp.likes:type_name -> Cast.SimplePoint - 122, // 84: Cast.ArtistMetricsDailyWindowResp.comments:type_name -> Cast.SimplePoint - 122, // 85: Cast.ArtistMetricsDailyWindowResp.shares:type_name -> Cast.SimplePoint - 123, // 86: Cast.ArtistMetricsDailyWindowResp.bestPostTime:type_name -> Cast.BestPostTimePoint - 124, // 87: Cast.ArtistMetricsDailyWindowResp.mostActiveDay:type_name -> Cast.MostActiveDayPoint - 127, // 88: Cast.TobeConfirmedListResp.data:type_name -> Cast.TobeConfirmedItem - 130, // 89: Cast.UpsertMediaMetricsDailyBatchReq.data:type_name -> Cast.MediaMetricsDailyItem - 133, // 90: Cast.UpsertWorkMetricsDailyBatchReq.data:type_name -> Cast.WorkMetricsDailyItem - 137, // 91: Cast.GetArtistAyrShareInfoResp.data:type_name -> Cast.ArtistAyrShareInfo - 140, // 92: Cast.ListWorkPlatformInfoResp.data:type_name -> Cast.WorkPlatformInfo - 7, // 93: Cast.WorkDetailResp.MediaAccDataEntry.value:type_name -> Cast.MediaUserInfo - 148, // 94: Cast.RefreshWorkListResp.Info.PlatformInfoData:type_name -> Cast.RefreshWorkListResp.Info.PlatformInfo - 0, // 95: Cast.RefreshWorkListResp.Info.PlatformInfo.platformID:type_name -> Cast.PlatformIDENUM - 0, // 96: Cast.UpdateOAuthReq.Info.platformID:type_name -> Cast.PlatformIDENUM - 6, // 97: Cast.Cast.MediaUserList:input_type -> Cast.MediaUserListReq - 9, // 98: Cast.Cast.UpdateMediaAccount:input_type -> Cast.UpdateMediaAccountReq - 11, // 99: Cast.Cast.UnbindManager:input_type -> Cast.UnbindManagerReq - 13, // 100: Cast.Cast.BindManager:input_type -> Cast.BindManagerReq - 14, // 101: Cast.Cast.UpdateWorkImage:input_type -> Cast.UpdateWorkImageReq - 17, // 102: Cast.Cast.UpdateWorkVideo:input_type -> Cast.UpdateWorkVideoReq - 19, // 103: Cast.Cast.MediaInfo:input_type -> Cast.MediaInfoReq - 21, // 104: Cast.Cast.WorkList:input_type -> Cast.WorkListReq - 23, // 105: Cast.Cast.WorkDetail:input_type -> Cast.WorkDetailReq - 26, // 106: Cast.Cast.UpdateStatus:input_type -> Cast.UpdateStatusReq - 27, // 107: Cast.Cast.MediaAccounts:input_type -> Cast.MediaAccountsReq - 29, // 108: Cast.Cast.MediaWorks:input_type -> Cast.MediaWorksReq - 31, // 109: Cast.Cast.Publish:input_type -> Cast.PublishReq - 33, // 110: Cast.Cast.RePublish:input_type -> Cast.RePublishReq - 35, // 111: Cast.Cast.DelWork:input_type -> Cast.DelWorkReq - 36, // 112: Cast.Cast.WorkInfo:input_type -> Cast.WorkInfoReq - 38, // 113: Cast.Cast.ArtistInfo:input_type -> Cast.ArtistInfoReq - 40, // 114: Cast.Cast.ImportWorkBatch:input_type -> Cast.ImportWorkBatchReq - 43, // 115: Cast.Cast.UpdateWorkPlatformInfo:input_type -> Cast.UpdateWorkPlatformInfoReq - 45, // 116: Cast.Cast.UpdateWorkPublishLog:input_type -> Cast.UpdateWorkPublishLogReq - 46, // 117: Cast.Cast.RefreshWorkList:input_type -> Cast.RefreshWorkListReq - 48, // 118: Cast.Cast.OAuthAccount:input_type -> Cast.OAuthAccountReq - 50, // 119: Cast.Cast.OAuthAccountV2:input_type -> Cast.OAuthAccountV2Req - 54, // 120: Cast.Cast.OAuthCodeToToken:input_type -> Cast.OAuthCodeToTokenReq - 56, // 121: Cast.Cast.UpdateOAuth:input_type -> Cast.UpdateOAuthReq - 57, // 122: Cast.Cast.RefreshToken:input_type -> Cast.RefreshTokenReq - 59, // 123: Cast.Cast.PublishMediaInfo:input_type -> Cast.PublishMediaInfoReq - 150, // 124: Cast.Cast.Test:input_type -> google.protobuf.Empty - 61, // 125: Cast.Cast.UpdateVideoScript:input_type -> Cast.UpdateVideoScriptReq - 63, // 126: Cast.Cast.GetVideoScript:input_type -> Cast.GetVideoScriptReq - 65, // 127: Cast.Cast.ListVideoScripts:input_type -> Cast.ListVideoScriptsReq - 68, // 128: Cast.Cast.DeleteVideoScript:input_type -> Cast.DeleteVideoScriptReq - 69, // 129: Cast.Cast.UpdateVideoScriptBatch:input_type -> Cast.UpdateVideoScriptBatchReq - 71, // 130: Cast.Cast.UpdateScriptStatus:input_type -> Cast.UpdateScriptStatusReq - 73, // 131: Cast.Cast.GetLayout:input_type -> Cast.GetLayoutReq - 72, // 132: Cast.Cast.SetLayout:input_type -> Cast.SetLayoutReq - 75, // 133: Cast.Cast.UpdatePrompt:input_type -> Cast.UpdatePromptReq - 76, // 134: Cast.Cast.DeletePrompt:input_type -> Cast.DeletePromptReq - 77, // 135: Cast.Cast.GetPrompt:input_type -> Cast.GetPromptReq - 79, // 136: Cast.Cast.ListPrompts:input_type -> Cast.ListPromptsReq - 82, // 137: Cast.Cast.UpdatePromptBatch:input_type -> Cast.UpdatePromptBatchReq - 85, // 138: Cast.Cast.UpdateArtist:input_type -> Cast.UpdateArtistReq - 87, // 139: Cast.Cast.GetArtist:input_type -> Cast.GetArtistReq - 89, // 140: Cast.Cast.CreateWorkAnalysis:input_type -> Cast.CreateWorkAnalysisReq - 91, // 141: Cast.Cast.UpdateWorkAnalysis:input_type -> Cast.UpdateWorkAnalysisReq - 92, // 142: Cast.Cast.UpdateWorkAnalysisStatus:input_type -> Cast.UpdateWorkAnalysisStatusReq - 103, // 143: Cast.Cast.GetWorkAnalysis:input_type -> Cast.GetWorkAnalysisDetailReq - 104, // 144: Cast.Cast.GetLatestWorkAnalysis:input_type -> Cast.GetLatestWorkAnalysisReq - 107, // 145: Cast.Cast.ListWorkAnalysis:input_type -> Cast.ListWorkAnalysisReq - 110, // 146: Cast.Cast.DeleteWorkAnalysis:input_type -> Cast.DeleteWorkAnalysisReq - 129, // 147: Cast.Cast.UpdateWorkAnalysisApprovalID:input_type -> Cast.UpdateWorkAnalysisApprovalIDReq - 111, // 148: Cast.Cast.ArtistDataList:input_type -> Cast.ArtistDataListReq - 114, // 149: Cast.Cast.MediaDataList:input_type -> Cast.MediaDataListReq - 117, // 150: Cast.Cast.DataOverview:input_type -> Cast.DataOverviewReq - 119, // 151: Cast.Cast.ArtistMetricsSeries:input_type -> Cast.ArtistMetricsSeriesReq - 121, // 152: Cast.Cast.ArtistMetricsDailyWindow:input_type -> Cast.ArtistMetricsDailyWindowReq - 126, // 153: Cast.Cast.TobeConfirmedList:input_type -> Cast.TobeConfirmedListReq - 131, // 154: Cast.Cast.UpsertMediaMetricsDailyBatch:input_type -> Cast.UpsertMediaMetricsDailyBatchReq - 134, // 155: Cast.Cast.UpsertWorkMetricsDailyBatch:input_type -> Cast.UpsertWorkMetricsDailyBatchReq - 136, // 156: Cast.Cast.GetArtistAyrShareInfo:input_type -> Cast.GetArtistAyrShareInfoReq - 139, // 157: Cast.Cast.ListWorkPlatformInfo:input_type -> Cast.ListWorkPlatformInfoReq - 8, // 158: Cast.Cast.MediaUserList:output_type -> Cast.MediaUserListResp - 10, // 159: Cast.Cast.UpdateMediaAccount:output_type -> Cast.UpdateMediaAccountResp - 12, // 160: Cast.Cast.UnbindManager:output_type -> Cast.UnbindManagerResp - 150, // 161: Cast.Cast.BindManager:output_type -> google.protobuf.Empty - 15, // 162: Cast.Cast.UpdateWorkImage:output_type -> Cast.UpdateWorkImageResp - 18, // 163: Cast.Cast.UpdateWorkVideo:output_type -> Cast.UpdateWorkVideoResp - 20, // 164: Cast.Cast.MediaInfo:output_type -> Cast.MediaInfoResp - 22, // 165: Cast.Cast.WorkList:output_type -> Cast.WorkListResp - 25, // 166: Cast.Cast.WorkDetail:output_type -> Cast.WorkDetailResp - 150, // 167: Cast.Cast.UpdateStatus:output_type -> google.protobuf.Empty - 28, // 168: Cast.Cast.MediaAccounts:output_type -> Cast.MediaAccountsResp - 30, // 169: Cast.Cast.MediaWorks:output_type -> Cast.MediaWorksResp - 32, // 170: Cast.Cast.Publish:output_type -> Cast.PublishResp - 34, // 171: Cast.Cast.RePublish:output_type -> Cast.RePublishResp - 150, // 172: Cast.Cast.DelWork:output_type -> google.protobuf.Empty - 37, // 173: Cast.Cast.WorkInfo:output_type -> Cast.WorkInfoResp - 39, // 174: Cast.Cast.ArtistInfo:output_type -> Cast.ArtistInfoResp - 41, // 175: Cast.Cast.ImportWorkBatch:output_type -> Cast.ImportWorkBatchResp - 44, // 176: Cast.Cast.UpdateWorkPlatformInfo:output_type -> Cast.UpdateWorkPlatformInfoResp - 150, // 177: Cast.Cast.UpdateWorkPublishLog:output_type -> google.protobuf.Empty - 47, // 178: Cast.Cast.RefreshWorkList:output_type -> Cast.RefreshWorkListResp - 49, // 179: Cast.Cast.OAuthAccount:output_type -> Cast.OAuthAccountResp - 51, // 180: Cast.Cast.OAuthAccountV2:output_type -> Cast.OAuthAccountV2Resp - 55, // 181: Cast.Cast.OAuthCodeToToken:output_type -> Cast.OAuthCodeToTokenResp - 150, // 182: Cast.Cast.UpdateOAuth:output_type -> google.protobuf.Empty - 58, // 183: Cast.Cast.RefreshToken:output_type -> Cast.RefreshTokenResp - 60, // 184: Cast.Cast.PublishMediaInfo:output_type -> Cast.PublishMediaInfoResp - 150, // 185: Cast.Cast.Test:output_type -> google.protobuf.Empty - 62, // 186: Cast.Cast.UpdateVideoScript:output_type -> Cast.UpdateVideoScriptResp - 64, // 187: Cast.Cast.GetVideoScript:output_type -> Cast.GetVideoScriptResp - 67, // 188: Cast.Cast.ListVideoScripts:output_type -> Cast.ListVideoScriptsResp - 150, // 189: Cast.Cast.DeleteVideoScript:output_type -> google.protobuf.Empty - 70, // 190: Cast.Cast.UpdateVideoScriptBatch:output_type -> Cast.UpdateVideoScriptBatchResp - 150, // 191: Cast.Cast.UpdateScriptStatus:output_type -> google.protobuf.Empty - 74, // 192: Cast.Cast.GetLayout:output_type -> Cast.GetLayoutResp - 150, // 193: Cast.Cast.SetLayout:output_type -> google.protobuf.Empty - 150, // 194: Cast.Cast.UpdatePrompt:output_type -> google.protobuf.Empty - 150, // 195: Cast.Cast.DeletePrompt:output_type -> google.protobuf.Empty - 78, // 196: Cast.Cast.GetPrompt:output_type -> Cast.GetPromptResp - 81, // 197: Cast.Cast.ListPrompts:output_type -> Cast.ListPromptsResp - 83, // 198: Cast.Cast.UpdatePromptBatch:output_type -> Cast.UpdatePromptBatchResp - 86, // 199: Cast.Cast.UpdateArtist:output_type -> Cast.UpdateArtistResp - 88, // 200: Cast.Cast.GetArtist:output_type -> Cast.GetArtistResp - 90, // 201: Cast.Cast.CreateWorkAnalysis:output_type -> Cast.CreateWorkAnalysisResp - 150, // 202: Cast.Cast.UpdateWorkAnalysis:output_type -> google.protobuf.Empty - 150, // 203: Cast.Cast.UpdateWorkAnalysisStatus:output_type -> google.protobuf.Empty - 106, // 204: Cast.Cast.GetWorkAnalysis:output_type -> Cast.GetWorkAnalysisDetailResp - 105, // 205: Cast.Cast.GetLatestWorkAnalysis:output_type -> Cast.GetWorkAnalysisResp - 109, // 206: Cast.Cast.ListWorkAnalysis:output_type -> Cast.ListWorkAnalysisResp - 150, // 207: Cast.Cast.DeleteWorkAnalysis:output_type -> google.protobuf.Empty - 150, // 208: Cast.Cast.UpdateWorkAnalysisApprovalID:output_type -> google.protobuf.Empty - 113, // 209: Cast.Cast.ArtistDataList:output_type -> Cast.ArtistDataListResp - 116, // 210: Cast.Cast.MediaDataList:output_type -> Cast.MediaDataListResp - 118, // 211: Cast.Cast.DataOverview:output_type -> Cast.DataOverviewResp - 120, // 212: Cast.Cast.ArtistMetricsSeries:output_type -> Cast.ArtistMetricsSeriesResp - 125, // 213: Cast.Cast.ArtistMetricsDailyWindow:output_type -> Cast.ArtistMetricsDailyWindowResp - 128, // 214: Cast.Cast.TobeConfirmedList:output_type -> Cast.TobeConfirmedListResp - 132, // 215: Cast.Cast.UpsertMediaMetricsDailyBatch:output_type -> Cast.UpsertMediaMetricsDailyBatchResp - 135, // 216: Cast.Cast.UpsertWorkMetricsDailyBatch:output_type -> Cast.UpsertWorkMetricsDailyBatchResp - 138, // 217: Cast.Cast.GetArtistAyrShareInfo:output_type -> Cast.GetArtistAyrShareInfoResp - 141, // 218: Cast.Cast.ListWorkPlatformInfo:output_type -> Cast.ListWorkPlatformInfoResp - 158, // [158:219] is the sub-list for method output_type - 97, // [97:158] is the sub-list for method input_type - 97, // [97:97] is the sub-list for extension type_name - 97, // [97:97] is the sub-list for extension extendee - 0, // [0:97] is the sub-list for field type_name + 0, // 18: Cast.MediaInfoByPlatformReq.platformID:type_name -> Cast.PlatformIDENUM + 7, // 19: Cast.MediaInfoByPlatformResp.info:type_name -> Cast.MediaUserInfo + 144, // 20: Cast.WorkListResp.data:type_name -> Cast.WorkListResp.Info + 16, // 21: Cast.WorkDetailResp.publishConfig1:type_name -> Cast.PublishConfig + 16, // 22: Cast.WorkDetailResp.publishConfig2:type_name -> Cast.PublishConfig + 16, // 23: Cast.WorkDetailResp.publishConfig3:type_name -> Cast.PublishConfig + 16, // 24: Cast.WorkDetailResp.publishConfig4:type_name -> Cast.PublishConfig + 26, // 25: Cast.WorkDetailResp.WorkLogData:type_name -> Cast.WorkLogInfo + 145, // 26: Cast.WorkDetailResp.mediaAccData:type_name -> Cast.WorkDetailResp.MediaAccDataEntry + 2, // 27: Cast.UpdateStatusReq.workAction:type_name -> Cast.WorkActionENUM + 3, // 28: Cast.UpdateStatusReq.autoPublish:type_name -> Cast.AutoPublishENUM + 146, // 29: Cast.MediaAccountsResp.data:type_name -> Cast.MediaAccountsResp.Info + 147, // 30: Cast.MediaWorksResp.data:type_name -> Cast.MediaWorksResp.Info + 148, // 31: Cast.PublishResp.data:type_name -> Cast.PublishResp.Info + 14, // 32: Cast.ImportWorkBatchReq.imageWorks:type_name -> Cast.UpdateWorkImageReq + 14, // 33: Cast.ImportWorkBatchResp.imageWorks:type_name -> Cast.UpdateWorkImageReq + 4, // 34: Cast.PlatformInfo.publishStatus:type_name -> Cast.PublishStatusENUM + 44, // 35: Cast.UpdateWorkPlatformInfoReq.PlatformInfoData:type_name -> Cast.PlatformInfo + 0, // 36: Cast.UpdateWorkPublishLogReq.platformID:type_name -> Cast.PlatformIDENUM + 149, // 37: Cast.RefreshWorkListResp.Data:type_name -> Cast.RefreshWorkListResp.Info + 0, // 38: Cast.OAuthCodeToTokenReq.platformID:type_name -> Cast.PlatformIDENUM + 151, // 39: Cast.UpdateOAuthReq.Data:type_name -> Cast.UpdateOAuthReq.Info + 0, // 40: Cast.RefreshTokenReq.platformID:type_name -> Cast.PlatformIDENUM + 68, // 41: Cast.ListVideoScriptsResp.data:type_name -> Cast.VideoScriptInfo + 68, // 42: Cast.UpdateVideoScriptBatchReq.data:type_name -> Cast.VideoScriptInfo + 68, // 43: Cast.UpdateVideoScriptBatchResp.data:type_name -> Cast.VideoScriptInfo + 2, // 44: Cast.UpdateScriptStatusReq.workAction:type_name -> Cast.WorkActionENUM + 5, // 45: Cast.UpdatePromptReq.category:type_name -> Cast.CategoryENUM + 5, // 46: Cast.GetPromptResp.category:type_name -> Cast.CategoryENUM + 5, // 47: Cast.ListPromptsReq.category:type_name -> Cast.CategoryENUM + 5, // 48: Cast.PromptInfo.category:type_name -> Cast.CategoryENUM + 82, // 49: Cast.ListPromptsResp.data:type_name -> Cast.PromptInfo + 82, // 50: Cast.UpdatePromptBatchReq.data:type_name -> Cast.PromptInfo + 82, // 51: Cast.UpdatePromptBatchResp.data:type_name -> Cast.PromptInfo + 86, // 52: Cast.UpdateArtistReq.artistInfo:type_name -> Cast.ArtistInfo + 86, // 53: Cast.GetArtistResp.artistInfo:type_name -> Cast.ArtistInfo + 2, // 54: Cast.UpdateWorkAnalysisStatusReq.workAction:type_name -> Cast.WorkActionENUM + 96, // 55: Cast.GetWorkAnalysisResp.fansSeries:type_name -> Cast.WorkAnalysisFansSeries + 97, // 56: Cast.GetWorkAnalysisResp.viewsSeries:type_name -> Cast.WorkAnalysisViewsSeries + 98, // 57: Cast.GetWorkAnalysisResp.likesSeries:type_name -> Cast.WorkAnalysisLikesSeries + 99, // 58: Cast.GetWorkAnalysisResp.commentsSeries:type_name -> Cast.WorkAnalysisCommentsSeries + 100, // 59: Cast.GetWorkAnalysisResp.sharesSeries:type_name -> Cast.WorkAnalysisSharesSeries + 101, // 60: Cast.GetWorkAnalysisResp.topCitiesSeries:type_name -> Cast.WorkAnalysisTopCities + 102, // 61: Cast.GetWorkAnalysisResp.mostActiveDaySeries:type_name -> Cast.WorkAnalysisMostActiveDay + 103, // 62: Cast.GetWorkAnalysisResp.bestPostTimeSeries:type_name -> Cast.WorkAnalysisBestPostTime + 95, // 63: Cast.GetWorkAnalysisDetailResp.WorkAnalysisLogData:type_name -> Cast.WorkAnalysisLogInfo + 96, // 64: Cast.GetWorkAnalysisDetailResp.fansSeries:type_name -> Cast.WorkAnalysisFansSeries + 97, // 65: Cast.GetWorkAnalysisDetailResp.viewsSeries:type_name -> Cast.WorkAnalysisViewsSeries + 98, // 66: Cast.GetWorkAnalysisDetailResp.likesSeries:type_name -> Cast.WorkAnalysisLikesSeries + 99, // 67: Cast.GetWorkAnalysisDetailResp.commentsSeries:type_name -> Cast.WorkAnalysisCommentsSeries + 100, // 68: Cast.GetWorkAnalysisDetailResp.sharesSeries:type_name -> Cast.WorkAnalysisSharesSeries + 101, // 69: Cast.GetWorkAnalysisDetailResp.topCitiesSeries:type_name -> Cast.WorkAnalysisTopCities + 102, // 70: Cast.GetWorkAnalysisDetailResp.mostActiveDaySeries:type_name -> Cast.WorkAnalysisMostActiveDay + 103, // 71: Cast.GetWorkAnalysisDetailResp.bestPostTimeSeries:type_name -> Cast.WorkAnalysisBestPostTime + 104, // 72: Cast.GetWorkAnalysisDetailResp.extra:type_name -> Cast.WorkAnalysisExtra + 110, // 73: Cast.ListWorkAnalysisResp.data:type_name -> Cast.WorkAnalysisInfo + 114, // 74: Cast.ArtistDataListResp.data:type_name -> Cast.ArtistDataRespItem + 117, // 75: Cast.MediaDataListResp.data:type_name -> Cast.MediaDataListItem + 96, // 76: Cast.ArtistMetricsSeriesResp.fansSeries:type_name -> Cast.WorkAnalysisFansSeries + 97, // 77: Cast.ArtistMetricsSeriesResp.viewsSeries:type_name -> Cast.WorkAnalysisViewsSeries + 98, // 78: Cast.ArtistMetricsSeriesResp.likesSeries:type_name -> Cast.WorkAnalysisLikesSeries + 99, // 79: Cast.ArtistMetricsSeriesResp.commentsSeries:type_name -> Cast.WorkAnalysisCommentsSeries + 100, // 80: Cast.ArtistMetricsSeriesResp.sharesSeries:type_name -> Cast.WorkAnalysisSharesSeries + 103, // 81: Cast.ArtistMetricsSeriesResp.bestPostTime:type_name -> Cast.WorkAnalysisBestPostTime + 102, // 82: Cast.ArtistMetricsSeriesResp.mostActiveDay:type_name -> Cast.WorkAnalysisMostActiveDay + 124, // 83: Cast.ArtistMetricsDailyWindowResp.fans:type_name -> Cast.SimplePoint + 124, // 84: Cast.ArtistMetricsDailyWindowResp.views:type_name -> Cast.SimplePoint + 124, // 85: Cast.ArtistMetricsDailyWindowResp.likes:type_name -> Cast.SimplePoint + 124, // 86: Cast.ArtistMetricsDailyWindowResp.comments:type_name -> Cast.SimplePoint + 124, // 87: Cast.ArtistMetricsDailyWindowResp.shares:type_name -> Cast.SimplePoint + 125, // 88: Cast.ArtistMetricsDailyWindowResp.bestPostTime:type_name -> Cast.BestPostTimePoint + 126, // 89: Cast.ArtistMetricsDailyWindowResp.mostActiveDay:type_name -> Cast.MostActiveDayPoint + 129, // 90: Cast.TobeConfirmedListResp.data:type_name -> Cast.TobeConfirmedItem + 132, // 91: Cast.UpsertMediaMetricsDailyBatchReq.data:type_name -> Cast.MediaMetricsDailyItem + 135, // 92: Cast.UpsertWorkMetricsDailyBatchReq.data:type_name -> Cast.WorkMetricsDailyItem + 139, // 93: Cast.GetArtistAyrShareInfoResp.data:type_name -> Cast.ArtistAyrShareInfo + 142, // 94: Cast.ListWorkPlatformInfoResp.data:type_name -> Cast.WorkPlatformInfo + 7, // 95: Cast.WorkDetailResp.MediaAccDataEntry.value:type_name -> Cast.MediaUserInfo + 150, // 96: Cast.RefreshWorkListResp.Info.PlatformInfoData:type_name -> Cast.RefreshWorkListResp.Info.PlatformInfo + 0, // 97: Cast.RefreshWorkListResp.Info.PlatformInfo.platformID:type_name -> Cast.PlatformIDENUM + 0, // 98: Cast.UpdateOAuthReq.Info.platformID:type_name -> Cast.PlatformIDENUM + 6, // 99: Cast.Cast.MediaUserList:input_type -> Cast.MediaUserListReq + 9, // 100: Cast.Cast.UpdateMediaAccount:input_type -> Cast.UpdateMediaAccountReq + 11, // 101: Cast.Cast.UnbindManager:input_type -> Cast.UnbindManagerReq + 13, // 102: Cast.Cast.BindManager:input_type -> Cast.BindManagerReq + 14, // 103: Cast.Cast.UpdateWorkImage:input_type -> Cast.UpdateWorkImageReq + 17, // 104: Cast.Cast.UpdateWorkVideo:input_type -> Cast.UpdateWorkVideoReq + 19, // 105: Cast.Cast.MediaInfo:input_type -> Cast.MediaInfoReq + 21, // 106: Cast.Cast.MediaInfoByPlatform:input_type -> Cast.MediaInfoByPlatformReq + 23, // 107: Cast.Cast.WorkList:input_type -> Cast.WorkListReq + 25, // 108: Cast.Cast.WorkDetail:input_type -> Cast.WorkDetailReq + 28, // 109: Cast.Cast.UpdateStatus:input_type -> Cast.UpdateStatusReq + 29, // 110: Cast.Cast.MediaAccounts:input_type -> Cast.MediaAccountsReq + 31, // 111: Cast.Cast.MediaWorks:input_type -> Cast.MediaWorksReq + 33, // 112: Cast.Cast.Publish:input_type -> Cast.PublishReq + 35, // 113: Cast.Cast.RePublish:input_type -> Cast.RePublishReq + 37, // 114: Cast.Cast.DelWork:input_type -> Cast.DelWorkReq + 38, // 115: Cast.Cast.WorkInfo:input_type -> Cast.WorkInfoReq + 40, // 116: Cast.Cast.ArtistInfo:input_type -> Cast.ArtistInfoReq + 42, // 117: Cast.Cast.ImportWorkBatch:input_type -> Cast.ImportWorkBatchReq + 45, // 118: Cast.Cast.UpdateWorkPlatformInfo:input_type -> Cast.UpdateWorkPlatformInfoReq + 47, // 119: Cast.Cast.UpdateWorkPublishLog:input_type -> Cast.UpdateWorkPublishLogReq + 48, // 120: Cast.Cast.RefreshWorkList:input_type -> Cast.RefreshWorkListReq + 50, // 121: Cast.Cast.OAuthAccount:input_type -> Cast.OAuthAccountReq + 52, // 122: Cast.Cast.OAuthAccountV2:input_type -> Cast.OAuthAccountV2Req + 56, // 123: Cast.Cast.OAuthCodeToToken:input_type -> Cast.OAuthCodeToTokenReq + 58, // 124: Cast.Cast.UpdateOAuth:input_type -> Cast.UpdateOAuthReq + 59, // 125: Cast.Cast.RefreshToken:input_type -> Cast.RefreshTokenReq + 61, // 126: Cast.Cast.PublishMediaInfo:input_type -> Cast.PublishMediaInfoReq + 152, // 127: Cast.Cast.Test:input_type -> google.protobuf.Empty + 63, // 128: Cast.Cast.UpdateVideoScript:input_type -> Cast.UpdateVideoScriptReq + 65, // 129: Cast.Cast.GetVideoScript:input_type -> Cast.GetVideoScriptReq + 67, // 130: Cast.Cast.ListVideoScripts:input_type -> Cast.ListVideoScriptsReq + 70, // 131: Cast.Cast.DeleteVideoScript:input_type -> Cast.DeleteVideoScriptReq + 71, // 132: Cast.Cast.UpdateVideoScriptBatch:input_type -> Cast.UpdateVideoScriptBatchReq + 73, // 133: Cast.Cast.UpdateScriptStatus:input_type -> Cast.UpdateScriptStatusReq + 75, // 134: Cast.Cast.GetLayout:input_type -> Cast.GetLayoutReq + 74, // 135: Cast.Cast.SetLayout:input_type -> Cast.SetLayoutReq + 77, // 136: Cast.Cast.UpdatePrompt:input_type -> Cast.UpdatePromptReq + 78, // 137: Cast.Cast.DeletePrompt:input_type -> Cast.DeletePromptReq + 79, // 138: Cast.Cast.GetPrompt:input_type -> Cast.GetPromptReq + 81, // 139: Cast.Cast.ListPrompts:input_type -> Cast.ListPromptsReq + 84, // 140: Cast.Cast.UpdatePromptBatch:input_type -> Cast.UpdatePromptBatchReq + 87, // 141: Cast.Cast.UpdateArtist:input_type -> Cast.UpdateArtistReq + 89, // 142: Cast.Cast.GetArtist:input_type -> Cast.GetArtistReq + 91, // 143: Cast.Cast.CreateWorkAnalysis:input_type -> Cast.CreateWorkAnalysisReq + 93, // 144: Cast.Cast.UpdateWorkAnalysis:input_type -> Cast.UpdateWorkAnalysisReq + 94, // 145: Cast.Cast.UpdateWorkAnalysisStatus:input_type -> Cast.UpdateWorkAnalysisStatusReq + 105, // 146: Cast.Cast.GetWorkAnalysis:input_type -> Cast.GetWorkAnalysisDetailReq + 106, // 147: Cast.Cast.GetLatestWorkAnalysis:input_type -> Cast.GetLatestWorkAnalysisReq + 109, // 148: Cast.Cast.ListWorkAnalysis:input_type -> Cast.ListWorkAnalysisReq + 112, // 149: Cast.Cast.DeleteWorkAnalysis:input_type -> Cast.DeleteWorkAnalysisReq + 131, // 150: Cast.Cast.UpdateWorkAnalysisApprovalID:input_type -> Cast.UpdateWorkAnalysisApprovalIDReq + 113, // 151: Cast.Cast.ArtistDataList:input_type -> Cast.ArtistDataListReq + 116, // 152: Cast.Cast.MediaDataList:input_type -> Cast.MediaDataListReq + 119, // 153: Cast.Cast.DataOverview:input_type -> Cast.DataOverviewReq + 121, // 154: Cast.Cast.ArtistMetricsSeries:input_type -> Cast.ArtistMetricsSeriesReq + 123, // 155: Cast.Cast.ArtistMetricsDailyWindow:input_type -> Cast.ArtistMetricsDailyWindowReq + 128, // 156: Cast.Cast.TobeConfirmedList:input_type -> Cast.TobeConfirmedListReq + 133, // 157: Cast.Cast.UpsertMediaMetricsDailyBatch:input_type -> Cast.UpsertMediaMetricsDailyBatchReq + 136, // 158: Cast.Cast.UpsertWorkMetricsDailyBatch:input_type -> Cast.UpsertWorkMetricsDailyBatchReq + 138, // 159: Cast.Cast.GetArtistAyrShareInfo:input_type -> Cast.GetArtistAyrShareInfoReq + 141, // 160: Cast.Cast.ListWorkPlatformInfo:input_type -> Cast.ListWorkPlatformInfoReq + 8, // 161: Cast.Cast.MediaUserList:output_type -> Cast.MediaUserListResp + 10, // 162: Cast.Cast.UpdateMediaAccount:output_type -> Cast.UpdateMediaAccountResp + 12, // 163: Cast.Cast.UnbindManager:output_type -> Cast.UnbindManagerResp + 152, // 164: Cast.Cast.BindManager:output_type -> google.protobuf.Empty + 15, // 165: Cast.Cast.UpdateWorkImage:output_type -> Cast.UpdateWorkImageResp + 18, // 166: Cast.Cast.UpdateWorkVideo:output_type -> Cast.UpdateWorkVideoResp + 20, // 167: Cast.Cast.MediaInfo:output_type -> Cast.MediaInfoResp + 22, // 168: Cast.Cast.MediaInfoByPlatform:output_type -> Cast.MediaInfoByPlatformResp + 24, // 169: Cast.Cast.WorkList:output_type -> Cast.WorkListResp + 27, // 170: Cast.Cast.WorkDetail:output_type -> Cast.WorkDetailResp + 152, // 171: Cast.Cast.UpdateStatus:output_type -> google.protobuf.Empty + 30, // 172: Cast.Cast.MediaAccounts:output_type -> Cast.MediaAccountsResp + 32, // 173: Cast.Cast.MediaWorks:output_type -> Cast.MediaWorksResp + 34, // 174: Cast.Cast.Publish:output_type -> Cast.PublishResp + 36, // 175: Cast.Cast.RePublish:output_type -> Cast.RePublishResp + 152, // 176: Cast.Cast.DelWork:output_type -> google.protobuf.Empty + 39, // 177: Cast.Cast.WorkInfo:output_type -> Cast.WorkInfoResp + 41, // 178: Cast.Cast.ArtistInfo:output_type -> Cast.ArtistInfoResp + 43, // 179: Cast.Cast.ImportWorkBatch:output_type -> Cast.ImportWorkBatchResp + 46, // 180: Cast.Cast.UpdateWorkPlatformInfo:output_type -> Cast.UpdateWorkPlatformInfoResp + 152, // 181: Cast.Cast.UpdateWorkPublishLog:output_type -> google.protobuf.Empty + 49, // 182: Cast.Cast.RefreshWorkList:output_type -> Cast.RefreshWorkListResp + 51, // 183: Cast.Cast.OAuthAccount:output_type -> Cast.OAuthAccountResp + 53, // 184: Cast.Cast.OAuthAccountV2:output_type -> Cast.OAuthAccountV2Resp + 57, // 185: Cast.Cast.OAuthCodeToToken:output_type -> Cast.OAuthCodeToTokenResp + 152, // 186: Cast.Cast.UpdateOAuth:output_type -> google.protobuf.Empty + 60, // 187: Cast.Cast.RefreshToken:output_type -> Cast.RefreshTokenResp + 62, // 188: Cast.Cast.PublishMediaInfo:output_type -> Cast.PublishMediaInfoResp + 152, // 189: Cast.Cast.Test:output_type -> google.protobuf.Empty + 64, // 190: Cast.Cast.UpdateVideoScript:output_type -> Cast.UpdateVideoScriptResp + 66, // 191: Cast.Cast.GetVideoScript:output_type -> Cast.GetVideoScriptResp + 69, // 192: Cast.Cast.ListVideoScripts:output_type -> Cast.ListVideoScriptsResp + 152, // 193: Cast.Cast.DeleteVideoScript:output_type -> google.protobuf.Empty + 72, // 194: Cast.Cast.UpdateVideoScriptBatch:output_type -> Cast.UpdateVideoScriptBatchResp + 152, // 195: Cast.Cast.UpdateScriptStatus:output_type -> google.protobuf.Empty + 76, // 196: Cast.Cast.GetLayout:output_type -> Cast.GetLayoutResp + 152, // 197: Cast.Cast.SetLayout:output_type -> google.protobuf.Empty + 152, // 198: Cast.Cast.UpdatePrompt:output_type -> google.protobuf.Empty + 152, // 199: Cast.Cast.DeletePrompt:output_type -> google.protobuf.Empty + 80, // 200: Cast.Cast.GetPrompt:output_type -> Cast.GetPromptResp + 83, // 201: Cast.Cast.ListPrompts:output_type -> Cast.ListPromptsResp + 85, // 202: Cast.Cast.UpdatePromptBatch:output_type -> Cast.UpdatePromptBatchResp + 88, // 203: Cast.Cast.UpdateArtist:output_type -> Cast.UpdateArtistResp + 90, // 204: Cast.Cast.GetArtist:output_type -> Cast.GetArtistResp + 92, // 205: Cast.Cast.CreateWorkAnalysis:output_type -> Cast.CreateWorkAnalysisResp + 152, // 206: Cast.Cast.UpdateWorkAnalysis:output_type -> google.protobuf.Empty + 152, // 207: Cast.Cast.UpdateWorkAnalysisStatus:output_type -> google.protobuf.Empty + 108, // 208: Cast.Cast.GetWorkAnalysis:output_type -> Cast.GetWorkAnalysisDetailResp + 107, // 209: Cast.Cast.GetLatestWorkAnalysis:output_type -> Cast.GetWorkAnalysisResp + 111, // 210: Cast.Cast.ListWorkAnalysis:output_type -> Cast.ListWorkAnalysisResp + 152, // 211: Cast.Cast.DeleteWorkAnalysis:output_type -> google.protobuf.Empty + 152, // 212: Cast.Cast.UpdateWorkAnalysisApprovalID:output_type -> google.protobuf.Empty + 115, // 213: Cast.Cast.ArtistDataList:output_type -> Cast.ArtistDataListResp + 118, // 214: Cast.Cast.MediaDataList:output_type -> Cast.MediaDataListResp + 120, // 215: Cast.Cast.DataOverview:output_type -> Cast.DataOverviewResp + 122, // 216: Cast.Cast.ArtistMetricsSeries:output_type -> Cast.ArtistMetricsSeriesResp + 127, // 217: Cast.Cast.ArtistMetricsDailyWindow:output_type -> Cast.ArtistMetricsDailyWindowResp + 130, // 218: Cast.Cast.TobeConfirmedList:output_type -> Cast.TobeConfirmedListResp + 134, // 219: Cast.Cast.UpsertMediaMetricsDailyBatch:output_type -> Cast.UpsertMediaMetricsDailyBatchResp + 137, // 220: Cast.Cast.UpsertWorkMetricsDailyBatch:output_type -> Cast.UpsertWorkMetricsDailyBatchResp + 140, // 221: Cast.Cast.GetArtistAyrShareInfo:output_type -> Cast.GetArtistAyrShareInfoResp + 143, // 222: Cast.Cast.ListWorkPlatformInfo:output_type -> Cast.ListWorkPlatformInfoResp + 161, // [161:223] is the sub-list for method output_type + 99, // [99:161] is the sub-list for method input_type + 99, // [99:99] is the sub-list for extension type_name + 99, // [99:99] is the sub-list for extension extendee + 0, // [0:99] is the sub-list for field type_name } func init() { file_pb_fiee_cast_proto_init() } @@ -15548,7 +15673,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WorkListReq); i { + switch v := v.(*MediaInfoByPlatformReq); i { case 0: return &v.state case 1: @@ -15560,7 +15685,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WorkListResp); i { + switch v := v.(*MediaInfoByPlatformResp); i { case 0: return &v.state case 1: @@ -15572,7 +15697,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WorkDetailReq); i { + switch v := v.(*WorkListReq); i { case 0: return &v.state case 1: @@ -15584,7 +15709,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WorkLogInfo); i { + switch v := v.(*WorkListResp); i { case 0: return &v.state case 1: @@ -15596,7 +15721,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WorkDetailResp); i { + switch v := v.(*WorkDetailReq); i { case 0: return &v.state case 1: @@ -15608,7 +15733,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateStatusReq); i { + switch v := v.(*WorkLogInfo); i { case 0: return &v.state case 1: @@ -15620,7 +15745,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MediaAccountsReq); i { + switch v := v.(*WorkDetailResp); i { case 0: return &v.state case 1: @@ -15632,7 +15757,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MediaAccountsResp); i { + switch v := v.(*UpdateStatusReq); i { case 0: return &v.state case 1: @@ -15644,7 +15769,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MediaWorksReq); i { + switch v := v.(*MediaAccountsReq); i { case 0: return &v.state case 1: @@ -15656,7 +15781,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MediaWorksResp); i { + switch v := v.(*MediaAccountsResp); i { case 0: return &v.state case 1: @@ -15668,7 +15793,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PublishReq); i { + switch v := v.(*MediaWorksReq); i { case 0: return &v.state case 1: @@ -15680,7 +15805,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PublishResp); i { + switch v := v.(*MediaWorksResp); i { case 0: return &v.state case 1: @@ -15692,7 +15817,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RePublishReq); i { + switch v := v.(*PublishReq); i { case 0: return &v.state case 1: @@ -15704,7 +15829,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RePublishResp); i { + switch v := v.(*PublishResp); i { case 0: return &v.state case 1: @@ -15716,7 +15841,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DelWorkReq); i { + switch v := v.(*RePublishReq); i { case 0: return &v.state case 1: @@ -15728,7 +15853,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WorkInfoReq); i { + switch v := v.(*RePublishResp); i { case 0: return &v.state case 1: @@ -15740,7 +15865,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WorkInfoResp); i { + switch v := v.(*DelWorkReq); i { case 0: return &v.state case 1: @@ -15752,7 +15877,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ArtistInfoReq); i { + switch v := v.(*WorkInfoReq); i { case 0: return &v.state case 1: @@ -15764,7 +15889,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ArtistInfoResp); i { + switch v := v.(*WorkInfoResp); i { case 0: return &v.state case 1: @@ -15776,7 +15901,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ImportWorkBatchReq); i { + switch v := v.(*ArtistInfoReq); i { case 0: return &v.state case 1: @@ -15788,7 +15913,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ImportWorkBatchResp); i { + switch v := v.(*ArtistInfoResp); i { case 0: return &v.state case 1: @@ -15800,7 +15925,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PlatformInfo); i { + switch v := v.(*ImportWorkBatchReq); i { case 0: return &v.state case 1: @@ -15812,7 +15937,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateWorkPlatformInfoReq); i { + switch v := v.(*ImportWorkBatchResp); i { case 0: return &v.state case 1: @@ -15824,7 +15949,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateWorkPlatformInfoResp); i { + switch v := v.(*PlatformInfo); i { case 0: return &v.state case 1: @@ -15836,7 +15961,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateWorkPublishLogReq); i { + switch v := v.(*UpdateWorkPlatformInfoReq); i { case 0: return &v.state case 1: @@ -15848,7 +15973,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RefreshWorkListReq); i { + switch v := v.(*UpdateWorkPlatformInfoResp); i { case 0: return &v.state case 1: @@ -15860,7 +15985,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RefreshWorkListResp); i { + switch v := v.(*UpdateWorkPublishLogReq); i { case 0: return &v.state case 1: @@ -15872,7 +15997,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OAuthAccountReq); i { + switch v := v.(*RefreshWorkListReq); i { case 0: return &v.state case 1: @@ -15884,7 +16009,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OAuthAccountResp); i { + switch v := v.(*RefreshWorkListResp); i { case 0: return &v.state case 1: @@ -15896,7 +16021,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OAuthAccountV2Req); i { + switch v := v.(*OAuthAccountReq); i { case 0: return &v.state case 1: @@ -15908,7 +16033,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OAuthAccountV2Resp); i { + switch v := v.(*OAuthAccountResp); i { case 0: return &v.state case 1: @@ -15920,7 +16045,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OAuthYoutubeTokenReq); i { + switch v := v.(*OAuthAccountV2Req); i { case 0: return &v.state case 1: @@ -15932,7 +16057,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OAuthYoutubeTokenResp); i { + switch v := v.(*OAuthAccountV2Resp); i { case 0: return &v.state case 1: @@ -15944,7 +16069,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OAuthCodeToTokenReq); i { + switch v := v.(*OAuthYoutubeTokenReq); i { case 0: return &v.state case 1: @@ -15956,7 +16081,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OAuthCodeToTokenResp); i { + switch v := v.(*OAuthYoutubeTokenResp); i { case 0: return &v.state case 1: @@ -15968,7 +16093,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateOAuthReq); i { + switch v := v.(*OAuthCodeToTokenReq); i { case 0: return &v.state case 1: @@ -15980,7 +16105,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RefreshTokenReq); i { + switch v := v.(*OAuthCodeToTokenResp); i { case 0: return &v.state case 1: @@ -15992,7 +16117,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RefreshTokenResp); i { + switch v := v.(*UpdateOAuthReq); i { case 0: return &v.state case 1: @@ -16004,7 +16129,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PublishMediaInfoReq); i { + switch v := v.(*RefreshTokenReq); i { case 0: return &v.state case 1: @@ -16016,7 +16141,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PublishMediaInfoResp); i { + switch v := v.(*RefreshTokenResp); i { case 0: return &v.state case 1: @@ -16028,7 +16153,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateVideoScriptReq); i { + switch v := v.(*PublishMediaInfoReq); i { case 0: return &v.state case 1: @@ -16040,7 +16165,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateVideoScriptResp); i { + switch v := v.(*PublishMediaInfoResp); i { case 0: return &v.state case 1: @@ -16052,7 +16177,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetVideoScriptReq); i { + switch v := v.(*UpdateVideoScriptReq); i { case 0: return &v.state case 1: @@ -16064,7 +16189,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetVideoScriptResp); i { + switch v := v.(*UpdateVideoScriptResp); i { case 0: return &v.state case 1: @@ -16076,7 +16201,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListVideoScriptsReq); i { + switch v := v.(*GetVideoScriptReq); i { case 0: return &v.state case 1: @@ -16088,7 +16213,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VideoScriptInfo); i { + switch v := v.(*GetVideoScriptResp); i { case 0: return &v.state case 1: @@ -16100,7 +16225,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListVideoScriptsResp); i { + switch v := v.(*ListVideoScriptsReq); i { case 0: return &v.state case 1: @@ -16112,7 +16237,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteVideoScriptReq); i { + switch v := v.(*VideoScriptInfo); i { case 0: return &v.state case 1: @@ -16124,7 +16249,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateVideoScriptBatchReq); i { + switch v := v.(*ListVideoScriptsResp); i { case 0: return &v.state case 1: @@ -16136,7 +16261,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateVideoScriptBatchResp); i { + switch v := v.(*DeleteVideoScriptReq); i { case 0: return &v.state case 1: @@ -16148,7 +16273,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateScriptStatusReq); i { + switch v := v.(*UpdateVideoScriptBatchReq); i { case 0: return &v.state case 1: @@ -16160,7 +16285,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetLayoutReq); i { + switch v := v.(*UpdateVideoScriptBatchResp); i { case 0: return &v.state case 1: @@ -16172,7 +16297,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetLayoutReq); i { + switch v := v.(*UpdateScriptStatusReq); i { case 0: return &v.state case 1: @@ -16184,7 +16309,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetLayoutResp); i { + switch v := v.(*SetLayoutReq); i { case 0: return &v.state case 1: @@ -16196,7 +16321,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdatePromptReq); i { + switch v := v.(*GetLayoutReq); i { case 0: return &v.state case 1: @@ -16208,7 +16333,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeletePromptReq); i { + switch v := v.(*GetLayoutResp); i { case 0: return &v.state case 1: @@ -16220,7 +16345,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetPromptReq); i { + switch v := v.(*UpdatePromptReq); i { case 0: return &v.state case 1: @@ -16232,7 +16357,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetPromptResp); i { + switch v := v.(*DeletePromptReq); i { case 0: return &v.state case 1: @@ -16244,7 +16369,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListPromptsReq); i { + switch v := v.(*GetPromptReq); i { case 0: return &v.state case 1: @@ -16256,7 +16381,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PromptInfo); i { + switch v := v.(*GetPromptResp); i { case 0: return &v.state case 1: @@ -16268,7 +16393,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListPromptsResp); i { + switch v := v.(*ListPromptsReq); i { case 0: return &v.state case 1: @@ -16280,7 +16405,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdatePromptBatchReq); i { + switch v := v.(*PromptInfo); i { case 0: return &v.state case 1: @@ -16292,7 +16417,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdatePromptBatchResp); i { + switch v := v.(*ListPromptsResp); i { case 0: return &v.state case 1: @@ -16304,7 +16429,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ArtistInfo); i { + switch v := v.(*UpdatePromptBatchReq); i { case 0: return &v.state case 1: @@ -16316,7 +16441,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateArtistReq); i { + switch v := v.(*UpdatePromptBatchResp); i { case 0: return &v.state case 1: @@ -16328,7 +16453,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateArtistResp); i { + switch v := v.(*ArtistInfo); i { case 0: return &v.state case 1: @@ -16340,7 +16465,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetArtistReq); i { + switch v := v.(*UpdateArtistReq); i { case 0: return &v.state case 1: @@ -16352,7 +16477,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetArtistResp); i { + switch v := v.(*UpdateArtistResp); i { case 0: return &v.state case 1: @@ -16364,7 +16489,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateWorkAnalysisReq); i { + switch v := v.(*GetArtistReq); i { case 0: return &v.state case 1: @@ -16376,7 +16501,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateWorkAnalysisResp); i { + switch v := v.(*GetArtistResp); i { case 0: return &v.state case 1: @@ -16388,7 +16513,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateWorkAnalysisReq); i { + switch v := v.(*CreateWorkAnalysisReq); i { case 0: return &v.state case 1: @@ -16400,7 +16525,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateWorkAnalysisStatusReq); i { + switch v := v.(*CreateWorkAnalysisResp); i { case 0: return &v.state case 1: @@ -16412,7 +16537,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WorkAnalysisLogInfo); i { + switch v := v.(*UpdateWorkAnalysisReq); i { case 0: return &v.state case 1: @@ -16424,7 +16549,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WorkAnalysisFansSeries); i { + switch v := v.(*UpdateWorkAnalysisStatusReq); i { case 0: return &v.state case 1: @@ -16436,7 +16561,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WorkAnalysisViewsSeries); i { + switch v := v.(*WorkAnalysisLogInfo); i { case 0: return &v.state case 1: @@ -16448,7 +16573,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WorkAnalysisLikesSeries); i { + switch v := v.(*WorkAnalysisFansSeries); i { case 0: return &v.state case 1: @@ -16460,7 +16585,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WorkAnalysisCommentsSeries); i { + switch v := v.(*WorkAnalysisViewsSeries); i { case 0: return &v.state case 1: @@ -16472,7 +16597,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WorkAnalysisSharesSeries); i { + switch v := v.(*WorkAnalysisLikesSeries); i { case 0: return &v.state case 1: @@ -16484,7 +16609,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WorkAnalysisTopCities); i { + switch v := v.(*WorkAnalysisCommentsSeries); i { case 0: return &v.state case 1: @@ -16496,7 +16621,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WorkAnalysisMostActiveDay); i { + switch v := v.(*WorkAnalysisSharesSeries); i { case 0: return &v.state case 1: @@ -16508,7 +16633,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WorkAnalysisBestPostTime); i { + switch v := v.(*WorkAnalysisTopCities); i { case 0: return &v.state case 1: @@ -16520,7 +16645,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WorkAnalysisExtra); i { + switch v := v.(*WorkAnalysisMostActiveDay); i { case 0: return &v.state case 1: @@ -16532,7 +16657,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetWorkAnalysisDetailReq); i { + switch v := v.(*WorkAnalysisBestPostTime); i { case 0: return &v.state case 1: @@ -16544,7 +16669,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetLatestWorkAnalysisReq); i { + switch v := v.(*WorkAnalysisExtra); i { case 0: return &v.state case 1: @@ -16556,7 +16681,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetWorkAnalysisResp); i { + switch v := v.(*GetWorkAnalysisDetailReq); i { case 0: return &v.state case 1: @@ -16568,7 +16693,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetWorkAnalysisDetailResp); i { + switch v := v.(*GetLatestWorkAnalysisReq); i { case 0: return &v.state case 1: @@ -16580,7 +16705,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListWorkAnalysisReq); i { + switch v := v.(*GetWorkAnalysisResp); i { case 0: return &v.state case 1: @@ -16592,7 +16717,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WorkAnalysisInfo); i { + switch v := v.(*GetWorkAnalysisDetailResp); i { case 0: return &v.state case 1: @@ -16604,7 +16729,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListWorkAnalysisResp); i { + switch v := v.(*ListWorkAnalysisReq); i { case 0: return &v.state case 1: @@ -16616,7 +16741,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteWorkAnalysisReq); i { + switch v := v.(*WorkAnalysisInfo); i { case 0: return &v.state case 1: @@ -16628,7 +16753,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ArtistDataListReq); i { + switch v := v.(*ListWorkAnalysisResp); i { case 0: return &v.state case 1: @@ -16640,7 +16765,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ArtistDataRespItem); i { + switch v := v.(*DeleteWorkAnalysisReq); i { case 0: return &v.state case 1: @@ -16652,7 +16777,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ArtistDataListResp); i { + switch v := v.(*ArtistDataListReq); i { case 0: return &v.state case 1: @@ -16664,7 +16789,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MediaDataListReq); i { + switch v := v.(*ArtistDataRespItem); i { case 0: return &v.state case 1: @@ -16676,7 +16801,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[109].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MediaDataListItem); i { + switch v := v.(*ArtistDataListResp); i { case 0: return &v.state case 1: @@ -16688,7 +16813,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MediaDataListResp); i { + switch v := v.(*MediaDataListReq); i { case 0: return &v.state case 1: @@ -16700,7 +16825,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DataOverviewReq); i { + switch v := v.(*MediaDataListItem); i { case 0: return &v.state case 1: @@ -16712,7 +16837,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DataOverviewResp); i { + switch v := v.(*MediaDataListResp); i { case 0: return &v.state case 1: @@ -16724,7 +16849,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[113].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ArtistMetricsSeriesReq); i { + switch v := v.(*DataOverviewReq); i { case 0: return &v.state case 1: @@ -16736,7 +16861,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[114].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ArtistMetricsSeriesResp); i { + switch v := v.(*DataOverviewResp); i { case 0: return &v.state case 1: @@ -16748,7 +16873,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[115].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ArtistMetricsDailyWindowReq); i { + switch v := v.(*ArtistMetricsSeriesReq); i { case 0: return &v.state case 1: @@ -16760,7 +16885,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[116].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SimplePoint); i { + switch v := v.(*ArtistMetricsSeriesResp); i { case 0: return &v.state case 1: @@ -16772,7 +16897,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[117].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BestPostTimePoint); i { + switch v := v.(*ArtistMetricsDailyWindowReq); i { case 0: return &v.state case 1: @@ -16784,7 +16909,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[118].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MostActiveDayPoint); i { + switch v := v.(*SimplePoint); i { case 0: return &v.state case 1: @@ -16796,7 +16921,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[119].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ArtistMetricsDailyWindowResp); i { + switch v := v.(*BestPostTimePoint); i { case 0: return &v.state case 1: @@ -16808,7 +16933,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[120].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TobeConfirmedListReq); i { + switch v := v.(*MostActiveDayPoint); i { case 0: return &v.state case 1: @@ -16820,7 +16945,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[121].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TobeConfirmedItem); i { + switch v := v.(*ArtistMetricsDailyWindowResp); i { case 0: return &v.state case 1: @@ -16832,7 +16957,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[122].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TobeConfirmedListResp); i { + switch v := v.(*TobeConfirmedListReq); i { case 0: return &v.state case 1: @@ -16844,7 +16969,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[123].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateWorkAnalysisApprovalIDReq); i { + switch v := v.(*TobeConfirmedItem); i { case 0: return &v.state case 1: @@ -16856,7 +16981,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[124].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MediaMetricsDailyItem); i { + switch v := v.(*TobeConfirmedListResp); i { case 0: return &v.state case 1: @@ -16868,7 +16993,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[125].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpsertMediaMetricsDailyBatchReq); i { + switch v := v.(*UpdateWorkAnalysisApprovalIDReq); i { case 0: return &v.state case 1: @@ -16880,7 +17005,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[126].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpsertMediaMetricsDailyBatchResp); i { + switch v := v.(*MediaMetricsDailyItem); i { case 0: return &v.state case 1: @@ -16892,7 +17017,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[127].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WorkMetricsDailyItem); i { + switch v := v.(*UpsertMediaMetricsDailyBatchReq); i { case 0: return &v.state case 1: @@ -16904,7 +17029,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[128].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpsertWorkMetricsDailyBatchReq); i { + switch v := v.(*UpsertMediaMetricsDailyBatchResp); i { case 0: return &v.state case 1: @@ -16916,7 +17041,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[129].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpsertWorkMetricsDailyBatchResp); i { + switch v := v.(*WorkMetricsDailyItem); i { case 0: return &v.state case 1: @@ -16928,7 +17053,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[130].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetArtistAyrShareInfoReq); i { + switch v := v.(*UpsertWorkMetricsDailyBatchReq); i { case 0: return &v.state case 1: @@ -16940,7 +17065,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[131].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ArtistAyrShareInfo); i { + switch v := v.(*UpsertWorkMetricsDailyBatchResp); i { case 0: return &v.state case 1: @@ -16952,7 +17077,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[132].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetArtistAyrShareInfoResp); i { + switch v := v.(*GetArtistAyrShareInfoReq); i { case 0: return &v.state case 1: @@ -16964,7 +17089,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[133].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListWorkPlatformInfoReq); i { + switch v := v.(*ArtistAyrShareInfo); i { case 0: return &v.state case 1: @@ -16976,7 +17101,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[134].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WorkPlatformInfo); i { + switch v := v.(*GetArtistAyrShareInfoResp); i { case 0: return &v.state case 1: @@ -16988,7 +17113,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[135].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListWorkPlatformInfoResp); i { + switch v := v.(*ListWorkPlatformInfoReq); i { case 0: return &v.state case 1: @@ -17000,7 +17125,19 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[136].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WorkListResp_Info); i { + switch v := v.(*WorkPlatformInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_fiee_cast_proto_msgTypes[137].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListWorkPlatformInfoResp); i { case 0: return &v.state case 1: @@ -17012,19 +17149,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[138].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MediaAccountsResp_Info); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_pb_fiee_cast_proto_msgTypes[139].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MediaWorksResp_Info); i { + switch v := v.(*WorkListResp_Info); i { case 0: return &v.state case 1: @@ -17036,7 +17161,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[140].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PublishResp_Info); i { + switch v := v.(*MediaAccountsResp_Info); i { case 0: return &v.state case 1: @@ -17048,7 +17173,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[141].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RefreshWorkListResp_Info); i { + switch v := v.(*MediaWorksResp_Info); i { case 0: return &v.state case 1: @@ -17060,7 +17185,7 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[142].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RefreshWorkListResp_Info_PlatformInfo); i { + switch v := v.(*PublishResp_Info); i { case 0: return &v.state case 1: @@ -17072,6 +17197,30 @@ func file_pb_fiee_cast_proto_init() { } } file_pb_fiee_cast_proto_msgTypes[143].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RefreshWorkListResp_Info); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_fiee_cast_proto_msgTypes[144].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RefreshWorkListResp_Info_PlatformInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_fiee_cast_proto_msgTypes[145].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateOAuthReq_Info); i { case 0: return &v.state @@ -17090,7 +17239,7 @@ func file_pb_fiee_cast_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_pb_fiee_cast_proto_rawDesc, NumEnums: 6, - NumMessages: 144, + NumMessages: 146, NumExtensions: 0, NumServices: 1, }, diff --git a/api/cast/cast.pb.validate.go b/api/cast/cast.pb.validate.go index a162e6b..9037d3c 100644 --- a/api/cast/cast.pb.validate.go +++ b/api/cast/cast.pb.validate.go @@ -79,7 +79,7 @@ func (m *MediaUserListReq) validate(all bool) error { // no validation rules for MediaUserID - // no validation rules for NeedStat + // no validation rules for NeedStats if len(errors) > 0 { return MediaUserListReqMultiError(errors) @@ -2017,6 +2017,243 @@ var _ interface { ErrorName() string } = MediaInfoRespValidationError{} +// Validate checks the field values on MediaInfoByPlatformReq with the rules +// defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *MediaInfoByPlatformReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on MediaInfoByPlatformReq with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// MediaInfoByPlatformReqMultiError, or nil if none found. +func (m *MediaInfoByPlatformReq) ValidateAll() error { + return m.validate(true) +} + +func (m *MediaInfoByPlatformReq) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for ArtistUuid + + // no validation rules for PlatformID + + if len(errors) > 0 { + return MediaInfoByPlatformReqMultiError(errors) + } + + return nil +} + +// MediaInfoByPlatformReqMultiError is an error wrapping multiple validation +// errors returned by MediaInfoByPlatformReq.ValidateAll() if the designated +// constraints aren't met. +type MediaInfoByPlatformReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m MediaInfoByPlatformReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m MediaInfoByPlatformReqMultiError) AllErrors() []error { return m } + +// MediaInfoByPlatformReqValidationError is the validation error returned by +// MediaInfoByPlatformReq.Validate if the designated constraints aren't met. +type MediaInfoByPlatformReqValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e MediaInfoByPlatformReqValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e MediaInfoByPlatformReqValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e MediaInfoByPlatformReqValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e MediaInfoByPlatformReqValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e MediaInfoByPlatformReqValidationError) ErrorName() string { + return "MediaInfoByPlatformReqValidationError" +} + +// Error satisfies the builtin error interface +func (e MediaInfoByPlatformReqValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sMediaInfoByPlatformReq.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = MediaInfoByPlatformReqValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = MediaInfoByPlatformReqValidationError{} + +// Validate checks the field values on MediaInfoByPlatformResp with the rules +// defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *MediaInfoByPlatformResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on MediaInfoByPlatformResp with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// MediaInfoByPlatformRespMultiError, or nil if none found. +func (m *MediaInfoByPlatformResp) ValidateAll() error { + return m.validate(true) +} + +func (m *MediaInfoByPlatformResp) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + if all { + switch v := interface{}(m.GetInfo()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, MediaInfoByPlatformRespValidationError{ + field: "Info", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, MediaInfoByPlatformRespValidationError{ + field: "Info", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetInfo()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return MediaInfoByPlatformRespValidationError{ + field: "Info", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if len(errors) > 0 { + return MediaInfoByPlatformRespMultiError(errors) + } + + return nil +} + +// MediaInfoByPlatformRespMultiError is an error wrapping multiple validation +// errors returned by MediaInfoByPlatformResp.ValidateAll() if the designated +// constraints aren't met. +type MediaInfoByPlatformRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m MediaInfoByPlatformRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m MediaInfoByPlatformRespMultiError) AllErrors() []error { return m } + +// MediaInfoByPlatformRespValidationError is the validation error returned by +// MediaInfoByPlatformResp.Validate if the designated constraints aren't met. +type MediaInfoByPlatformRespValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e MediaInfoByPlatformRespValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e MediaInfoByPlatformRespValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e MediaInfoByPlatformRespValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e MediaInfoByPlatformRespValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e MediaInfoByPlatformRespValidationError) ErrorName() string { + return "MediaInfoByPlatformRespValidationError" +} + +// Error satisfies the builtin error interface +func (e MediaInfoByPlatformRespValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sMediaInfoByPlatformResp.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = MediaInfoByPlatformRespValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = MediaInfoByPlatformRespValidationError{} + // Validate checks the field values on WorkListReq with the rules defined in // the proto definition for this message. If any rules are violated, the first // error encountered is returned, or nil if there are no violations. diff --git a/api/cast/cast_triple.pb.go b/api/cast/cast_triple.pb.go index 97ea58e..f940436 100644 --- a/api/cast/cast_triple.pb.go +++ b/api/cast/cast_triple.pb.go @@ -36,6 +36,7 @@ type CastClient interface { UpdateWorkImage(ctx context.Context, in *UpdateWorkImageReq, opts ...grpc_go.CallOption) (*UpdateWorkImageResp, common.ErrorWithAttachment) UpdateWorkVideo(ctx context.Context, in *UpdateWorkVideoReq, opts ...grpc_go.CallOption) (*UpdateWorkVideoResp, common.ErrorWithAttachment) MediaInfo(ctx context.Context, in *MediaInfoReq, opts ...grpc_go.CallOption) (*MediaInfoResp, common.ErrorWithAttachment) + MediaInfoByPlatform(ctx context.Context, in *MediaInfoByPlatformReq, opts ...grpc_go.CallOption) (*MediaInfoByPlatformResp, common.ErrorWithAttachment) WorkList(ctx context.Context, in *WorkListReq, opts ...grpc_go.CallOption) (*WorkListResp, common.ErrorWithAttachment) WorkDetail(ctx context.Context, in *WorkDetailReq, opts ...grpc_go.CallOption) (*WorkDetailResp, common.ErrorWithAttachment) UpdateStatus(ctx context.Context, in *UpdateStatusReq, opts ...grpc_go.CallOption) (*emptypb.Empty, common.ErrorWithAttachment) @@ -114,6 +115,7 @@ type CastClientImpl struct { UpdateWorkImage func(ctx context.Context, in *UpdateWorkImageReq) (*UpdateWorkImageResp, error) UpdateWorkVideo func(ctx context.Context, in *UpdateWorkVideoReq) (*UpdateWorkVideoResp, error) MediaInfo func(ctx context.Context, in *MediaInfoReq) (*MediaInfoResp, error) + MediaInfoByPlatform func(ctx context.Context, in *MediaInfoByPlatformReq) (*MediaInfoByPlatformResp, error) WorkList func(ctx context.Context, in *WorkListReq) (*WorkListResp, error) WorkDetail func(ctx context.Context, in *WorkDetailReq) (*WorkDetailResp, error) UpdateStatus func(ctx context.Context, in *UpdateStatusReq) (*emptypb.Empty, error) @@ -224,6 +226,12 @@ func (c *castClient) MediaInfo(ctx context.Context, in *MediaInfoReq, opts ...gr return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/MediaInfo", in, out) } +func (c *castClient) MediaInfoByPlatform(ctx context.Context, in *MediaInfoByPlatformReq, opts ...grpc_go.CallOption) (*MediaInfoByPlatformResp, common.ErrorWithAttachment) { + out := new(MediaInfoByPlatformResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/MediaInfoByPlatform", in, out) +} + func (c *castClient) WorkList(ctx context.Context, in *WorkListReq, opts ...grpc_go.CallOption) (*WorkListResp, common.ErrorWithAttachment) { out := new(WorkListResp) interfaceKey := ctx.Value(constant.InterfaceKey).(string) @@ -559,6 +567,7 @@ type CastServer interface { UpdateWorkImage(context.Context, *UpdateWorkImageReq) (*UpdateWorkImageResp, error) UpdateWorkVideo(context.Context, *UpdateWorkVideoReq) (*UpdateWorkVideoResp, error) MediaInfo(context.Context, *MediaInfoReq) (*MediaInfoResp, error) + MediaInfoByPlatform(context.Context, *MediaInfoByPlatformReq) (*MediaInfoByPlatformResp, error) WorkList(context.Context, *WorkListReq) (*WorkListResp, error) WorkDetail(context.Context, *WorkDetailReq) (*WorkDetailResp, error) UpdateStatus(context.Context, *UpdateStatusReq) (*emptypb.Empty, error) @@ -652,6 +661,9 @@ func (UnimplementedCastServer) UpdateWorkVideo(context.Context, *UpdateWorkVideo func (UnimplementedCastServer) MediaInfo(context.Context, *MediaInfoReq) (*MediaInfoResp, error) { return nil, status.Errorf(codes.Unimplemented, "method MediaInfo not implemented") } +func (UnimplementedCastServer) MediaInfoByPlatform(context.Context, *MediaInfoByPlatformReq) (*MediaInfoByPlatformResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method MediaInfoByPlatform not implemented") +} func (UnimplementedCastServer) WorkList(context.Context, *WorkListReq) (*WorkListResp, error) { return nil, status.Errorf(codes.Unimplemented, "method WorkList not implemented") } @@ -1045,6 +1057,35 @@ func _Cast_MediaInfo_Handler(srv interface{}, ctx context.Context, dec func(inte return interceptor(ctx, in, info, handler) } +func _Cast_MediaInfoByPlatform_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(MediaInfoByPlatformReq) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("MediaInfoByPlatform", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + func _Cast_WorkList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { in := new(WorkListReq) if err := dec(in); err != nil { @@ -2646,6 +2687,10 @@ var Cast_ServiceDesc = grpc_go.ServiceDesc{ MethodName: "MediaInfo", Handler: _Cast_MediaInfo_Handler, }, + { + MethodName: "MediaInfoByPlatform", + Handler: _Cast_MediaInfoByPlatform_Handler, + }, { MethodName: "WorkList", Handler: _Cast_WorkList_Handler, diff --git a/pkg/service/cast/analysis.go b/pkg/service/cast/analysis.go index 5e362c1..4047ddd 100644 --- a/pkg/service/cast/analysis.go +++ b/pkg/service/cast/analysis.go @@ -789,13 +789,17 @@ func collectMediaMetricsForAyrshare(ctx context.Context, dateCN int) ([]*cast.Me } fmt.Printf("[%s] [INFO] 账号指标采集完成,共采集 %d 条\n", time.Now().Format("2006-01-02 15:04:05"), len(metricsList)) + fmt.Println("--------------------------------") + fmt.Println("账号的指标数据") fmt.Println("metricsList", metricsList) + fmt.Println("--------------------------------") return metricsList, nil } // parseSocialAnalyticsToMediaMetricsForAyrshare 解析社交分析数据并转换为媒体指标 func parseSocialAnalyticsToMediaMetricsForAyrshare(socialResp *aryshare.GetSocialAnalyticsResponse, artistInfo *cast.ArtistAyrShareInfo, dateCN int) []*cast.MediaMetricsDailyItem { items := make([]*cast.MediaMetricsDailyItem, 0) + ctx := context.Background() // 解析 Instagram 数据 if socialResp.Instagram != "" { @@ -808,6 +812,24 @@ func parseSocialAnalyticsToMediaMetricsForAyrshare(socialResp *aryshare.GetSocia item := parsePlatformDataForAyrshare(socialResp.Instagram, "instagram", artistInfo, dateCN) if item != nil { + // 获取 Instagram 平台的用户信息 + mediaInfoReq := &cast.MediaInfoByPlatformReq{ + ArtistUuid: artistInfo.ArtistUuid, + PlatformID: cast.PlatformIDENUM_INS, // Instagram 平台 ID 为 3 + } + mediaInfoResp, err := service.CastProvider.MediaInfoByPlatform(ctx, mediaInfoReq) + if err != nil { + zap.L().Warn("获取Instagram媒体账号信息失败", zap.Error(err), zap.String("artistUuid", artistInfo.ArtistUuid)) + fmt.Printf("[%s] [WARN] 获取Instagram媒体账号信息失败,artistUuid: %s, 错误: %v\n", time.Now().Format("2006-01-02 15:04:05"), artistInfo.ArtistUuid, err) + } else if mediaInfoResp != nil && mediaInfoResp.Info != nil { + // 填充媒体账号信息 + item.MediaName = mediaInfoResp.Info.PlatformUserName + item.ArtistName = mediaInfoResp.Info.ArtistName + item.ArtistPhone = mediaInfoResp.Info.ArtistPhone + item.MediaAccUserID = mediaInfoResp.Info.MediaAccountUuid + fmt.Printf("[%s] [INFO] 成功获取Instagram账号信息,账号名: %s\n", time.Now().Format("2006-01-02 15:04:05"), item.MediaName) + } + items = append(items, item) fmt.Printf("[%s] [INFO] 解析 Instagram 账号指标成功,艺人: %s\n", time.Now().Format("2006-01-02 15:04:05"), artistInfo.ArtistUuid) } @@ -824,6 +846,24 @@ func parseSocialAnalyticsToMediaMetricsForAyrshare(socialResp *aryshare.GetSocia item := parsePlatformDataForAyrshare(socialResp.Tiktok, "tiktok", artistInfo, dateCN) if item != nil { + // 获取 TikTok 平台的用户信息 + mediaInfoReq := &cast.MediaInfoByPlatformReq{ + ArtistUuid: artistInfo.ArtistUuid, + PlatformID: cast.PlatformIDENUM_TIKTOK, // TikTok 平台 ID 为 1 + } + mediaInfoResp, err := service.CastProvider.MediaInfoByPlatform(ctx, mediaInfoReq) + if err != nil { + zap.L().Warn("获取TikTok媒体账号信息失败", zap.Error(err), zap.String("artistUuid", artistInfo.ArtistUuid)) + fmt.Printf("[%s] [WARN] 获取TikTok媒体账号信息失败,artistUuid: %s, 错误: %v\n", time.Now().Format("2006-01-02 15:04:05"), artistInfo.ArtistUuid, err) + } else if mediaInfoResp != nil && mediaInfoResp.Info != nil { + // 填充媒体账号信息 + item.MediaName = mediaInfoResp.Info.PlatformUserName + item.ArtistName = mediaInfoResp.Info.ArtistName + item.ArtistPhone = mediaInfoResp.Info.ArtistPhone + item.MediaAccUserID = mediaInfoResp.Info.MediaAccountUuid + fmt.Printf("[%s] [INFO] 成功获取TikTok账号信息,账号名: %s\n", time.Now().Format("2006-01-02 15:04:05"), item.MediaName) + } + items = append(items, item) fmt.Printf("[%s] [INFO] 解析 TikTok 账号指标成功,艺人: %s\n", time.Now().Format("2006-01-02 15:04:05"), artistInfo.ArtistUuid) } From 505412e7778e87a6068c9afbb9f3d80dda54b7ae Mon Sep 17 00:00:00 2001 From: bx1834938347-prog Date: Thu, 18 Dec 2025 11:25:00 +0800 Subject: [PATCH 3/9] =?UTF-8?q?feat=EF=BC=9A=E6=96=B0=E5=A2=9E=E5=AE=9A?= =?UTF-8?q?=E6=97=B6=E4=BB=BB=E5=8A=A1=E8=B0=83=E5=BA=A6=E5=8F=91=E5=B8=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/cron/cron.pb.go | 1802 +++++++++++++++++++++++++++++++++ api/cron/cron.validator.pb.go | 129 +++ api/cron/cron_triple.pb.go | 417 ++++++++ conf/dubbogo.yaml | 83 +- docs/dev/dubbogo.yaml | 3 + docs/prod/dubbogo.yaml | 3 + docs/test/dubbogo.yaml | 3 + pkg/router/cron.go | 23 + pkg/router/router.go | 1 + pkg/service/cron/cron.go | 135 +++ pkg/service/init.go | 3 + 11 files changed, 2592 insertions(+), 10 deletions(-) create mode 100644 api/cron/cron.pb.go create mode 100644 api/cron/cron.validator.pb.go create mode 100644 api/cron/cron_triple.pb.go create mode 100644 pkg/router/cron.go create mode 100644 pkg/service/cron/cron.go diff --git a/api/cron/cron.pb.go b/api/cron/cron.pb.go new file mode 100644 index 0000000..b92be90 --- /dev/null +++ b/api/cron/cron.pb.go @@ -0,0 +1,1802 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.10 +// protoc v6.32.0 +// source: pb/cron.proto + +package cron + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type CommonIDRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CommonIDRequest) Reset() { + *x = CommonIDRequest{} + mi := &file_pb_cron_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CommonIDRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommonIDRequest) ProtoMessage() {} + +func (x *CommonIDRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_cron_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommonIDRequest.ProtoReflect.Descriptor instead. +func (*CommonIDRequest) Descriptor() ([]byte, []int) { + return file_pb_cron_proto_rawDescGZIP(), []int{0} +} + +func (x *CommonIDRequest) GetId() uint32 { + if x != nil { + return x.Id + } + return 0 +} + +type CommonResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Code int32 `protobuf:"varint,1,opt,name=code,proto3" json:"code"` + Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CommonResponse) Reset() { + *x = CommonResponse{} + mi := &file_pb_cron_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CommonResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommonResponse) ProtoMessage() {} + +func (x *CommonResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_cron_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommonResponse.ProtoReflect.Descriptor instead. +func (*CommonResponse) Descriptor() ([]byte, []int) { + return file_pb_cron_proto_rawDescGZIP(), []int{1} +} + +func (x *CommonResponse) GetCode() int32 { + if x != nil { + return x.Code + } + return 0 +} + +func (x *CommonResponse) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +// 定时任务 +type ScheduleTask struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id"` + TaskTitle string `protobuf:"bytes,2,opt,name=task_title,json=taskTitle,proto3" json:"task_title"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description"` + PeriodType int32 `protobuf:"varint,4,opt,name=period_type,json=periodType,proto3" json:"period_type"` + CronExpression string `protobuf:"bytes,5,opt,name=cron_expression,json=cronExpression,proto3" json:"cron_expression"` + Weekdays []int32 `protobuf:"varint,6,rep,packed,name=weekdays,proto3" json:"weekdays"` + CustomDays []string `protobuf:"bytes,7,rep,name=custom_days,json=customDays,proto3" json:"custom_days"` + StartDate string `protobuf:"bytes,8,opt,name=start_date,json=startDate,proto3" json:"start_date"` + ExecuteStartTime string `protobuf:"bytes,9,opt,name=execute_start_time,json=executeStartTime,proto3" json:"execute_start_time"` + ExecuteEndTime string `protobuf:"bytes,10,opt,name=execute_end_time,json=executeEndTime,proto3" json:"execute_end_time"` + LastRunTime string `protobuf:"bytes,11,opt,name=last_run_time,json=lastRunTime,proto3" json:"last_run_time"` + NextRunTime string `protobuf:"bytes,12,opt,name=next_run_time,json=nextRunTime,proto3" json:"next_run_time"` + Status int32 `protobuf:"varint,13,opt,name=status,proto3" json:"status"` + Remark string `protobuf:"bytes,15,opt,name=remark,proto3" json:"remark"` + CreatedAt string `protobuf:"bytes,16,opt,name=created_at,json=createdAt,proto3" json:"created_at"` + UpdatedAt string `protobuf:"bytes,17,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at"` + TaskDetail *TaskDetail `protobuf:"bytes,18,opt,name=task_detail,json=taskDetail,proto3" json:"task_detail"` + ExecutionRecords []*ExecutionRecord `protobuf:"bytes,19,rep,name=execution_records,json=executionRecords,proto3" json:"execution_records"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ScheduleTask) Reset() { + *x = ScheduleTask{} + mi := &file_pb_cron_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ScheduleTask) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ScheduleTask) ProtoMessage() {} + +func (x *ScheduleTask) ProtoReflect() protoreflect.Message { + mi := &file_pb_cron_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ScheduleTask.ProtoReflect.Descriptor instead. +func (*ScheduleTask) Descriptor() ([]byte, []int) { + return file_pb_cron_proto_rawDescGZIP(), []int{2} +} + +func (x *ScheduleTask) GetId() uint32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *ScheduleTask) GetTaskTitle() string { + if x != nil { + return x.TaskTitle + } + return "" +} + +func (x *ScheduleTask) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *ScheduleTask) GetPeriodType() int32 { + if x != nil { + return x.PeriodType + } + return 0 +} + +func (x *ScheduleTask) GetCronExpression() string { + if x != nil { + return x.CronExpression + } + return "" +} + +func (x *ScheduleTask) GetWeekdays() []int32 { + if x != nil { + return x.Weekdays + } + return nil +} + +func (x *ScheduleTask) GetCustomDays() []string { + if x != nil { + return x.CustomDays + } + return nil +} + +func (x *ScheduleTask) GetStartDate() string { + if x != nil { + return x.StartDate + } + return "" +} + +func (x *ScheduleTask) GetExecuteStartTime() string { + if x != nil { + return x.ExecuteStartTime + } + return "" +} + +func (x *ScheduleTask) GetExecuteEndTime() string { + if x != nil { + return x.ExecuteEndTime + } + return "" +} + +func (x *ScheduleTask) GetLastRunTime() string { + if x != nil { + return x.LastRunTime + } + return "" +} + +func (x *ScheduleTask) GetNextRunTime() string { + if x != nil { + return x.NextRunTime + } + return "" +} + +func (x *ScheduleTask) GetStatus() int32 { + if x != nil { + return x.Status + } + return 0 +} + +func (x *ScheduleTask) GetRemark() string { + if x != nil { + return x.Remark + } + return "" +} + +func (x *ScheduleTask) GetCreatedAt() string { + if x != nil { + return x.CreatedAt + } + return "" +} + +func (x *ScheduleTask) GetUpdatedAt() string { + if x != nil { + return x.UpdatedAt + } + return "" +} + +func (x *ScheduleTask) GetTaskDetail() *TaskDetail { + if x != nil { + return x.TaskDetail + } + return nil +} + +func (x *ScheduleTask) GetExecutionRecords() []*ExecutionRecord { + if x != nil { + return x.ExecutionRecords + } + return nil +} + +// 执行记录 +type ExecutionRecord struct { + state protoimpl.MessageState `protogen:"open.v1"` + TaskId int32 `protobuf:"varint,1,opt,name=task_id,json=taskId,proto3" json:"task_id"` // 任务ID + ExecutionDate string `protobuf:"bytes,2,opt,name=execution_date,json=executionDate,proto3" json:"execution_date"` // 执行日期 + StartTime string `protobuf:"bytes,3,opt,name=start_time,json=startTime,proto3" json:"start_time"` // 开始时间 + EndTime string `protobuf:"bytes,4,opt,name=end_time,json=endTime,proto3" json:"end_time"` // 结束时间 + Duration int32 `protobuf:"varint,5,opt,name=duration,proto3" json:"duration"` // 执行时长(秒) + Status int32 `protobuf:"varint,6,opt,name=status,proto3" json:"status"` // 执行状态:1(进行中),2(已完成) + Result int32 `protobuf:"varint,7,opt,name=result,proto3" json:"result"` // 执行结果:1(成功),2(失败),3(部分成功) + TotalArtists int32 `protobuf:"varint,8,opt,name=total_artists,json=totalArtists,proto3" json:"total_artists"` // 艺人总数 + SuccessCount int32 `protobuf:"varint,9,opt,name=success_count,json=successCount,proto3" json:"success_count"` // 成功数量 + FailedCount int32 `protobuf:"varint,10,opt,name=failed_count,json=failedCount,proto3" json:"failed_count"` // 失败数量 + SkippedCount int32 `protobuf:"varint,11,opt,name=skipped_count,json=skippedCount,proto3" json:"skipped_count"` // 跳过数量 + Artists string `protobuf:"bytes,12,opt,name=artists,proto3" json:"artists"` // 艺人列表(JSON 格式) + ExecutionResults []*ExecutionResult `protobuf:"bytes,13,rep,name=execution_results,json=executionResults,proto3" json:"execution_results"` + TaskTitle string `protobuf:"bytes,14,opt,name=task_title,json=taskTitle,proto3" json:"task_title"` //任务标题 + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExecutionRecord) Reset() { + *x = ExecutionRecord{} + mi := &file_pb_cron_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExecutionRecord) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExecutionRecord) ProtoMessage() {} + +func (x *ExecutionRecord) ProtoReflect() protoreflect.Message { + mi := &file_pb_cron_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExecutionRecord.ProtoReflect.Descriptor instead. +func (*ExecutionRecord) Descriptor() ([]byte, []int) { + return file_pb_cron_proto_rawDescGZIP(), []int{3} +} + +func (x *ExecutionRecord) GetTaskId() int32 { + if x != nil { + return x.TaskId + } + return 0 +} + +func (x *ExecutionRecord) GetExecutionDate() string { + if x != nil { + return x.ExecutionDate + } + return "" +} + +func (x *ExecutionRecord) GetStartTime() string { + if x != nil { + return x.StartTime + } + return "" +} + +func (x *ExecutionRecord) GetEndTime() string { + if x != nil { + return x.EndTime + } + return "" +} + +func (x *ExecutionRecord) GetDuration() int32 { + if x != nil { + return x.Duration + } + return 0 +} + +func (x *ExecutionRecord) GetStatus() int32 { + if x != nil { + return x.Status + } + return 0 +} + +func (x *ExecutionRecord) GetResult() int32 { + if x != nil { + return x.Result + } + return 0 +} + +func (x *ExecutionRecord) GetTotalArtists() int32 { + if x != nil { + return x.TotalArtists + } + return 0 +} + +func (x *ExecutionRecord) GetSuccessCount() int32 { + if x != nil { + return x.SuccessCount + } + return 0 +} + +func (x *ExecutionRecord) GetFailedCount() int32 { + if x != nil { + return x.FailedCount + } + return 0 +} + +func (x *ExecutionRecord) GetSkippedCount() int32 { + if x != nil { + return x.SkippedCount + } + return 0 +} + +func (x *ExecutionRecord) GetArtists() string { + if x != nil { + return x.Artists + } + return "" +} + +func (x *ExecutionRecord) GetExecutionResults() []*ExecutionResult { + if x != nil { + return x.ExecutionResults + } + return nil +} + +func (x *ExecutionRecord) GetTaskTitle() string { + if x != nil { + return x.TaskTitle + } + return "" +} + +// 执行结果 +type ExecutionResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + ExecutionId int32 `protobuf:"varint,1,opt,name=execution_id,json=executionId,proto3" json:"execution_id"` // 执行记录ID + TaskId int32 `protobuf:"varint,2,opt,name=task_id,json=taskId,proto3" json:"task_id"` // 任务ID + WorkUuid string `protobuf:"bytes,3,opt,name=work_uuid,json=workUuid,proto3" json:"work_uuid"` // 任务UUID + ArtistId int32 `protobuf:"varint,4,opt,name=artist_id,json=artistId,proto3" json:"artist_id"` // 艺人ID + ArtistName string `protobuf:"bytes,5,opt,name=artist_name,json=artistName,proto3" json:"artist_name"` // 艺人名称 + TaskTitle string `protobuf:"bytes,6,opt,name=task_title,json=taskTitle,proto3" json:"task_title"` // 任务标题 + StartTime string `protobuf:"bytes,7,opt,name=start_time,json=startTime,proto3" json:"start_time"` // 开始时间 + EndTime string `protobuf:"bytes,8,opt,name=end_time,json=endTime,proto3" json:"end_time"` // 结束时间 + Duration int32 `protobuf:"varint,9,opt,name=duration,proto3" json:"duration"` // 执行时长(秒) + Status int32 `protobuf:"varint,10,opt,name=status,proto3" json:"status"` // 执行状态:1(处理中),2(已完成) + Result int32 `protobuf:"varint,11,opt,name=result,proto3" json:"result"` // 执行结果:1(成功),2(失败) + ResultDesc string `protobuf:"bytes,12,opt,name=result_desc,json=resultDesc,proto3" json:"result_desc"` // 结果描述 + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExecutionResult) Reset() { + *x = ExecutionResult{} + mi := &file_pb_cron_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExecutionResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExecutionResult) ProtoMessage() {} + +func (x *ExecutionResult) ProtoReflect() protoreflect.Message { + mi := &file_pb_cron_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExecutionResult.ProtoReflect.Descriptor instead. +func (*ExecutionResult) Descriptor() ([]byte, []int) { + return file_pb_cron_proto_rawDescGZIP(), []int{4} +} + +func (x *ExecutionResult) GetExecutionId() int32 { + if x != nil { + return x.ExecutionId + } + return 0 +} + +func (x *ExecutionResult) GetTaskId() int32 { + if x != nil { + return x.TaskId + } + return 0 +} + +func (x *ExecutionResult) GetWorkUuid() string { + if x != nil { + return x.WorkUuid + } + return "" +} + +func (x *ExecutionResult) GetArtistId() int32 { + if x != nil { + return x.ArtistId + } + return 0 +} + +func (x *ExecutionResult) GetArtistName() string { + if x != nil { + return x.ArtistName + } + return "" +} + +func (x *ExecutionResult) GetTaskTitle() string { + if x != nil { + return x.TaskTitle + } + return "" +} + +func (x *ExecutionResult) GetStartTime() string { + if x != nil { + return x.StartTime + } + return "" +} + +func (x *ExecutionResult) GetEndTime() string { + if x != nil { + return x.EndTime + } + return "" +} + +func (x *ExecutionResult) GetDuration() int32 { + if x != nil { + return x.Duration + } + return 0 +} + +func (x *ExecutionResult) GetStatus() int32 { + if x != nil { + return x.Status + } + return 0 +} + +func (x *ExecutionResult) GetResult() int32 { + if x != nil { + return x.Result + } + return 0 +} + +func (x *ExecutionResult) GetResultDesc() string { + if x != nil { + return x.ResultDesc + } + return "" +} + +// 任务详情 +type TaskDetail struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id"` + TaskId uint32 `protobuf:"varint,2,opt,name=task_id,json=taskId,proto3" json:"task_id"` + ArtistCount int32 `protobuf:"varint,3,opt,name=artist_count,json=artistCount,proto3" json:"artist_count"` + Artists []*ArtistInfo `protobuf:"bytes,4,rep,name=artists,proto3" json:"artists"` + Num int32 `protobuf:"varint,5,opt,name=num,proto3" json:"num"` + CreatedAt string `protobuf:"bytes,6,opt,name=created_at,json=createdAt,proto3" json:"created_at"` + UpdatedAt string `protobuf:"bytes,7,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TaskDetail) Reset() { + *x = TaskDetail{} + mi := &file_pb_cron_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TaskDetail) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TaskDetail) ProtoMessage() {} + +func (x *TaskDetail) ProtoReflect() protoreflect.Message { + mi := &file_pb_cron_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TaskDetail.ProtoReflect.Descriptor instead. +func (*TaskDetail) Descriptor() ([]byte, []int) { + return file_pb_cron_proto_rawDescGZIP(), []int{5} +} + +func (x *TaskDetail) GetId() uint32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *TaskDetail) GetTaskId() uint32 { + if x != nil { + return x.TaskId + } + return 0 +} + +func (x *TaskDetail) GetArtistCount() int32 { + if x != nil { + return x.ArtistCount + } + return 0 +} + +func (x *TaskDetail) GetArtists() []*ArtistInfo { + if x != nil { + return x.Artists + } + return nil +} + +func (x *TaskDetail) GetNum() int32 { + if x != nil { + return x.Num + } + return 0 +} + +func (x *TaskDetail) GetCreatedAt() string { + if x != nil { + return x.CreatedAt + } + return "" +} + +func (x *TaskDetail) GetUpdatedAt() string { + if x != nil { + return x.UpdatedAt + } + return "" +} + +type ArtistInfo struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ArtistInfo) Reset() { + *x = ArtistInfo{} + mi := &file_pb_cron_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ArtistInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ArtistInfo) ProtoMessage() {} + +func (x *ArtistInfo) ProtoReflect() protoreflect.Message { + mi := &file_pb_cron_proto_msgTypes[6] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ArtistInfo.ProtoReflect.Descriptor instead. +func (*ArtistInfo) Descriptor() ([]byte, []int) { + return file_pb_cron_proto_rawDescGZIP(), []int{6} +} + +func (x *ArtistInfo) GetId() uint32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *ArtistInfo) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// 创建定时任务请求 +type CreateScheduleTaskRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + TaskTitle string `protobuf:"bytes,1,opt,name=task_title,json=taskTitle,proto3" json:"task_title"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description"` + PeriodType int32 `protobuf:"varint,3,opt,name=period_type,json=periodType,proto3" json:"period_type"` + Weekdays []int32 `protobuf:"varint,4,rep,packed,name=weekdays,proto3" json:"weekdays"` + CustomDays []string `protobuf:"bytes,5,rep,name=custom_days,json=customDays,proto3" json:"custom_days"` + StartDate string `protobuf:"bytes,6,opt,name=start_date,json=startDate,proto3" json:"start_date"` + ExecuteStartTime string `protobuf:"bytes,7,opt,name=execute_start_time,json=executeStartTime,proto3" json:"execute_start_time"` + ExecuteEndTime string `protobuf:"bytes,8,opt,name=execute_end_time,json=executeEndTime,proto3" json:"execute_end_time"` + Remark string `protobuf:"bytes,10,opt,name=remark,proto3" json:"remark"` + TaskDetail *TaskDetailRequest `protobuf:"bytes,11,opt,name=task_detail,json=taskDetail,proto3" json:"task_detail"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateScheduleTaskRequest) Reset() { + *x = CreateScheduleTaskRequest{} + mi := &file_pb_cron_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateScheduleTaskRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateScheduleTaskRequest) ProtoMessage() {} + +func (x *CreateScheduleTaskRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_cron_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateScheduleTaskRequest.ProtoReflect.Descriptor instead. +func (*CreateScheduleTaskRequest) Descriptor() ([]byte, []int) { + return file_pb_cron_proto_rawDescGZIP(), []int{7} +} + +func (x *CreateScheduleTaskRequest) GetTaskTitle() string { + if x != nil { + return x.TaskTitle + } + return "" +} + +func (x *CreateScheduleTaskRequest) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *CreateScheduleTaskRequest) GetPeriodType() int32 { + if x != nil { + return x.PeriodType + } + return 0 +} + +func (x *CreateScheduleTaskRequest) GetWeekdays() []int32 { + if x != nil { + return x.Weekdays + } + return nil +} + +func (x *CreateScheduleTaskRequest) GetCustomDays() []string { + if x != nil { + return x.CustomDays + } + return nil +} + +func (x *CreateScheduleTaskRequest) GetStartDate() string { + if x != nil { + return x.StartDate + } + return "" +} + +func (x *CreateScheduleTaskRequest) GetExecuteStartTime() string { + if x != nil { + return x.ExecuteStartTime + } + return "" +} + +func (x *CreateScheduleTaskRequest) GetExecuteEndTime() string { + if x != nil { + return x.ExecuteEndTime + } + return "" +} + +func (x *CreateScheduleTaskRequest) GetRemark() string { + if x != nil { + return x.Remark + } + return "" +} + +func (x *CreateScheduleTaskRequest) GetTaskDetail() *TaskDetailRequest { + if x != nil { + return x.TaskDetail + } + return nil +} + +// 任务详情请求 +type TaskDetailRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + ArtistCount int32 `protobuf:"varint,1,opt,name=artist_count,json=artistCount,proto3" json:"artist_count"` + Artists []*ArtistInfo `protobuf:"bytes,2,rep,name=artists,proto3" json:"artists"` + Num int32 `protobuf:"varint,3,opt,name=num,proto3" json:"num"` + ContentType int32 `protobuf:"varint,4,opt,name=content_type,json=contentType,proto3" json:"content_type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TaskDetailRequest) Reset() { + *x = TaskDetailRequest{} + mi := &file_pb_cron_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TaskDetailRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TaskDetailRequest) ProtoMessage() {} + +func (x *TaskDetailRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_cron_proto_msgTypes[8] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TaskDetailRequest.ProtoReflect.Descriptor instead. +func (*TaskDetailRequest) Descriptor() ([]byte, []int) { + return file_pb_cron_proto_rawDescGZIP(), []int{8} +} + +func (x *TaskDetailRequest) GetArtistCount() int32 { + if x != nil { + return x.ArtistCount + } + return 0 +} + +func (x *TaskDetailRequest) GetArtists() []*ArtistInfo { + if x != nil { + return x.Artists + } + return nil +} + +func (x *TaskDetailRequest) GetNum() int32 { + if x != nil { + return x.Num + } + return 0 +} + +func (x *TaskDetailRequest) GetContentType() int32 { + if x != nil { + return x.ContentType + } + return 0 +} + +type CreateScheduleTaskResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Code int32 `protobuf:"varint,1,opt,name=code,proto3" json:"code"` + Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message"` + Data *ScheduleTask `protobuf:"bytes,3,opt,name=data,proto3" json:"data"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateScheduleTaskResponse) Reset() { + *x = CreateScheduleTaskResponse{} + mi := &file_pb_cron_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateScheduleTaskResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateScheduleTaskResponse) ProtoMessage() {} + +func (x *CreateScheduleTaskResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_cron_proto_msgTypes[9] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateScheduleTaskResponse.ProtoReflect.Descriptor instead. +func (*CreateScheduleTaskResponse) Descriptor() ([]byte, []int) { + return file_pb_cron_proto_rawDescGZIP(), []int{9} +} + +func (x *CreateScheduleTaskResponse) GetCode() int32 { + if x != nil { + return x.Code + } + return 0 +} + +func (x *CreateScheduleTaskResponse) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +func (x *CreateScheduleTaskResponse) GetData() *ScheduleTask { + if x != nil { + return x.Data + } + return nil +} + +type GetListScheduleTaskRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Page int32 `protobuf:"varint,1,opt,name=page,proto3" json:"page"` + PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size"` + TaskTitle string `protobuf:"bytes,3,opt,name=task_title,json=taskTitle,proto3" json:"task_title"` //任务标题 + PeriodType string `protobuf:"bytes,4,opt,name=period_type,json=periodType,proto3" json:"period_type"` //任务类型 + StartTime string `protobuf:"bytes,5,opt,name=start_time,json=startTime,proto3" json:"start_time"` //开始日期 + EndTime string `protobuf:"bytes,6,opt,name=end_time,json=endTime,proto3" json:"end_time"` //结束日期 + Status int32 `protobuf:"varint,7,opt,name=Status,proto3" json:"Status"` // 状态 + ContentType int32 `protobuf:"varint,8,opt,name=content_type,json=contentType,proto3" json:"content_type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetListScheduleTaskRequest) Reset() { + *x = GetListScheduleTaskRequest{} + mi := &file_pb_cron_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetListScheduleTaskRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetListScheduleTaskRequest) ProtoMessage() {} + +func (x *GetListScheduleTaskRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_cron_proto_msgTypes[10] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetListScheduleTaskRequest.ProtoReflect.Descriptor instead. +func (*GetListScheduleTaskRequest) Descriptor() ([]byte, []int) { + return file_pb_cron_proto_rawDescGZIP(), []int{10} +} + +func (x *GetListScheduleTaskRequest) GetPage() int32 { + if x != nil { + return x.Page + } + return 0 +} + +func (x *GetListScheduleTaskRequest) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *GetListScheduleTaskRequest) GetTaskTitle() string { + if x != nil { + return x.TaskTitle + } + return "" +} + +func (x *GetListScheduleTaskRequest) GetPeriodType() string { + if x != nil { + return x.PeriodType + } + return "" +} + +func (x *GetListScheduleTaskRequest) GetStartTime() string { + if x != nil { + return x.StartTime + } + return "" +} + +func (x *GetListScheduleTaskRequest) GetEndTime() string { + if x != nil { + return x.EndTime + } + return "" +} + +func (x *GetListScheduleTaskRequest) GetStatus() int32 { + if x != nil { + return x.Status + } + return 0 +} + +func (x *GetListScheduleTaskRequest) GetContentType() int32 { + if x != nil { + return x.ContentType + } + return 0 +} + +type GetListScheduleTaskResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Code int32 `protobuf:"varint,1,opt,name=code,proto3" json:"code"` + Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message"` + Total int64 `protobuf:"varint,3,opt,name=total,proto3" json:"total"` + Page int32 `protobuf:"varint,4,opt,name=page,proto3" json:"page"` + Size int32 `protobuf:"varint,5,opt,name=size,proto3" json:"size"` + Data []*ScheduleTask `protobuf:"bytes,6,rep,name=data,proto3" json:"data"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetListScheduleTaskResponse) Reset() { + *x = GetListScheduleTaskResponse{} + mi := &file_pb_cron_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetListScheduleTaskResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetListScheduleTaskResponse) ProtoMessage() {} + +func (x *GetListScheduleTaskResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_cron_proto_msgTypes[11] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetListScheduleTaskResponse.ProtoReflect.Descriptor instead. +func (*GetListScheduleTaskResponse) Descriptor() ([]byte, []int) { + return file_pb_cron_proto_rawDescGZIP(), []int{11} +} + +func (x *GetListScheduleTaskResponse) GetCode() int32 { + if x != nil { + return x.Code + } + return 0 +} + +func (x *GetListScheduleTaskResponse) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +func (x *GetListScheduleTaskResponse) GetTotal() int64 { + if x != nil { + return x.Total + } + return 0 +} + +func (x *GetListScheduleTaskResponse) GetPage() int32 { + if x != nil { + return x.Page + } + return 0 +} + +func (x *GetListScheduleTaskResponse) GetSize() int32 { + if x != nil { + return x.Size + } + return 0 +} + +func (x *GetListScheduleTaskResponse) GetData() []*ScheduleTask { + if x != nil { + return x.Data + } + return nil +} + +type GetListExecutionRecordRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Page int32 `protobuf:"varint,1,opt,name=page,proto3" json:"page"` // 页码 + PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size"` // 每页显示的记录数 + TaskTitle string `protobuf:"bytes,3,opt,name=task_title,json=taskTitle,proto3" json:"task_title"` // 任务标题 + PeriodType string `protobuf:"bytes,4,opt,name=period_type,json=periodType,proto3" json:"period_type"` // 执行周期类型 + StartTime string `protobuf:"bytes,5,opt,name=start_time,json=startTime,proto3" json:"start_time"` // 起始时间 + EndTime string `protobuf:"bytes,6,opt,name=end_time,json=endTime,proto3" json:"end_time"` // 结束时间 + Status int32 `protobuf:"varint,7,opt,name=status,proto3" json:"status"` //状态 + Result int32 `protobuf:"varint,8,opt,name=result,proto3" json:"result"` //结果 + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetListExecutionRecordRequest) Reset() { + *x = GetListExecutionRecordRequest{} + mi := &file_pb_cron_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetListExecutionRecordRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetListExecutionRecordRequest) ProtoMessage() {} + +func (x *GetListExecutionRecordRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_cron_proto_msgTypes[12] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetListExecutionRecordRequest.ProtoReflect.Descriptor instead. +func (*GetListExecutionRecordRequest) Descriptor() ([]byte, []int) { + return file_pb_cron_proto_rawDescGZIP(), []int{12} +} + +func (x *GetListExecutionRecordRequest) GetPage() int32 { + if x != nil { + return x.Page + } + return 0 +} + +func (x *GetListExecutionRecordRequest) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *GetListExecutionRecordRequest) GetTaskTitle() string { + if x != nil { + return x.TaskTitle + } + return "" +} + +func (x *GetListExecutionRecordRequest) GetPeriodType() string { + if x != nil { + return x.PeriodType + } + return "" +} + +func (x *GetListExecutionRecordRequest) GetStartTime() string { + if x != nil { + return x.StartTime + } + return "" +} + +func (x *GetListExecutionRecordRequest) GetEndTime() string { + if x != nil { + return x.EndTime + } + return "" +} + +func (x *GetListExecutionRecordRequest) GetStatus() int32 { + if x != nil { + return x.Status + } + return 0 +} + +func (x *GetListExecutionRecordRequest) GetResult() int32 { + if x != nil { + return x.Result + } + return 0 +} + +type GetListExecutionRecordResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Code int32 `protobuf:"varint,1,opt,name=code,proto3" json:"code"` // 响应代码 + Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message"` // 响应消息 + Total int64 `protobuf:"varint,3,opt,name=total,proto3" json:"total"` // 总记录数 + Page int32 `protobuf:"varint,4,opt,name=page,proto3" json:"page"` // 当前页码 + Size int32 `protobuf:"varint,5,opt,name=size,proto3" json:"size"` // 当前页的记录数 + Data []*ExecutionRecord `protobuf:"bytes,6,rep,name=data,proto3" json:"data"` // 执行记录数据 + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetListExecutionRecordResponse) Reset() { + *x = GetListExecutionRecordResponse{} + mi := &file_pb_cron_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetListExecutionRecordResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetListExecutionRecordResponse) ProtoMessage() {} + +func (x *GetListExecutionRecordResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_cron_proto_msgTypes[13] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetListExecutionRecordResponse.ProtoReflect.Descriptor instead. +func (*GetListExecutionRecordResponse) Descriptor() ([]byte, []int) { + return file_pb_cron_proto_rawDescGZIP(), []int{13} +} + +func (x *GetListExecutionRecordResponse) GetCode() int32 { + if x != nil { + return x.Code + } + return 0 +} + +func (x *GetListExecutionRecordResponse) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +func (x *GetListExecutionRecordResponse) GetTotal() int64 { + if x != nil { + return x.Total + } + return 0 +} + +func (x *GetListExecutionRecordResponse) GetPage() int32 { + if x != nil { + return x.Page + } + return 0 +} + +func (x *GetListExecutionRecordResponse) GetSize() int32 { + if x != nil { + return x.Size + } + return 0 +} + +func (x *GetListExecutionRecordResponse) GetData() []*ExecutionRecord { + if x != nil { + return x.Data + } + return nil +} + +// 请求:获取执行结果列表的请求参数 +type GetListExecutionResultRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Page int32 `protobuf:"varint,1,opt,name=page,proto3" json:"page"` // 页码 + PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size"` // 每页显示的记录数 + TaskTitle string `protobuf:"bytes,3,opt,name=task_title,json=taskTitle,proto3" json:"task_title"` // 任务标题 + ArtistName string `protobuf:"bytes,4,opt,name=artist_name,json=artistName,proto3" json:"artist_name"` // 艺人名称 + StartTime string `protobuf:"bytes,5,opt,name=start_time,json=startTime,proto3" json:"start_time"` // 起始时间 + EndTime string `protobuf:"bytes,6,opt,name=end_time,json=endTime,proto3" json:"end_time"` // 结束时间 + Status int32 `protobuf:"varint,7,opt,name=status,proto3" json:"status"` // 执行状态:1(处理中),2(已完成) + Result int32 `protobuf:"varint,8,opt,name=result,proto3" json:"result"` // 执行结果:1(成功),2(失败) + ExecutionId int64 `protobuf:"varint,9,opt,name=execution_id,json=executionId,proto3" json:"execution_id"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetListExecutionResultRequest) Reset() { + *x = GetListExecutionResultRequest{} + mi := &file_pb_cron_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetListExecutionResultRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetListExecutionResultRequest) ProtoMessage() {} + +func (x *GetListExecutionResultRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_cron_proto_msgTypes[14] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetListExecutionResultRequest.ProtoReflect.Descriptor instead. +func (*GetListExecutionResultRequest) Descriptor() ([]byte, []int) { + return file_pb_cron_proto_rawDescGZIP(), []int{14} +} + +func (x *GetListExecutionResultRequest) GetPage() int32 { + if x != nil { + return x.Page + } + return 0 +} + +func (x *GetListExecutionResultRequest) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *GetListExecutionResultRequest) GetTaskTitle() string { + if x != nil { + return x.TaskTitle + } + return "" +} + +func (x *GetListExecutionResultRequest) GetArtistName() string { + if x != nil { + return x.ArtistName + } + return "" +} + +func (x *GetListExecutionResultRequest) GetStartTime() string { + if x != nil { + return x.StartTime + } + return "" +} + +func (x *GetListExecutionResultRequest) GetEndTime() string { + if x != nil { + return x.EndTime + } + return "" +} + +func (x *GetListExecutionResultRequest) GetStatus() int32 { + if x != nil { + return x.Status + } + return 0 +} + +func (x *GetListExecutionResultRequest) GetResult() int32 { + if x != nil { + return x.Result + } + return 0 +} + +func (x *GetListExecutionResultRequest) GetExecutionId() int64 { + if x != nil { + return x.ExecutionId + } + return 0 +} + +// 响应:执行结果列表的响应 +type GetListExecutionResultResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Code int32 `protobuf:"varint,1,opt,name=code,proto3" json:"code"` // 响应代码 + Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message"` // 响应消息 + Total int64 `protobuf:"varint,3,opt,name=total,proto3" json:"total"` // 总记录数 + Page int32 `protobuf:"varint,4,opt,name=page,proto3" json:"page"` // 当前页码 + Size int32 `protobuf:"varint,5,opt,name=size,proto3" json:"size"` // 当前页的记录数 + Data []*ExecutionResult `protobuf:"bytes,6,rep,name=data,proto3" json:"data"` // 执行结果列表 + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetListExecutionResultResponse) Reset() { + *x = GetListExecutionResultResponse{} + mi := &file_pb_cron_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetListExecutionResultResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetListExecutionResultResponse) ProtoMessage() {} + +func (x *GetListExecutionResultResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_cron_proto_msgTypes[15] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetListExecutionResultResponse.ProtoReflect.Descriptor instead. +func (*GetListExecutionResultResponse) Descriptor() ([]byte, []int) { + return file_pb_cron_proto_rawDescGZIP(), []int{15} +} + +func (x *GetListExecutionResultResponse) GetCode() int32 { + if x != nil { + return x.Code + } + return 0 +} + +func (x *GetListExecutionResultResponse) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +func (x *GetListExecutionResultResponse) GetTotal() int64 { + if x != nil { + return x.Total + } + return 0 +} + +func (x *GetListExecutionResultResponse) GetPage() int32 { + if x != nil { + return x.Page + } + return 0 +} + +func (x *GetListExecutionResultResponse) GetSize() int32 { + if x != nil { + return x.Size + } + return 0 +} + +func (x *GetListExecutionResultResponse) GetData() []*ExecutionResult { + if x != nil { + return x.Data + } + return nil +} + +var File_pb_cron_proto protoreflect.FileDescriptor + +const file_pb_cron_proto_rawDesc = "" + + "\n" + + "\rpb/cron.proto\x12\x04cron\"!\n" + + "\x0fCommonIDRequest\x12\x0e\n" + + "\x02id\x18\x01 \x01(\rR\x02id\">\n" + + "\x0eCommonResponse\x12\x12\n" + + "\x04code\x18\x01 \x01(\x05R\x04code\x12\x18\n" + + "\amessage\x18\x02 \x01(\tR\amessage\"\x8a\x05\n" + + "\fScheduleTask\x12\x0e\n" + + "\x02id\x18\x01 \x01(\rR\x02id\x12\x1d\n" + + "\n" + + "task_title\x18\x02 \x01(\tR\ttaskTitle\x12 \n" + + "\vdescription\x18\x03 \x01(\tR\vdescription\x12\x1f\n" + + "\vperiod_type\x18\x04 \x01(\x05R\n" + + "periodType\x12'\n" + + "\x0fcron_expression\x18\x05 \x01(\tR\x0ecronExpression\x12\x1a\n" + + "\bweekdays\x18\x06 \x03(\x05R\bweekdays\x12\x1f\n" + + "\vcustom_days\x18\a \x03(\tR\n" + + "customDays\x12\x1d\n" + + "\n" + + "start_date\x18\b \x01(\tR\tstartDate\x12,\n" + + "\x12execute_start_time\x18\t \x01(\tR\x10executeStartTime\x12(\n" + + "\x10execute_end_time\x18\n" + + " \x01(\tR\x0eexecuteEndTime\x12\"\n" + + "\rlast_run_time\x18\v \x01(\tR\vlastRunTime\x12\"\n" + + "\rnext_run_time\x18\f \x01(\tR\vnextRunTime\x12\x16\n" + + "\x06status\x18\r \x01(\x05R\x06status\x12\x16\n" + + "\x06remark\x18\x0f \x01(\tR\x06remark\x12\x1d\n" + + "\n" + + "created_at\x18\x10 \x01(\tR\tcreatedAt\x12\x1d\n" + + "\n" + + "updated_at\x18\x11 \x01(\tR\tupdatedAt\x121\n" + + "\vtask_detail\x18\x12 \x01(\v2\x10.cron.TaskDetailR\n" + + "taskDetail\x12B\n" + + "\x11execution_records\x18\x13 \x03(\v2\x15.cron.ExecutionRecordR\x10executionRecords\"\xe6\x03\n" + + "\x0fExecutionRecord\x12\x17\n" + + "\atask_id\x18\x01 \x01(\x05R\x06taskId\x12%\n" + + "\x0eexecution_date\x18\x02 \x01(\tR\rexecutionDate\x12\x1d\n" + + "\n" + + "start_time\x18\x03 \x01(\tR\tstartTime\x12\x19\n" + + "\bend_time\x18\x04 \x01(\tR\aendTime\x12\x1a\n" + + "\bduration\x18\x05 \x01(\x05R\bduration\x12\x16\n" + + "\x06status\x18\x06 \x01(\x05R\x06status\x12\x16\n" + + "\x06result\x18\a \x01(\x05R\x06result\x12#\n" + + "\rtotal_artists\x18\b \x01(\x05R\ftotalArtists\x12#\n" + + "\rsuccess_count\x18\t \x01(\x05R\fsuccessCount\x12!\n" + + "\ffailed_count\x18\n" + + " \x01(\x05R\vfailedCount\x12#\n" + + "\rskipped_count\x18\v \x01(\x05R\fskippedCount\x12\x18\n" + + "\aartists\x18\f \x01(\tR\aartists\x12B\n" + + "\x11execution_results\x18\r \x03(\v2\x15.cron.ExecutionResultR\x10executionResults\x12\x1d\n" + + "\n" + + "task_title\x18\x0e \x01(\tR\ttaskTitle\"\xee\x02\n" + + "\x0fExecutionResult\x12!\n" + + "\fexecution_id\x18\x01 \x01(\x05R\vexecutionId\x12\x17\n" + + "\atask_id\x18\x02 \x01(\x05R\x06taskId\x12\x1b\n" + + "\twork_uuid\x18\x03 \x01(\tR\bworkUuid\x12\x1b\n" + + "\tartist_id\x18\x04 \x01(\x05R\bartistId\x12\x1f\n" + + "\vartist_name\x18\x05 \x01(\tR\n" + + "artistName\x12\x1d\n" + + "\n" + + "task_title\x18\x06 \x01(\tR\ttaskTitle\x12\x1d\n" + + "\n" + + "start_time\x18\a \x01(\tR\tstartTime\x12\x19\n" + + "\bend_time\x18\b \x01(\tR\aendTime\x12\x1a\n" + + "\bduration\x18\t \x01(\x05R\bduration\x12\x16\n" + + "\x06status\x18\n" + + " \x01(\x05R\x06status\x12\x16\n" + + "\x06result\x18\v \x01(\x05R\x06result\x12\x1f\n" + + "\vresult_desc\x18\f \x01(\tR\n" + + "resultDesc\"\xd4\x01\n" + + "\n" + + "TaskDetail\x12\x0e\n" + + "\x02id\x18\x01 \x01(\rR\x02id\x12\x17\n" + + "\atask_id\x18\x02 \x01(\rR\x06taskId\x12!\n" + + "\fartist_count\x18\x03 \x01(\x05R\vartistCount\x12*\n" + + "\aartists\x18\x04 \x03(\v2\x10.cron.ArtistInfoR\aartists\x12\x10\n" + + "\x03num\x18\x05 \x01(\x05R\x03num\x12\x1d\n" + + "\n" + + "created_at\x18\x06 \x01(\tR\tcreatedAt\x12\x1d\n" + + "\n" + + "updated_at\x18\a \x01(\tR\tupdatedAt\"0\n" + + "\n" + + "ArtistInfo\x12\x0e\n" + + "\x02id\x18\x01 \x01(\rR\x02id\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\"\x83\x03\n" + + "\x19CreateScheduleTaskRequest\x12\x1d\n" + + "\n" + + "task_title\x18\x01 \x01(\tR\ttaskTitle\x12 \n" + + "\vdescription\x18\x02 \x01(\tR\vdescription\x12\x1f\n" + + "\vperiod_type\x18\x03 \x01(\x05R\n" + + "periodType\x12\x1a\n" + + "\bweekdays\x18\x04 \x03(\x05R\bweekdays\x12\x1f\n" + + "\vcustom_days\x18\x05 \x03(\tR\n" + + "customDays\x12\x1d\n" + + "\n" + + "start_date\x18\x06 \x01(\tR\tstartDate\x12,\n" + + "\x12execute_start_time\x18\a \x01(\tR\x10executeStartTime\x12(\n" + + "\x10execute_end_time\x18\b \x01(\tR\x0eexecuteEndTime\x12\x16\n" + + "\x06remark\x18\n" + + " \x01(\tR\x06remark\x128\n" + + "\vtask_detail\x18\v \x01(\v2\x17.cron.TaskDetailRequestR\n" + + "taskDetail\"\x97\x01\n" + + "\x11TaskDetailRequest\x12!\n" + + "\fartist_count\x18\x01 \x01(\x05R\vartistCount\x12*\n" + + "\aartists\x18\x02 \x03(\v2\x10.cron.ArtistInfoR\aartists\x12\x10\n" + + "\x03num\x18\x03 \x01(\x05R\x03num\x12!\n" + + "\fcontent_type\x18\x04 \x01(\x05R\vcontentType\"r\n" + + "\x1aCreateScheduleTaskResponse\x12\x12\n" + + "\x04code\x18\x01 \x01(\x05R\x04code\x12\x18\n" + + "\amessage\x18\x02 \x01(\tR\amessage\x12&\n" + + "\x04data\x18\x03 \x01(\v2\x12.cron.ScheduleTaskR\x04data\"\x82\x02\n" + + "\x1aGetListScheduleTaskRequest\x12\x12\n" + + "\x04page\x18\x01 \x01(\x05R\x04page\x12\x1b\n" + + "\tpage_size\x18\x02 \x01(\x05R\bpageSize\x12\x1d\n" + + "\n" + + "task_title\x18\x03 \x01(\tR\ttaskTitle\x12\x1f\n" + + "\vperiod_type\x18\x04 \x01(\tR\n" + + "periodType\x12\x1d\n" + + "\n" + + "start_time\x18\x05 \x01(\tR\tstartTime\x12\x19\n" + + "\bend_time\x18\x06 \x01(\tR\aendTime\x12\x16\n" + + "\x06Status\x18\a \x01(\x05R\x06Status\x12!\n" + + "\fcontent_type\x18\b \x01(\x05R\vcontentType\"\xb1\x01\n" + + "\x1bGetListScheduleTaskResponse\x12\x12\n" + + "\x04code\x18\x01 \x01(\x05R\x04code\x12\x18\n" + + "\amessage\x18\x02 \x01(\tR\amessage\x12\x14\n" + + "\x05total\x18\x03 \x01(\x03R\x05total\x12\x12\n" + + "\x04page\x18\x04 \x01(\x05R\x04page\x12\x12\n" + + "\x04size\x18\x05 \x01(\x05R\x04size\x12&\n" + + "\x04data\x18\x06 \x03(\v2\x12.cron.ScheduleTaskR\x04data\"\xfa\x01\n" + + "\x1dGetListExecutionRecordRequest\x12\x12\n" + + "\x04page\x18\x01 \x01(\x05R\x04page\x12\x1b\n" + + "\tpage_size\x18\x02 \x01(\x05R\bpageSize\x12\x1d\n" + + "\n" + + "task_title\x18\x03 \x01(\tR\ttaskTitle\x12\x1f\n" + + "\vperiod_type\x18\x04 \x01(\tR\n" + + "periodType\x12\x1d\n" + + "\n" + + "start_time\x18\x05 \x01(\tR\tstartTime\x12\x19\n" + + "\bend_time\x18\x06 \x01(\tR\aendTime\x12\x16\n" + + "\x06status\x18\a \x01(\x05R\x06status\x12\x16\n" + + "\x06result\x18\b \x01(\x05R\x06result\"\xb7\x01\n" + + "\x1eGetListExecutionRecordResponse\x12\x12\n" + + "\x04code\x18\x01 \x01(\x05R\x04code\x12\x18\n" + + "\amessage\x18\x02 \x01(\tR\amessage\x12\x14\n" + + "\x05total\x18\x03 \x01(\x03R\x05total\x12\x12\n" + + "\x04page\x18\x04 \x01(\x05R\x04page\x12\x12\n" + + "\x04size\x18\x05 \x01(\x05R\x04size\x12)\n" + + "\x04data\x18\x06 \x03(\v2\x15.cron.ExecutionRecordR\x04data\"\x9d\x02\n" + + "\x1dGetListExecutionResultRequest\x12\x12\n" + + "\x04page\x18\x01 \x01(\x05R\x04page\x12\x1b\n" + + "\tpage_size\x18\x02 \x01(\x05R\bpageSize\x12\x1d\n" + + "\n" + + "task_title\x18\x03 \x01(\tR\ttaskTitle\x12\x1f\n" + + "\vartist_name\x18\x04 \x01(\tR\n" + + "artistName\x12\x1d\n" + + "\n" + + "start_time\x18\x05 \x01(\tR\tstartTime\x12\x19\n" + + "\bend_time\x18\x06 \x01(\tR\aendTime\x12\x16\n" + + "\x06status\x18\a \x01(\x05R\x06status\x12\x16\n" + + "\x06result\x18\b \x01(\x05R\x06result\x12!\n" + + "\fexecution_id\x18\t \x01(\x03R\vexecutionId\"\xb7\x01\n" + + "\x1eGetListExecutionResultResponse\x12\x12\n" + + "\x04code\x18\x01 \x01(\x05R\x04code\x12\x18\n" + + "\amessage\x18\x02 \x01(\tR\amessage\x12\x14\n" + + "\x05total\x18\x03 \x01(\x03R\x05total\x12\x12\n" + + "\x04page\x18\x04 \x01(\x05R\x04page\x12\x12\n" + + "\x04size\x18\x05 \x01(\x05R\x04size\x12)\n" + + "\x04data\x18\x06 \x03(\v2\x15.cron.ExecutionResultR\x04data2\xda\x04\n" + + "\x04Cron\x12Y\n" + + "\x12CreateScheduleTask\x12\x1f.cron.CreateScheduleTaskRequest\x1a .cron.CreateScheduleTaskResponse\"\x00\x12\\\n" + + "\x13GetListScheduleTask\x12 .cron.GetListScheduleTaskRequest\x1a!.cron.GetListScheduleTaskResponse\"\x00\x12e\n" + + "\x16GetListExecutionRecord\x12#.cron.GetListExecutionRecordRequest\x1a$.cron.GetListExecutionRecordResponse\"\x00\x12e\n" + + "\x16GetListExecutionResult\x12#.cron.GetListExecutionResultRequest\x1a$.cron.GetListExecutionResultResponse\"\x00\x12B\n" + + "\x11PauseScheduleTask\x12\x15.cron.CommonIDRequest\x1a\x14.cron.CommonResponse\"\x00\x12B\n" + + "\x11StartScheduleTask\x12\x15.cron.CommonIDRequest\x1a\x14.cron.CommonResponse\"\x00\x12C\n" + + "\x12DeleteScheduleTask\x12\x15.cron.CommonIDRequest\x1a\x14.cron.CommonResponse\"\x00B\bZ\x06./cronb\x06proto3" + +var ( + file_pb_cron_proto_rawDescOnce sync.Once + file_pb_cron_proto_rawDescData []byte +) + +func file_pb_cron_proto_rawDescGZIP() []byte { + file_pb_cron_proto_rawDescOnce.Do(func() { + file_pb_cron_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_pb_cron_proto_rawDesc), len(file_pb_cron_proto_rawDesc))) + }) + return file_pb_cron_proto_rawDescData +} + +var file_pb_cron_proto_msgTypes = make([]protoimpl.MessageInfo, 16) +var file_pb_cron_proto_goTypes = []any{ + (*CommonIDRequest)(nil), // 0: cron.CommonIDRequest + (*CommonResponse)(nil), // 1: cron.CommonResponse + (*ScheduleTask)(nil), // 2: cron.ScheduleTask + (*ExecutionRecord)(nil), // 3: cron.ExecutionRecord + (*ExecutionResult)(nil), // 4: cron.ExecutionResult + (*TaskDetail)(nil), // 5: cron.TaskDetail + (*ArtistInfo)(nil), // 6: cron.ArtistInfo + (*CreateScheduleTaskRequest)(nil), // 7: cron.CreateScheduleTaskRequest + (*TaskDetailRequest)(nil), // 8: cron.TaskDetailRequest + (*CreateScheduleTaskResponse)(nil), // 9: cron.CreateScheduleTaskResponse + (*GetListScheduleTaskRequest)(nil), // 10: cron.GetListScheduleTaskRequest + (*GetListScheduleTaskResponse)(nil), // 11: cron.GetListScheduleTaskResponse + (*GetListExecutionRecordRequest)(nil), // 12: cron.GetListExecutionRecordRequest + (*GetListExecutionRecordResponse)(nil), // 13: cron.GetListExecutionRecordResponse + (*GetListExecutionResultRequest)(nil), // 14: cron.GetListExecutionResultRequest + (*GetListExecutionResultResponse)(nil), // 15: cron.GetListExecutionResultResponse +} +var file_pb_cron_proto_depIdxs = []int32{ + 5, // 0: cron.ScheduleTask.task_detail:type_name -> cron.TaskDetail + 3, // 1: cron.ScheduleTask.execution_records:type_name -> cron.ExecutionRecord + 4, // 2: cron.ExecutionRecord.execution_results:type_name -> cron.ExecutionResult + 6, // 3: cron.TaskDetail.artists:type_name -> cron.ArtistInfo + 8, // 4: cron.CreateScheduleTaskRequest.task_detail:type_name -> cron.TaskDetailRequest + 6, // 5: cron.TaskDetailRequest.artists:type_name -> cron.ArtistInfo + 2, // 6: cron.CreateScheduleTaskResponse.data:type_name -> cron.ScheduleTask + 2, // 7: cron.GetListScheduleTaskResponse.data:type_name -> cron.ScheduleTask + 3, // 8: cron.GetListExecutionRecordResponse.data:type_name -> cron.ExecutionRecord + 4, // 9: cron.GetListExecutionResultResponse.data:type_name -> cron.ExecutionResult + 7, // 10: cron.Cron.CreateScheduleTask:input_type -> cron.CreateScheduleTaskRequest + 10, // 11: cron.Cron.GetListScheduleTask:input_type -> cron.GetListScheduleTaskRequest + 12, // 12: cron.Cron.GetListExecutionRecord:input_type -> cron.GetListExecutionRecordRequest + 14, // 13: cron.Cron.GetListExecutionResult:input_type -> cron.GetListExecutionResultRequest + 0, // 14: cron.Cron.PauseScheduleTask:input_type -> cron.CommonIDRequest + 0, // 15: cron.Cron.StartScheduleTask:input_type -> cron.CommonIDRequest + 0, // 16: cron.Cron.DeleteScheduleTask:input_type -> cron.CommonIDRequest + 9, // 17: cron.Cron.CreateScheduleTask:output_type -> cron.CreateScheduleTaskResponse + 11, // 18: cron.Cron.GetListScheduleTask:output_type -> cron.GetListScheduleTaskResponse + 13, // 19: cron.Cron.GetListExecutionRecord:output_type -> cron.GetListExecutionRecordResponse + 15, // 20: cron.Cron.GetListExecutionResult:output_type -> cron.GetListExecutionResultResponse + 1, // 21: cron.Cron.PauseScheduleTask:output_type -> cron.CommonResponse + 1, // 22: cron.Cron.StartScheduleTask:output_type -> cron.CommonResponse + 1, // 23: cron.Cron.DeleteScheduleTask:output_type -> cron.CommonResponse + 17, // [17:24] is the sub-list for method output_type + 10, // [10:17] is the sub-list for method input_type + 10, // [10:10] is the sub-list for extension type_name + 10, // [10:10] is the sub-list for extension extendee + 0, // [0:10] is the sub-list for field type_name +} + +func init() { file_pb_cron_proto_init() } +func file_pb_cron_proto_init() { + if File_pb_cron_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_pb_cron_proto_rawDesc), len(file_pb_cron_proto_rawDesc)), + NumEnums: 0, + NumMessages: 16, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_pb_cron_proto_goTypes, + DependencyIndexes: file_pb_cron_proto_depIdxs, + MessageInfos: file_pb_cron_proto_msgTypes, + }.Build() + File_pb_cron_proto = out.File + file_pb_cron_proto_goTypes = nil + file_pb_cron_proto_depIdxs = nil +} diff --git a/api/cron/cron.validator.pb.go b/api/cron/cron.validator.pb.go new file mode 100644 index 0000000..1ee4b41 --- /dev/null +++ b/api/cron/cron.validator.pb.go @@ -0,0 +1,129 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: pb/cron.proto + +package cron + +import ( + fmt "fmt" + math "math" + proto "github.com/golang/protobuf/proto" + github_com_mwitkow_go_proto_validators "github.com/mwitkow/go-proto-validators" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +func (this *CommonIDRequest) Validate() error { + return nil +} +func (this *CommonResponse) Validate() error { + return nil +} +func (this *ScheduleTask) Validate() error { + if this.TaskDetail != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.TaskDetail); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("TaskDetail", err) + } + } + for _, item := range this.ExecutionRecords { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("ExecutionRecords", err) + } + } + } + return nil +} +func (this *ExecutionRecord) Validate() error { + for _, item := range this.ExecutionResults { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("ExecutionResults", err) + } + } + } + return nil +} +func (this *ExecutionResult) Validate() error { + return nil +} +func (this *TaskDetail) Validate() error { + for _, item := range this.Artists { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Artists", err) + } + } + } + return nil +} +func (this *ArtistInfo) Validate() error { + return nil +} +func (this *CreateScheduleTaskRequest) Validate() error { + if this.TaskDetail != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.TaskDetail); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("TaskDetail", err) + } + } + return nil +} +func (this *TaskDetailRequest) Validate() error { + for _, item := range this.Artists { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Artists", err) + } + } + } + return nil +} +func (this *CreateScheduleTaskResponse) Validate() error { + if this.Data != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Data); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Data", err) + } + } + return nil +} +func (this *GetListScheduleTaskRequest) Validate() error { + return nil +} +func (this *GetListScheduleTaskResponse) Validate() error { + for _, item := range this.Data { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Data", err) + } + } + } + return nil +} +func (this *GetListExecutionRecordRequest) Validate() error { + return nil +} +func (this *GetListExecutionRecordResponse) Validate() error { + for _, item := range this.Data { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Data", err) + } + } + } + return nil +} +func (this *GetListExecutionResultRequest) Validate() error { + return nil +} +func (this *GetListExecutionResultResponse) Validate() error { + for _, item := range this.Data { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Data", err) + } + } + } + return nil +} diff --git a/api/cron/cron_triple.pb.go b/api/cron/cron_triple.pb.go new file mode 100644 index 0000000..4f95091 --- /dev/null +++ b/api/cron/cron_triple.pb.go @@ -0,0 +1,417 @@ +// Code generated by protoc-gen-go-triple. DO NOT EDIT. +// versions: +// - protoc-gen-go-triple v1.0.5 +// - protoc v6.32.0 +// source: pb/cron.proto + +package cron + +import ( + context "context" + protocol "dubbo.apache.org/dubbo-go/v3/protocol" + dubbo3 "dubbo.apache.org/dubbo-go/v3/protocol/dubbo3" + invocation "dubbo.apache.org/dubbo-go/v3/protocol/invocation" + grpc_go "github.com/dubbogo/grpc-go" + codes "github.com/dubbogo/grpc-go/codes" + metadata "github.com/dubbogo/grpc-go/metadata" + status "github.com/dubbogo/grpc-go/status" + common "github.com/dubbogo/triple/pkg/common" + constant "github.com/dubbogo/triple/pkg/common/constant" + triple "github.com/dubbogo/triple/pkg/triple" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc_go.SupportPackageIsVersion7 + +// CronClient is the client API for Cron service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type CronClient interface { + CreateScheduleTask(ctx context.Context, in *CreateScheduleTaskRequest, opts ...grpc_go.CallOption) (*CreateScheduleTaskResponse, common.ErrorWithAttachment) + GetListScheduleTask(ctx context.Context, in *GetListScheduleTaskRequest, opts ...grpc_go.CallOption) (*GetListScheduleTaskResponse, common.ErrorWithAttachment) + GetListExecutionRecord(ctx context.Context, in *GetListExecutionRecordRequest, opts ...grpc_go.CallOption) (*GetListExecutionRecordResponse, common.ErrorWithAttachment) + GetListExecutionResult(ctx context.Context, in *GetListExecutionResultRequest, opts ...grpc_go.CallOption) (*GetListExecutionResultResponse, common.ErrorWithAttachment) + PauseScheduleTask(ctx context.Context, in *CommonIDRequest, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment) + StartScheduleTask(ctx context.Context, in *CommonIDRequest, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment) + DeleteScheduleTask(ctx context.Context, in *CommonIDRequest, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment) +} + +type cronClient struct { + cc *triple.TripleConn +} + +type CronClientImpl struct { + CreateScheduleTask func(ctx context.Context, in *CreateScheduleTaskRequest) (*CreateScheduleTaskResponse, error) + GetListScheduleTask func(ctx context.Context, in *GetListScheduleTaskRequest) (*GetListScheduleTaskResponse, error) + GetListExecutionRecord func(ctx context.Context, in *GetListExecutionRecordRequest) (*GetListExecutionRecordResponse, error) + GetListExecutionResult func(ctx context.Context, in *GetListExecutionResultRequest) (*GetListExecutionResultResponse, error) + PauseScheduleTask func(ctx context.Context, in *CommonIDRequest) (*CommonResponse, error) + StartScheduleTask func(ctx context.Context, in *CommonIDRequest) (*CommonResponse, error) + DeleteScheduleTask func(ctx context.Context, in *CommonIDRequest) (*CommonResponse, error) +} + +func (c *CronClientImpl) GetDubboStub(cc *triple.TripleConn) CronClient { + return NewCronClient(cc) +} + +func (c *CronClientImpl) XXX_InterfaceName() string { + return "cron.Cron" +} + +func NewCronClient(cc *triple.TripleConn) CronClient { + return &cronClient{cc} +} + +func (c *cronClient) CreateScheduleTask(ctx context.Context, in *CreateScheduleTaskRequest, opts ...grpc_go.CallOption) (*CreateScheduleTaskResponse, common.ErrorWithAttachment) { + out := new(CreateScheduleTaskResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/CreateScheduleTask", in, out) +} + +func (c *cronClient) GetListScheduleTask(ctx context.Context, in *GetListScheduleTaskRequest, opts ...grpc_go.CallOption) (*GetListScheduleTaskResponse, common.ErrorWithAttachment) { + out := new(GetListScheduleTaskResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetListScheduleTask", in, out) +} + +func (c *cronClient) GetListExecutionRecord(ctx context.Context, in *GetListExecutionRecordRequest, opts ...grpc_go.CallOption) (*GetListExecutionRecordResponse, common.ErrorWithAttachment) { + out := new(GetListExecutionRecordResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetListExecutionRecord", in, out) +} + +func (c *cronClient) GetListExecutionResult(ctx context.Context, in *GetListExecutionResultRequest, opts ...grpc_go.CallOption) (*GetListExecutionResultResponse, common.ErrorWithAttachment) { + out := new(GetListExecutionResultResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetListExecutionResult", in, out) +} + +func (c *cronClient) PauseScheduleTask(ctx context.Context, in *CommonIDRequest, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment) { + out := new(CommonResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/PauseScheduleTask", in, out) +} + +func (c *cronClient) StartScheduleTask(ctx context.Context, in *CommonIDRequest, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment) { + out := new(CommonResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/StartScheduleTask", in, out) +} + +func (c *cronClient) DeleteScheduleTask(ctx context.Context, in *CommonIDRequest, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment) { + out := new(CommonResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/DeleteScheduleTask", in, out) +} + +// CronServer is the server API for Cron service. +// All implementations must embed UnimplementedCronServer +// for forward compatibility +type CronServer interface { + CreateScheduleTask(context.Context, *CreateScheduleTaskRequest) (*CreateScheduleTaskResponse, error) + GetListScheduleTask(context.Context, *GetListScheduleTaskRequest) (*GetListScheduleTaskResponse, error) + GetListExecutionRecord(context.Context, *GetListExecutionRecordRequest) (*GetListExecutionRecordResponse, error) + GetListExecutionResult(context.Context, *GetListExecutionResultRequest) (*GetListExecutionResultResponse, error) + PauseScheduleTask(context.Context, *CommonIDRequest) (*CommonResponse, error) + StartScheduleTask(context.Context, *CommonIDRequest) (*CommonResponse, error) + DeleteScheduleTask(context.Context, *CommonIDRequest) (*CommonResponse, error) + mustEmbedUnimplementedCronServer() +} + +// UnimplementedCronServer must be embedded to have forward compatible implementations. +type UnimplementedCronServer struct { + proxyImpl protocol.Invoker +} + +func (UnimplementedCronServer) CreateScheduleTask(context.Context, *CreateScheduleTaskRequest) (*CreateScheduleTaskResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateScheduleTask not implemented") +} +func (UnimplementedCronServer) GetListScheduleTask(context.Context, *GetListScheduleTaskRequest) (*GetListScheduleTaskResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetListScheduleTask not implemented") +} +func (UnimplementedCronServer) GetListExecutionRecord(context.Context, *GetListExecutionRecordRequest) (*GetListExecutionRecordResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetListExecutionRecord not implemented") +} +func (UnimplementedCronServer) GetListExecutionResult(context.Context, *GetListExecutionResultRequest) (*GetListExecutionResultResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetListExecutionResult not implemented") +} +func (UnimplementedCronServer) PauseScheduleTask(context.Context, *CommonIDRequest) (*CommonResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method PauseScheduleTask not implemented") +} +func (UnimplementedCronServer) StartScheduleTask(context.Context, *CommonIDRequest) (*CommonResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method StartScheduleTask not implemented") +} +func (UnimplementedCronServer) DeleteScheduleTask(context.Context, *CommonIDRequest) (*CommonResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteScheduleTask not implemented") +} +func (s *UnimplementedCronServer) XXX_SetProxyImpl(impl protocol.Invoker) { + s.proxyImpl = impl +} + +func (s *UnimplementedCronServer) XXX_GetProxyImpl() protocol.Invoker { + return s.proxyImpl +} + +func (s *UnimplementedCronServer) XXX_ServiceDesc() *grpc_go.ServiceDesc { + return &Cron_ServiceDesc +} +func (s *UnimplementedCronServer) XXX_InterfaceName() string { + return "cron.Cron" +} + +func (UnimplementedCronServer) mustEmbedUnimplementedCronServer() {} + +// UnsafeCronServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to CronServer will +// result in compilation errors. +type UnsafeCronServer interface { + mustEmbedUnimplementedCronServer() +} + +func RegisterCronServer(s grpc_go.ServiceRegistrar, srv CronServer) { + s.RegisterService(&Cron_ServiceDesc, srv) +} + +func _Cron_CreateScheduleTask_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateScheduleTaskRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("CreateScheduleTask", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Cron_GetListScheduleTask_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(GetListScheduleTaskRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("GetListScheduleTask", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Cron_GetListExecutionRecord_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(GetListExecutionRecordRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("GetListExecutionRecord", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Cron_GetListExecutionResult_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(GetListExecutionResultRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("GetListExecutionResult", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Cron_PauseScheduleTask_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(CommonIDRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("PauseScheduleTask", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Cron_StartScheduleTask_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(CommonIDRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("StartScheduleTask", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Cron_DeleteScheduleTask_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(CommonIDRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("DeleteScheduleTask", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +// Cron_ServiceDesc is the grpc_go.ServiceDesc for Cron service. +// It's only intended for direct use with grpc_go.RegisterService, +// and not to be introspected or modified (even as a copy) +var Cron_ServiceDesc = grpc_go.ServiceDesc{ + ServiceName: "cron.Cron", + HandlerType: (*CronServer)(nil), + Methods: []grpc_go.MethodDesc{ + { + MethodName: "CreateScheduleTask", + Handler: _Cron_CreateScheduleTask_Handler, + }, + { + MethodName: "GetListScheduleTask", + Handler: _Cron_GetListScheduleTask_Handler, + }, + { + MethodName: "GetListExecutionRecord", + Handler: _Cron_GetListExecutionRecord_Handler, + }, + { + MethodName: "GetListExecutionResult", + Handler: _Cron_GetListExecutionResult_Handler, + }, + { + MethodName: "PauseScheduleTask", + Handler: _Cron_PauseScheduleTask_Handler, + }, + { + MethodName: "StartScheduleTask", + Handler: _Cron_StartScheduleTask_Handler, + }, + { + MethodName: "DeleteScheduleTask", + Handler: _Cron_DeleteScheduleTask_Handler, + }, + }, + Streams: []grpc_go.StreamDesc{}, + Metadata: "pb/cron.proto", +} diff --git a/conf/dubbogo.yaml b/conf/dubbogo.yaml index 48c9d1c..54d8a1f 100644 --- a/conf/dubbogo.yaml +++ b/conf/dubbogo.yaml @@ -2,10 +2,27 @@ dubbo: registries: demoZK: protocol: zookeeper - timeout: 5s + timeout: 3s + # address: 121.229.45.214:9004 address: 127.0.0.1:2181 + # address: 127.0.0.1:2181 + # address: 114.218.158.24:2181 consumer: + filter: tracing + request-timeout: 300s references: + OrderClientImpl: + protocol: tri + retries: 0 + interface: com.fontree.microservices.common.order # must be compatible with grpc or dubbo-java + # filter: cshutdown,sign,fonDomainFilter,fonValidateFilter + params: + .accessKeyId: "SYD8-order-04" + .secretAccessKey: "Al-order-FDF112" + BundleClientImpl: + protocol: tri + retries: 0 + interface: com.fontree.microservices.fiee.bundle # must be compatible with grpc or dubbo-java AccountClientImpl: protocol: tri retries: 0 @@ -14,19 +31,65 @@ dubbo: params: .accessKeyId: "Accountksl" .secretAccessKey: "BSDY-FDF1-Fontree_account" - AccountFieeClientImpl: protocol: tri - retries: 0 + retries: 3 interface: com.fontree.microservices.common.micro.account.fiee -# filter: cshutdown,sign,fonDomainFilter,fonValidateFilter -# params: -# .accessKeyId: "Accountksl" -# .secretAccessKey: "BSDY-FDF1-Fontree_account" - BundleClientImpl: + # filter: echo,metrics,token,accesslog,sign,tps,generic_service,execute,pshutdown,auth,fonValidateFilter + PaymentCentClientImpl: protocol: tri retries: 0 - interface: com.fontree.microservices.fiee.bundle # must be compatible with grpc or dubbo-java + interface: com.fontree.microservices.common.payment.cent # must be compatible with grpc or dubbo-java CastClientImpl: protocol: tri - interface: com.fontree.microservices.fiee.multicast \ No newline at end of file + interface: com.fontree.microservices.fiee.multicast + SecFilingsClientImpl: + protocol: tri + retries: 0 + interface: com.fontree.microservices.fiee.SecFiling + AyrshareClientImpl: + protocol: tri + interface: com.fontree.microservices.fiee.ayrshare + FieeCronClientImpl: + protocol: tri + interface: com.fontree.microservices.fiee.cron + logger: + zap-config: + level: error # 日志级别 + development: false + disableCaller: false + disableStacktrace: false + encoding: "json" + # zap encoder 配置 + encoderConfig: + messageKey: "message" + levelKey: "level" + timeKey: "time" + nameKey: "logger" + callerKey: "caller" + stacktraceKey: "stacktrace" + lineEnding: "" + levelEncoder: "capitalColor" + timeEncoder: "iso8601" + durationEncoder: "seconds" + callerEncoder: "short" + nameEncoder: "" + EncodeTime: zapcore.TimeEncoderOfLayout("2006-01-02 15:04:05.000"), + EncodeDuration: zapcore.SecondsDurationEncoder, + outputPaths: + - "stderr" + errorOutputPaths: + - "stderr" + lumberjack-config: + # 写日志的文件名称 + filename: "runtime/logs/fiee.log" + # 每个日志文件长度的最大大小,单位是 MiB。默认 100MiB + maxSize: 5 + # 日志保留的最大天数(只保留最近多少天的日志) + maxAge: 30 + # 只保留最近多少个日志文件,用于控制程序总日志的大小 + maxBackups: 30 + # 是否使用本地时间,默认使用 UTC 时间 + localTime: true + # 是否压缩日志文件,压缩方法 gzip + compress: false diff --git a/docs/dev/dubbogo.yaml b/docs/dev/dubbogo.yaml index b3d50fa..2447e66 100644 --- a/docs/dev/dubbogo.yaml +++ b/docs/dev/dubbogo.yaml @@ -50,6 +50,9 @@ dubbo: AyrshareClientImpl: protocol: tri interface: com.fontree.microservices.fiee.ayrshare + FieeCronClientImpl: + protocol: tri + interface: com.fontree.microservices.fiee.cron logger: zap-config: level: error # 日志级别 diff --git a/docs/prod/dubbogo.yaml b/docs/prod/dubbogo.yaml index 1944e79..fbf2f9c 100644 --- a/docs/prod/dubbogo.yaml +++ b/docs/prod/dubbogo.yaml @@ -52,6 +52,9 @@ dubbo: AyrshareClientImpl: protocol: tri interface: com.fontree.microservices.fiee.ayrshare + FieeCronClientImpl: + protocol: tri + interface: com.fontree.microservices.fiee.cron logger: zap-config: level: error # 日志级别 diff --git a/docs/test/dubbogo.yaml b/docs/test/dubbogo.yaml index a7a46c6..2bb38a6 100644 --- a/docs/test/dubbogo.yaml +++ b/docs/test/dubbogo.yaml @@ -50,6 +50,9 @@ dubbo: AyrshareClientImpl: protocol: tri interface: com.fontree.microservices.fiee.ayrshare + FieeCronClientImpl: + protocol: tri + interface: com.fontree.microservices.fiee.cron logger: zap-config: level: error # 日志级别 diff --git a/pkg/router/cron.go b/pkg/router/cron.go new file mode 100644 index 0000000..4452858 --- /dev/null +++ b/pkg/router/cron.go @@ -0,0 +1,23 @@ +package router + +import ( + cronService "fonchain-fiee/pkg/service/cron" + + "github.com/gin-gonic/gin" +) + +func cronRouter(r *gin.RouterGroup) { + auth := r.Group("") + //auth.Use(middleware.CheckWebLogin(service.AccountProvider)) + cron := auth.Group("cron") + { + cron.POST("createScheduleTask", cronService.CreateScheduleTask) + cron.POST("pauseScheduleTask", cronService.PauseScheduleTask) + cron.POST("startScheduleTask", cronService.StartScheduleTask) + cron.POST("deleteScheduleTask", cronService.DeleteScheduleTask) + cron.GET("getListScheduleTask", cronService.GetListScheduleTask) + cron.GET("getListExecutionResult", cronService.GetListExecutionResult) + cron.GET("getListExecutionRecord", cronService.GetListExecutionRecord) + + } +} diff --git a/pkg/router/router.go b/pkg/router/router.go index 848a399..119ba2d 100644 --- a/pkg/router/router.go +++ b/pkg/router/router.go @@ -55,6 +55,7 @@ func NewRouter() *gin.Engine { MediaRouter(privateGroup) SecFilingRouter(privateGroup) app.MediaAppRouter(privateGroup) + cronRouter(privateGroup) { v1.POST("version", version.Version) //版本号公共 } diff --git a/pkg/service/cron/cron.go b/pkg/service/cron/cron.go new file mode 100644 index 0000000..47390b3 --- /dev/null +++ b/pkg/service/cron/cron.go @@ -0,0 +1,135 @@ +package cron + +import ( + "context" + "errors" + "fonchain-fiee/api/cron" + "fonchain-fiee/pkg/service" + + "github.com/gin-gonic/gin" + "github.com/gin-gonic/gin/binding" +) + +func CreateScheduleTask(c *gin.Context) { + var req cron.CreateScheduleTaskRequest + if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil { + service.Error(c, errors.New("参数错误")) + return + } + res, err := service.CronProvider.CreateScheduleTask(context.Background(), &req) + if err != nil { + service.Error(c, errors.New("网络超时,请重试")) + return + } + if res.Code != 200 { + service.Error(c, errors.New(res.Message)) + return + } + service.Success(c, res) +} + +func GetListScheduleTask(c *gin.Context) { + var req cron.GetListScheduleTaskRequest + if err := c.ShouldBindJSON(&req); err != nil { + service.Error(c, errors.New("参数错误")) + return + } + res, err := service.CronProvider.GetListScheduleTask(context.Background(), &req) + if err != nil { + service.Error(c, errors.New("网络超时,请重试")) + return + } + if res.Code != 200 { + service.Error(c, errors.New(res.Message)) + return + } + service.Success(c, res) +} + +func GetListExecutionRecord(c *gin.Context) { + var req cron.GetListExecutionRecordRequest + if err := c.ShouldBindJSON(&req); err != nil { + service.Error(c, errors.New("参数错误")) + return + } + res, err := service.CronProvider.GetListExecutionRecord(context.Background(), &req) + if err != nil { + service.Error(c, errors.New("网络超时,请重试")) + return + } + if res.Code != 200 { + service.Error(c, errors.New(res.Message)) + return + } + service.Success(c, res) +} +func GetListExecutionResult(c *gin.Context) { + var req cron.GetListExecutionResultRequest + if err := c.ShouldBindJSON(&req); err != nil { + service.Error(c, errors.New("参数错误")) + return + } + res, err := service.CronProvider.GetListExecutionResult(context.Background(), &req) + if err != nil { + service.Error(c, errors.New("网络超时,请重试")) + return + } + if res.Code != 200 { + service.Error(c, errors.New(res.Message)) + return + } + service.Success(c, res) +} +func StartScheduleTask(c *gin.Context) { + var req cron.CommonIDRequest + if err := c.ShouldBindJSON(&req); err != nil { + service.Error(c, errors.New("参数错误")) + return + } + res, err := service.CronProvider.StartScheduleTask(context.Background(), &req) + if err != nil { + service.Error(c, errors.New("网络超时,请重试")) + return + } + if res.Code != 200 { + service.Error(c, errors.New(res.Message)) + return + } + service.Success(c, res) +} + +func PauseScheduleTask(c *gin.Context) { + var req cron.CommonIDRequest + if err := c.ShouldBindJSON(&req); err != nil { + service.Error(c, errors.New("参数错误")) + return + } + res, err := service.CronProvider.PauseScheduleTask(context.Background(), &req) + if err != nil { + service.Error(c, errors.New("网络超时,请重试")) + return + } + if res.Code != 200 { + service.Error(c, errors.New(res.Message)) + return + } + service.Success(c, res) +} + +func DeleteScheduleTask(c *gin.Context) { + var req cron.CommonIDRequest + if err := c.ShouldBindJSON(&req); err != nil { + service.Error(c, errors.New("参数错误")) + return + } + res, err := service.CronProvider.DeleteScheduleTask(context.Background(), &req) + if err != nil { + service.Error(c, errors.New("网络超时,请重试")) + return + } + if res.Code != 200 { + service.Error(c, errors.New(res.Message)) + return + } + service.Success(c, res) +} diff --git a/pkg/service/init.go b/pkg/service/init.go index 8322d53..f39c4ee 100644 --- a/pkg/service/init.go +++ b/pkg/service/init.go @@ -7,6 +7,7 @@ import ( "fonchain-fiee/api/aryshare" "fonchain-fiee/api/bundle" "fonchain-fiee/api/cast" + "fonchain-fiee/api/cron" "fonchain-fiee/api/files" "fonchain-fiee/api/governance" "fonchain-fiee/api/order" @@ -33,6 +34,7 @@ var GovernanceProvider = new(governance.GovernanceClientImpl) var PressReleasesProvider = new(pressreleases.PressReleasesClientImpl) var SecFilingProvider = new(secFilings.SecFilingsClientImpl) var AyrshareProvider = new(aryshare.AyrshareClientImpl) +var CronProvider = new(cron.CronClientImpl) func init() { config.SetConsumerService(BundleProvider) @@ -46,6 +48,7 @@ func init() { config.SetConsumerService(PressReleasesProvider) config.SetConsumerService(SecFilingProvider) config.SetConsumerService(AyrshareProvider) + config.SetConsumerService(CronProvider) if err := config.Load(); err != nil { panic(err) From af546831b33f15bc1b4e2f2d66c98dad88089002 Mon Sep 17 00:00:00 2001 From: bx1834938347-prog Date: Thu, 18 Dec 2025 11:43:45 +0800 Subject: [PATCH 4/9] Update init.go --- pkg/service/init.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/service/init.go b/pkg/service/init.go index f39c4ee..b0fea1a 100644 --- a/pkg/service/init.go +++ b/pkg/service/init.go @@ -42,8 +42,8 @@ func init() { config.SetConsumerService(AccountProvider) config.SetConsumerService(PaymentProvider) config.SetConsumerService(AccountFieeProvider) - config.SetConsumerService(CastProvider) - config.SetConsumerService(FilesProvider) + //config.SetConsumerService(CastProvider) + //config.SetConsumerService(FilesProvider) config.SetConsumerService(GovernanceProvider) config.SetConsumerService(PressReleasesProvider) config.SetConsumerService(SecFilingProvider) From ae5f9aea6fbc10fc1fd794e0dd29fc02504e5c09 Mon Sep 17 00:00:00 2001 From: bx1834938347-prog Date: Thu, 18 Dec 2025 11:44:10 +0800 Subject: [PATCH 5/9] Update init.go --- pkg/service/init.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/service/init.go b/pkg/service/init.go index bf60fc6..77ac5d6 100644 --- a/pkg/service/init.go +++ b/pkg/service/init.go @@ -7,8 +7,8 @@ import ( "fonchain-fiee/api/aryshare" "fonchain-fiee/api/bundle" "fonchain-fiee/api/cast" - "fonchain-fiee/api/emailAlerts" "fonchain-fiee/api/cron" + "fonchain-fiee/api/emailAlerts" "fonchain-fiee/api/files" "fonchain-fiee/api/governance" "fonchain-fiee/api/members" @@ -48,8 +48,8 @@ func init() { config.SetConsumerService(AccountProvider) config.SetConsumerService(PaymentProvider) config.SetConsumerService(AccountFieeProvider) - //config.SetConsumerService(CastProvider) - //config.SetConsumerService(FilesProvider) + config.SetConsumerService(CastProvider) + config.SetConsumerService(FilesProvider) config.SetConsumerService(GovernanceProvider) config.SetConsumerService(PressReleasesProvider) config.SetConsumerService(SecFilingProvider) From b38331b8c71c4241c21413743de9d3535599a8ff Mon Sep 17 00:00:00 2001 From: bx1834938347-prog Date: Thu, 18 Dec 2025 11:44:54 +0800 Subject: [PATCH 6/9] Update init.go --- pkg/service/init.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/service/init.go b/pkg/service/init.go index b0fea1a..f39c4ee 100644 --- a/pkg/service/init.go +++ b/pkg/service/init.go @@ -42,8 +42,8 @@ func init() { config.SetConsumerService(AccountProvider) config.SetConsumerService(PaymentProvider) config.SetConsumerService(AccountFieeProvider) - //config.SetConsumerService(CastProvider) - //config.SetConsumerService(FilesProvider) + config.SetConsumerService(CastProvider) + config.SetConsumerService(FilesProvider) config.SetConsumerService(GovernanceProvider) config.SetConsumerService(PressReleasesProvider) config.SetConsumerService(SecFilingProvider) From 0f9ac2b1f9c81a3dca5e05572c550f3de3876c34 Mon Sep 17 00:00:00 2001 From: bx1834938347-prog Date: Thu, 18 Dec 2025 11:46:06 +0800 Subject: [PATCH 7/9] Update init.go --- pkg/service/init.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/service/init.go b/pkg/service/init.go index f39c4ee..0aa084e 100644 --- a/pkg/service/init.go +++ b/pkg/service/init.go @@ -43,8 +43,8 @@ func init() { config.SetConsumerService(PaymentProvider) config.SetConsumerService(AccountFieeProvider) config.SetConsumerService(CastProvider) - config.SetConsumerService(FilesProvider) - config.SetConsumerService(GovernanceProvider) + //config.SetConsumerService(FilesProvider) + //config.SetConsumerService(GovernanceProvider) config.SetConsumerService(PressReleasesProvider) config.SetConsumerService(SecFilingProvider) config.SetConsumerService(AyrshareProvider) From 11b278045d3a8d56e1dabb73b5350a46a4800b1e Mon Sep 17 00:00:00 2001 From: bx1834938347-prog Date: Thu, 18 Dec 2025 11:46:52 +0800 Subject: [PATCH 8/9] Update init.go --- pkg/service/init.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/service/init.go b/pkg/service/init.go index f793510..77ac5d6 100644 --- a/pkg/service/init.go +++ b/pkg/service/init.go @@ -49,8 +49,8 @@ func init() { config.SetConsumerService(PaymentProvider) config.SetConsumerService(AccountFieeProvider) config.SetConsumerService(CastProvider) - //config.SetConsumerService(FilesProvider) - //config.SetConsumerService(GovernanceProvider) + config.SetConsumerService(FilesProvider) + config.SetConsumerService(GovernanceProvider) config.SetConsumerService(PressReleasesProvider) config.SetConsumerService(SecFilingProvider) config.SetConsumerService(ReportsProvider) From 8fa9cd79a40944edd61db41b9b23a0a147abadb1 Mon Sep 17 00:00:00 2001 From: bx1834938347-prog Date: Thu, 18 Dec 2025 14:14:42 +0800 Subject: [PATCH 9/9] =?UTF-8?q?feat=EF=BC=9A=E4=BF=AE=E6=94=B9=E6=88=90pos?= =?UTF-8?q?t=E8=AF=B7=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/cron/cron.pb.go | 158 ++++++++++++++++++++++++++++------ api/cron/cron.validator.pb.go | 14 +++ api/cron/cron_triple.pb.go | 46 ++++++++++ pkg/router/cron.go | 12 +-- pkg/service/cron/cron.go | 13 +++ 5 files changed, 214 insertions(+), 29 deletions(-) diff --git a/api/cron/cron.pb.go b/api/cron/cron.pb.go index b92be90..a41008a 100644 --- a/api/cron/cron.pb.go +++ b/api/cron/cron.pb.go @@ -9,6 +9,7 @@ package cron import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + emptypb "google.golang.org/protobuf/types/known/emptypb" reflect "reflect" sync "sync" unsafe "unsafe" @@ -1533,11 +1534,107 @@ func (x *GetListExecutionResultResponse) GetData() []*ExecutionResult { return nil } +type TaskStatus struct { + state protoimpl.MessageState `protogen:"open.v1"` + Key int32 `protobuf:"varint,1,opt,name=key,proto3" json:"key"` // 状态码 + Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value"` // 状态描述 + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TaskStatus) Reset() { + *x = TaskStatus{} + mi := &file_pb_cron_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TaskStatus) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TaskStatus) ProtoMessage() {} + +func (x *TaskStatus) ProtoReflect() protoreflect.Message { + mi := &file_pb_cron_proto_msgTypes[16] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TaskStatus.ProtoReflect.Descriptor instead. +func (*TaskStatus) Descriptor() ([]byte, []int) { + return file_pb_cron_proto_rawDescGZIP(), []int{16} +} + +func (x *TaskStatus) GetKey() int32 { + if x != nil { + return x.Key + } + return 0 +} + +func (x *TaskStatus) GetValue() string { + if x != nil { + return x.Value + } + return "" +} + +type GetScheduleTaskStatusResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Status []*TaskStatus `protobuf:"bytes,1,rep,name=status,proto3" json:"status"` // 多个任务状态 + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetScheduleTaskStatusResponse) Reset() { + *x = GetScheduleTaskStatusResponse{} + mi := &file_pb_cron_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetScheduleTaskStatusResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetScheduleTaskStatusResponse) ProtoMessage() {} + +func (x *GetScheduleTaskStatusResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_cron_proto_msgTypes[17] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetScheduleTaskStatusResponse.ProtoReflect.Descriptor instead. +func (*GetScheduleTaskStatusResponse) Descriptor() ([]byte, []int) { + return file_pb_cron_proto_rawDescGZIP(), []int{17} +} + +func (x *GetScheduleTaskStatusResponse) GetStatus() []*TaskStatus { + if x != nil { + return x.Status + } + return nil +} + var File_pb_cron_proto protoreflect.FileDescriptor const file_pb_cron_proto_rawDesc = "" + "\n" + - "\rpb/cron.proto\x12\x04cron\"!\n" + + "\rpb/cron.proto\x12\x04cron\x1a\x1bgoogle/protobuf/empty.proto\"!\n" + "\x0fCommonIDRequest\x12\x0e\n" + "\x02id\x18\x01 \x01(\rR\x02id\">\n" + "\x0eCommonResponse\x12\x12\n" + @@ -1704,7 +1801,13 @@ const file_pb_cron_proto_rawDesc = "" + "\x05total\x18\x03 \x01(\x03R\x05total\x12\x12\n" + "\x04page\x18\x04 \x01(\x05R\x04page\x12\x12\n" + "\x04size\x18\x05 \x01(\x05R\x04size\x12)\n" + - "\x04data\x18\x06 \x03(\v2\x15.cron.ExecutionResultR\x04data2\xda\x04\n" + + "\x04data\x18\x06 \x03(\v2\x15.cron.ExecutionResultR\x04data\"4\n" + + "\n" + + "TaskStatus\x12\x10\n" + + "\x03key\x18\x01 \x01(\x05R\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value\"I\n" + + "\x1dGetScheduleTaskStatusResponse\x12(\n" + + "\x06status\x18\x01 \x03(\v2\x10.cron.TaskStatusR\x06status2\xb2\x05\n" + "\x04Cron\x12Y\n" + "\x12CreateScheduleTask\x12\x1f.cron.CreateScheduleTaskRequest\x1a .cron.CreateScheduleTaskResponse\"\x00\x12\\\n" + "\x13GetListScheduleTask\x12 .cron.GetListScheduleTaskRequest\x1a!.cron.GetListScheduleTaskResponse\"\x00\x12e\n" + @@ -1712,7 +1815,8 @@ const file_pb_cron_proto_rawDesc = "" + "\x16GetListExecutionResult\x12#.cron.GetListExecutionResultRequest\x1a$.cron.GetListExecutionResultResponse\"\x00\x12B\n" + "\x11PauseScheduleTask\x12\x15.cron.CommonIDRequest\x1a\x14.cron.CommonResponse\"\x00\x12B\n" + "\x11StartScheduleTask\x12\x15.cron.CommonIDRequest\x1a\x14.cron.CommonResponse\"\x00\x12C\n" + - "\x12DeleteScheduleTask\x12\x15.cron.CommonIDRequest\x1a\x14.cron.CommonResponse\"\x00B\bZ\x06./cronb\x06proto3" + "\x12DeleteScheduleTask\x12\x15.cron.CommonIDRequest\x1a\x14.cron.CommonResponse\"\x00\x12V\n" + + "\x15GetScheduleTaskStatus\x12\x16.google.protobuf.Empty\x1a#.cron.GetScheduleTaskStatusResponse\"\x00B\bZ\x06./cronb\x06proto3" var ( file_pb_cron_proto_rawDescOnce sync.Once @@ -1726,7 +1830,7 @@ func file_pb_cron_proto_rawDescGZIP() []byte { return file_pb_cron_proto_rawDescData } -var file_pb_cron_proto_msgTypes = make([]protoimpl.MessageInfo, 16) +var file_pb_cron_proto_msgTypes = make([]protoimpl.MessageInfo, 18) var file_pb_cron_proto_goTypes = []any{ (*CommonIDRequest)(nil), // 0: cron.CommonIDRequest (*CommonResponse)(nil), // 1: cron.CommonResponse @@ -1744,6 +1848,9 @@ var file_pb_cron_proto_goTypes = []any{ (*GetListExecutionRecordResponse)(nil), // 13: cron.GetListExecutionRecordResponse (*GetListExecutionResultRequest)(nil), // 14: cron.GetListExecutionResultRequest (*GetListExecutionResultResponse)(nil), // 15: cron.GetListExecutionResultResponse + (*TaskStatus)(nil), // 16: cron.TaskStatus + (*GetScheduleTaskStatusResponse)(nil), // 17: cron.GetScheduleTaskStatusResponse + (*emptypb.Empty)(nil), // 18: google.protobuf.Empty } var file_pb_cron_proto_depIdxs = []int32{ 5, // 0: cron.ScheduleTask.task_detail:type_name -> cron.TaskDetail @@ -1756,25 +1863,28 @@ var file_pb_cron_proto_depIdxs = []int32{ 2, // 7: cron.GetListScheduleTaskResponse.data:type_name -> cron.ScheduleTask 3, // 8: cron.GetListExecutionRecordResponse.data:type_name -> cron.ExecutionRecord 4, // 9: cron.GetListExecutionResultResponse.data:type_name -> cron.ExecutionResult - 7, // 10: cron.Cron.CreateScheduleTask:input_type -> cron.CreateScheduleTaskRequest - 10, // 11: cron.Cron.GetListScheduleTask:input_type -> cron.GetListScheduleTaskRequest - 12, // 12: cron.Cron.GetListExecutionRecord:input_type -> cron.GetListExecutionRecordRequest - 14, // 13: cron.Cron.GetListExecutionResult:input_type -> cron.GetListExecutionResultRequest - 0, // 14: cron.Cron.PauseScheduleTask:input_type -> cron.CommonIDRequest - 0, // 15: cron.Cron.StartScheduleTask:input_type -> cron.CommonIDRequest - 0, // 16: cron.Cron.DeleteScheduleTask:input_type -> cron.CommonIDRequest - 9, // 17: cron.Cron.CreateScheduleTask:output_type -> cron.CreateScheduleTaskResponse - 11, // 18: cron.Cron.GetListScheduleTask:output_type -> cron.GetListScheduleTaskResponse - 13, // 19: cron.Cron.GetListExecutionRecord:output_type -> cron.GetListExecutionRecordResponse - 15, // 20: cron.Cron.GetListExecutionResult:output_type -> cron.GetListExecutionResultResponse - 1, // 21: cron.Cron.PauseScheduleTask:output_type -> cron.CommonResponse - 1, // 22: cron.Cron.StartScheduleTask:output_type -> cron.CommonResponse - 1, // 23: cron.Cron.DeleteScheduleTask:output_type -> cron.CommonResponse - 17, // [17:24] is the sub-list for method output_type - 10, // [10:17] is the sub-list for method input_type - 10, // [10:10] is the sub-list for extension type_name - 10, // [10:10] is the sub-list for extension extendee - 0, // [0:10] is the sub-list for field type_name + 16, // 10: cron.GetScheduleTaskStatusResponse.status:type_name -> cron.TaskStatus + 7, // 11: cron.Cron.CreateScheduleTask:input_type -> cron.CreateScheduleTaskRequest + 10, // 12: cron.Cron.GetListScheduleTask:input_type -> cron.GetListScheduleTaskRequest + 12, // 13: cron.Cron.GetListExecutionRecord:input_type -> cron.GetListExecutionRecordRequest + 14, // 14: cron.Cron.GetListExecutionResult:input_type -> cron.GetListExecutionResultRequest + 0, // 15: cron.Cron.PauseScheduleTask:input_type -> cron.CommonIDRequest + 0, // 16: cron.Cron.StartScheduleTask:input_type -> cron.CommonIDRequest + 0, // 17: cron.Cron.DeleteScheduleTask:input_type -> cron.CommonIDRequest + 18, // 18: cron.Cron.GetScheduleTaskStatus:input_type -> google.protobuf.Empty + 9, // 19: cron.Cron.CreateScheduleTask:output_type -> cron.CreateScheduleTaskResponse + 11, // 20: cron.Cron.GetListScheduleTask:output_type -> cron.GetListScheduleTaskResponse + 13, // 21: cron.Cron.GetListExecutionRecord:output_type -> cron.GetListExecutionRecordResponse + 15, // 22: cron.Cron.GetListExecutionResult:output_type -> cron.GetListExecutionResultResponse + 1, // 23: cron.Cron.PauseScheduleTask:output_type -> cron.CommonResponse + 1, // 24: cron.Cron.StartScheduleTask:output_type -> cron.CommonResponse + 1, // 25: cron.Cron.DeleteScheduleTask:output_type -> cron.CommonResponse + 17, // 26: cron.Cron.GetScheduleTaskStatus:output_type -> cron.GetScheduleTaskStatusResponse + 19, // [19:27] is the sub-list for method output_type + 11, // [11:19] is the sub-list for method input_type + 11, // [11:11] is the sub-list for extension type_name + 11, // [11:11] is the sub-list for extension extendee + 0, // [0:11] is the sub-list for field type_name } func init() { file_pb_cron_proto_init() } @@ -1788,7 +1898,7 @@ func file_pb_cron_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_pb_cron_proto_rawDesc), len(file_pb_cron_proto_rawDesc)), NumEnums: 0, - NumMessages: 16, + NumMessages: 18, NumExtensions: 0, NumServices: 1, }, diff --git a/api/cron/cron.validator.pb.go b/api/cron/cron.validator.pb.go index 1ee4b41..8ace737 100644 --- a/api/cron/cron.validator.pb.go +++ b/api/cron/cron.validator.pb.go @@ -7,6 +7,7 @@ import ( fmt "fmt" math "math" proto "github.com/golang/protobuf/proto" + _ "google.golang.org/protobuf/types/known/emptypb" github_com_mwitkow_go_proto_validators "github.com/mwitkow/go-proto-validators" ) @@ -127,3 +128,16 @@ func (this *GetListExecutionResultResponse) Validate() error { } return nil } +func (this *TaskStatus) Validate() error { + return nil +} +func (this *GetScheduleTaskStatusResponse) Validate() error { + for _, item := range this.Status { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Status", err) + } + } + } + return nil +} diff --git a/api/cron/cron_triple.pb.go b/api/cron/cron_triple.pb.go index 4f95091..676d2d7 100644 --- a/api/cron/cron_triple.pb.go +++ b/api/cron/cron_triple.pb.go @@ -18,6 +18,7 @@ import ( common "github.com/dubbogo/triple/pkg/common" constant "github.com/dubbogo/triple/pkg/common/constant" triple "github.com/dubbogo/triple/pkg/triple" + emptypb "google.golang.org/protobuf/types/known/emptypb" ) // This is a compile-time assertion to ensure that this generated file @@ -35,6 +36,7 @@ type CronClient interface { PauseScheduleTask(ctx context.Context, in *CommonIDRequest, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment) StartScheduleTask(ctx context.Context, in *CommonIDRequest, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment) DeleteScheduleTask(ctx context.Context, in *CommonIDRequest, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment) + GetScheduleTaskStatus(ctx context.Context, in *emptypb.Empty, opts ...grpc_go.CallOption) (*GetScheduleTaskStatusResponse, common.ErrorWithAttachment) } type cronClient struct { @@ -49,6 +51,7 @@ type CronClientImpl struct { PauseScheduleTask func(ctx context.Context, in *CommonIDRequest) (*CommonResponse, error) StartScheduleTask func(ctx context.Context, in *CommonIDRequest) (*CommonResponse, error) DeleteScheduleTask func(ctx context.Context, in *CommonIDRequest) (*CommonResponse, error) + GetScheduleTaskStatus func(ctx context.Context, in *emptypb.Empty) (*GetScheduleTaskStatusResponse, error) } func (c *CronClientImpl) GetDubboStub(cc *triple.TripleConn) CronClient { @@ -105,6 +108,12 @@ func (c *cronClient) DeleteScheduleTask(ctx context.Context, in *CommonIDRequest return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/DeleteScheduleTask", in, out) } +func (c *cronClient) GetScheduleTaskStatus(ctx context.Context, in *emptypb.Empty, opts ...grpc_go.CallOption) (*GetScheduleTaskStatusResponse, common.ErrorWithAttachment) { + out := new(GetScheduleTaskStatusResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetScheduleTaskStatus", in, out) +} + // CronServer is the server API for Cron service. // All implementations must embed UnimplementedCronServer // for forward compatibility @@ -116,6 +125,7 @@ type CronServer interface { PauseScheduleTask(context.Context, *CommonIDRequest) (*CommonResponse, error) StartScheduleTask(context.Context, *CommonIDRequest) (*CommonResponse, error) DeleteScheduleTask(context.Context, *CommonIDRequest) (*CommonResponse, error) + GetScheduleTaskStatus(context.Context, *emptypb.Empty) (*GetScheduleTaskStatusResponse, error) mustEmbedUnimplementedCronServer() } @@ -145,6 +155,9 @@ func (UnimplementedCronServer) StartScheduleTask(context.Context, *CommonIDReque func (UnimplementedCronServer) DeleteScheduleTask(context.Context, *CommonIDRequest) (*CommonResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method DeleteScheduleTask not implemented") } +func (UnimplementedCronServer) GetScheduleTaskStatus(context.Context, *emptypb.Empty) (*GetScheduleTaskStatusResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetScheduleTaskStatus not implemented") +} func (s *UnimplementedCronServer) XXX_SetProxyImpl(impl protocol.Invoker) { s.proxyImpl = impl } @@ -376,6 +389,35 @@ func _Cron_DeleteScheduleTask_Handler(srv interface{}, ctx context.Context, dec return interceptor(ctx, in, info, handler) } +func _Cron_GetScheduleTaskStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(emptypb.Empty) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("GetScheduleTaskStatus", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + // Cron_ServiceDesc is the grpc_go.ServiceDesc for Cron service. // It's only intended for direct use with grpc_go.RegisterService, // and not to be introspected or modified (even as a copy) @@ -411,6 +453,10 @@ var Cron_ServiceDesc = grpc_go.ServiceDesc{ MethodName: "DeleteScheduleTask", Handler: _Cron_DeleteScheduleTask_Handler, }, + { + MethodName: "GetScheduleTaskStatus", + Handler: _Cron_GetScheduleTaskStatus_Handler, + }, }, Streams: []grpc_go.StreamDesc{}, Metadata: "pb/cron.proto", diff --git a/pkg/router/cron.go b/pkg/router/cron.go index 4452858..c9931ad 100644 --- a/pkg/router/cron.go +++ b/pkg/router/cron.go @@ -1,6 +1,8 @@ package router import ( + "fonchain-fiee/pkg/middleware" + "fonchain-fiee/pkg/service" cronService "fonchain-fiee/pkg/service/cron" "github.com/gin-gonic/gin" @@ -8,16 +10,16 @@ import ( func cronRouter(r *gin.RouterGroup) { auth := r.Group("") - //auth.Use(middleware.CheckWebLogin(service.AccountProvider)) + auth.Use(middleware.CheckWebLogin(service.AccountProvider)) cron := auth.Group("cron") { cron.POST("createScheduleTask", cronService.CreateScheduleTask) cron.POST("pauseScheduleTask", cronService.PauseScheduleTask) cron.POST("startScheduleTask", cronService.StartScheduleTask) cron.POST("deleteScheduleTask", cronService.DeleteScheduleTask) - cron.GET("getListScheduleTask", cronService.GetListScheduleTask) - cron.GET("getListExecutionResult", cronService.GetListExecutionResult) - cron.GET("getListExecutionRecord", cronService.GetListExecutionRecord) - + cron.POST("getListScheduleTask", cronService.GetListScheduleTask) + cron.POST("getListExecutionResult", cronService.GetListExecutionResult) + cron.POST("getListExecutionRecord", cronService.GetListExecutionRecord) + //cron.GET("getScheduleTaskStatus", cronService.GetScheduleTaskStatus) } } diff --git a/pkg/service/cron/cron.go b/pkg/service/cron/cron.go index 47390b3..39a8132 100644 --- a/pkg/service/cron/cron.go +++ b/pkg/service/cron/cron.go @@ -133,3 +133,16 @@ func DeleteScheduleTask(c *gin.Context) { } service.Success(c, res) } + +//func GetScheduleTaskStatus(c *gin.Context) { +// res, err := service.CronProvider.GetScheduleTaskStatus(context.Background(), &emptypb.Empty{}) +// if err != nil { +// service.Error(c, errors.New("网络超时,请重试")) +// return +// } +// if res.Code != 200 { +// service.Error(c, errors.New(res.Message)) +// return +// } +// service.Success(c, res) +//}