diff --git a/api/sgtm.proto b/api/sgtm.proto index 4efc543..3ebf093 100644 --- a/api/sgtm.proto +++ b/api/sgtm.proto @@ -166,6 +166,7 @@ message Post { double bpm = 43 [(go.field) = {name: 'BPM'}]; string key_signature = 44; string isrc = 45 [(go.field) = {name: 'ISRC'}]; + string provider_title = 53; string provider_description = 46; string provider_download_url = 47 [(go.field) = {name: 'DownloadURL'}]; int64 provider_created_at = 48; diff --git a/gen.sum b/gen.sum index cceda95..5ca6794 100644 --- a/gen.sum +++ b/gen.sum @@ -1,2 +1,2 @@ -151d6ce0043344a7761c54505e905c535465fd2e ./api/sgtm.proto +684ebb244d2a791ee020fd8da38d4d10a171d2c1 ./api/sgtm.proto 034f32b1cbdac6ec6e02c1244eed70c90c127adf Makefile diff --git a/pkg/sgtm/page_base.tmpl.html b/pkg/sgtm/page_base.tmpl.html index 042289c..51e3b52 100644 --- a/pkg/sgtm/page_base.tmpl.html +++ b/pkg/sgtm/page_base.tmpl.html @@ -142,7 +142,7 @@

Recent activities

{{ if eq .Kind 1}}{{end}} - {{.Title}} + {{.SafeTitle}} {{.CreatedAt | fromUnixNano | prettyAgo}}
diff --git a/pkg/sgtm/page_home.tmpl.html b/pkg/sgtm/page_home.tmpl.html index de15997..df6f2f1 100644 --- a/pkg/sgtm/page_home.tmpl.html +++ b/pkg/sgtm/page_home.tmpl.html @@ -60,7 +60,7 @@
Artwork
-
{{.Title}}
+
{{.SafeTitle}}
{{with .TagList}}
📁 Tags: {{range .}}{{.}} {{end}}
{{end}} {{if .Duration}}
⏱ Duration: {{.GoDuration | prettyDuration}}
{{end}} diff --git a/pkg/sgtm/page_new.go b/pkg/sgtm/page_new.go index a6662ec..c11739f 100644 --- a/pkg/sgtm/page_new.go +++ b/pkg/sgtm/page_new.go @@ -69,7 +69,7 @@ func (svc *Service) newPage(box *packr.Box) func(w http.ResponseWriter, r *http. First(&alreadyExists). Error if err == nil && alreadyExists.ID != 0 { - data.New.URLInvalidMsg = fmt.Sprintf(`This track already exists: %s.`, alreadyExists.ID, alreadyExists.Title) + data.New.URLInvalidMsg = fmt.Sprintf(`This track already exists: %s.`, alreadyExists.ID, alreadyExists.SafeTitle()) return nil } } @@ -93,7 +93,7 @@ func (svc *Service) newPage(box *packr.Box) func(w http.ResponseWriter, r *http. Visibility: sgtmpb.Visibility_Public, AuthorID: data.User.ID, Slug: "", - Title: filename, + ProviderTitle: filename, SortDate: time.Now().UnixNano(), URL: "https://ipfs.io/ipfs/" + cid, Provider: sgtmpb.Provider_IPFS, @@ -107,12 +107,12 @@ func (svc *Service) newPage(box *packr.Box) func(w http.ResponseWriter, r *http. // FIXME: check if valid SoundCloud link post := sgtmpb.Post{ - Kind: sgtmpb.Post_TrackKind, - Visibility: sgtmpb.Visibility_Public, - AuthorID: data.User.ID, - Slug: "", - Title: "", - SortDate: time.Now().UnixNano(), + Kind: sgtmpb.Post_TrackKind, + Visibility: sgtmpb.Visibility_Public, + AuthorID: data.User.ID, + Slug: "", + ProviderTitle: "", + SortDate: time.Now().UnixNano(), } u, err := url.Parse(fileURL) @@ -150,7 +150,7 @@ func (svc *Service) newPage(box *packr.Box) func(w http.ResponseWriter, r *http. First(&alreadyExists). Error if err == nil && alreadyExists.ID != 0 { - data.New.URLInvalidMsg = fmt.Sprintf(`This track already exists: %s.`, alreadyExists.CanonicalURL(), alreadyExists.Title) + data.New.URLInvalidMsg = fmt.Sprintf(`This track already exists: %s.`, alreadyExists.CanonicalURL(), alreadyExists.SafeTitle()) return nil } } @@ -167,7 +167,7 @@ func (svc *Service) newPage(box *packr.Box) func(w http.ResponseWriter, r *http. } post.ProviderMetadata = godev.JSON(track) - post.Title = track.Title + post.ProviderTitle = track.Title createdAt, err := time.Parse("2006/01/02 15:04:05 +0000", track.CreatedAt) if err == nil { post.ProviderCreatedAt = createdAt.UnixNano() diff --git a/pkg/sgtm/page_open.tmpl.html b/pkg/sgtm/page_open.tmpl.html index 336b3df..2ebaf2e 100644 --- a/pkg/sgtm/page_open.tmpl.html +++ b/pkg/sgtm/page_open.tmpl.html @@ -82,13 +82,13 @@

Activities

{{with eq $kind "ViewHomeKind"}}🏠 View home page{{end}} {{with eq $kind "LoginKind"}}👌 Login{{end}} {{with eq $kind "RegisterKind"}}👋 Register{{end}} - {{with eq $kind "TrackKind"}}🎶 Post {{$post.Title}}{{end}} - {{with eq $kind "CommentKind"}}{{with $post.TargetPost}}✏️ Comment {{$post.TargetPost.Title}}{{end}}{{end}} + {{with eq $kind "TrackKind"}}🎶 Post {{$post.SafeTitle}}{{end}} + {{with eq $kind "CommentKind"}}{{with $post.TargetPost}}✏️ Comment {{$post.TargetPost.SafeTitle}}{{end}}{{end}} {{with eq $kind "ViewProfileKind"}}{{with $post.TargetUser}}👤 View {{$post.TargetUser.DisplayName}} profile{{end}}{{end}} {{with eq $kind "ViewPostKind"}} {{with $post.TargetPost}} - 🎶 View {{$post.TargetPost.Title}} + 🎶 View {{$post.TargetPost.SafeTitle}} {{end}} {{end}} {{$post.CreatedAt | fromUnixNano | prettyAgo}} diff --git a/pkg/sgtm/page_post-edit.tmpl.html b/pkg/sgtm/page_post-edit.tmpl.html index 2e06ad7..4b7a4b2 100644 --- a/pkg/sgtm/page_post-edit.tmpl.html +++ b/pkg/sgtm/page_post-edit.tmpl.html @@ -8,16 +8,14 @@
-

{{.PostEdit.Post.Title}} > Edit

+

{{.PostEdit.Post.SafeTitle}} > Edit

- {{if .PostEdit.Post.IsIPFS}} -
- -
- -
+
+ +
+
- {{end}} +
@@ -44,7 +42,7 @@

{{.PostEdit.Post.Title}} >
- +
diff --git a/pkg/sgtm/page_post.go b/pkg/sgtm/page_post.go index 3a46c4d..c0ad3d4 100644 --- a/pkg/sgtm/page_post.go +++ b/pkg/sgtm/page_post.go @@ -217,7 +217,7 @@ func (svc *Service) postMaintenancePage(box *packr.Box) func(w http.ResponseWrit err := svc.rwdb().Transaction(func(tx *gorm.DB) error { // FIXME: avoid delete/recreate associations if they didn't changed - body := post.Title + "\n\n" + post.SafeDescription() + body := post.SafeTitle() + "\n\n" + post.SafeDescription() if err := tx.Model(&post).Association("RelationshipsAsSource").Clear(); err != nil { return err @@ -332,6 +332,7 @@ func (svc *Service) postEditPage(box *packr.Box) func(w http.ResponseWriter, r * } // FIXME: blacklist, etc fields := map[string]interface{}{} + fields["title"] = strings.TrimSpace(r.Form.Get("title")) fields["body"] = strings.TrimSpace(r.Form.Get("body")) fields["lyrics"] = strings.TrimSpace(r.Form.Get("lyrics")) if data.PostEdit.Post.Provider == sgtmpb.Provider_IPFS { diff --git a/pkg/sgtm/page_post.tmpl.html b/pkg/sgtm/page_post.tmpl.html index e280e17..dcfe226 100644 --- a/pkg/sgtm/page_post.tmpl.html +++ b/pkg/sgtm/page_post.tmpl.html @@ -8,9 +8,9 @@ - + - + {{if .Post.Post.IsSoundCloud}} @@ -23,7 +23,7 @@
-

{{.Post.Post.Title}}

+

{{.Post.Post.SafeTitle}}

by @{{.Post.Post.Author.Slug}}

{{if .Post.Post.IsSoundCloud}} @@ -56,7 +56,7 @@

{{.Post.Post.Title}}

{{end}} {{if .Post.Post.IsIPFS}}
🔈 Type: {{ .Post.Post.MIMEType }}
-
⬇️ Download
+
⬇️ Download
⚓ IPFS CID: {{ .Post.Post.IPFSCID }}
{{end}} @@ -121,10 +121,10 @@

{{.Post.Post.Title}}

Sharing
-
+ - diff --git a/pkg/sgtm/page_profile.tmpl.html b/pkg/sgtm/page_profile.tmpl.html index 1a1aea8..fae8f51 100644 --- a/pkg/sgtm/page_profile.tmpl.html +++ b/pkg/sgtm/page_profile.tmpl.html @@ -36,7 +36,7 @@

🎶 Tracks by {{.Profile.User.DisplayName}}

Artwork
-
{{.Title}}
+
{{.SafeTitle}}
{{.SortDate | fromUnixNano | prettyAgo}}
{{with .SafeDescription}}

{{.}}

{{end}} diff --git a/pkg/sgtm/page_rss.tmpl.xml b/pkg/sgtm/page_rss.tmpl.xml index 43f8170..e22b941 100644 --- a/pkg/sgtm/page_rss.tmpl.xml +++ b/pkg/sgtm/page_rss.tmpl.xml @@ -10,7 +10,7 @@ {{range .RSS.LastTracks}} - {{stripTags .Title}} by @{{.Author.Slug}} + {{stripTags .SafeTitle}} by @{{.Author.Slug}} https://sgtm.club{{.CanonicalURL}} {{ dateInZone "02 Jan 06 15:04:05 MST" (.SortDate | fromUnixNano) "UTC"}} https://sgtm.club{{.CanonicalURL}} diff --git a/pkg/sgtm/processing_worker.go b/pkg/sgtm/processing_worker.go index 13fec11..2a4bb32 100644 --- a/pkg/sgtm/processing_worker.go +++ b/pkg/sgtm/processing_worker.go @@ -120,12 +120,24 @@ func (svc *Service) setupMigrations() { // nothing to do return nil } - return tx.Model(post).Updates(map[string]interface{}{ "tags": post.Genre, // nolint:staticcheck "genre": "", }).Error }, + + // set SoundCloud provider_title + func(post *sgtmpb.Post, tx *gorm.DB) error { + if post.GetProvider() != sgtmpb.Provider_SoundCloud || post.ProviderTitle != "" { + return nil + } + + return tx.Model(post).Updates(map[string]interface{}{ + "provider_title": post.Title, + "title": "", + }).Error + }, + /* // FIXME: try downloading the mp3 locally func(post *sgtmpb.Post) error { return fmt.Errorf("not implemented") }, diff --git a/pkg/sgtmpb/helpers.go b/pkg/sgtmpb/helpers.go index 5fe157f..14710c8 100644 --- a/pkg/sgtmpb/helpers.go +++ b/pkg/sgtmpb/helpers.go @@ -12,9 +12,6 @@ import ( // Post func (p *Post) ApplyDefaults() { - if p.Title == "" { - p.Title = "noname" - } if p.ArtworkURL == "" && p.Provider == Provider_SoundCloud { var metadata soundcloud.Track err := json.Unmarshal([]byte(p.ProviderMetadata), &metadata) @@ -42,6 +39,16 @@ func (p *Post) SafeDescription() string { return p.ProviderDescription } +func (p *Post) SafeTitle() string { + if p.Title != "" { + return p.Title + } + if p.ProviderTitle != "" { + return p.ProviderTitle + } + return "noname" +} + func (p *Post) SafeLyrics() string { return strings.TrimSpace(p.Lyrics) } diff --git a/pkg/sgtmpb/sgtm.pb.go b/pkg/sgtmpb/sgtm.pb.go index f5f1629..b143092 100644 --- a/pkg/sgtmpb/sgtm.pb.go +++ b/pkg/sgtmpb/sgtm.pb.go @@ -865,6 +865,7 @@ type Post struct { BPM float64 `protobuf:"fixed64,43,opt,name=bpm,proto3" json:"bpm,omitempty"` KeySignature string `protobuf:"bytes,44,opt,name=key_signature,json=keySignature,proto3" json:"key_signature,omitempty"` ISRC string `protobuf:"bytes,45,opt,name=isrc,proto3" json:"isrc,omitempty"` + ProviderTitle string `protobuf:"bytes,53,opt,name=provider_title,json=providerTitle,proto3" json:"provider_title,omitempty"` ProviderDescription string `protobuf:"bytes,46,opt,name=provider_description,json=providerDescription,proto3" json:"provider_description,omitempty"` DownloadURL string `protobuf:"bytes,47,opt,name=provider_download_url,json=providerDownloadUrl,proto3" json:"provider_download_url,omitempty"` ProviderCreatedAt int64 `protobuf:"varint,48,opt,name=provider_created_at,json=providerCreatedAt,proto3" json:"provider_created_at,omitempty"` @@ -1076,6 +1077,13 @@ func (x *Post) GetISRC() string { return "" } +func (x *Post) GetProviderTitle() string { + if x != nil { + return x.ProviderTitle + } + return "" +} + func (x *Post) GetProviderDescription() string { if x != nil { return x.ProviderDescription @@ -2228,7 +2236,7 @@ var file_sgtm_proto_rawDesc = []byte{ 0x42, 0x25, 0xca, 0xb5, 0x03, 0x21, 0xa2, 0x01, 0x1e, 0x67, 0x6f, 0x72, 0x6d, 0x3a, 0x22, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4b, 0x65, 0x79, 0x3a, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, 0x52, 0x15, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x68, 0x69, 0x70, 0x73, 0x41, 0x73, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x22, 0x93, + 0x6e, 0x73, 0x68, 0x69, 0x70, 0x73, 0x41, 0x73, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x22, 0xba, 0x12, 0x0a, 0x04, 0x50, 0x6f, 0x73, 0x74, 0x12, 0x2d, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x1d, 0xca, 0xb5, 0x03, 0x19, 0x0a, 0x02, 0x49, 0x44, 0xa2, 0x01, 0x12, 0x67, 0x6f, 0x72, 0x6d, 0x3a, 0x22, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x6b, 0x65, @@ -2281,198 +2289,200 @@ var file_sgtm_proto_rawDesc = []byte{ 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6b, 0x65, 0x79, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x04, 0x69, 0x73, 0x72, 0x63, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xca, 0xb5, 0x03, 0x06, 0x0a, 0x04, - 0x49, 0x53, 0x52, 0x43, 0x52, 0x04, 0x69, 0x73, 0x72, 0x63, 0x12, 0x31, 0x0a, 0x14, 0x70, 0x72, - 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, - 0x65, 0x72, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, - 0x15, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, - 0x61, 0x64, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x09, 0x42, 0x11, 0xca, 0xb5, - 0x03, 0x0d, 0x0a, 0x0b, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x52, 0x4c, 0x52, - 0x13, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, - 0x64, 0x55, 0x72, 0x6c, 0x12, 0x2e, 0x0a, 0x13, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x30, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x11, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x64, 0x41, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x31, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x11, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x64, 0x41, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x32, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x10, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x33, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x79, 0x72, 0x69, 0x63, 0x73, 0x18, - 0x34, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x79, 0x72, 0x69, 0x63, 0x73, 0x12, 0x53, 0x0a, - 0x17, 0x73, 0x6f, 0x75, 0x6e, 0x64, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x72, - 0x65, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x50, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1b, - 0xca, 0xb5, 0x03, 0x17, 0x0a, 0x15, 0x53, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6c, 0x6f, 0x75, 0x64, - 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x15, 0x73, 0x6f, 0x75, - 0x6e, 0x64, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x12, 0x37, 0x0a, 0x0d, 0x73, 0x6f, 0x75, 0x6e, 0x64, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x5f, 0x69, 0x64, 0x18, 0x51, 0x20, 0x01, 0x28, 0x04, 0x42, 0x12, 0xca, 0xb5, 0x03, 0x0e, 0x0a, - 0x0c, 0x53, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x49, 0x44, 0x52, 0x0c, 0x73, - 0x6f, 0x75, 0x6e, 0x64, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x49, 0x64, 0x12, 0x58, 0x0a, 0x0f, 0x73, - 0x6f, 0x75, 0x6e, 0x64, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x53, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x73, 0x67, 0x74, 0x6d, 0x2e, 0x50, 0x6f, 0x73, 0x74, - 0x2e, 0x53, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4b, 0x69, 0x6e, 0x64, 0x42, - 0x14, 0xca, 0xb5, 0x03, 0x10, 0x0a, 0x0e, 0x53, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6c, 0x6f, 0x75, - 0x64, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x0e, 0x73, 0x6f, 0x75, 0x6e, 0x64, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x28, 0x0a, 0x08, 0x69, 0x70, 0x66, 0x73, 0x5f, 0x63, 0x69, - 0x64, 0x18, 0x5a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, 0xca, 0xb5, 0x03, 0x09, 0x0a, 0x07, 0x49, - 0x50, 0x46, 0x53, 0x43, 0x49, 0x44, 0x52, 0x07, 0x69, 0x70, 0x66, 0x73, 0x43, 0x69, 0x64, 0x12, - 0x2b, 0x0a, 0x09, 0x6d, 0x69, 0x6d, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x5b, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x0e, 0xca, 0xb5, 0x03, 0x0a, 0x0a, 0x08, 0x4d, 0x49, 0x4d, 0x45, 0x54, 0x79, - 0x70, 0x65, 0x52, 0x08, 0x6d, 0x69, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, - 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x5c, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x09, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x66, - 0x69, 0x6c, 0x65, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x5d, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0d, 0x66, 0x69, 0x6c, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x2f, 0x0a, 0x13, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, - 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x5e, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x12, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x0e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x75, 0x73, - 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x65, 0x20, 0x01, 0x28, 0x03, 0x42, 0x12, 0xca, 0xb5, 0x03, - 0x0e, 0x0a, 0x0c, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x52, - 0x0c, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2b, 0x0a, - 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x18, 0x66, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x73, 0x67, 0x74, 0x6d, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x0a, - 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x0e, 0x74, 0x61, - 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x67, 0x20, 0x01, + 0x49, 0x53, 0x52, 0x43, 0x52, 0x04, 0x69, 0x73, 0x72, 0x63, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x72, + 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x35, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x54, 0x69, 0x74, 0x6c, + 0x65, 0x12, 0x31, 0x0a, 0x14, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x13, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x15, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, + 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x2f, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x11, 0xca, 0xb5, 0x03, 0x0d, 0x0a, 0x0b, 0x44, 0x6f, 0x77, 0x6e, 0x6c, + 0x6f, 0x61, 0x64, 0x55, 0x52, 0x4c, 0x52, 0x13, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, + 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x72, 0x6c, 0x12, 0x2e, 0x0a, 0x13, 0x70, + 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x18, 0x30, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, + 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x70, + 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x18, 0x31, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, + 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x70, + 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x32, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, + 0x18, 0x33, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x16, 0x0a, 0x06, + 0x6c, 0x79, 0x72, 0x69, 0x63, 0x73, 0x18, 0x34, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x79, + 0x72, 0x69, 0x63, 0x73, 0x12, 0x53, 0x0a, 0x17, 0x73, 0x6f, 0x75, 0x6e, 0x64, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, + 0x50, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1b, 0xca, 0xb5, 0x03, 0x17, 0x0a, 0x15, 0x53, 0x6f, 0x75, + 0x6e, 0x64, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x52, 0x15, 0x73, 0x6f, 0x75, 0x6e, 0x64, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x65, + 0x63, 0x72, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x37, 0x0a, 0x0d, 0x73, 0x6f, 0x75, + 0x6e, 0x64, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x51, 0x20, 0x01, 0x28, 0x04, + 0x42, 0x12, 0xca, 0xb5, 0x03, 0x0e, 0x0a, 0x0c, 0x53, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6c, 0x6f, + 0x75, 0x64, 0x49, 0x44, 0x52, 0x0c, 0x73, 0x6f, 0x75, 0x6e, 0x64, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x49, 0x64, 0x12, 0x58, 0x0a, 0x0f, 0x73, 0x6f, 0x75, 0x6e, 0x64, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x53, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x73, 0x67, + 0x74, 0x6d, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x2e, 0x53, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6c, 0x6f, + 0x75, 0x64, 0x4b, 0x69, 0x6e, 0x64, 0x42, 0x14, 0xca, 0xb5, 0x03, 0x10, 0x0a, 0x0e, 0x53, 0x6f, + 0x75, 0x6e, 0x64, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x0e, 0x73, 0x6f, + 0x75, 0x6e, 0x64, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x28, 0x0a, 0x08, + 0x69, 0x70, 0x66, 0x73, 0x5f, 0x63, 0x69, 0x64, 0x18, 0x5a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, + 0xca, 0xb5, 0x03, 0x09, 0x0a, 0x07, 0x49, 0x50, 0x46, 0x53, 0x43, 0x49, 0x44, 0x52, 0x07, 0x69, + 0x70, 0x66, 0x73, 0x43, 0x69, 0x64, 0x12, 0x2b, 0x0a, 0x09, 0x6d, 0x69, 0x6d, 0x65, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x5b, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xca, 0xb5, 0x03, 0x0a, 0x0a, + 0x08, 0x4d, 0x49, 0x4d, 0x45, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x6d, 0x69, 0x6d, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, + 0x73, 0x18, 0x5c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x79, 0x74, + 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x5d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x66, 0x69, 0x6c, 0x65, + 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x0a, 0x13, 0x61, 0x74, 0x74, + 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x5e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, + 0x6e, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x0e, 0x74, 0x61, + 0x72, 0x67, 0x65, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x65, 0x20, 0x01, 0x28, 0x03, 0x42, 0x12, 0xca, 0xb5, 0x03, 0x0e, 0x0a, 0x0c, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, - 0x50, 0x6f, 0x73, 0x74, 0x49, 0x44, 0x52, 0x0c, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x6f, - 0x73, 0x74, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, - 0x6f, 0x73, 0x74, 0x18, 0x68, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x73, 0x67, 0x74, 0x6d, - 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x6f, 0x73, - 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x18, 0x69, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x74, 0x61, 0x72, 0x67, - 0x65, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x71, 0x0a, 0x17, 0x72, 0x65, - 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x73, 0x5f, 0x61, 0x73, 0x5f, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x6e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x67, - 0x74, 0x6d, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x42, - 0x25, 0xca, 0xb5, 0x03, 0x21, 0xa2, 0x01, 0x1e, 0x67, 0x6f, 0x72, 0x6d, 0x3a, 0x22, 0x66, 0x6f, - 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4b, 0x65, 0x79, 0x3a, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, - 0x6f, 0x73, 0x74, 0x49, 0x44, 0x22, 0x52, 0x15, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x68, 0x69, 0x70, 0x73, 0x41, 0x73, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x71, 0x0a, - 0x17, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x73, 0x5f, 0x61, - 0x73, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x6f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, - 0x2e, 0x73, 0x67, 0x74, 0x6d, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, - 0x69, 0x70, 0x42, 0x25, 0xca, 0xb5, 0x03, 0x21, 0xa2, 0x01, 0x1e, 0x67, 0x6f, 0x72, 0x6d, 0x3a, - 0x22, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4b, 0x65, 0x79, 0x3a, 0x54, 0x61, 0x72, 0x67, - 0x65, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x49, 0x44, 0x22, 0x52, 0x15, 0x72, 0x65, 0x6c, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x73, 0x41, 0x73, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, - 0x22, 0x40, 0x0a, 0x0e, 0x53, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4b, 0x69, - 0x6e, 0x64, 0x12, 0x19, 0x0a, 0x15, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x53, 0x6f, 0x75, - 0x6e, 0x64, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4b, 0x69, 0x6e, 0x64, 0x10, 0x00, 0x12, 0x13, 0x0a, - 0x0f, 0x53, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x54, 0x72, 0x61, 0x63, 0x6b, - 0x10, 0x01, 0x22, 0xbf, 0x01, 0x0a, 0x04, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x0f, 0x0a, 0x0b, 0x55, - 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x4b, 0x69, 0x6e, 0x64, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, - 0x54, 0x72, 0x61, 0x63, 0x6b, 0x4b, 0x69, 0x6e, 0x64, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x4c, - 0x6f, 0x67, 0x69, 0x6e, 0x4b, 0x69, 0x6e, 0x64, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x52, 0x65, - 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4b, 0x69, 0x6e, 0x64, 0x10, 0x03, 0x12, 0x1a, 0x0a, 0x16, - 0x4c, 0x69, 0x6e, 0x6b, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x72, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x56, 0x69, 0x65, 0x77, - 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x10, 0x05, 0x12, 0x10, 0x0a, - 0x0c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x6f, 0x73, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x10, 0x06, 0x12, - 0x10, 0x0a, 0x0c, 0x56, 0x69, 0x65, 0x77, 0x4f, 0x70, 0x65, 0x6e, 0x4b, 0x69, 0x6e, 0x64, 0x10, - 0x07, 0x12, 0x10, 0x0a, 0x0c, 0x56, 0x69, 0x65, 0x77, 0x48, 0x6f, 0x6d, 0x65, 0x4b, 0x69, 0x6e, - 0x64, 0x10, 0x08, 0x12, 0x0f, 0x0a, 0x0b, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x4b, 0x69, - 0x6e, 0x64, 0x10, 0x09, 0x22, 0x93, 0x07, 0x0a, 0x0c, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x68, 0x69, 0x70, 0x12, 0x2d, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x03, 0x42, 0x1d, 0xca, 0xb5, 0x03, 0x19, 0x0a, 0x02, 0x49, 0x44, 0xa2, 0x01, 0x12, 0x67, 0x6f, - 0x72, 0x6d, 0x3a, 0x22, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x6b, 0x65, 0x79, 0x22, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x40, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, - 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x42, 0x21, 0xca, 0xb5, 0x03, 0x1d, 0xa2, 0x01, - 0x1a, 0x67, 0x6f, 0x72, 0x6d, 0x3a, 0x22, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x74, 0x69, 0x6d, 0x65, 0x3a, 0x6e, 0x61, 0x6e, 0x6f, 0x22, 0x52, 0x09, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x40, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x42, 0x21, 0xca, 0xb5, 0x03, 0x1d, - 0xa2, 0x01, 0x1a, 0x67, 0x6f, 0x72, 0x6d, 0x3a, 0x22, 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x3a, 0x6e, 0x61, 0x6e, 0x6f, 0x22, 0x52, 0x09, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x64, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x2b, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x73, 0x67, 0x74, 0x6d, 0x2e, 0x52, 0x65, 0x6c, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x2e, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, - 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x38, 0x0a, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x70, - 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x42, 0x12, 0xca, 0xb5, - 0x03, 0x0e, 0x0a, 0x0c, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x73, 0x74, 0x49, 0x44, - 0x52, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x12, 0x2b, - 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x18, 0x0c, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x73, 0x67, 0x74, 0x6d, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x52, - 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0e, 0x74, - 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0d, 0x20, - 0x01, 0x28, 0x03, 0x42, 0x12, 0xca, 0xb5, 0x03, 0x0e, 0x0a, 0x0c, 0x54, 0x61, 0x72, 0x67, 0x65, - 0x74, 0x50, 0x6f, 0x73, 0x74, 0x49, 0x44, 0x52, 0x0c, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, - 0x6f, 0x73, 0x74, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, - 0x70, 0x6f, 0x73, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x73, 0x67, 0x74, - 0x6d, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x6f, - 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x75, 0x73, 0x65, - 0x72, 0x5f, 0x69, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x42, 0x12, 0xca, 0xb5, 0x03, 0x0e, - 0x0a, 0x0c, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x52, 0x0c, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x0b, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x18, 0x10, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x0a, 0x2e, 0x73, 0x67, 0x74, 0x6d, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x0a, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x0e, 0x74, 0x61, 0x72, - 0x67, 0x65, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, - 0x03, 0x42, 0x12, 0xca, 0xb5, 0x03, 0x0e, 0x0a, 0x0c, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x55, - 0x73, 0x65, 0x72, 0x49, 0x44, 0x52, 0x0c, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x55, 0x73, 0x65, - 0x72, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x75, 0x73, - 0x65, 0x72, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x73, 0x67, 0x74, 0x6d, 0x2e, - 0x55, 0x73, 0x65, 0x72, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, - 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x72, 0x61, 0x77, 0x18, 0x13, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x61, 0x77, 0x12, - 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x72, 0x61, 0x77, 0x18, 0x14, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x61, 0x77, 0x12, 0x1a, - 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x8d, 0x01, 0x0a, 0x04, 0x4b, - 0x69, 0x6e, 0x64, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x4b, 0x69, - 0x6e, 0x64, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x69, 0x6e, - 0x67, 0x55, 0x73, 0x65, 0x72, 0x4b, 0x69, 0x6e, 0x64, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x52, - 0x65, 0x6d, 0x69, 0x78, 0x4f, 0x66, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x4b, 0x69, 0x6e, 0x64, 0x10, - 0x02, 0x12, 0x19, 0x0a, 0x15, 0x4e, 0x65, 0x77, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4f, - 0x66, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x4b, 0x69, 0x6e, 0x64, 0x10, 0x03, 0x12, 0x17, 0x0a, 0x13, - 0x49, 0x6e, 0x73, 0x70, 0x69, 0x72, 0x65, 0x64, 0x42, 0x79, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x4b, - 0x69, 0x6e, 0x64, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x65, 0x6d, 0x69, 0x78, 0x4f, 0x66, - 0x55, 0x73, 0x65, 0x72, 0x4b, 0x69, 0x6e, 0x64, 0x10, 0x05, 0x22, 0x62, 0x0a, 0x07, 0x53, 0x65, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0c, 0xca, 0xb5, 0x03, 0x08, 0x0a, 0x06, 0x55, 0x73, - 0x65, 0x72, 0x49, 0x44, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x14, - 0x64, 0x69, 0x73, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x64, 0x69, 0x73, 0x63, - 0x6f, 0x72, 0x64, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x2a, 0x3a, - 0x0a, 0x0a, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x15, 0x0a, 0x11, - 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, - 0x79, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x10, 0x01, 0x12, - 0x09, 0x0a, 0x05, 0x44, 0x72, 0x61, 0x66, 0x74, 0x10, 0x02, 0x2a, 0x39, 0x0a, 0x08, 0x50, 0x72, - 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x13, 0x0a, 0x0f, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, - 0x6e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x53, - 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x49, - 0x50, 0x46, 0x53, 0x10, 0x02, 0x32, 0x8b, 0x03, 0x0a, 0x06, 0x57, 0x65, 0x62, 0x41, 0x50, 0x49, - 0x12, 0x55, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x2e, 0x73, - 0x67, 0x74, 0x6d, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x73, 0x67, 0x74, 0x6d, 0x2e, 0x55, 0x73, 0x65, 0x72, - 0x4c, 0x69, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x12, 0x10, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x55, - 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x55, 0x0a, 0x08, 0x50, 0x6f, 0x73, 0x74, 0x4c, - 0x69, 0x73, 0x74, 0x12, 0x16, 0x2e, 0x73, 0x67, 0x74, 0x6d, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x4c, + 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x52, 0x0c, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x55, 0x73, + 0x65, 0x72, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x75, + 0x73, 0x65, 0x72, 0x18, 0x66, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x73, 0x67, 0x74, 0x6d, + 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x55, 0x73, 0x65, + 0x72, 0x12, 0x38, 0x0a, 0x0e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x67, 0x20, 0x01, 0x28, 0x03, 0x42, 0x12, 0xca, 0xb5, 0x03, 0x0e, 0x0a, + 0x0c, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x49, 0x44, 0x52, 0x0c, 0x74, + 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x0b, 0x74, + 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x18, 0x68, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0a, 0x2e, 0x73, 0x67, 0x74, 0x6d, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x52, 0x0a, 0x74, 0x61, + 0x72, 0x67, 0x65, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x74, 0x61, 0x72, 0x67, + 0x65, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x69, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x12, 0x71, 0x0a, 0x17, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, + 0x70, 0x73, 0x5f, 0x61, 0x73, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x6e, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x67, 0x74, 0x6d, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x42, 0x25, 0xca, 0xb5, 0x03, 0x21, 0xa2, 0x01, 0x1e, 0x67, + 0x6f, 0x72, 0x6d, 0x3a, 0x22, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4b, 0x65, 0x79, 0x3a, + 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x73, 0x74, 0x49, 0x44, 0x22, 0x52, 0x15, 0x72, + 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x73, 0x41, 0x73, 0x53, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x12, 0x71, 0x0a, 0x17, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x68, 0x69, 0x70, 0x73, 0x5f, 0x61, 0x73, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, + 0x6f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x67, 0x74, 0x6d, 0x2e, 0x52, 0x65, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x42, 0x25, 0xca, 0xb5, 0x03, 0x21, 0xa2, + 0x01, 0x1e, 0x67, 0x6f, 0x72, 0x6d, 0x3a, 0x22, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4b, + 0x65, 0x79, 0x3a, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x49, 0x44, 0x22, + 0x52, 0x15, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x73, 0x41, + 0x73, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x22, 0x40, 0x0a, 0x0e, 0x53, 0x6f, 0x75, 0x6e, 0x64, + 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x19, 0x0a, 0x15, 0x55, 0x6e, 0x6b, + 0x6e, 0x6f, 0x77, 0x6e, 0x53, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4b, 0x69, + 0x6e, 0x64, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6c, 0x6f, + 0x75, 0x64, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x10, 0x01, 0x22, 0xbf, 0x01, 0x0a, 0x04, 0x4b, 0x69, + 0x6e, 0x64, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x4b, 0x69, 0x6e, + 0x64, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x4b, 0x69, 0x6e, 0x64, + 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x4b, 0x69, 0x6e, 0x64, 0x10, + 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4b, 0x69, 0x6e, + 0x64, 0x10, 0x03, 0x12, 0x1a, 0x0a, 0x16, 0x4c, 0x69, 0x6e, 0x6b, 0x44, 0x69, 0x73, 0x63, 0x6f, + 0x72, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x10, 0x04, 0x12, + 0x13, 0x0a, 0x0f, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x69, + 0x6e, 0x64, 0x10, 0x05, 0x12, 0x10, 0x0a, 0x0c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x6f, 0x73, 0x74, + 0x4b, 0x69, 0x6e, 0x64, 0x10, 0x06, 0x12, 0x10, 0x0a, 0x0c, 0x56, 0x69, 0x65, 0x77, 0x4f, 0x70, + 0x65, 0x6e, 0x4b, 0x69, 0x6e, 0x64, 0x10, 0x07, 0x12, 0x10, 0x0a, 0x0c, 0x56, 0x69, 0x65, 0x77, + 0x48, 0x6f, 0x6d, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x10, 0x08, 0x12, 0x0f, 0x0a, 0x0b, 0x43, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x10, 0x09, 0x22, 0x93, 0x07, 0x0a, 0x0c, + 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x12, 0x2d, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x1d, 0xca, 0xb5, 0x03, 0x19, 0x0a, 0x02, + 0x49, 0x44, 0xa2, 0x01, 0x12, 0x67, 0x6f, 0x72, 0x6d, 0x3a, 0x22, 0x70, 0x72, 0x69, 0x6d, 0x61, + 0x72, 0x79, 0x5f, 0x6b, 0x65, 0x79, 0x22, 0x52, 0x02, 0x69, 0x64, 0x12, 0x40, 0x0a, 0x0a, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x42, + 0x21, 0xca, 0xb5, 0x03, 0x1d, 0xa2, 0x01, 0x1a, 0x67, 0x6f, 0x72, 0x6d, 0x3a, 0x22, 0x61, 0x75, + 0x74, 0x6f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x3a, 0x6e, 0x61, 0x6e, + 0x6f, 0x22, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x40, 0x0a, + 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x03, 0x42, 0x21, 0xca, 0xb5, 0x03, 0x1d, 0xa2, 0x01, 0x1a, 0x67, 0x6f, 0x72, 0x6d, 0x3a, 0x22, + 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x3a, 0x6e, + 0x61, 0x6e, 0x6f, 0x22, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, + 0x1d, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x2b, + 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x73, + 0x67, 0x74, 0x6d, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, + 0x2e, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x38, 0x0a, 0x0e, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x03, 0x42, 0x12, 0xca, 0xb5, 0x03, 0x0e, 0x0a, 0x0c, 0x53, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x50, 0x6f, 0x73, 0x74, 0x49, 0x44, 0x52, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, + 0x6f, 0x73, 0x74, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, + 0x70, 0x6f, 0x73, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x73, 0x67, 0x74, + 0x6d, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, + 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x6f, 0x73, + 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x42, 0x12, 0xca, 0xb5, 0x03, 0x0e, + 0x0a, 0x0c, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x49, 0x44, 0x52, 0x0c, + 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x0b, + 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0a, 0x2e, 0x73, 0x67, 0x74, 0x6d, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x52, 0x0a, 0x74, + 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0e, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, + 0x03, 0x42, 0x12, 0xca, 0xb5, 0x03, 0x0e, 0x0a, 0x0c, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x55, + 0x73, 0x65, 0x72, 0x49, 0x44, 0x52, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x55, 0x73, 0x65, + 0x72, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x75, 0x73, + 0x65, 0x72, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x73, 0x67, 0x74, 0x6d, 0x2e, + 0x55, 0x73, 0x65, 0x72, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x55, 0x73, 0x65, 0x72, + 0x12, 0x38, 0x0a, 0x0e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, + 0x69, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x42, 0x12, 0xca, 0xb5, 0x03, 0x0e, 0x0a, 0x0c, + 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x52, 0x0c, 0x74, 0x61, + 0x72, 0x67, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x0b, 0x74, 0x61, + 0x72, 0x67, 0x65, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0a, 0x2e, 0x73, 0x67, 0x74, 0x6d, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x0a, 0x74, 0x61, 0x72, + 0x67, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x5f, 0x72, 0x61, 0x77, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x52, 0x61, 0x77, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, + 0x5f, 0x72, 0x61, 0x77, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x72, 0x67, + 0x65, 0x74, 0x52, 0x61, 0x77, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x22, 0x8d, 0x01, 0x0a, 0x04, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x6e, + 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x4b, 0x69, 0x6e, 0x64, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x46, + 0x65, 0x61, 0x74, 0x75, 0x72, 0x69, 0x6e, 0x67, 0x55, 0x73, 0x65, 0x72, 0x4b, 0x69, 0x6e, 0x64, + 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x52, 0x65, 0x6d, 0x69, 0x78, 0x4f, 0x66, 0x54, 0x72, 0x61, + 0x63, 0x6b, 0x4b, 0x69, 0x6e, 0x64, 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x4e, 0x65, 0x77, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4f, 0x66, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x4b, 0x69, 0x6e, + 0x64, 0x10, 0x03, 0x12, 0x17, 0x0a, 0x13, 0x49, 0x6e, 0x73, 0x70, 0x69, 0x72, 0x65, 0x64, 0x42, + 0x79, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x4b, 0x69, 0x6e, 0x64, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, + 0x52, 0x65, 0x6d, 0x69, 0x78, 0x4f, 0x66, 0x55, 0x73, 0x65, 0x72, 0x4b, 0x69, 0x6e, 0x64, 0x10, + 0x05, 0x22, 0x62, 0x0a, 0x07, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x07, + 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0c, 0xca, + 0xb5, 0x03, 0x08, 0x0a, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x52, 0x06, 0x75, 0x73, 0x65, + 0x72, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x61, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x12, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x72, 0x64, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x2a, 0x3a, 0x0a, 0x0a, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, + 0x69, 0x74, 0x79, 0x12, 0x15, 0x0a, 0x11, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x56, 0x69, + 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x75, + 0x62, 0x6c, 0x69, 0x63, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x44, 0x72, 0x61, 0x66, 0x74, 0x10, + 0x02, 0x2a, 0x39, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x13, 0x0a, + 0x0f, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, + 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6c, 0x6f, 0x75, 0x64, + 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x49, 0x50, 0x46, 0x53, 0x10, 0x02, 0x32, 0x8b, 0x03, 0x0a, + 0x06, 0x57, 0x65, 0x62, 0x41, 0x50, 0x49, 0x12, 0x55, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x4c, + 0x69, 0x73, 0x74, 0x12, 0x16, 0x2e, 0x73, 0x67, 0x74, 0x6d, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x73, 0x67, - 0x74, 0x6d, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x73, 0x70, + 0x74, 0x6d, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x12, 0x10, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x50, 0x6f, 0x73, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x3d, - 0x0a, 0x02, 0x4d, 0x65, 0x12, 0x10, 0x2e, 0x73, 0x67, 0x74, 0x6d, 0x2e, 0x4d, 0x65, 0x2e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x11, 0x2e, 0x73, 0x67, 0x74, 0x6d, 0x2e, 0x4d, 0x65, - 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x12, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x0c, 0x12, 0x0a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x4d, 0x65, 0x12, 0x45, 0x0a, - 0x04, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x12, 0x2e, 0x73, 0x67, 0x74, 0x6d, 0x2e, 0x50, 0x69, 0x6e, - 0x67, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x73, 0x67, 0x74, 0x6d, - 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x14, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0e, 0x12, 0x0c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, - 0x50, 0x69, 0x6e, 0x67, 0x12, 0x4d, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, - 0x2e, 0x73, 0x67, 0x74, 0x6d, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x73, 0x67, 0x74, 0x6d, 0x2e, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x16, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x10, 0x12, 0x0e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x42, 0x19, 0x5a, 0x17, 0x6d, 0x6f, 0x75, 0x6c, 0x2e, 0x69, 0x6f, 0x2f, 0x73, - 0x67, 0x74, 0x6d, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x73, 0x67, 0x74, 0x6d, 0x70, 0x62, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x55, + 0x0a, 0x08, 0x50, 0x6f, 0x73, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x2e, 0x73, 0x67, 0x74, + 0x6d, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x73, 0x67, 0x74, 0x6d, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x4c, 0x69, + 0x73, 0x74, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x12, 0x12, 0x10, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x50, 0x6f, 0x73, + 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x02, 0x4d, 0x65, 0x12, 0x10, 0x2e, 0x73, 0x67, + 0x74, 0x6d, 0x2e, 0x4d, 0x65, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x11, 0x2e, + 0x73, 0x67, 0x74, 0x6d, 0x2e, 0x4d, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x12, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0c, 0x12, 0x0a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, + 0x31, 0x2f, 0x4d, 0x65, 0x12, 0x45, 0x0a, 0x04, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x12, 0x2e, 0x73, + 0x67, 0x74, 0x6d, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x13, 0x2e, 0x73, 0x67, 0x74, 0x6d, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x2e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x14, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0e, 0x12, 0x0c, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x4d, 0x0a, 0x06, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x2e, 0x73, 0x67, 0x74, 0x6d, 0x2e, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x73, 0x67, + 0x74, 0x6d, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x12, 0x0e, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x76, 0x31, 0x2f, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x19, 0x5a, 0x17, 0x6d, 0x6f, + 0x75, 0x6c, 0x2e, 0x69, 0x6f, 0x2f, 0x73, 0x67, 0x74, 0x6d, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x73, + 0x67, 0x74, 0x6d, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var (