diff --git a/build/artShowServerProd b/build/artShowServerProd index da640df..3b49040 100644 Binary files a/build/artShowServerProd and b/build/artShowServerProd differ diff --git a/build/artShowServerTest b/build/artShowServerTest index da640df..ea662ed 100644 Binary files a/build/artShowServerTest and b/build/artShowServerTest differ diff --git a/cmd/controller/art_show.go b/cmd/controller/art_show.go index fec432e..c54bc68 100644 --- a/cmd/controller/art_show.go +++ b/cmd/controller/art_show.go @@ -13,7 +13,8 @@ type ArtShowProvider struct { artShow.UnimplementedArtShowServer } -func (p *ArtShowProvider) CreateShow(ctx context.Context, req *artShow.SaveShowReq) (res *artShow.SaveShowRes, err error) { +func (p *ArtShowProvider) CreateShow(_ context.Context, req *artShow.SaveShowReq) (res *artShow.SaveShowRes, err error) { + //fmt.Println("artShow create info ======== ", req.ShowSeq) if req.ShowName == "" { err = errors.New(m.ERROR_SHOW_NAME) return nil, err @@ -22,11 +23,16 @@ func (p *ArtShowProvider) CreateShow(ctx context.Context, req *artShow.SaveShowR err = errors.New(m.ERROR_TIME) return nil, err } + if req.ShowSeq == "" { + err = errors.New(m.ERROR_NOT_ARTIST_SEQ) + return nil, err + } + res = new(artShow.SaveShowRes) err, showUID := service.CreateArtShowWithArtworkPrice(req) if err != nil { res.Msg = err.Error() - err = errors.New(m.ERROR_CREATE) + err = errors.New(err.Error()) return res, err } res.Msg = m.CREATE_SUCCESS @@ -34,7 +40,7 @@ func (p *ArtShowProvider) CreateShow(ctx context.Context, req *artShow.SaveShowR return res, nil } -func (p *ArtShowProvider) UpdateShow(ctx context.Context, req *artShow.SaveShowReq) (res *artShow.SaveShowRes, err error) { +func (p *ArtShowProvider) UpdateShow(_ context.Context, req *artShow.SaveShowReq) (res *artShow.SaveShowRes, err error) { if req.ShowUID == "" { err = errors.New(m.ERROR_INVALID_ID) return @@ -63,9 +69,9 @@ func (p *ArtShowProvider) UpdateShow(ctx context.Context, req *artShow.SaveShowR return } -func (p *ArtShowProvider) DelShow(ctx context.Context, req *artShow.DelShowReq) (res *artShow.CommonRes, err error) { +func (p *ArtShowProvider) DelShow(_ context.Context, req *artShow.DelShowReq) (res *artShow.CommonRes, err error) { res = new(artShow.CommonRes) - if len(req.ShowUID) < 1 { + if len(req.ShowUID) == 0 { err = errors.New(m.ERROR_INVALID_ID) return } @@ -79,7 +85,7 @@ func (p *ArtShowProvider) DelShow(ctx context.Context, req *artShow.DelShowReq) return } -func (p *ArtShowProvider) ShowList(ctx context.Context, req *artShow.ShowListReq) (res *artShow.ShowListRes, err error) { +func (p *ArtShowProvider) ShowList(_ context.Context, req *artShow.ShowListReq) (res *artShow.ShowListRes, err error) { if req.Page == 0 { req.Page = 1 } @@ -96,7 +102,7 @@ func (p *ArtShowProvider) ShowList(ctx context.Context, req *artShow.ShowListReq return } -func (p *ArtShowProvider) ShowListWithRel(ctx context.Context, req *artShow.ShowListReq) (res *artShow.ShowListRes, err error) { +func (p *ArtShowProvider) ShowListWithRel(_ context.Context, req *artShow.ShowListReq) (res *artShow.ShowListRes, err error) { if req.Page == 0 { req.Page = 1 } @@ -113,7 +119,7 @@ func (p *ArtShowProvider) ShowListWithRel(ctx context.Context, req *artShow.Show return } -func (p *ArtShowProvider) ShowArtworkInfo(ctx context.Context, req *artShow.ArtworkDetailReq) (res *artShow.ShowArtworkDetailRes, err error) { +func (p *ArtShowProvider) ShowArtworkInfo(_ context.Context, req *artShow.ArtworkDetailReq) (res *artShow.ShowArtworkDetailRes, err error) { err, res = service.ShowArtworkInfo(req) if err != nil { res.Msg = err.Error() @@ -123,7 +129,7 @@ func (p *ArtShowProvider) ShowArtworkInfo(ctx context.Context, req *artShow.Artw return } -func (p *ArtShowProvider) ShowDetail(ctx context.Context, req *artShow.ShowDetailReq) (res *artShow.ShowDetailRes, err error) { +func (p *ArtShowProvider) ShowDetail(_ context.Context, req *artShow.ShowDetailReq) (res *artShow.ShowDetailRes, err error) { res = new(artShow.ShowDetailRes) err, res = service.ShowDetail(req) if err != nil { @@ -134,7 +140,7 @@ func (p *ArtShowProvider) ShowDetail(ctx context.Context, req *artShow.ShowDetai return } -func (p *ArtShowProvider) ShowStatisticalInfo(ctx context.Context, req *artShow.ShowStatisticalInfoReq) (res *artShow.ShowStatisticalInfoRes, err error) { +func (p *ArtShowProvider) ShowStatisticalInfo(_ context.Context, req *artShow.ShowStatisticalInfoReq) (res *artShow.ShowStatisticalInfoRes, err error) { res = new(artShow.ShowStatisticalInfoRes) err, num := service.ShowStatisticalInfo(req) if err != nil { @@ -146,7 +152,7 @@ func (p *ArtShowProvider) ShowStatisticalInfo(ctx context.Context, req *artShow. return } -func (p *ArtShowProvider) ArtworkPrice(ctx context.Context, req *artShow.ArtworkPriceReq) (res *artShow.ArtworkPriceRes, err error) { +func (p *ArtShowProvider) ArtworkPrice(_ context.Context, req *artShow.ArtworkPriceReq) (res *artShow.ArtworkPriceRes, err error) { if req.ArtworkUID == "" { err = errors.New(m.ERROR_INVALID_ID) return @@ -161,15 +167,15 @@ func (p *ArtShowProvider) ArtworkPrice(ctx context.Context, req *artShow.Artwork return } -func (p *ArtShowProvider) ShowListWithApply(ctx context.Context, req *artShow.ShowListReq) (res *artShow.ShowListRes, err error) { +func (p *ArtShowProvider) ShowListWithApply(_ context.Context, req *artShow.ShowListReq) (res *artShow.ShowListRes, err error) { if req.Page == 0 { req.Page = 1 } if req.PageSize == 0 { req.Page = 10 } - if req.IsShow == 0 { - req.IsShow = 2 + if len(req.IsShow) == 0 { + req.IsShow = append(req.IsShow, 2) } res = new(artShow.ShowListRes) err, res = service.ArtShowListWithApply(req) @@ -181,7 +187,7 @@ func (p *ArtShowProvider) ShowListWithApply(ctx context.Context, req *artShow.Sh return } -func (p *ArtShowProvider) ShowListForArtwork(ctx context.Context, req *artShow.ShowListForArtworkReq) (res *artShow.ShowListForArtworkRes, err error) { +func (p *ArtShowProvider) ShowListForArtwork(_ context.Context, req *artShow.ShowListForArtworkReq) (res *artShow.ShowListForArtworkRes, err error) { if req.Page == 0 { req.Page = 1 } @@ -198,7 +204,7 @@ func (p *ArtShowProvider) ShowListForArtwork(ctx context.Context, req *artShow.S return } -func (p *ArtShowProvider) ArtworkPriceList(ctx context.Context, req *artShow.ShowDetailReq) (res *artShow.ArtworkPriceListRes, err error) { +func (p *ArtShowProvider) ArtworkPriceList(_ context.Context, req *artShow.ShowDetailReq) (res *artShow.ArtworkPriceListRes, err error) { if len(req.ShowUID) != 1 && req.ShowUID[len(req.ShowUID)-1] == "" { res.Msg = err.Error() err = errors.New(m.ERROR_QUERY) diff --git a/cmd/controller/show_apply.go b/cmd/controller/show_apply.go index 28c4703..c9f55ea 100644 --- a/cmd/controller/show_apply.go +++ b/cmd/controller/show_apply.go @@ -8,7 +8,7 @@ import ( "fonchain-artshow/pkg/m" ) -func (p *ArtShowProvider) CreateApply(ctx context.Context, req *artShow.SaveApplyReq) (res *artShow.SaveApplyRes, err error) { +func (p *ArtShowProvider) CreateApply(_ context.Context, req *artShow.SaveApplyReq) (res *artShow.SaveApplyRes, err error) { if req.Applicant == "" { err = errors.New(m.ERROR_APPLICANT) return @@ -29,7 +29,7 @@ func (p *ArtShowProvider) CreateApply(ctx context.Context, req *artShow.SaveAppl return } -func (p *ArtShowProvider) UpdateApply(ctx context.Context, req *artShow.SaveApplyReq) (res *artShow.SaveApplyRes, err error) { +func (p *ArtShowProvider) UpdateApply(_ context.Context, req *artShow.SaveApplyReq) (res *artShow.SaveApplyRes, err error) { if req.ApplyUID == "" { err = errors.New(m.ERROR_INVALID_ID) return @@ -46,7 +46,7 @@ func (p *ArtShowProvider) UpdateApply(ctx context.Context, req *artShow.SaveAppl return } -func (p *ArtShowProvider) ApplyList(ctx context.Context, req *artShow.ApplyListReq) (res *artShow.ApplyListRes, err error) { +func (p *ArtShowProvider) ApplyList(_ context.Context, req *artShow.ApplyListReq) (res *artShow.ApplyListRes, err error) { res = new(artShow.ApplyListRes) if req.Page == 0 { req.Page = 1 @@ -63,7 +63,7 @@ func (p *ArtShowProvider) ApplyList(ctx context.Context, req *artShow.ApplyListR return } -func (p *ArtShowProvider) ApplyDetail(ctx context.Context, req *artShow.ApplyShowReq) (res *artShow.ApplyShowRes, err error) { +func (p *ArtShowProvider) ApplyDetail(_ context.Context, req *artShow.ApplyShowReq) (res *artShow.ApplyShowRes, err error) { if req.ApplyUID == "" { err = errors.New(m.ERROR_INVALID_ID) return @@ -78,7 +78,7 @@ func (p *ArtShowProvider) ApplyDetail(ctx context.Context, req *artShow.ApplySho return } -func (p *ArtShowProvider) DelApply(ctx context.Context, req *artShow.DelApplyReq) (res *artShow.CommonRes, err error) { +func (p *ArtShowProvider) DelApply(_ context.Context, req *artShow.DelApplyReq) (res *artShow.CommonRes, err error) { if len(req.ApplyUID) < 1 { err = errors.New(m.ERROR_INVALID_ID) return @@ -94,7 +94,7 @@ func (p *ArtShowProvider) DelApply(ctx context.Context, req *artShow.DelApplyReq return } -func (p *ArtShowProvider) UpdateApplyStatus(ctx context.Context, req *artShow.UpdateApplyStatusReq) (res *artShow.CommonRes, err error) { +func (p *ArtShowProvider) UpdateApplyStatus(_ context.Context, req *artShow.UpdateApplyStatusReq) (res *artShow.CommonRes, err error) { if req.ApplyUID == "" { err = errors.New(m.ERROR_INVALID_ID) return diff --git a/cmd/dao/art_show.go b/cmd/dao/art_show.go index ba25f78..ffb4fb9 100644 --- a/cmd/dao/art_show.go +++ b/cmd/dao/art_show.go @@ -8,6 +8,7 @@ import ( uuid "github.com/satori/go.uuid" "go.uber.org/zap" "gorm.io/gorm" + "strconv" "strings" "time" ) @@ -18,7 +19,15 @@ func SaveArtShow(tx *gorm.DB, artShow *model.ArtShow) (err error) { return nil } artShow.ShowUID = uid.String() - artShow.ShowSeq = strings.Join([]string{m.ARTSHOW_PREFIX, time.Now().Format("20060102150405")}, "") + artShow.ShowSeq = strings.Replace(artShow.ShowSeq, "T", m.ARTSHOW_PREFIX, -1) + num := countArtistNumInShowCurrentYear(artShow.ArtistUID) + if num < 10 { + artShow.ShowSeq = strings.Join([]string{artShow.ShowSeq, time.Now().Format("06"), "00" + strconv.FormatInt(num, 10)}, "") + } else if num >= 10 && num < 100 { + artShow.ShowSeq = strings.Join([]string{artShow.ShowSeq, time.Now().Format("06"), "0" + strconv.FormatInt(num, 10)}, "") + } else if num >= 100 { + artShow.ShowSeq = strings.Join([]string{artShow.ShowSeq, time.Now().Format("06"), strconv.FormatInt(num, 10)}, "") + } err = tx.Model(&model.ArtShow{}).Create(&artShow).Error if err != nil { zap.L().Error("ArtShow err", zap.Error(err)) @@ -58,13 +67,9 @@ func ArtShowListWithRel(in *artShow.ShowListReq) (err error, total int64, out [] queryDB.Where(" a.show_seq like ? ", "%"+in.ShowSeq+"%") countDB.Where(" a.show_seq like ? ", "%"+in.ShowSeq+"%") } - if in.IsShow != 0 { - queryDB.Where(" a.is_show = ?", in.IsShow) - countDB.Where(" a.is_show = ?", in.IsShow) - } - if in.StartTime != "" && in.EndTime != "" { - queryDB.Where("convert(a.create_time, date) between ? and ?", in.StartTime, in.EndTime) - countDB.Where("convert(a.create_time, date) between ? and ?", in.StartTime, in.EndTime) + if in.StartShowTime != "" && in.EndShowTime != "" { + queryDB.Where("c.show_time between ? and ?", in.StartShowTime, in.EndShowTime) + countDB.Where("c.show_time between ? and ?", in.StartShowTime, in.EndShowTime) } if in.EndPrice != 0 { queryDB.Where(" a.price between ? and ?", in.StartPrice, in.EndPrice) @@ -74,7 +79,14 @@ func ArtShowListWithRel(in *artShow.ShowListReq) (err error, total int64, out [] queryDB.Where(" a.reward between ? and ?", in.StartReward, in.EndReward) countDB.Where(" a.reward between ? and ?", in.StartReward, in.EndReward) } - + if in.Address != "" { + queryDB.Where(" c.address like ?", "%"+in.Address+"%") + countDB.Where(" c.address like ?", "%"+in.Address+"%") + } + if len(in.IsShow) > 0 { + queryDB.Where(" a.is_show in ?", in.IsShow) + countDB.Where(" a.is_show in ?", in.IsShow) + } //selectDb := queryDB //countDb := queryDB @@ -99,12 +111,12 @@ func ArtShowList(in *artShow.ShowListReq) (err error, total int64, out []*model. queryDB := db.DbArtShow.Model(&model.ArtShow{}). Select("show_uid, show_seq, show_name, artist_name, artist_uid, artwork_num, ruler, price, create_time, operator, is_show") - if in.IsShow != 0 { - queryDB.Where(" is_show = ?", in.IsShow) - } - if in.StartTime != "" && in.EndTime != "" { - queryDB.Where("convert(a.create_time, date) between ? and ?", in.StartTime, in.EndTime) + if len(in.IsShow) > 0 { + queryDB.Where(" is_show in ?", in.IsShow) } + //if in.StartTime != "" && in.EndTime != "" { + // queryDB.Where("convert(a.create_time, date) between ? and ?", in.StartTime, in.EndTime) + //} out = make([]*model.ArtShowRes, 0) err = queryDB.Offset(int((in.Page - 1) * in.PageSize)). @@ -134,7 +146,7 @@ func ArtShowList_apply(applyUID string) (err error, out []*model.ArtShowRes) { func ArtShowListByApplyStatus(in *artShow.ShowListReq) (err error, total int64, out []*model.ArtShowRes) { out = make([]*model.ArtShowRes, 0) - queryDB := db.DbArtShow.Table("art_show as a").Select("a.show_uid, a.show_seq, a.show_name, a.artist_name, a.artist_uid, a.artwork_num, a.ruler, a.price, a.create_time, a.is_show, b.address ,b.show_time").Joins(" left join show_rel as b on b.show_uid = a.show_uid").Where("a.is_show = ?", in.IsShow) + queryDB := db.DbArtShow.Table("art_show as a").Select("a.show_uid, a.show_seq, a.show_name, a.artist_name, a.artist_uid, a.artwork_num, a.ruler, a.price, a.create_time, a.is_show, b.address ,b.show_time").Joins(" left join show_rel as b on b.show_uid = a.show_uid").Where("a.is_show = ?", in.IsShow[len(in.IsShow)-1]) err = queryDB.Count(&total).Error if err != nil { zap.L().Error("ArtShowListByApplyStatus Count err", zap.Error(err)) @@ -150,8 +162,8 @@ func ArtShowListByApplyStatus(in *artShow.ShowListReq) (err error, total int64, return } -func DelArtShow(tx *gorm.DB, show_uid string) (err error) { - err = tx.Where("show_uid = ?", show_uid).Delete(&model.ArtShow{}).Error +func DelArtShow(tx *gorm.DB, showUid string) (err error) { + err = tx.Where("show_uid = ?", showUid).Delete(&model.ArtShow{}).Error if err != nil { zap.L().Error("ArtShow delete err", zap.Error(err)) return @@ -159,9 +171,19 @@ func DelArtShow(tx *gorm.DB, show_uid string) (err error) { return nil } -func QueryArtShow(show_uid []string) (err error, out []*model.ArtShowRes) { +func UniqueShowName(showName string) (out *model.ArtShowRes, err error) { + out = new(model.ArtShowRes) + err = db.DbArtShow.Table("art_show as a ").Select("a.show_uid").Joins("left join show_rel as b on a.show_uid = b.show_uid").Where("a.show_name = ?", showName).Find(&out).Error + if err != nil { + zap.L().Error("ArtShow Find err", zap.Error(err)) + return + } + return +} + +func QueryArtShow(showUids []string) (err error, out []*model.ArtShowRes) { out = make([]*model.ArtShowRes, 0) - err = db.DbArtShow.Table("art_show as a ").Select("a.show_uid, a.show_seq, a.show_name, a.artist_name, a.artist_uid, a.artwork_num, a.ruler, a.price, a.create_time, a.operator,a.is_show, b.address ,b.show_time").Joins("left join show_rel as b on a.show_uid = b.show_uid").Where("a.show_uid in ?", show_uid).Find(&out).Error + err = db.DbArtShow.Table("art_show as a ").Select("a.show_uid, a.show_seq, a.show_name, a.artist_name, a.artist_uid, a.artwork_num, a.ruler, a.price, a.create_time, a.operator,a.is_show, b.address ,b.show_time").Joins("left join show_rel as b on a.show_uid = b.show_uid").Where("a.show_uid in ?", showUids).Find(&out).Error if err != nil { zap.L().Error("ArtShow Find err", zap.Error(err)) return @@ -226,3 +248,12 @@ func QueryArtShowForArtwork(in *artShow.ShowListForArtworkReq) (err error, total } return } + +func countArtistNumInShowCurrentYear(artistUid string) (num int64) { + err := db.DbArtShow.Table("art_show").Where("artist_uid = ? and date_format(created_at,\"%Y\") = ? ", artistUid, time.Now().Format("2006")).Count(&num).Error + if err != nil { + return -1 + } + num = num + 1 + return +} diff --git a/cmd/service/art_show.go b/cmd/service/art_show.go index 7409685..e1672c6 100644 --- a/cmd/service/art_show.go +++ b/cmd/service/art_show.go @@ -2,7 +2,6 @@ package service import ( "errors" - "fmt" "fonchain-artshow/cmd/dao" "fonchain-artshow/cmd/model" "fonchain-artshow/pb/artShow" @@ -15,6 +14,15 @@ import ( func CreateArtShowWithArtworkPrice(in *artShow.SaveShowReq) (err error, showUID string) { artShowM := serializer.BuildArtShowM(in) + out, err := dao.UniqueShowName(in.ShowName) + if err != nil { + return err, "" + } + + if out.ShowUID != "" { + return errors.New(m.ERROR_SHOW_EXIST), "" + } + tx := db.DbArtShow.Begin() err = dao.SaveArtShow(tx, artShowM) @@ -32,7 +40,7 @@ func CreateArtShowWithArtworkPrice(in *artShow.SaveShowReq) (err error, showUID err = dao.SaveArtworkPrice(tx, artworks[i]) if err != nil { tx.Rollback() - return + return errors.New(m.ERROR_ARTWORK_CREATE), "" } } } @@ -49,7 +57,7 @@ func UpdateArtShowWithArtworkPrice(in *artShow.SaveShowReq) (err error, showUID artworks := make([]*model.ArtworkPrice, 0) // 查询是否已有画作存在 - err, artworkPrices := dao.ArtworkPriceList(in.ShowUID) + /*err, artworkPrices := dao.ArtworkPriceList(in.ShowUID) if err != nil { return } @@ -57,12 +65,24 @@ func UpdateArtShowWithArtworkPrice(in *artShow.SaveShowReq) (err error, showUID if len(artworkPrices) > 0 { artworks = append(artworks, artworkPrices...) - } + }*/ // 判断是否有新增画作 if len(in.Artwork) > 0 { - showArtwork := serializer.BuildShowArtworkM(in.Artwork, in.ShowUID) - artworks = append(artworks, showArtwork...) + for i := 0; i < len(in.Artwork); i++ { + if in.Artwork[i].ArtworkPriceUID != "" { + queryErr, oldArtwork := dao.QueryArtworkPrice_uid(in.Artwork[i].ArtworkPriceUID) + if queryErr != nil { + return queryErr, "" + } + artworks = append(artworks, oldArtwork) + //fmt.Println("artworkPrices ==== ", oldArtwork) + } else { + newArtwork := serializer.BuildShowArtwork(in.Artwork[i], in.ShowUID) + artworks = append(artworks, newArtwork) + //fmt.Println("artworkPrices ==== ", newArtwork) + } + } } // 更新 画作 diff --git a/conf/conf.ini b/conf/conf.ini index 111ca88..538d0c4 100644 --- a/conf/conf.ini +++ b/conf/conf.ini @@ -11,14 +11,23 @@ mode = prod #正式prod #测试dev ;DbPassWord = 123456 ;DbName = art_show -;正式服 -[mysql] -Db = mysql -DbHost = mysql -DbPort = 3306 -DbUser = root -DbPassWord = sLl0b7stlbwvZ883TV -DbName = art_show +;正式服 192.168.12.3 +;[mysql] +;Db = mysql +;DbHost = mysql +;DbPort = 3306 +;DbUser = root +;DbPassWord = sLl0b7stlbwvZ883TV +;DbName = art_show + +;正式服 172.16.100.30 +;[mysql] +;Db = mysql +;DbHost = 172.16.100.30 +;DbPort = 3306 +;DbUser = root +;DbPassWord = IhQmhg8HZjDmU=Ove5PnA^D +;DbName = art_show ;188 ;[mysql] @@ -30,13 +39,14 @@ DbName = art_show ;DbName = art_show ;214 -;[mysql] -;Db = mysql +[mysql] +Db = mysql ;DbHost = 172.16.100.99 #214 -;DbPort = 9007 -;DbUser = artuser -;DbPassWord = "C250PflXIWv2SQm8" -;DbName = art_show +DbHost = 172.16.39.93 #214 +DbPort = 9007 +DbUser = artuser +DbPassWord = "C250PflXIWv2SQm8" +DbName = art_show ;[mysql] ;Db = mysql diff --git a/conf/dubbogo.yaml b/conf/dubbogo.yaml index 86ac194..1cd70be 100644 --- a/conf/dubbogo.yaml +++ b/conf/dubbogo.yaml @@ -3,8 +3,8 @@ dubbo: demoZK: protocol: zookeeper timeout: 3s - address: zookeeper:2181 # 正式服务 -# address: 127.0.0.1:2181 # 测试服务 +# address: zookeeper:2181 # 正式服务 + address: 127.0.0.1:2181 # 测试服务 protocols: triple: #triple name: tri diff --git a/pb/artShow/artshow.pb.go b/pb/artShow/artshow.pb.go index ddade11..3062707 100644 --- a/pb/artShow/artshow.pb.go +++ b/pb/artShow/artshow.pb.go @@ -25,19 +25,20 @@ type SaveShowReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ShowName string `protobuf:"bytes,1,opt,name=ShowName,json=show_name,proto3" json:"ShowName,omitempty"` - ArtistName string `protobuf:"bytes,2,opt,name=ArtistName,json=artist_name,proto3" json:"ArtistName,omitempty"` - ArtistUID string `protobuf:"bytes,3,opt,name=ArtistUID,json=artist_uid,proto3" json:"ArtistUID,omitempty"` - ArtworkNum int32 `protobuf:"varint,4,opt,name=ArtworkNum,json=artwork_num,proto3" json:"ArtworkNum,omitempty"` - Ruler int32 `protobuf:"varint,5,opt,name=Ruler,json=ruler,proto3" json:"Ruler,omitempty"` - Price int64 `protobuf:"varint,6,opt,name=Price,json=price,proto3" json:"Price,omitempty"` - Reward int64 `protobuf:"varint,7,opt,name=Reward,json=reward,proto3" json:"Reward,omitempty"` - IsShow int32 `protobuf:"varint,8,opt,name=IsShow,json=is_show,proto3" json:"IsShow,omitempty"` - CreateTime string `protobuf:"bytes,9,opt,name=CreateTime,json=create_time,proto3" json:"CreateTime,omitempty"` - Operator string `protobuf:"bytes,10,opt,name=Operator,json=operator,proto3" json:"Operator,omitempty"` - ShowUID string `protobuf:"bytes,11,opt,name=ShowUID,json=id,proto3" json:"ShowUID,omitempty"` - Artwork []*ArtworkDetail `protobuf:"bytes,12,rep,name=Artwork,json=show_artwork,proto3" json:"Artwork,omitempty"` - DelArtwork []*DelArtworkDetail `protobuf:"bytes,13,rep,name=DelArtwork,json=del_show_artwork,proto3" json:"DelArtwork,omitempty"` + ShowName string `protobuf:"bytes,1,opt,name=ShowName,json=show_name,proto3" json:"ShowName"` + ArtistName string `protobuf:"bytes,2,opt,name=ArtistName,json=artist_name,proto3" json:"ArtistName"` + ArtistUID string `protobuf:"bytes,3,opt,name=ArtistUID,json=artist_uid,proto3" json:"ArtistUID"` + ArtworkNum int32 `protobuf:"varint,4,opt,name=ArtworkNum,json=artwork_num,proto3" json:"ArtworkNum"` + Ruler int32 `protobuf:"varint,5,opt,name=Ruler,json=ruler,proto3" json:"Ruler"` + Price int64 `protobuf:"varint,6,opt,name=Price,json=price,proto3" json:"Price"` + Reward int64 `protobuf:"varint,7,opt,name=Reward,json=reward,proto3" json:"Reward"` + IsShow int32 `protobuf:"varint,8,opt,name=IsShow,json=is_show,proto3" json:"IsShow"` + CreateTime string `protobuf:"bytes,9,opt,name=CreateTime,json=create_time,proto3" json:"CreateTime"` + Operator string `protobuf:"bytes,10,opt,name=Operator,json=operator,proto3" json:"Operator"` + ShowSeq string `protobuf:"bytes,11,opt,name=ShowSeq,json=show_seq,proto3" json:"ShowSeq"` + ShowUID string `protobuf:"bytes,12,opt,name=ShowUID,json=id,proto3" json:"ShowUID"` + Artwork []*ArtworkDetail `protobuf:"bytes,13,rep,name=Artwork,json=show_artwork,proto3" json:"Artwork"` + DelArtwork []*DelArtworkDetail `protobuf:"bytes,14,rep,name=DelArtwork,json=del_show_artwork,proto3" json:"DelArtwork"` } func (x *SaveShowReq) Reset() { @@ -142,6 +143,13 @@ func (x *SaveShowReq) GetOperator() string { return "" } +func (x *SaveShowReq) GetShowSeq() string { + if x != nil { + return x.ShowSeq + } + return "" +} + func (x *SaveShowReq) GetShowUID() string { if x != nil { return x.ShowUID @@ -168,8 +176,8 @@ type SaveShowRes struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Msg string `protobuf:"bytes,1,opt,name=Msg,json=msg,proto3" json:"Msg,omitempty"` - ShowUID string `protobuf:"bytes,2,opt,name=ShowUID,json=show_uid,proto3" json:"ShowUID,omitempty"` + Msg string `protobuf:"bytes,1,opt,name=Msg,json=msg,proto3" json:"Msg"` + ShowUID string `protobuf:"bytes,2,opt,name=ShowUID,json=show_uid,proto3" json:"ShowUID"` } func (x *SaveShowRes) Reset() { @@ -223,7 +231,7 @@ type CommonRes struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Msg string `protobuf:"bytes,1,opt,name=Msg,json=msg,proto3" json:"Msg,omitempty"` + Msg string `protobuf:"bytes,1,opt,name=Msg,json=msg,proto3" json:"Msg"` } func (x *CommonRes) Reset() { @@ -271,7 +279,7 @@ type ShowDetailReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ShowUID []string `protobuf:"bytes,1,rep,name=ShowUID,json=show_uid,proto3" json:"ShowUID,omitempty"` + ShowUID []string `protobuf:"bytes,1,rep,name=ShowUID,json=show_uid,proto3" json:"ShowUID"` } func (x *ShowDetailReq) Reset() { @@ -318,7 +326,7 @@ type ArtworkDetailReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ShowUID string `protobuf:"bytes,1,opt,name=ShowUID,json=show_uid,proto3" json:"ShowUID,omitempty"` + ShowUID string `protobuf:"bytes,1,opt,name=ShowUID,json=show_uid,proto3" json:"ShowUID"` } func (x *ArtworkDetailReq) Reset() { @@ -365,20 +373,20 @@ type ShowDetail struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ShowUID string `protobuf:"bytes,1,opt,name=ShowUID,json=show_uid,proto3" json:"ShowUID,omitempty"` - ShowSeq string `protobuf:"bytes,2,opt,name=ShowSeq,json=show_seq,proto3" json:"ShowSeq,omitempty"` - ShowName string `protobuf:"bytes,3,opt,name=ShowName,json=show_name,proto3" json:"ShowName,omitempty"` - ArtistName string `protobuf:"bytes,4,opt,name=ArtistName,json=artist_name,proto3" json:"ArtistName,omitempty"` - ArtistUID string `protobuf:"bytes,5,opt,name=ArtistUID,json=artist_uid,proto3" json:"ArtistUID,omitempty"` - ArtworkNum int32 `protobuf:"varint,6,opt,name=ArtworkNum,json=artwork_num,proto3" json:"ArtworkNum,omitempty"` - Ruler int32 `protobuf:"varint,7,opt,name=Ruler,json=ruler,proto3" json:"Ruler,omitempty"` - Price int64 `protobuf:"varint,8,opt,name=Price,json=price,proto3" json:"Price,omitempty"` - Reward int64 `protobuf:"varint,9,opt,name=Reward,json=reward,proto3" json:"Reward,omitempty"` - CreateTime string `protobuf:"bytes,10,opt,name=CreateTime,json=create_time,proto3" json:"CreateTime,omitempty"` - Operator string `protobuf:"bytes,11,opt,name=Operator,json=operator,proto3" json:"Operator,omitempty"` - IsShow int32 `protobuf:"varint,12,opt,name=IsShow,json=is_show,proto3" json:"IsShow,omitempty"` - ShowTime string `protobuf:"bytes,13,opt,name=ShowTime,json=show_time,proto3" json:"ShowTime,omitempty"` - Address string `protobuf:"bytes,14,opt,name=Address,json=address,proto3" json:"Address,omitempty"` + ShowUID string `protobuf:"bytes,1,opt,name=ShowUID,json=show_uid,proto3" json:"ShowUID"` + ShowSeq string `protobuf:"bytes,2,opt,name=ShowSeq,json=show_seq,proto3" json:"ShowSeq"` + ShowName string `protobuf:"bytes,3,opt,name=ShowName,json=show_name,proto3" json:"ShowName"` + ArtistName string `protobuf:"bytes,4,opt,name=ArtistName,json=artist_name,proto3" json:"ArtistName"` + ArtistUID string `protobuf:"bytes,5,opt,name=ArtistUID,json=artist_uid,proto3" json:"ArtistUID"` + ArtworkNum int32 `protobuf:"varint,6,opt,name=ArtworkNum,json=artwork_num,proto3" json:"ArtworkNum"` + Ruler int32 `protobuf:"varint,7,opt,name=Ruler,json=ruler,proto3" json:"Ruler"` + Price int64 `protobuf:"varint,8,opt,name=Price,json=price,proto3" json:"Price"` + Reward int64 `protobuf:"varint,9,opt,name=Reward,json=reward,proto3" json:"Reward"` + CreateTime string `protobuf:"bytes,10,opt,name=CreateTime,json=create_time,proto3" json:"CreateTime"` + Operator string `protobuf:"bytes,11,opt,name=Operator,json=operator,proto3" json:"Operator"` + IsShow int32 `protobuf:"varint,12,opt,name=IsShow,json=is_show,proto3" json:"IsShow"` + ShowTime string `protobuf:"bytes,13,opt,name=ShowTime,json=show_time,proto3" json:"ShowTime"` + Address string `protobuf:"bytes,14,opt,name=Address,json=address,proto3" json:"Address"` } func (x *ShowDetail) Reset() { @@ -516,8 +524,8 @@ type ShowDetailRes struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Data []*ShowDetail `protobuf:"bytes,1,rep,name=Data,json=data,proto3" json:"Data,omitempty"` - Msg string `protobuf:"bytes,2,opt,name=Msg,json=msg,proto3" json:"Msg,omitempty"` + Data []*ShowDetail `protobuf:"bytes,1,rep,name=Data,json=data,proto3" json:"Data"` + Msg string `protobuf:"bytes,2,opt,name=Msg,json=msg,proto3" json:"Msg"` } func (x *ShowDetailRes) Reset() { @@ -571,8 +579,8 @@ type ShowArtworkDetailRes struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Data []*ArtworkDetail `protobuf:"bytes,1,rep,name=data,proto3" json:"data,omitempty"` - Msg string `protobuf:"bytes,2,opt,name=Msg,json=msg,proto3" json:"Msg,omitempty"` + Data []*ArtworkDetail `protobuf:"bytes,1,rep,name=data,proto3" json:"data"` + Msg string `protobuf:"bytes,2,opt,name=Msg,json=msg,proto3" json:"Msg"` } func (x *ShowArtworkDetailRes) Reset() { @@ -627,18 +635,19 @@ type ShowListReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Page int32 `protobuf:"varint,1,opt,name=Page,json=page,proto3" json:"Page,omitempty"` - PageSize int32 `protobuf:"varint,2,opt,name=PageSize,json=page_size,proto3" json:"PageSize,omitempty"` - StartTime string `protobuf:"bytes,3,opt,name=StartTime,json=start_time,proto3" json:"StartTime,omitempty"` - EndTime string `protobuf:"bytes,4,opt,name=EndTime,json=end_time,proto3" json:"EndTime,omitempty"` - ShowSeq string `protobuf:"bytes,5,opt,name=ShowSeq,json=show_seq,proto3" json:"ShowSeq,omitempty"` - ShowName string `protobuf:"bytes,6,opt,name=ShowName,json=show_name,proto3" json:"ShowName,omitempty"` - ArtistName string `protobuf:"bytes,7,opt,name=ArtistName,json=artist_name,proto3" json:"ArtistName,omitempty"` - StartPrice int64 `protobuf:"varint,8,opt,name=StartPrice,json=start_price,proto3" json:"StartPrice,omitempty"` - EndPrice int64 `protobuf:"varint,9,opt,name=EndPrice,json=end_price,proto3" json:"EndPrice,omitempty"` - StartReward int64 `protobuf:"varint,10,opt,name=StartReward,json=start_reward,proto3" json:"StartReward,omitempty"` - EndReward int64 `protobuf:"varint,11,opt,name=EndReward,json=end_reward,proto3" json:"EndReward,omitempty"` - IsShow int32 `protobuf:"varint,12,opt,name=IsShow,json=is_show,proto3" json:"IsShow,omitempty"` + Page int32 `protobuf:"varint,1,opt,name=Page,json=page,proto3" json:"Page"` + PageSize int32 `protobuf:"varint,2,opt,name=PageSize,json=page_size,proto3" json:"PageSize"` + StartShowTime string `protobuf:"bytes,3,opt,name=StartShowTime,json=start_show_time,proto3" json:"StartShowTime"` + EndShowTime string `protobuf:"bytes,4,opt,name=EndShowTime,json=end_show_time,proto3" json:"EndShowTime"` + ShowSeq string `protobuf:"bytes,5,opt,name=ShowSeq,json=show_seq,proto3" json:"ShowSeq"` + ShowName string `protobuf:"bytes,6,opt,name=ShowName,json=show_name,proto3" json:"ShowName"` + ArtistName string `protobuf:"bytes,7,opt,name=ArtistName,json=artist_name,proto3" json:"ArtistName"` + StartPrice int64 `protobuf:"varint,8,opt,name=StartPrice,json=start_price,proto3" json:"StartPrice"` + EndPrice int64 `protobuf:"varint,9,opt,name=EndPrice,json=end_price,proto3" json:"EndPrice"` + StartReward int64 `protobuf:"varint,10,opt,name=StartReward,json=start_reward,proto3" json:"StartReward"` + EndReward int64 `protobuf:"varint,11,opt,name=EndReward,json=end_reward,proto3" json:"EndReward"` + Address string `protobuf:"bytes,12,opt,name=Address,json=address,proto3" json:"Address"` + IsShow []int32 `protobuf:"varint,13,rep,packed,name=IsShow,json=is_show,proto3" json:"IsShow"` } func (x *ShowListReq) Reset() { @@ -687,16 +696,16 @@ func (x *ShowListReq) GetPageSize() int32 { return 0 } -func (x *ShowListReq) GetStartTime() string { +func (x *ShowListReq) GetStartShowTime() string { if x != nil { - return x.StartTime + return x.StartShowTime } return "" } -func (x *ShowListReq) GetEndTime() string { +func (x *ShowListReq) GetEndShowTime() string { if x != nil { - return x.EndTime + return x.EndShowTime } return "" } @@ -750,11 +759,18 @@ func (x *ShowListReq) GetEndReward() int64 { return 0 } -func (x *ShowListReq) GetIsShow() int32 { +func (x *ShowListReq) GetAddress() string { + if x != nil { + return x.Address + } + return "" +} + +func (x *ShowListReq) GetIsShow() []int32 { if x != nil { return x.IsShow } - return 0 + return nil } type ShowListForArtworkReq struct { @@ -762,9 +778,9 @@ type ShowListForArtworkReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Page int32 `protobuf:"varint,1,opt,name=Page,json=page,proto3" json:"Page,omitempty"` - PageSize int32 `protobuf:"varint,2,opt,name=PageSize,json=page_size,proto3" json:"PageSize,omitempty"` - ArtistUID string `protobuf:"bytes,3,opt,name=ArtistUID,json=artist_uid,proto3" json:"ArtistUID,omitempty"` + Page int32 `protobuf:"varint,1,opt,name=Page,json=page,proto3" json:"Page"` + PageSize int32 `protobuf:"varint,2,opt,name=PageSize,json=page_size,proto3" json:"PageSize"` + ArtistUID string `protobuf:"bytes,3,opt,name=ArtistUID,json=artist_uid,proto3" json:"ArtistUID"` } func (x *ShowListForArtworkReq) Reset() { @@ -825,11 +841,11 @@ type ShowListRes struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Total int64 `protobuf:"varint,1,opt,name=Total,json=total,proto3" json:"Total,omitempty"` - TotalPackageNum int64 `protobuf:"varint,2,opt,name=TotalPackageNum,json=total_package_num,proto3" json:"TotalPackageNum,omitempty"` - TotalArtistNum int64 `protobuf:"varint,3,opt,name=TotalArtistNum,json=total_artist_num,proto3" json:"TotalArtistNum,omitempty"` - Data []*ShowDetail `protobuf:"bytes,4,rep,name=Data,json=data,proto3" json:"Data,omitempty"` - Msg string `protobuf:"bytes,5,opt,name=Msg,json=msg,proto3" json:"Msg,omitempty"` + Total int64 `protobuf:"varint,1,opt,name=Total,json=total,proto3" json:"Total"` + TotalPackageNum int64 `protobuf:"varint,2,opt,name=TotalPackageNum,json=total_package_num,proto3" json:"TotalPackageNum"` + TotalArtistNum int64 `protobuf:"varint,3,opt,name=TotalArtistNum,json=total_artist_num,proto3" json:"TotalArtistNum"` + Data []*ShowDetail `protobuf:"bytes,4,rep,name=Data,json=data,proto3" json:"Data"` + Msg string `protobuf:"bytes,5,opt,name=Msg,json=msg,proto3" json:"Msg"` } func (x *ShowListRes) Reset() { @@ -904,9 +920,9 @@ type ShowListForArtworkRes struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Total int64 `protobuf:"varint,1,opt,name=Total,json=total,proto3" json:"Total,omitempty"` - Msg string `protobuf:"bytes,2,opt,name=Msg,json=msg,proto3" json:"Msg,omitempty"` - Data []*ShowDetail `protobuf:"bytes,3,rep,name=Data,json=data,proto3" json:"Data,omitempty"` + Total int64 `protobuf:"varint,1,opt,name=Total,json=total,proto3" json:"Total"` + Msg string `protobuf:"bytes,2,opt,name=Msg,json=msg,proto3" json:"Msg"` + Data []*ShowDetail `protobuf:"bytes,3,rep,name=Data,json=data,proto3" json:"Data"` } func (x *ShowListForArtworkRes) Reset() { @@ -968,7 +984,7 @@ type DelShowReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ShowUID []string `protobuf:"bytes,1,rep,name=ShowUID,json=show_uid,proto3" json:"ShowUID,omitempty"` + ShowUID []string `protobuf:"bytes,1,rep,name=ShowUID,json=show_uid,proto3" json:"ShowUID"` } func (x *DelShowReq) Reset() { @@ -1016,15 +1032,15 @@ type ArtworkDetail struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ArtworkPriceUID string `protobuf:"bytes,1,opt,name=ArtworkPriceUID,json=artwork_price_uid,proto3" json:"ArtworkPriceUID,omitempty"` - ShowUID string `protobuf:"bytes,2,opt,name=ShowUID,json=show_uid,proto3" json:"ShowUID,omitempty"` - ArtworkUID string `protobuf:"bytes,3,opt,name=ArtworkUID,json=artwork_uid,proto3" json:"ArtworkUID,omitempty"` - ArtworkName string `protobuf:"bytes,4,opt,name=ArtworkName,json=artwork_name,proto3" json:"ArtworkName,omitempty"` - ArtistName string `protobuf:"bytes,5,opt,name=ArtistName,json=artist_name,proto3" json:"ArtistName,omitempty"` - Length int32 `protobuf:"varint,6,opt,name=Length,json=length,proto3" json:"Length,omitempty"` - Width int32 `protobuf:"varint,7,opt,name=Width,json=width,proto3" json:"Width,omitempty"` - Ruler int32 `protobuf:"varint,8,opt,name=Ruler,json=ruler,proto3" json:"Ruler,omitempty"` - SmallPic string `protobuf:"bytes,9,opt,name=SmallPic,json=small_pic,proto3" json:"SmallPic,omitempty"` + ArtworkPriceUID string `protobuf:"bytes,1,opt,name=ArtworkPriceUID,json=artwork_price_uid,proto3" json:"ArtworkPriceUID"` + ShowUID string `protobuf:"bytes,2,opt,name=ShowUID,json=show_uid,proto3" json:"ShowUID"` + ArtworkUID string `protobuf:"bytes,3,opt,name=ArtworkUID,json=artwork_uid,proto3" json:"ArtworkUID"` + ArtworkName string `protobuf:"bytes,4,opt,name=ArtworkName,json=artwork_name,proto3" json:"ArtworkName"` + ArtistName string `protobuf:"bytes,5,opt,name=ArtistName,json=artist_name,proto3" json:"ArtistName"` + Length int32 `protobuf:"varint,6,opt,name=Length,json=length,proto3" json:"Length"` + Width int32 `protobuf:"varint,7,opt,name=Width,json=width,proto3" json:"Width"` + Ruler int32 `protobuf:"varint,8,opt,name=Ruler,json=ruler,proto3" json:"Ruler"` + SmallPic string `protobuf:"bytes,9,opt,name=SmallPic,json=small_pic,proto3" json:"SmallPic"` } func (x *ArtworkDetail) Reset() { @@ -1128,20 +1144,20 @@ type ArtworkPriceDetail struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ArtworkPriceUID string `protobuf:"bytes,1,opt,name=ArtworkPriceUID,json=artwork_price_uid,proto3" json:"ArtworkPriceUID,omitempty"` - ShowUID string `protobuf:"bytes,2,opt,name=ShowUID,json=show_uid,proto3" json:"ShowUID,omitempty"` - ArtworkUID string `protobuf:"bytes,3,opt,name=ArtworkUID,json=artwork_uid,proto3" json:"ArtworkUID,omitempty"` - ArtworkName string `protobuf:"bytes,4,opt,name=ArtworkName,json=artwork_name,proto3" json:"ArtworkName,omitempty"` - ArtistName string `protobuf:"bytes,5,opt,name=ArtistName,json=artist_name,proto3" json:"ArtistName,omitempty"` - Length int32 `protobuf:"varint,6,opt,name=Length,json=length,proto3" json:"Length,omitempty"` - Width int32 `protobuf:"varint,7,opt,name=Width,json=width,proto3" json:"Width,omitempty"` - Ruler int32 `protobuf:"varint,8,opt,name=Ruler,json=ruler,proto3" json:"Ruler,omitempty"` - SmallPic string `protobuf:"bytes,9,opt,name=SmallPic,json=small_pic,proto3" json:"SmallPic,omitempty"` - Price int64 `protobuf:"varint,10,opt,name=Price,json=price,proto3" json:"Price,omitempty"` - RulerPrice int64 `protobuf:"varint,11,opt,name=RulerPrice,json=ruler_price,proto3" json:"RulerPrice,omitempty"` - ArtworkPrice int64 `protobuf:"varint,12,opt,name=ArtworkPrice,json=artwork_price,proto3" json:"ArtworkPrice,omitempty"` - MarketPrice int64 `protobuf:"varint,13,opt,name=MarketPrice,json=market_price,proto3" json:"MarketPrice,omitempty"` - CopyrightPrice int64 `protobuf:"varint,14,opt,name=CopyrightPrice,json=copyright_price,proto3" json:"CopyrightPrice,omitempty"` + ArtworkPriceUID string `protobuf:"bytes,1,opt,name=ArtworkPriceUID,json=artwork_price_uid,proto3" json:"ArtworkPriceUID"` + ShowUID string `protobuf:"bytes,2,opt,name=ShowUID,json=show_uid,proto3" json:"ShowUID"` + ArtworkUID string `protobuf:"bytes,3,opt,name=ArtworkUID,json=artwork_uid,proto3" json:"ArtworkUID"` + ArtworkName string `protobuf:"bytes,4,opt,name=ArtworkName,json=artwork_name,proto3" json:"ArtworkName"` + ArtistName string `protobuf:"bytes,5,opt,name=ArtistName,json=artist_name,proto3" json:"ArtistName"` + Length int32 `protobuf:"varint,6,opt,name=Length,json=length,proto3" json:"Length"` + Width int32 `protobuf:"varint,7,opt,name=Width,json=width,proto3" json:"Width"` + Ruler int32 `protobuf:"varint,8,opt,name=Ruler,json=ruler,proto3" json:"Ruler"` + SmallPic string `protobuf:"bytes,9,opt,name=SmallPic,json=small_pic,proto3" json:"SmallPic"` + Price int64 `protobuf:"varint,10,opt,name=Price,json=price,proto3" json:"Price"` + RulerPrice int64 `protobuf:"varint,11,opt,name=RulerPrice,json=ruler_price,proto3" json:"RulerPrice"` + ArtworkPrice int64 `protobuf:"varint,12,opt,name=ArtworkPrice,json=artwork_price,proto3" json:"ArtworkPrice"` + MarketPrice int64 `protobuf:"varint,13,opt,name=MarketPrice,json=market_price,proto3" json:"MarketPrice"` + CopyrightPrice int64 `protobuf:"varint,14,opt,name=CopyrightPrice,json=copyright_price,proto3" json:"CopyrightPrice"` } func (x *ArtworkPriceDetail) Reset() { @@ -1279,8 +1295,8 @@ type ArtworkPriceListRes struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Data []*ArtworkPriceDetail `protobuf:"bytes,1,rep,name=Data,json=data,proto3" json:"Data,omitempty"` - Msg string `protobuf:"bytes,2,opt,name=Msg,json=msg,proto3" json:"Msg,omitempty"` + Data []*ArtworkPriceDetail `protobuf:"bytes,1,rep,name=Data,json=data,proto3" json:"Data"` + Msg string `protobuf:"bytes,2,opt,name=Msg,json=msg,proto3" json:"Msg"` } func (x *ArtworkPriceListRes) Reset() { @@ -1335,8 +1351,8 @@ type DelArtworkDetail struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ArtworkPriceUID string `protobuf:"bytes,1,opt,name=ArtworkPriceUID,json=artwork_price_uid,proto3" json:"ArtworkPriceUID,omitempty"` - ArtworkUID string `protobuf:"bytes,2,opt,name=ArtworkUID,json=artwork_uid,proto3" json:"ArtworkUID,omitempty"` + ArtworkPriceUID string `protobuf:"bytes,1,opt,name=ArtworkPriceUID,json=artwork_price_uid,proto3" json:"ArtworkPriceUID"` + ArtworkUID string `protobuf:"bytes,2,opt,name=ArtworkUID,json=artwork_uid,proto3" json:"ArtworkUID"` } func (x *DelArtworkDetail) Reset() { @@ -1391,7 +1407,7 @@ type ShowStatisticalInfoReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - IsShow int32 `protobuf:"varint,1,opt,name=IsShow,json=is_show,proto3" json:"IsShow,omitempty"` + IsShow int32 `protobuf:"varint,1,opt,name=IsShow,json=is_show,proto3" json:"IsShow"` } func (x *ShowStatisticalInfoReq) Reset() { @@ -1438,8 +1454,8 @@ type ShowStatisticalInfoRes struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Data *ShowStatisticalInfoRes_Num `protobuf:"bytes,1,opt,name=Data,json=data,proto3" json:"Data,omitempty"` - Msg string `protobuf:"bytes,2,opt,name=Msg,json=msg,proto3" json:"Msg,omitempty"` + Data *ShowStatisticalInfoRes_Num `protobuf:"bytes,1,opt,name=Data,json=data,proto3" json:"Data"` + Msg string `protobuf:"bytes,2,opt,name=Msg,json=msg,proto3" json:"Msg"` } func (x *ShowStatisticalInfoRes) Reset() { @@ -1493,7 +1509,7 @@ type ArtworkPriceReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ArtworkUID string `protobuf:"bytes,1,opt,name=ArtworkUID,json=artwork_uid,proto3" json:"ArtworkUID,omitempty"` + ArtworkUID string `protobuf:"bytes,1,opt,name=ArtworkUID,json=artwork_uid,proto3" json:"ArtworkUID"` } func (x *ArtworkPriceReq) Reset() { @@ -1540,8 +1556,8 @@ type ArtworkPriceRes struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Data *ArtworkPriceRes_PriceInfo `protobuf:"bytes,1,opt,name=Data,json=data,proto3" json:"Data,omitempty"` - Msg string `protobuf:"bytes,2,opt,name=Msg,json=msg,proto3" json:"Msg,omitempty"` + Data *ArtworkPriceRes_PriceInfo `protobuf:"bytes,1,opt,name=Data,json=data,proto3" json:"Data"` + Msg string `protobuf:"bytes,2,opt,name=Msg,json=msg,proto3" json:"Msg"` } func (x *ArtworkPriceRes) Reset() { @@ -1595,12 +1611,12 @@ type ShowRel struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ShowRelUID string `protobuf:"bytes,1,opt,name=ShowRelUID,json=show_rel_uid,proto3" json:"ShowRelUID,omitempty"` - ApplyUID string `protobuf:"bytes,2,opt,name=ApplyUID,json=apply_uid,proto3" json:"ApplyUID,omitempty"` - ShowUID string `protobuf:"bytes,3,opt,name=ShowUID,json=show_uid,proto3" json:"ShowUID,omitempty"` - Index int32 `protobuf:"varint,4,opt,name=Index,json=index,proto3" json:"Index,omitempty"` - Address string `protobuf:"bytes,5,opt,name=Address,json=address,proto3" json:"Address,omitempty"` - ShowTime string `protobuf:"bytes,6,opt,name=ShowTime,json=show_time,proto3" json:"ShowTime,omitempty"` + ShowRelUID string `protobuf:"bytes,1,opt,name=ShowRelUID,json=show_rel_uid,proto3" json:"ShowRelUID"` + ApplyUID string `protobuf:"bytes,2,opt,name=ApplyUID,json=apply_uid,proto3" json:"ApplyUID"` + ShowUID string `protobuf:"bytes,3,opt,name=ShowUID,json=show_uid,proto3" json:"ShowUID"` + Index int32 `protobuf:"varint,4,opt,name=Index,json=index,proto3" json:"Index"` + Address string `protobuf:"bytes,5,opt,name=Address,json=address,proto3" json:"Address"` + ShowTime string `protobuf:"bytes,6,opt,name=ShowTime,json=show_time,proto3" json:"ShowTime"` } func (x *ShowRel) Reset() { @@ -1682,8 +1698,8 @@ type DelShowRel struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ShowRelUID string `protobuf:"bytes,1,opt,name=ShowRelUID,json=show_rel_uid,proto3" json:"ShowRelUID,omitempty"` - ShowUID string `protobuf:"bytes,2,opt,name=ShowUID,json=show_uid,proto3" json:"ShowUID,omitempty"` + ShowRelUID string `protobuf:"bytes,1,opt,name=ShowRelUID,json=show_rel_uid,proto3" json:"ShowRelUID"` + ShowUID string `protobuf:"bytes,2,opt,name=ShowUID,json=show_uid,proto3" json:"ShowUID"` } func (x *DelShowRel) Reset() { @@ -1737,15 +1753,15 @@ type SaveApplyReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Applicant string `protobuf:"bytes,1,opt,name=Applicant,json=applicant,proto3" json:"Applicant,omitempty"` - ApplicantID string `protobuf:"bytes,2,opt,name=ApplicantID,json=applicant_id,proto3" json:"ApplicantID,omitempty"` - Num int32 `protobuf:"varint,3,opt,name=Num,json=num,proto3" json:"Num,omitempty"` - ApplyTime string `protobuf:"bytes,4,opt,name=ApplyTime,json=apply_time,proto3" json:"ApplyTime,omitempty"` - ApplyUID string `protobuf:"bytes,5,opt,name=ApplyUID,json=apply_uid,proto3" json:"ApplyUID,omitempty"` - Status int32 `protobuf:"varint,6,opt,name=Status,json=status,proto3" json:"Status,omitempty"` - Remark string `protobuf:"bytes,7,opt,name=Remark,json=remark,proto3" json:"Remark,omitempty"` - Rel []*ShowRel `protobuf:"bytes,8,rep,name=Rel,json=rel,proto3" json:"Rel,omitempty"` - DelRel []*DelShowRel `protobuf:"bytes,9,rep,name=DelRel,json=del_rel,proto3" json:"DelRel,omitempty"` + Applicant string `protobuf:"bytes,1,opt,name=Applicant,json=applicant,proto3" json:"Applicant"` + ApplicantID string `protobuf:"bytes,2,opt,name=ApplicantID,json=applicant_id,proto3" json:"ApplicantID"` + Num int32 `protobuf:"varint,3,opt,name=Num,json=num,proto3" json:"Num"` + ApplyTime string `protobuf:"bytes,4,opt,name=ApplyTime,json=apply_time,proto3" json:"ApplyTime"` + ApplyUID string `protobuf:"bytes,5,opt,name=ApplyUID,json=apply_uid,proto3" json:"ApplyUID"` + Status int32 `protobuf:"varint,6,opt,name=Status,json=status,proto3" json:"Status"` + Remark string `protobuf:"bytes,7,opt,name=Remark,json=remark,proto3" json:"Remark"` + Rel []*ShowRel `protobuf:"bytes,8,rep,name=Rel,json=rel,proto3" json:"Rel"` + DelRel []*DelShowRel `protobuf:"bytes,9,rep,name=DelRel,json=del_rel,proto3" json:"DelRel"` } func (x *SaveApplyReq) Reset() { @@ -1848,8 +1864,8 @@ type SaveApplyRes struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Msg string `protobuf:"bytes,1,opt,name=Msg,json=msg,proto3" json:"Msg,omitempty"` - ApplyUID string `protobuf:"bytes,2,opt,name=ApplyUID,json=apply_uid,proto3" json:"ApplyUID,omitempty"` + Msg string `protobuf:"bytes,1,opt,name=Msg,json=msg,proto3" json:"Msg"` + ApplyUID string `protobuf:"bytes,2,opt,name=ApplyUID,json=apply_uid,proto3" json:"ApplyUID"` } func (x *SaveApplyRes) Reset() { @@ -1903,9 +1919,9 @@ type ApplyListReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Page int32 `protobuf:"varint,1,opt,name=Page,json=page,proto3" json:"Page,omitempty"` - PageSize int32 `protobuf:"varint,2,opt,name=PageSize,json=page_size,proto3" json:"PageSize,omitempty"` - Status int32 `protobuf:"varint,3,opt,name=Status,json=status,proto3" json:"Status,omitempty"` + Page int32 `protobuf:"varint,1,opt,name=Page,json=page,proto3" json:"Page"` + PageSize int32 `protobuf:"varint,2,opt,name=PageSize,json=page_size,proto3" json:"PageSize"` + Status int32 `protobuf:"varint,3,opt,name=Status,json=status,proto3" json:"Status"` } func (x *ApplyListReq) Reset() { @@ -1966,9 +1982,9 @@ type ApplyListRes struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Total int64 `protobuf:"varint,1,opt,name=Total,json=total,proto3" json:"Total,omitempty"` - Data []*ApplyDetail `protobuf:"bytes,2,rep,name=Data,json=data,proto3" json:"Data,omitempty"` - Msg string `protobuf:"bytes,3,opt,name=Msg,json=msg,proto3" json:"Msg,omitempty"` + Total int64 `protobuf:"varint,1,opt,name=Total,json=total,proto3" json:"Total"` + Data []*ApplyDetail `protobuf:"bytes,2,rep,name=Data,json=data,proto3" json:"Data"` + Msg string `protobuf:"bytes,3,opt,name=Msg,json=msg,proto3" json:"Msg"` } func (x *ApplyListRes) Reset() { @@ -2029,7 +2045,7 @@ type ApplyShowReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ApplyUID string `protobuf:"bytes,1,opt,name=ApplyUID,json=apply_uid,proto3" json:"ApplyUID,omitempty"` + ApplyUID string `protobuf:"bytes,1,opt,name=ApplyUID,json=apply_uid,proto3" json:"ApplyUID"` } func (x *ApplyShowReq) Reset() { @@ -2076,9 +2092,9 @@ type ApplyShowRes struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Apply *ApplyDetail `protobuf:"bytes,1,opt,name=Apply,json=apply,proto3" json:"Apply,omitempty"` - Show []*ShowDetail `protobuf:"bytes,2,rep,name=Show,json=show,proto3" json:"Show,omitempty"` - Msg string `protobuf:"bytes,3,opt,name=Msg,json=msg,proto3" json:"Msg,omitempty"` + Apply *ApplyDetail `protobuf:"bytes,1,opt,name=Apply,json=apply,proto3" json:"Apply"` + Show []*ShowDetail `protobuf:"bytes,2,rep,name=Show,json=show,proto3" json:"Show"` + Msg string `protobuf:"bytes,3,opt,name=Msg,json=msg,proto3" json:"Msg"` } func (x *ApplyShowRes) Reset() { @@ -2139,14 +2155,14 @@ type ApplyDetail struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ApplyUID string `protobuf:"bytes,1,opt,name=ApplyUID,json=apply_uid,proto3" json:"ApplyUID,omitempty"` - ApplySeq string `protobuf:"bytes,2,opt,name=ApplySeq,json=apply_seq,proto3" json:"ApplySeq,omitempty"` - Applicant string `protobuf:"bytes,3,opt,name=Applicant,json=applicant,proto3" json:"Applicant,omitempty"` - ApplicantID string `protobuf:"bytes,4,opt,name=ApplicantID,json=applicant_id,proto3" json:"ApplicantID,omitempty"` - Num int32 `protobuf:"varint,5,opt,name=Num,json=num,proto3" json:"Num,omitempty"` - ApplyTime string `protobuf:"bytes,6,opt,name=ApplyTime,json=apply_time,proto3" json:"ApplyTime,omitempty"` - Status int32 `protobuf:"varint,7,opt,name=Status,json=status,proto3" json:"Status,omitempty"` - Remark string `protobuf:"bytes,8,opt,name=Remark,json=remark,proto3" json:"Remark,omitempty"` + ApplyUID string `protobuf:"bytes,1,opt,name=ApplyUID,json=apply_uid,proto3" json:"ApplyUID"` + ApplySeq string `protobuf:"bytes,2,opt,name=ApplySeq,json=apply_seq,proto3" json:"ApplySeq"` + Applicant string `protobuf:"bytes,3,opt,name=Applicant,json=applicant,proto3" json:"Applicant"` + ApplicantID string `protobuf:"bytes,4,opt,name=ApplicantID,json=applicant_id,proto3" json:"ApplicantID"` + Num int32 `protobuf:"varint,5,opt,name=Num,json=num,proto3" json:"Num"` + ApplyTime string `protobuf:"bytes,6,opt,name=ApplyTime,json=apply_time,proto3" json:"ApplyTime"` + Status int32 `protobuf:"varint,7,opt,name=Status,json=status,proto3" json:"Status"` + Remark string `protobuf:"bytes,8,opt,name=Remark,json=remark,proto3" json:"Remark"` } func (x *ApplyDetail) Reset() { @@ -2242,7 +2258,7 @@ type ShowRelListReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ApplyUID string `protobuf:"bytes,1,opt,name=ApplyUID,json=apply_uid,proto3" json:"ApplyUID,omitempty"` + ApplyUID string `protobuf:"bytes,1,opt,name=ApplyUID,json=apply_uid,proto3" json:"ApplyUID"` } func (x *ShowRelListReq) Reset() { @@ -2289,8 +2305,8 @@ type ShowRelListRes struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Msg string `protobuf:"bytes,1,opt,name=Msg,json=msg,proto3" json:"Msg,omitempty"` - Data []*ShowRel `protobuf:"bytes,2,rep,name=Data,json=data,proto3" json:"Data,omitempty"` + Msg string `protobuf:"bytes,1,opt,name=Msg,json=msg,proto3" json:"Msg"` + Data []*ShowRel `protobuf:"bytes,2,rep,name=Data,json=data,proto3" json:"Data"` } func (x *ShowRelListRes) Reset() { @@ -2344,9 +2360,9 @@ type UpdateApplyStatusReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Status int32 `protobuf:"varint,1,opt,name=Status,json=status,proto3" json:"Status,omitempty"` - Remark string `protobuf:"bytes,2,opt,name=Remark,json=remark,proto3" json:"Remark,omitempty"` - ApplyUID string `protobuf:"bytes,3,opt,name=ApplyUID,json=apply_uid,proto3" json:"ApplyUID,omitempty"` + Status int32 `protobuf:"varint,1,opt,name=Status,json=status,proto3" json:"Status"` + Remark string `protobuf:"bytes,2,opt,name=Remark,json=remark,proto3" json:"Remark"` + ApplyUID string `protobuf:"bytes,3,opt,name=ApplyUID,json=apply_uid,proto3" json:"ApplyUID"` } func (x *UpdateApplyStatusReq) Reset() { @@ -2407,7 +2423,7 @@ type DelApplyReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ApplyUID []string `protobuf:"bytes,1,rep,name=ApplyUID,json=apply_uid,proto3" json:"ApplyUID,omitempty"` + ApplyUID []string `protobuf:"bytes,1,rep,name=ApplyUID,json=apply_uid,proto3" json:"ApplyUID"` } func (x *DelApplyReq) Reset() { @@ -2454,11 +2470,11 @@ type ShowStatisticalInfoRes_Num struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ArtistNum int64 `protobuf:"varint,1,opt,name=ArtistNum,json=artist_num,proto3" json:"ArtistNum,omitempty"` - PackageNum int64 `protobuf:"varint,2,opt,name=PackageNum,json=package_num,proto3" json:"PackageNum,omitempty"` - TotalNum int64 `protobuf:"varint,3,opt,name=TotalNum,json=total_num,proto3" json:"TotalNum,omitempty"` - NotShowNum int64 `protobuf:"varint,4,opt,name=NotShowNum,json=not_show_num,proto3" json:"NotShowNum,omitempty"` - ShowHisNum int64 `protobuf:"varint,5,opt,name=ShowHisNum,json=show_his_num,proto3" json:"ShowHisNum,omitempty"` + ArtistNum int64 `protobuf:"varint,1,opt,name=ArtistNum,json=artist_num,proto3" json:"ArtistNum"` + PackageNum int64 `protobuf:"varint,2,opt,name=PackageNum,json=package_num,proto3" json:"PackageNum"` + TotalNum int64 `protobuf:"varint,3,opt,name=TotalNum,json=total_num,proto3" json:"TotalNum"` + NotShowNum int64 `protobuf:"varint,4,opt,name=NotShowNum,json=not_show_num,proto3" json:"NotShowNum"` + ShowHisNum int64 `protobuf:"varint,5,opt,name=ShowHisNum,json=show_his_num,proto3" json:"ShowHisNum"` } func (x *ShowStatisticalInfoRes_Num) Reset() { @@ -2533,11 +2549,11 @@ type ArtworkPriceRes_PriceInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Price int64 `protobuf:"varint,1,opt,name=Price,json=price,proto3" json:"Price,omitempty"` - RulerPrice int64 `protobuf:"varint,2,opt,name=RulerPrice,json=ruler_price,proto3" json:"RulerPrice,omitempty"` - ArtworkPrice int64 `protobuf:"varint,3,opt,name=ArtworkPrice,json=artwork_price,proto3" json:"ArtworkPrice,omitempty"` - MarketPrice int64 `protobuf:"varint,4,opt,name=MarketPrice,json=market_price,proto3" json:"MarketPrice,omitempty"` - CopyrightPrice int64 `protobuf:"varint,5,opt,name=CopyrightPrice,json=copyright_price,proto3" json:"CopyrightPrice,omitempty"` + Price int64 `protobuf:"varint,1,opt,name=Price,json=price,proto3" json:"Price"` + RulerPrice int64 `protobuf:"varint,2,opt,name=RulerPrice,json=ruler_price,proto3" json:"RulerPrice"` + ArtworkPrice int64 `protobuf:"varint,3,opt,name=ArtworkPrice,json=artwork_price,proto3" json:"ArtworkPrice"` + MarketPrice int64 `protobuf:"varint,4,opt,name=MarketPrice,json=market_price,proto3" json:"MarketPrice"` + CopyrightPrice int64 `protobuf:"varint,5,opt,name=CopyrightPrice,json=copyright_price,proto3" json:"CopyrightPrice"` } func (x *ArtworkPriceRes_PriceInfo) Reset() { @@ -2611,7 +2627,7 @@ var File_pb_artshow_proto protoreflect.FileDescriptor var file_pb_artshow_proto_rawDesc = []byte{ 0x0a, 0x10, 0x70, 0x62, 0x2f, 0x61, 0x72, 0x74, 0x73, 0x68, 0x6f, 0x77, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x12, 0x07, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x22, 0xb2, 0x03, 0x0a, 0x0b, + 0x74, 0x6f, 0x12, 0x07, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x22, 0xcd, 0x03, 0x0a, 0x0b, 0x53, 0x61, 0x76, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x71, 0x12, 0x1b, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x77, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0a, 0x41, 0x72, 0x74, 0x69, @@ -2630,381 +2646,385 @@ var file_pb_artshow_proto_rawDesc = []byte{ 0x54, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x6f, 0x72, 0x12, 0x13, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x77, 0x55, 0x49, 0x44, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x35, 0x0a, 0x07, 0x41, 0x72, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x41, 0x72, 0x74, 0x53, - 0x68, 0x6f, 0x77, 0x2e, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x52, 0x0c, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, - 0x3f, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x0d, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x44, 0x65, - 0x6c, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x10, - 0x64, 0x65, 0x6c, 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x22, 0x3a, 0x0a, 0x0b, 0x53, 0x61, 0x76, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x12, - 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, - 0x67, 0x12, 0x19, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x77, 0x55, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x75, 0x69, 0x64, 0x22, 0x1d, 0x0a, 0x09, - 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x2a, 0x0a, 0x0d, 0x53, - 0x68, 0x6f, 0x77, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x12, 0x19, 0x0a, 0x07, - 0x53, 0x68, 0x6f, 0x77, 0x55, 0x49, 0x44, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x73, - 0x68, 0x6f, 0x77, 0x5f, 0x75, 0x69, 0x64, 0x22, 0x2d, 0x0a, 0x10, 0x41, 0x72, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x12, 0x19, 0x0a, 0x07, 0x53, - 0x68, 0x6f, 0x77, 0x55, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x68, - 0x6f, 0x77, 0x5f, 0x75, 0x69, 0x64, 0x22, 0x91, 0x03, 0x0a, 0x0a, 0x53, 0x68, 0x6f, 0x77, 0x44, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x19, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x77, 0x55, 0x49, 0x44, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x75, 0x69, 0x64, - 0x12, 0x19, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x77, 0x53, 0x65, 0x71, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x73, 0x65, 0x71, 0x12, 0x1b, 0x0a, 0x08, 0x53, - 0x68, 0x6f, 0x77, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, - 0x68, 0x6f, 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0a, 0x41, 0x72, 0x74, 0x69, - 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x72, - 0x74, 0x69, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x09, 0x41, 0x72, 0x74, - 0x69, 0x73, 0x74, 0x55, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, - 0x74, 0x69, 0x73, 0x74, 0x5f, 0x75, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x0a, 0x41, 0x72, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x4e, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x61, 0x72, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x75, 0x6c, - 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x72, 0x12, - 0x14, 0x0a, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, - 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1f, 0x0a, - 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x1a, - 0x0a, 0x08, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x17, 0x0a, 0x06, 0x49, 0x73, - 0x53, 0x68, 0x6f, 0x77, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x73, 0x5f, 0x73, - 0x68, 0x6f, 0x77, 0x12, 0x1b, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x77, 0x54, 0x69, 0x6d, 0x65, 0x18, - 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x12, 0x18, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x4a, 0x0a, 0x0d, 0x53, 0x68, - 0x6f, 0x77, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x12, 0x27, 0x0a, 0x04, 0x44, - 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x41, 0x72, 0x74, 0x53, - 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x04, - 0x64, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x54, 0x0a, 0x14, 0x53, 0x68, 0x6f, 0x77, 0x41, 0x72, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x12, 0x2a, - 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x41, - 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, - 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0xea, 0x02, 0x0a, - 0x0b, 0x53, 0x68, 0x6f, 0x77, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, - 0x50, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, - 0x12, 0x1b, 0x0a, 0x08, 0x50, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, - 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x07, - 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, - 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x77, 0x53, - 0x65, 0x71, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x73, - 0x65, 0x71, 0x12, 0x1b, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x77, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x1f, 0x0a, 0x0a, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x1f, 0x0a, 0x0a, 0x53, 0x74, 0x61, 0x72, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x70, 0x72, 0x69, 0x63, - 0x65, 0x12, 0x1b, 0x0a, 0x08, 0x45, 0x6e, 0x64, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x09, 0x65, 0x6e, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x21, - 0x0a, 0x0b, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, - 0x64, 0x12, 0x1d, 0x0a, 0x09, 0x45, 0x6e, 0x64, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x65, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, - 0x12, 0x17, 0x0a, 0x06, 0x49, 0x73, 0x53, 0x68, 0x6f, 0x77, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x07, 0x69, 0x73, 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x22, 0x67, 0x0a, 0x15, 0x53, 0x68, 0x6f, - 0x77, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6f, 0x72, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, - 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x08, 0x50, 0x61, 0x67, 0x65, 0x53, 0x69, - 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, - 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x09, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x49, 0x44, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x5f, 0x75, - 0x69, 0x64, 0x22, 0xb4, 0x01, 0x0a, 0x0b, 0x53, 0x68, 0x6f, 0x77, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x2a, 0x0a, 0x0f, 0x54, 0x6f, 0x74, 0x61, - 0x6c, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x11, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, - 0x5f, 0x6e, 0x75, 0x6d, 0x12, 0x28, 0x0a, 0x0e, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x41, 0x72, 0x74, - 0x69, 0x73, 0x74, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x74, 0x6f, - 0x74, 0x61, 0x6c, 0x5f, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x12, 0x27, - 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x41, - 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x44, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x68, 0x0a, 0x15, 0x53, 0x68, 0x6f, - 0x77, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6f, 0x72, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, - 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x27, 0x0a, 0x04, 0x44, 0x61, - 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, - 0x6f, 0x77, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x04, 0x64, - 0x61, 0x74, 0x61, 0x22, 0x27, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, - 0x71, 0x12, 0x19, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x77, 0x55, 0x49, 0x44, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x08, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x75, 0x69, 0x64, 0x22, 0x9c, 0x02, 0x0a, - 0x0d, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x2a, - 0x0a, 0x0f, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x72, 0x69, 0x63, 0x65, 0x55, 0x49, - 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x75, 0x69, 0x64, 0x12, 0x19, 0x0a, 0x07, 0x53, 0x68, - 0x6f, 0x77, 0x55, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x68, 0x6f, - 0x77, 0x5f, 0x75, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x0a, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x55, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x5f, 0x75, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0b, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x72, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0a, 0x41, 0x72, 0x74, - 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, - 0x72, 0x74, 0x69, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x4c, 0x65, - 0x6e, 0x67, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x57, 0x69, 0x64, 0x74, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x75, 0x6c, 0x65, - 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x72, 0x12, 0x1b, - 0x0a, 0x08, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x50, 0x69, 0x63, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x73, 0x6d, 0x61, 0x6c, 0x6c, 0x5f, 0x70, 0x69, 0x63, 0x22, 0xc9, 0x03, 0x0a, 0x12, - 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x72, 0x69, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x12, 0x2a, 0x0a, 0x0f, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x72, 0x69, - 0x63, 0x65, 0x55, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x61, 0x72, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x75, 0x69, 0x64, 0x12, 0x19, - 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x77, 0x55, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x75, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x0a, 0x41, 0x72, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, - 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x75, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0b, 0x41, 0x72, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, - 0x0a, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, - 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x57, 0x69, 0x64, 0x74, 0x68, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x14, 0x0a, 0x05, - 0x52, 0x75, 0x6c, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x72, 0x75, 0x6c, - 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x08, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x50, 0x69, 0x63, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x6d, 0x61, 0x6c, 0x6c, 0x5f, 0x70, 0x69, 0x63, 0x12, - 0x14, 0x0a, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, - 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0a, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x72, - 0x69, 0x63, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x72, 0x75, 0x6c, 0x65, 0x72, - 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0c, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x61, 0x72, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0b, 0x4d, - 0x61, 0x72, 0x6b, 0x65, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x0c, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x27, - 0x0a, 0x0e, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, - 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x63, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, - 0x74, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x22, 0x58, 0x0a, 0x13, 0x41, 0x72, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x50, 0x72, 0x69, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x12, 0x2f, - 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x41, - 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x72, - 0x69, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, + 0x74, 0x6f, 0x72, 0x12, 0x19, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x77, 0x53, 0x65, 0x71, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x73, 0x65, 0x71, 0x12, 0x13, + 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x77, 0x55, 0x49, 0x44, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x35, 0x0a, 0x07, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x0d, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x41, + 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x0c, 0x73, 0x68, + 0x6f, 0x77, 0x5f, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x3f, 0x0a, 0x0a, 0x44, 0x65, + 0x6c, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x44, 0x65, 0x6c, 0x41, 0x72, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x10, 0x64, 0x65, 0x6c, 0x5f, 0x73, + 0x68, 0x6f, 0x77, 0x5f, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x22, 0x3a, 0x0a, 0x0b, 0x53, + 0x61, 0x76, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, + 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x19, 0x0a, 0x07, + 0x53, 0x68, 0x6f, 0x77, 0x55, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, + 0x68, 0x6f, 0x77, 0x5f, 0x75, 0x69, 0x64, 0x22, 0x1d, 0x0a, 0x09, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x52, 0x65, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x2a, 0x0a, 0x0d, 0x53, 0x68, 0x6f, 0x77, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x12, 0x19, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x77, 0x55, + 0x49, 0x44, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x75, + 0x69, 0x64, 0x22, 0x2d, 0x0a, 0x10, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x12, 0x19, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x77, 0x55, 0x49, + 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x75, 0x69, + 0x64, 0x22, 0x91, 0x03, 0x0a, 0x0a, 0x53, 0x68, 0x6f, 0x77, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x12, 0x19, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x77, 0x55, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x75, 0x69, 0x64, 0x12, 0x19, 0x0a, 0x07, 0x53, + 0x68, 0x6f, 0x77, 0x53, 0x65, 0x71, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x68, + 0x6f, 0x77, 0x5f, 0x73, 0x65, 0x71, 0x12, 0x1b, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x77, 0x4e, 0x61, + 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0a, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x09, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x49, + 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x5f, + 0x75, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x0a, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4e, 0x75, + 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x5f, 0x6e, 0x75, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x72, + 0x69, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, + 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1f, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x17, 0x0a, 0x06, 0x49, 0x73, 0x53, 0x68, 0x6f, 0x77, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x73, 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x12, 0x1b, + 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x77, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x41, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x4a, 0x0a, 0x0d, 0x53, 0x68, 0x6f, 0x77, 0x44, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x12, 0x27, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, + 0x68, 0x6f, 0x77, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, - 0x67, 0x22, 0x5f, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, + 0x67, 0x22, 0x54, 0x0a, 0x14, 0x53, 0x68, 0x6f, 0x77, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x12, 0x2a, 0x0a, 0x04, 0x64, 0x61, 0x74, + 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, + 0x77, 0x2e, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x96, 0x03, 0x0a, 0x0b, 0x53, 0x68, 0x6f, 0x77, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x61, 0x67, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x08, 0x50, + 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, + 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x26, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x72, + 0x74, 0x53, 0x68, 0x6f, 0x77, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x12, 0x22, 0x0a, 0x0b, 0x45, 0x6e, 0x64, 0x53, 0x68, 0x6f, 0x77, 0x54, 0x69, 0x6d, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x64, 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x77, 0x53, 0x65, 0x71, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x73, 0x65, 0x71, 0x12, + 0x1b, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x77, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0a, + 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, + 0x0a, 0x53, 0x74, 0x61, 0x72, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x0b, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1b, + 0x0a, 0x08, 0x45, 0x6e, 0x64, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x09, 0x65, 0x6e, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0b, 0x53, + 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0c, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1d, + 0x0a, 0x09, 0x45, 0x6e, 0x64, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x0a, 0x65, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x18, 0x0a, + 0x07, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x17, 0x0a, 0x06, 0x49, 0x73, 0x53, 0x68, 0x6f, + 0x77, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x69, 0x73, 0x5f, 0x73, 0x68, 0x6f, 0x77, + 0x22, 0x67, 0x0a, 0x15, 0x53, 0x68, 0x6f, 0x77, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6f, 0x72, 0x41, + 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x61, 0x67, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, + 0x08, 0x50, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x09, 0x41, 0x72, + 0x74, 0x69, 0x73, 0x74, 0x55, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, + 0x72, 0x74, 0x69, 0x73, 0x74, 0x5f, 0x75, 0x69, 0x64, 0x22, 0xb4, 0x01, 0x0a, 0x0b, 0x53, 0x68, + 0x6f, 0x77, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x6f, 0x74, + 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, + 0x2a, 0x0a, 0x0f, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4e, + 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, + 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x12, 0x28, 0x0a, 0x0e, 0x54, + 0x6f, 0x74, 0x61, 0x6c, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x61, 0x72, 0x74, 0x69, 0x73, + 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x12, 0x27, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x68, + 0x6f, 0x77, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x10, + 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, + 0x22, 0x68, 0x0a, 0x15, 0x53, 0x68, 0x6f, 0x77, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6f, 0x72, 0x41, + 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x6f, 0x74, + 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, + 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, + 0x67, 0x12, 0x27, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x13, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x27, 0x0a, 0x0a, 0x44, 0x65, + 0x6c, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x71, 0x12, 0x19, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x77, + 0x55, 0x49, 0x44, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x73, 0x68, 0x6f, 0x77, 0x5f, + 0x75, 0x69, 0x64, 0x22, 0x9c, 0x02, 0x0a, 0x0d, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x2a, 0x0a, 0x0f, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x72, 0x69, 0x63, 0x65, 0x55, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x75, 0x69, - 0x64, 0x12, 0x1f, 0x0a, 0x0a, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x49, 0x44, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x75, - 0x69, 0x64, 0x22, 0x31, 0x0a, 0x16, 0x53, 0x68, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x61, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x12, 0x17, 0x0a, 0x06, - 0x49, 0x73, 0x53, 0x68, 0x6f, 0x77, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x73, - 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x22, 0x8c, 0x02, 0x0a, 0x16, 0x53, 0x68, 0x6f, 0x77, 0x53, 0x74, - 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, - 0x12, 0x37, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, - 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x53, 0x74, 0x61, - 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x2e, - 0x4e, 0x75, 0x6d, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x1a, 0xa6, 0x01, 0x0a, 0x03, - 0x4e, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x09, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x75, 0x6d, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x5f, 0x6e, - 0x75, 0x6d, 0x12, 0x1f, 0x0a, 0x0a, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4e, 0x75, 0x6d, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, - 0x6e, 0x75, 0x6d, 0x12, 0x1b, 0x0a, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4e, 0x75, 0x6d, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6e, 0x75, 0x6d, - 0x12, 0x20, 0x0a, 0x0a, 0x4e, 0x6f, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x4e, 0x75, 0x6d, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6e, 0x6f, 0x74, 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x6e, - 0x75, 0x6d, 0x12, 0x20, 0x0a, 0x0a, 0x53, 0x68, 0x6f, 0x77, 0x48, 0x69, 0x73, 0x4e, 0x75, 0x6d, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x68, 0x69, 0x73, - 0x5f, 0x6e, 0x75, 0x6d, 0x22, 0x32, 0x0a, 0x0f, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, - 0x72, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1f, 0x0a, 0x0a, 0x41, 0x72, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x55, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x72, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x75, 0x69, 0x64, 0x22, 0x91, 0x02, 0x0a, 0x0f, 0x41, 0x72, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x72, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x04, - 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x41, 0x72, 0x74, - 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x72, 0x69, 0x63, - 0x65, 0x52, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, - 0x64, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x1a, 0xb3, 0x01, 0x0a, 0x09, 0x50, 0x72, 0x69, 0x63, 0x65, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0a, 0x52, 0x75, - 0x6c, 0x65, 0x72, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, - 0x72, 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0c, 0x41, - 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x0d, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, - 0x12, 0x21, 0x0a, 0x0b, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x70, 0x72, - 0x69, 0x63, 0x65, 0x12, 0x27, 0x0a, 0x0e, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, - 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x63, 0x6f, 0x70, - 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x22, 0xb0, 0x01, 0x0a, - 0x07, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x6c, 0x12, 0x20, 0x0a, 0x0a, 0x53, 0x68, 0x6f, 0x77, - 0x52, 0x65, 0x6c, 0x55, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x68, - 0x6f, 0x77, 0x5f, 0x72, 0x65, 0x6c, 0x5f, 0x75, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x08, 0x41, 0x70, - 0x70, 0x6c, 0x79, 0x55, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x70, - 0x70, 0x6c, 0x79, 0x5f, 0x75, 0x69, 0x64, 0x12, 0x19, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x77, 0x55, - 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x75, - 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x12, 0x1b, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x77, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x22, - 0x49, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x6c, 0x12, 0x20, 0x0a, - 0x0a, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x6c, 0x55, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0c, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x72, 0x65, 0x6c, 0x5f, 0x75, 0x69, 0x64, 0x12, - 0x19, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x77, 0x55, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x75, 0x69, 0x64, 0x22, 0x9f, 0x02, 0x0a, 0x0c, 0x53, - 0x61, 0x76, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x41, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x64, 0x12, 0x19, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x77, 0x55, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x75, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x0a, + 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x75, 0x69, 0x64, 0x12, 0x21, 0x0a, + 0x0b, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x1f, 0x0a, 0x0a, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x16, 0x0a, 0x06, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x57, 0x69, 0x64, + 0x74, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, + 0x14, 0x0a, 0x05, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, + 0x72, 0x75, 0x6c, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x08, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x50, 0x69, + 0x63, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x6d, 0x61, 0x6c, 0x6c, 0x5f, 0x70, + 0x69, 0x63, 0x22, 0xc9, 0x03, 0x0a, 0x12, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x72, + 0x69, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x2a, 0x0a, 0x0f, 0x41, 0x72, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x72, 0x69, 0x63, 0x65, 0x55, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x11, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x70, 0x72, 0x69, 0x63, + 0x65, 0x5f, 0x75, 0x69, 0x64, 0x12, 0x19, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x77, 0x55, 0x49, 0x44, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x75, 0x69, 0x64, + 0x12, 0x1f, 0x0a, 0x0a, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x49, 0x44, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x75, 0x69, + 0x64, 0x12, 0x21, 0x0a, 0x0b, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4e, 0x61, 0x6d, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0a, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, + 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x14, 0x0a, + 0x05, 0x57, 0x69, 0x64, 0x74, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x77, 0x69, + 0x64, 0x74, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x08, 0x53, 0x6d, 0x61, + 0x6c, 0x6c, 0x50, 0x69, 0x63, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x6d, 0x61, + 0x6c, 0x6c, 0x5f, 0x70, 0x69, 0x63, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0a, + 0x52, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0b, 0x72, 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x23, 0x0a, + 0x0c, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x0c, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0d, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x70, 0x72, 0x69, + 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0b, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x50, 0x72, 0x69, 0x63, + 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, + 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x27, 0x0a, 0x0e, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, + 0x68, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x63, + 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x22, 0x58, + 0x0a, 0x13, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x72, 0x69, 0x63, 0x65, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x65, 0x73, 0x12, 0x2f, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x41, 0x72, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x72, 0x69, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x5f, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x41, + 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x2a, 0x0a, 0x0f, + 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x72, 0x69, 0x63, 0x65, 0x55, 0x49, 0x44, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x70, + 0x72, 0x69, 0x63, 0x65, 0x5f, 0x75, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x0a, 0x41, 0x72, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x55, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x72, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x75, 0x69, 0x64, 0x22, 0x31, 0x0a, 0x16, 0x53, 0x68, 0x6f, + 0x77, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x65, 0x71, 0x12, 0x17, 0x0a, 0x06, 0x49, 0x73, 0x53, 0x68, 0x6f, 0x77, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x73, 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x22, 0x8c, 0x02, 0x0a, + 0x16, 0x53, 0x68, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x61, 0x6c, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x12, 0x37, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, + 0x53, 0x68, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x2e, 0x4e, 0x75, 0x6d, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, + 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, + 0x73, 0x67, 0x1a, 0xa6, 0x01, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x09, 0x41, 0x72, + 0x74, 0x69, 0x73, 0x74, 0x4e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x61, + 0x72, 0x74, 0x69, 0x73, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x12, 0x1f, 0x0a, 0x0a, 0x50, 0x61, 0x63, + 0x6b, 0x61, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x70, + 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x12, 0x1b, 0x0a, 0x08, 0x54, 0x6f, + 0x74, 0x61, 0x6c, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x5f, 0x6e, 0x75, 0x6d, 0x12, 0x20, 0x0a, 0x0a, 0x4e, 0x6f, 0x74, 0x53, 0x68, + 0x6f, 0x77, 0x4e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6e, 0x6f, 0x74, + 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x6e, 0x75, 0x6d, 0x12, 0x20, 0x0a, 0x0a, 0x53, 0x68, 0x6f, + 0x77, 0x48, 0x69, 0x73, 0x4e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x73, + 0x68, 0x6f, 0x77, 0x5f, 0x68, 0x69, 0x73, 0x5f, 0x6e, 0x75, 0x6d, 0x22, 0x32, 0x0a, 0x0f, 0x41, + 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x72, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1f, + 0x0a, 0x0a, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x75, 0x69, 0x64, 0x22, + 0x91, 0x02, 0x0a, 0x0f, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x72, 0x69, 0x63, 0x65, + 0x52, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x22, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x41, 0x72, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x50, 0x72, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x69, 0x63, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x4d, + 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x1a, 0xb3, 0x01, + 0x0a, 0x09, 0x50, 0x72, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x50, + 0x72, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, + 0x65, 0x12, 0x1f, 0x0a, 0x0a, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x72, 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x69, + 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0c, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x72, 0x69, + 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0b, 0x4d, 0x61, 0x72, 0x6b, 0x65, + 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6d, 0x61, + 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x27, 0x0a, 0x0e, 0x43, 0x6f, + 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0f, 0x63, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x70, 0x72, + 0x69, 0x63, 0x65, 0x22, 0xb0, 0x01, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x6c, 0x12, + 0x20, 0x0a, 0x0a, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x6c, 0x55, 0x49, 0x44, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x72, 0x65, 0x6c, 0x5f, 0x75, 0x69, + 0x64, 0x12, 0x1b, 0x0a, 0x08, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x55, 0x49, 0x44, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x5f, 0x75, 0x69, 0x64, 0x12, 0x19, + 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x77, 0x55, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x6e, 0x64, + 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, + 0x18, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1b, 0x0a, 0x08, 0x53, 0x68, 0x6f, + 0x77, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x68, 0x6f, + 0x77, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x49, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x53, 0x68, 0x6f, + 0x77, 0x52, 0x65, 0x6c, 0x12, 0x20, 0x0a, 0x0a, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x6c, 0x55, + 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x72, + 0x65, 0x6c, 0x5f, 0x75, 0x69, 0x64, 0x12, 0x19, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x77, 0x55, 0x49, + 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x75, 0x69, + 0x64, 0x22, 0x9f, 0x02, 0x0a, 0x0c, 0x53, 0x61, 0x76, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x52, + 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x6e, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x6e, 0x74, + 0x12, 0x21, 0x0a, 0x0b, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x6e, 0x74, 0x49, 0x44, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x6e, 0x74, + 0x5f, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x09, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x54, 0x69, + 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x08, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x55, 0x49, 0x44, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x5f, 0x75, 0x69, + 0x64, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x6d, + 0x61, 0x72, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, + 0x6b, 0x12, 0x22, 0x0a, 0x03, 0x52, 0x65, 0x6c, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, + 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x6c, + 0x52, 0x03, 0x72, 0x65, 0x6c, 0x12, 0x2c, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x52, 0x65, 0x6c, 0x18, + 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, + 0x44, 0x65, 0x6c, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x6c, 0x5f, + 0x72, 0x65, 0x6c, 0x22, 0x3d, 0x0a, 0x0c, 0x53, 0x61, 0x76, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x79, + 0x52, 0x65, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x1b, 0x0a, 0x08, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x55, 0x49, + 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x5f, 0x75, + 0x69, 0x64, 0x22, 0x57, 0x0a, 0x0c, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x08, 0x50, 0x61, 0x67, 0x65, 0x53, 0x69, + 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, + 0x69, 0x7a, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x60, 0x0a, 0x0c, 0x41, + 0x70, 0x70, 0x6c, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x54, + 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, + 0x6c, 0x12, 0x28, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x14, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x44, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x4d, + 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x2b, 0x0a, + 0x0c, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x71, 0x12, 0x1b, 0x0a, + 0x08, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x55, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x5f, 0x75, 0x69, 0x64, 0x22, 0x75, 0x0a, 0x0c, 0x41, 0x70, + 0x70, 0x6c, 0x79, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x12, 0x2a, 0x0a, 0x05, 0x41, 0x70, + 0x70, 0x6c, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x41, 0x72, 0x74, 0x53, + 0x68, 0x6f, 0x77, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, + 0x05, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x12, 0x27, 0x0a, 0x04, 0x53, 0x68, 0x6f, 0x77, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, + 0x68, 0x6f, 0x77, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x04, 0x73, 0x68, 0x6f, 0x77, 0x12, + 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, + 0x67, 0x22, 0xe9, 0x01, 0x0a, 0x0b, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x12, 0x1b, 0x0a, 0x08, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x55, 0x49, 0x44, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x5f, 0x75, 0x69, 0x64, 0x12, 0x1b, + 0x0a, 0x08, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x53, 0x65, 0x71, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x5f, 0x73, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x41, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0b, 0x41, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x6e, 0x74, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x6c, 0x69, 0x63, 0x61, 0x6e, 0x74, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, - 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x12, 0x1d, - 0x0a, 0x09, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x1b, 0x0a, - 0x08, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x55, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x5f, 0x75, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x22, 0x0a, 0x03, 0x52, 0x65, - 0x6c, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, - 0x77, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x6c, 0x52, 0x03, 0x72, 0x65, 0x6c, 0x12, 0x2c, - 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x52, 0x65, 0x6c, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, - 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x44, 0x65, 0x6c, 0x53, 0x68, 0x6f, 0x77, - 0x52, 0x65, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x6c, 0x5f, 0x72, 0x65, 0x6c, 0x22, 0x3d, 0x0a, 0x0c, - 0x53, 0x61, 0x76, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x73, 0x12, 0x10, 0x0a, 0x03, - 0x4d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x1b, - 0x0a, 0x08, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x55, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x5f, 0x75, 0x69, 0x64, 0x22, 0x57, 0x0a, 0x0c, 0x41, - 0x70, 0x70, 0x6c, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x50, - 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, - 0x1b, 0x0a, 0x08, 0x50, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x16, 0x0a, 0x06, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x22, 0x60, 0x0a, 0x0c, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x28, 0x0a, 0x04, 0x44, 0x61, - 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, - 0x6f, 0x77, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x04, - 0x64, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x2b, 0x0a, 0x0c, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x53, - 0x68, 0x6f, 0x77, 0x52, 0x65, 0x71, 0x12, 0x1b, 0x0a, 0x08, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x55, - 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x5f, - 0x75, 0x69, 0x64, 0x22, 0x75, 0x0a, 0x0c, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x53, 0x68, 0x6f, 0x77, - 0x52, 0x65, 0x73, 0x12, 0x2a, 0x0a, 0x05, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x41, 0x70, 0x70, - 0x6c, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x05, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x12, - 0x27, 0x0a, 0x04, 0x53, 0x68, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, - 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x44, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x52, 0x04, 0x73, 0x68, 0x6f, 0x77, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0xe9, 0x01, 0x0a, 0x0b, 0x41, - 0x70, 0x70, 0x6c, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x1b, 0x0a, 0x08, 0x41, 0x70, - 0x70, 0x6c, 0x79, 0x55, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x70, - 0x70, 0x6c, 0x79, 0x5f, 0x75, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x08, 0x41, 0x70, 0x70, 0x6c, 0x79, - 0x53, 0x65, 0x71, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x70, 0x70, 0x6c, 0x79, - 0x5f, 0x73, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x6e, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0b, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x6e, 0x74, 0x49, - 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x09, 0x41, 0x70, 0x70, 0x6c, 0x79, - 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x70, 0x6c, - 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, - 0x0a, 0x06, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x22, 0x2d, 0x0a, 0x0e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, - 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x1b, 0x0a, 0x08, 0x41, 0x70, 0x70, 0x6c, - 0x79, 0x55, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x70, 0x70, 0x6c, - 0x79, 0x5f, 0x75, 0x69, 0x64, 0x22, 0x48, 0x0a, 0x0e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x6c, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x24, 0x0a, 0x04, 0x44, 0x61, 0x74, - 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, - 0x77, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x6c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, - 0x63, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, - 0x16, 0x0a, 0x06, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x1b, 0x0a, 0x08, 0x41, 0x70, 0x70, 0x6c, 0x79, - 0x55, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x70, 0x70, 0x6c, 0x79, - 0x5f, 0x75, 0x69, 0x64, 0x22, 0x2a, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x41, 0x70, 0x70, 0x6c, 0x79, - 0x52, 0x65, 0x71, 0x12, 0x1b, 0x0a, 0x08, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x55, 0x49, 0x44, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x5f, 0x75, 0x69, 0x64, - 0x32, 0xc5, 0x09, 0x0a, 0x07, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x3a, 0x0a, 0x0a, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x14, 0x2e, 0x41, 0x72, 0x74, - 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x71, - 0x1a, 0x14, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x53, - 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x3a, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x14, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, - 0x2e, 0x53, 0x61, 0x76, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x41, - 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x52, - 0x65, 0x73, 0x22, 0x00, 0x12, 0x34, 0x0a, 0x07, 0x44, 0x65, 0x6c, 0x53, 0x68, 0x6f, 0x77, 0x12, - 0x13, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x44, 0x65, 0x6c, 0x53, 0x68, 0x6f, - 0x77, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x43, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x38, 0x0a, 0x08, 0x53, 0x68, - 0x6f, 0x77, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, - 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x41, - 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x73, 0x22, 0x00, 0x12, 0x3f, 0x0a, 0x0f, 0x53, 0x68, 0x6f, 0x77, 0x4c, 0x69, 0x73, 0x74, - 0x57, 0x69, 0x74, 0x68, 0x52, 0x65, 0x6c, 0x12, 0x14, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, - 0x77, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, + 0x4e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x12, 0x1d, + 0x0a, 0x09, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x22, 0x2d, 0x0a, + 0x0e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, + 0x1b, 0x0a, 0x08, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x55, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x5f, 0x75, 0x69, 0x64, 0x22, 0x48, 0x0a, 0x0e, + 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x12, 0x10, + 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, + 0x12, 0x24, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, + 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x6c, + 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x63, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x41, 0x70, 0x70, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x12, 0x16, + 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x1b, + 0x0a, 0x08, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x55, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x5f, 0x75, 0x69, 0x64, 0x22, 0x2a, 0x0a, 0x0b, 0x44, + 0x65, 0x6c, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x71, 0x12, 0x1b, 0x0a, 0x08, 0x41, 0x70, + 0x70, 0x6c, 0x79, 0x55, 0x49, 0x44, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x61, 0x70, + 0x70, 0x6c, 0x79, 0x5f, 0x75, 0x69, 0x64, 0x32, 0xc5, 0x09, 0x0a, 0x07, 0x41, 0x72, 0x74, 0x53, + 0x68, 0x6f, 0x77, 0x12, 0x3a, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x68, 0x6f, + 0x77, 0x12, 0x14, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x61, 0x76, 0x65, + 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, + 0x77, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, + 0x3a, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x14, 0x2e, + 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x53, 0x68, 0x6f, 0x77, + 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x61, + 0x76, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x34, 0x0a, 0x07, 0x44, + 0x65, 0x6c, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x13, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, + 0x2e, 0x44, 0x65, 0x6c, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x41, 0x72, + 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x22, + 0x00, 0x12, 0x38, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x77, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x4c, 0x69, 0x73, 0x74, - 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x56, 0x0a, 0x12, 0x53, 0x68, 0x6f, 0x77, 0x4c, 0x69, 0x73, - 0x74, 0x46, 0x6f, 0x72, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x1e, 0x2e, 0x41, 0x72, - 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6f, - 0x72, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x1e, 0x2e, 0x41, 0x72, - 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6f, - 0x72, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x4d, 0x0a, - 0x0f, 0x53, 0x68, 0x6f, 0x77, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, - 0x12, 0x19, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x41, 0x72, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x41, 0x72, - 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x3e, 0x0a, 0x0a, - 0x53, 0x68, 0x6f, 0x77, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x16, 0x2e, 0x41, 0x72, 0x74, - 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, - 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x68, 0x6f, - 0x77, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x59, 0x0a, 0x13, - 0x53, 0x68, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x49, - 0x6e, 0x66, 0x6f, 0x12, 0x1f, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x68, - 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, - 0x68, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x49, 0x6e, - 0x66, 0x6f, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x44, 0x0a, 0x0c, 0x41, 0x72, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x18, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, - 0x77, 0x2e, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x72, 0x69, 0x63, 0x65, 0x52, 0x65, - 0x71, 0x1a, 0x18, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x41, 0x72, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x50, 0x72, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x3d, 0x0a, - 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x12, 0x15, 0x2e, 0x41, - 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x79, - 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x61, - 0x76, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x3d, 0x0a, 0x0b, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x12, 0x15, 0x2e, 0x41, 0x72, - 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x52, - 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x61, 0x76, - 0x65, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x08, 0x44, - 0x65, 0x6c, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x12, 0x14, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, - 0x77, 0x2e, 0x44, 0x65, 0x6c, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, - 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, - 0x73, 0x22, 0x00, 0x12, 0x41, 0x0a, 0x11, 0x53, 0x68, 0x6f, 0x77, 0x4c, 0x69, 0x73, 0x74, 0x57, - 0x69, 0x74, 0x68, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x12, 0x14, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, - 0x6f, 0x77, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x14, + 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x68, + 0x6f, 0x77, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x3f, 0x0a, 0x0f, 0x53, + 0x68, 0x6f, 0x77, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x52, 0x65, 0x6c, 0x12, 0x14, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x41, 0x70, 0x70, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1d, 0x2e, 0x41, 0x72, - 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, - 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x41, 0x72, 0x74, - 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x22, 0x00, - 0x12, 0x3b, 0x0a, 0x09, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x15, 0x2e, - 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x41, - 0x70, 0x70, 0x6c, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x3d, 0x0a, - 0x0b, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x15, 0x2e, 0x41, - 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x53, 0x68, 0x6f, 0x77, - 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x41, 0x70, - 0x70, 0x6c, 0x79, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x4a, 0x0a, 0x10, - 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x72, 0x69, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, - 0x12, 0x16, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x44, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, - 0x6f, 0x77, 0x2e, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x72, 0x69, 0x63, 0x65, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x22, 0x00, 0x42, 0x13, 0x5a, 0x11, 0x2e, 0x2f, 0x61, 0x72, - 0x74, 0x53, 0x68, 0x6f, 0x77, 0x3b, 0x61, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x74, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, + 0x68, 0x6f, 0x77, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x56, 0x0a, 0x12, + 0x53, 0x68, 0x6f, 0x77, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6f, 0x72, 0x41, 0x72, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x12, 0x1e, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x68, 0x6f, + 0x77, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6f, 0x72, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, + 0x65, 0x71, 0x1a, 0x1e, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x68, 0x6f, + 0x77, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6f, 0x72, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, + 0x65, 0x73, 0x22, 0x00, 0x12, 0x4d, 0x0a, 0x0f, 0x53, 0x68, 0x6f, 0x77, 0x41, 0x72, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x19, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, + 0x77, 0x2e, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, + 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x68, 0x6f, + 0x77, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, + 0x73, 0x22, 0x00, 0x12, 0x3e, 0x0a, 0x0a, 0x53, 0x68, 0x6f, 0x77, 0x44, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x12, 0x16, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x68, 0x6f, 0x77, + 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x41, 0x72, 0x74, 0x53, + 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, + 0x73, 0x22, 0x00, 0x12, 0x59, 0x0a, 0x13, 0x53, 0x68, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x69, + 0x73, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1f, 0x2e, 0x41, 0x72, 0x74, + 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, + 0x69, 0x63, 0x61, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x41, 0x72, + 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, + 0x74, 0x69, 0x63, 0x61, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x44, + 0x0a, 0x0c, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x18, + 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x50, 0x72, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, + 0x6f, 0x77, 0x2e, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x72, 0x69, 0x63, 0x65, 0x52, + 0x65, 0x73, 0x22, 0x00, 0x12, 0x3d, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, + 0x70, 0x6c, 0x79, 0x12, 0x15, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x61, + 0x76, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x41, 0x72, 0x74, + 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, + 0x73, 0x22, 0x00, 0x12, 0x3d, 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, + 0x6c, 0x79, 0x12, 0x15, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x61, 0x76, + 0x65, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x41, 0x72, 0x74, 0x53, + 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x73, + 0x22, 0x00, 0x12, 0x36, 0x0a, 0x08, 0x44, 0x65, 0x6c, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x12, 0x14, + 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x44, 0x65, 0x6c, 0x41, 0x70, 0x70, 0x6c, + 0x79, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x43, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x41, 0x0a, 0x11, 0x53, 0x68, + 0x6f, 0x77, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x12, + 0x14, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, + 0x53, 0x68, 0x6f, 0x77, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x48, 0x0a, + 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x1d, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, + 0x71, 0x1a, 0x12, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x3b, 0x0a, 0x09, 0x41, 0x70, 0x70, 0x6c, 0x79, + 0x4c, 0x69, 0x73, 0x74, 0x12, 0x15, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x41, + 0x70, 0x70, 0x6c, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x41, 0x72, + 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x65, 0x73, 0x22, 0x00, 0x12, 0x3d, 0x0a, 0x0b, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x44, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x12, 0x15, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x41, 0x70, + 0x70, 0x6c, 0x79, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x41, 0x72, 0x74, + 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, + 0x73, 0x22, 0x00, 0x12, 0x4a, 0x0a, 0x10, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x72, + 0x69, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, + 0x77, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x1a, + 0x1c, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x50, 0x72, 0x69, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x22, 0x00, 0x42, + 0x13, 0x5a, 0x11, 0x2e, 0x2f, 0x61, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x3b, 0x61, 0x72, 0x74, + 0x53, 0x68, 0x6f, 0x77, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/pb/artshow.proto b/pb/artshow.proto index 9813025..63a7c66 100644 --- a/pb/artshow.proto +++ b/pb/artshow.proto @@ -37,11 +37,12 @@ message SaveShowReq { int32 IsShow = 8 [json_name = "is_show"]; string CreateTime = 9 [json_name = "create_time"]; string Operator = 10 [json_name = "operator"]; + string ShowSeq = 11 [json_name = "show_seq"]; - string ShowUID = 11 [json_name = "id"]; + string ShowUID = 12 [json_name = "id"]; - repeated ArtworkDetail Artwork = 12 [json_name = "show_artwork"]; - repeated DelArtworkDetail DelArtwork = 13 [json_name = "del_show_artwork"]; + repeated ArtworkDetail Artwork = 13 [json_name = "show_artwork"]; + repeated DelArtworkDetail DelArtwork = 14 [json_name = "del_show_artwork"]; } @@ -96,8 +97,8 @@ message ShowListReq { int32 Page = 1 [json_name = "page"]; int32 PageSize = 2 [json_name = "page_size"]; - string StartTime = 3 [json_name = "start_time"]; - string EndTime = 4 [json_name = "end_time"]; + string StartShowTime = 3 [json_name = "start_show_time"]; + string EndShowTime = 4 [json_name = "end_show_time"]; string ShowSeq = 5 [json_name = "show_seq"]; string ShowName = 6 [json_name = "show_name"]; string ArtistName = 7 [json_name = "artist_name"]; @@ -105,7 +106,8 @@ message ShowListReq { int64 EndPrice = 9 [json_name = "end_price"]; int64 StartReward = 10 [json_name = "start_reward"]; int64 EndReward = 11 [json_name = "end_reward"]; - int32 IsShow = 12 [json_name = "is_show"]; + string Address = 12 [json_name = "address"]; + repeated int32 IsShow = 13 [json_name = "is_show"]; } message ShowListForArtworkReq { diff --git a/pkg/db/init.go b/pkg/db/init.go index eebd1f5..674b2e9 100644 --- a/pkg/db/init.go +++ b/pkg/db/init.go @@ -40,7 +40,7 @@ func Init(confPath string) { path := strings.Join([]string{DbUser, ":", DbPassWord, "@tcp(", DbHost, ":", DbPort, ")/", DbName, "?charset=utf8&parseTime=true"}, "") //连接数据库 Database(path) - migration() //迁移表 按需打开 + //migration() //迁移表 按需打开 } func LoadMysqlData(file *ini.File) { diff --git a/pkg/m/msg.go b/pkg/m/msg.go index fff5f98..4a5d7d9 100644 --- a/pkg/m/msg.go +++ b/pkg/m/msg.go @@ -66,8 +66,10 @@ const ( ERROR_CREATE = "创建失败" // 画展包创建错误 - ERROR_SHOW_NAME = "画展包名缺失" - ERROR_TIME = "生成时间缺失" + ERROR_SHOW_NAME = "画展包名缺失" + ERROR_SHOW_EXIST = "画展包名已存在" + ERROR_ARTWORK_CREATE = "画展包画作创建失败" + ERROR_TIME = "生成时间缺失" ERROR_INVALID_ID = "无效的记录ID" @@ -78,4 +80,5 @@ const ( ERROR_NUM = "数量错误" ERROR_NOT_UPDATE_ISSHOW = "画展包已被使用" + ERROR_NOT_ARTIST_SEQ = "无效的画家编号" ) diff --git a/pkg/serializer/art_show.go b/pkg/serializer/art_show.go index 93294dc..566c950 100644 --- a/pkg/serializer/art_show.go +++ b/pkg/serializer/art_show.go @@ -13,6 +13,7 @@ func BuildArtShowM(in *artShow.SaveShowReq) (out *model.ArtShow) { out.ShowName = in.ShowName out.ArtistName = in.ArtistName out.ArtistUID = in.ArtistUID + out.ShowSeq = in.ShowSeq out.ArtworkNum = in.ArtworkNum out.Price = in.Price out.Ruler = in.Ruler diff --git a/pkg/serializer/artwork_price.go b/pkg/serializer/artwork_price.go index 9ba4c27..dfca446 100644 --- a/pkg/serializer/artwork_price.go +++ b/pkg/serializer/artwork_price.go @@ -27,6 +27,24 @@ func BuildShowArtworkM(in []*artShow.ArtworkDetail, showUID string) (out []*mode return } +func BuildShowArtwork(in *artShow.ArtworkDetail, showUID string) (out *model.ArtworkPrice) { + out = new(model.ArtworkPrice) + out.ArtworkUID = in.ArtworkUID + out.ArtworkName = in.ArtworkName + out.ArtistName = in.ArtistName + out.SmallPic = in.SmallPic + out.Ruler = in.Ruler + out.Length = in.Length + out.Width = in.Width + out.ArtworkPriceUID = in.ArtworkPriceUID + if showUID != "" { + out.ShowUID = showUID + } else { + out.ShowUID = in.ShowUID + } + return +} + func BuildShowArtworkRpc(in []*model.ArtworkPrice) (out []*artShow.ArtworkDetail) { out = make([]*artShow.ArtworkDetail, len(in)) for i := 0; i < len(in); i++ { diff --git a/pkg/serializer/calc_price.go b/pkg/serializer/calc_price.go index 2b03e77..63ce036 100644 --- a/pkg/serializer/calc_price.go +++ b/pkg/serializer/calc_price.go @@ -39,7 +39,7 @@ func CalcPrice(total_price int64, total_ruler int32, artworksPrices []*model.Art maxId, dirId := findArtworkToAdd(artworksPrices, int64(price)) - if dirId >= 0 { + if dirId > -1 { artworksPrices[dirId].Price = artworksPrices[dirId].Price + loss_total_price } else { artworksPrices[maxId].Price = artworksPrices[maxId].Price + loss_total_price @@ -60,7 +60,7 @@ func CalcPrice(total_price int64, total_ruler int32, artworksPrices []*model.Art } } - if dirId >= 0 { + if dirId > -1 { artworksPrices[dirId].ArtworkPrice = artworksPrices[dirId].ArtworkPrice + loss_artwork_price } else { artworksPrices[maxId].ArtworkPrice = artworksPrices[maxId].ArtworkPrice + loss_artwork_price @@ -77,7 +77,7 @@ func CalcPrice(total_price int64, total_ruler int32, artworksPrices []*model.Art } } - if dirId >= 0 { + if dirId > -1 { artworksPrices[dirId].CopyrightPrice = artworksPrices[dirId].CopyrightPrice + loss_copyright_price } else { artworksPrices[maxId].CopyrightPrice = artworksPrices[maxId].CopyrightPrice + loss_copyright_price @@ -141,6 +141,8 @@ func calcTotalPrice(artworks []*model.ArtworkPrice, add_balance, price int64) in artworks[i].Price = int64(add_balance_single) artworks[i].Price += int64(artworks[i].Ruler) * price + artworks[i].RulerPrice = price + current_total_price += artworks[i].Price } return current_total_price