// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.35.2
// 	protoc        v5.29.0--rc2
// source: douyin.proto

package douyin

import (
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	reflect "reflect"
	sync "sync"
)

const (
	// Verify that this generated code is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	// Verify that runtime/protoimpl is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

type CommentTypeTag int32

const (
	CommentTypeTag_COMMENTTYPETAGUNKNOWN CommentTypeTag = 0
	CommentTypeTag_COMMENTTYPETAGSTAR    CommentTypeTag = 1
)

// Enum value maps for CommentTypeTag.
var (
	CommentTypeTag_name = map[int32]string{
		0: "COMMENTTYPETAGUNKNOWN",
		1: "COMMENTTYPETAGSTAR",
	}
	CommentTypeTag_value = map[string]int32{
		"COMMENTTYPETAGUNKNOWN": 0,
		"COMMENTTYPETAGSTAR":    1,
	}
)

func (x CommentTypeTag) Enum() *CommentTypeTag {
	p := new(CommentTypeTag)
	*p = x
	return p
}

func (x CommentTypeTag) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (CommentTypeTag) Descriptor() protoreflect.EnumDescriptor {
	return file_douyin_proto_enumTypes[0].Descriptor()
}

func (CommentTypeTag) Type() protoreflect.EnumType {
	return &file_douyin_proto_enumTypes[0]
}

func (x CommentTypeTag) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use CommentTypeTag.Descriptor instead.
func (CommentTypeTag) EnumDescriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{0}
}

// from https://github.com/scx567888/live-room-watcher/blob/master/src/main/proto/douyin_hack/webcast/im/RoomMsgTypeEnum.proto
type RoomMsgTypeEnum int32

const (
	RoomMsgTypeEnum_DEFAULTROOMMSG              RoomMsgTypeEnum = 0
	RoomMsgTypeEnum_ECOMLIVEREPLAYSAVEROOMMSG   RoomMsgTypeEnum = 1
	RoomMsgTypeEnum_CONSUMERRELATIONROOMMSG     RoomMsgTypeEnum = 2
	RoomMsgTypeEnum_JUMANJIDATAAUTHNOTIFYMSG    RoomMsgTypeEnum = 3
	RoomMsgTypeEnum_VSWELCOMEMSG                RoomMsgTypeEnum = 4
	RoomMsgTypeEnum_MINORREFUNDMSG              RoomMsgTypeEnum = 5
	RoomMsgTypeEnum_PAIDLIVEROOMNOTIFYANCHORMSG RoomMsgTypeEnum = 6
	RoomMsgTypeEnum_HOSTTEAMSYSTEMMSG           RoomMsgTypeEnum = 7
)

// Enum value maps for RoomMsgTypeEnum.
var (
	RoomMsgTypeEnum_name = map[int32]string{
		0: "DEFAULTROOMMSG",
		1: "ECOMLIVEREPLAYSAVEROOMMSG",
		2: "CONSUMERRELATIONROOMMSG",
		3: "JUMANJIDATAAUTHNOTIFYMSG",
		4: "VSWELCOMEMSG",
		5: "MINORREFUNDMSG",
		6: "PAIDLIVEROOMNOTIFYANCHORMSG",
		7: "HOSTTEAMSYSTEMMSG",
	}
	RoomMsgTypeEnum_value = map[string]int32{
		"DEFAULTROOMMSG":              0,
		"ECOMLIVEREPLAYSAVEROOMMSG":   1,
		"CONSUMERRELATIONROOMMSG":     2,
		"JUMANJIDATAAUTHNOTIFYMSG":    3,
		"VSWELCOMEMSG":                4,
		"MINORREFUNDMSG":              5,
		"PAIDLIVEROOMNOTIFYANCHORMSG": 6,
		"HOSTTEAMSYSTEMMSG":           7,
	}
)

func (x RoomMsgTypeEnum) Enum() *RoomMsgTypeEnum {
	p := new(RoomMsgTypeEnum)
	*p = x
	return p
}

func (x RoomMsgTypeEnum) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (RoomMsgTypeEnum) Descriptor() protoreflect.EnumDescriptor {
	return file_douyin_proto_enumTypes[1].Descriptor()
}

func (RoomMsgTypeEnum) Type() protoreflect.EnumType {
	return &file_douyin_proto_enumTypes[1]
}

func (x RoomMsgTypeEnum) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use RoomMsgTypeEnum.Descriptor instead.
func (RoomMsgTypeEnum) EnumDescriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{1}
}

type Response struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	MessagesList      []*Message        `protobuf:"bytes,1,rep,name=messagesList,proto3" json:"messagesList,omitempty"`
	Cursor            string            `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"`
	FetchInterval     uint64            `protobuf:"varint,3,opt,name=fetchInterval,proto3" json:"fetchInterval,omitempty"`
	Now               uint64            `protobuf:"varint,4,opt,name=now,proto3" json:"now,omitempty"`
	InternalExt       string            `protobuf:"bytes,5,opt,name=internalExt,proto3" json:"internalExt,omitempty"`
	FetchType         uint32            `protobuf:"varint,6,opt,name=fetchType,proto3" json:"fetchType,omitempty"`
	RouteParams       map[string]string `protobuf:"bytes,7,rep,name=routeParams,proto3" json:"routeParams,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	HeartbeatDuration uint64            `protobuf:"varint,8,opt,name=heartbeatDuration,proto3" json:"heartbeatDuration,omitempty"`
	NeedAck           bool              `protobuf:"varint,9,opt,name=needAck,proto3" json:"needAck,omitempty"`
	PushServer        string            `protobuf:"bytes,10,opt,name=pushServer,proto3" json:"pushServer,omitempty"`
	LiveCursor        string            `protobuf:"bytes,11,opt,name=liveCursor,proto3" json:"liveCursor,omitempty"`
	HistoryNoMore     bool              `protobuf:"varint,12,opt,name=historyNoMore,proto3" json:"historyNoMore,omitempty"`
}

func (x *Response) Reset() {
	*x = Response{}
	mi := &file_douyin_proto_msgTypes[0]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Response) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Response) ProtoMessage() {}

func (x *Response) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[0]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Response.ProtoReflect.Descriptor instead.
func (*Response) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{0}
}

func (x *Response) GetMessagesList() []*Message {
	if x != nil {
		return x.MessagesList
	}
	return nil
}

func (x *Response) GetCursor() string {
	if x != nil {
		return x.Cursor
	}
	return ""
}

func (x *Response) GetFetchInterval() uint64 {
	if x != nil {
		return x.FetchInterval
	}
	return 0
}

func (x *Response) GetNow() uint64 {
	if x != nil {
		return x.Now
	}
	return 0
}

func (x *Response) GetInternalExt() string {
	if x != nil {
		return x.InternalExt
	}
	return ""
}

func (x *Response) GetFetchType() uint32 {
	if x != nil {
		return x.FetchType
	}
	return 0
}

func (x *Response) GetRouteParams() map[string]string {
	if x != nil {
		return x.RouteParams
	}
	return nil
}

func (x *Response) GetHeartbeatDuration() uint64 {
	if x != nil {
		return x.HeartbeatDuration
	}
	return 0
}

func (x *Response) GetNeedAck() bool {
	if x != nil {
		return x.NeedAck
	}
	return false
}

func (x *Response) GetPushServer() string {
	if x != nil {
		return x.PushServer
	}
	return ""
}

func (x *Response) GetLiveCursor() string {
	if x != nil {
		return x.LiveCursor
	}
	return ""
}

func (x *Response) GetHistoryNoMore() bool {
	if x != nil {
		return x.HistoryNoMore
	}
	return false
}

type Message struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Method        string `protobuf:"bytes,1,opt,name=method,proto3" json:"method,omitempty"`
	Payload       []byte `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"`
	MsgId         int64  `protobuf:"varint,3,opt,name=msgId,proto3" json:"msgId,omitempty"`
	MsgType       int32  `protobuf:"varint,4,opt,name=msgType,proto3" json:"msgType,omitempty"`
	Offset        int64  `protobuf:"varint,5,opt,name=offset,proto3" json:"offset,omitempty"`
	NeedWrdsStore bool   `protobuf:"varint,6,opt,name=needWrdsStore,proto3" json:"needWrdsStore,omitempty"`
	WrdsVersion   int64  `protobuf:"varint,7,opt,name=wrdsVersion,proto3" json:"wrdsVersion,omitempty"`
	WrdsSubKey    string `protobuf:"bytes,8,opt,name=wrdsSubKey,proto3" json:"wrdsSubKey,omitempty"`
}

func (x *Message) Reset() {
	*x = Message{}
	mi := &file_douyin_proto_msgTypes[1]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Message) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Message) ProtoMessage() {}

func (x *Message) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[1]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Message.ProtoReflect.Descriptor instead.
func (*Message) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{1}
}

func (x *Message) GetMethod() string {
	if x != nil {
		return x.Method
	}
	return ""
}

func (x *Message) GetPayload() []byte {
	if x != nil {
		return x.Payload
	}
	return nil
}

func (x *Message) GetMsgId() int64 {
	if x != nil {
		return x.MsgId
	}
	return 0
}

func (x *Message) GetMsgType() int32 {
	if x != nil {
		return x.MsgType
	}
	return 0
}

func (x *Message) GetOffset() int64 {
	if x != nil {
		return x.Offset
	}
	return 0
}

func (x *Message) GetNeedWrdsStore() bool {
	if x != nil {
		return x.NeedWrdsStore
	}
	return false
}

func (x *Message) GetWrdsVersion() int64 {
	if x != nil {
		return x.WrdsVersion
	}
	return 0
}

func (x *Message) GetWrdsSubKey() string {
	if x != nil {
		return x.WrdsSubKey
	}
	return ""
}

type EmojiChatMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Common               *Common           `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"`
	User                 *User             `protobuf:"bytes,2,opt,name=user,proto3" json:"user,omitempty"`
	EmojiId              uint64            `protobuf:"varint,3,opt,name=emojiId,proto3" json:"emojiId,omitempty"`
	EmojiContent         *Text             `protobuf:"bytes,4,opt,name=emojiContent,proto3" json:"emojiContent,omitempty"`
	DefaultContent       string            `protobuf:"bytes,5,opt,name=defaultContent,proto3" json:"defaultContent,omitempty"`
	BackgroundImage      *Image            `protobuf:"bytes,6,opt,name=backgroundImage,proto3" json:"backgroundImage,omitempty"`
	FromIntercom         bool              `protobuf:"varint,7,opt,name=fromIntercom,proto3" json:"fromIntercom,omitempty"`
	IntercomHideUserCard bool              `protobuf:"varint,8,opt,name=intercomHideUserCard,proto3" json:"intercomHideUserCard,omitempty"`
	PublicAreaCommon     *PublicAreaCommon `protobuf:"bytes,9,opt,name=public_area_common,json=publicAreaCommon,proto3" json:"public_area_common,omitempty"`
}

func (x *EmojiChatMessage) Reset() {
	*x = EmojiChatMessage{}
	mi := &file_douyin_proto_msgTypes[2]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *EmojiChatMessage) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*EmojiChatMessage) ProtoMessage() {}

func (x *EmojiChatMessage) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[2]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use EmojiChatMessage.ProtoReflect.Descriptor instead.
func (*EmojiChatMessage) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{2}
}

func (x *EmojiChatMessage) GetCommon() *Common {
	if x != nil {
		return x.Common
	}
	return nil
}

func (x *EmojiChatMessage) GetUser() *User {
	if x != nil {
		return x.User
	}
	return nil
}

func (x *EmojiChatMessage) GetEmojiId() uint64 {
	if x != nil {
		return x.EmojiId
	}
	return 0
}

func (x *EmojiChatMessage) GetEmojiContent() *Text {
	if x != nil {
		return x.EmojiContent
	}
	return nil
}

func (x *EmojiChatMessage) GetDefaultContent() string {
	if x != nil {
		return x.DefaultContent
	}
	return ""
}

func (x *EmojiChatMessage) GetBackgroundImage() *Image {
	if x != nil {
		return x.BackgroundImage
	}
	return nil
}

func (x *EmojiChatMessage) GetFromIntercom() bool {
	if x != nil {
		return x.FromIntercom
	}
	return false
}

func (x *EmojiChatMessage) GetIntercomHideUserCard() bool {
	if x != nil {
		return x.IntercomHideUserCard
	}
	return false
}

func (x *EmojiChatMessage) GetPublicAreaCommon() *PublicAreaCommon {
	if x != nil {
		return x.PublicAreaCommon
	}
	return nil
}

// 聊天
type ChatMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Common               *Common              `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"`
	User                 *User                `protobuf:"bytes,2,opt,name=user,proto3" json:"user,omitempty"`
	Content              string               `protobuf:"bytes,3,opt,name=content,proto3" json:"content,omitempty"`
	VisibleToSender      bool                 `protobuf:"varint,4,opt,name=visibleToSender,proto3" json:"visibleToSender,omitempty"`
	BackgroundImage      *Image               `protobuf:"bytes,5,opt,name=backgroundImage,proto3" json:"backgroundImage,omitempty"`
	FullScreenTextColor  string               `protobuf:"bytes,6,opt,name=fullScreenTextColor,proto3" json:"fullScreenTextColor,omitempty"`
	BackgroundImageV2    *Image               `protobuf:"bytes,7,opt,name=backgroundImageV2,proto3" json:"backgroundImageV2,omitempty"`
	PublicAreaCommon     *PublicAreaCommon    `protobuf:"bytes,9,opt,name=publicAreaCommon,proto3" json:"publicAreaCommon,omitempty"`
	GiftImage            *Image               `protobuf:"bytes,10,opt,name=giftImage,proto3" json:"giftImage,omitempty"`
	AgreeMsgId           uint64               `protobuf:"varint,11,opt,name=agreeMsgId,proto3" json:"agreeMsgId,omitempty"`
	PriorityLevel        uint32               `protobuf:"varint,12,opt,name=priorityLevel,proto3" json:"priorityLevel,omitempty"`
	LandscapeAreaCommon  *LandscapeAreaCommon `protobuf:"bytes,13,opt,name=landscapeAreaCommon,proto3" json:"landscapeAreaCommon,omitempty"`
	EventTime            uint64               `protobuf:"varint,15,opt,name=eventTime,proto3" json:"eventTime,omitempty"`
	SendReview           bool                 `protobuf:"varint,16,opt,name=sendReview,proto3" json:"sendReview,omitempty"`
	FromIntercom         bool                 `protobuf:"varint,17,opt,name=fromIntercom,proto3" json:"fromIntercom,omitempty"`
	IntercomHideUserCard bool                 `protobuf:"varint,18,opt,name=intercomHideUserCard,proto3" json:"intercomHideUserCard,omitempty"`
	// repeated chatTagsList = 19;
	ChatBy                 string `protobuf:"bytes,20,opt,name=chatBy,proto3" json:"chatBy,omitempty"`
	IndividualChatPriority uint32 `protobuf:"varint,21,opt,name=individualChatPriority,proto3" json:"individualChatPriority,omitempty"`
	RtfContent             *Text  `protobuf:"bytes,22,opt,name=rtfContent,proto3" json:"rtfContent,omitempty"`
}

func (x *ChatMessage) Reset() {
	*x = ChatMessage{}
	mi := &file_douyin_proto_msgTypes[3]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ChatMessage) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ChatMessage) ProtoMessage() {}

func (x *ChatMessage) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[3]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ChatMessage.ProtoReflect.Descriptor instead.
func (*ChatMessage) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{3}
}

func (x *ChatMessage) GetCommon() *Common {
	if x != nil {
		return x.Common
	}
	return nil
}

func (x *ChatMessage) GetUser() *User {
	if x != nil {
		return x.User
	}
	return nil
}

func (x *ChatMessage) GetContent() string {
	if x != nil {
		return x.Content
	}
	return ""
}

func (x *ChatMessage) GetVisibleToSender() bool {
	if x != nil {
		return x.VisibleToSender
	}
	return false
}

func (x *ChatMessage) GetBackgroundImage() *Image {
	if x != nil {
		return x.BackgroundImage
	}
	return nil
}

func (x *ChatMessage) GetFullScreenTextColor() string {
	if x != nil {
		return x.FullScreenTextColor
	}
	return ""
}

func (x *ChatMessage) GetBackgroundImageV2() *Image {
	if x != nil {
		return x.BackgroundImageV2
	}
	return nil
}

func (x *ChatMessage) GetPublicAreaCommon() *PublicAreaCommon {
	if x != nil {
		return x.PublicAreaCommon
	}
	return nil
}

func (x *ChatMessage) GetGiftImage() *Image {
	if x != nil {
		return x.GiftImage
	}
	return nil
}

func (x *ChatMessage) GetAgreeMsgId() uint64 {
	if x != nil {
		return x.AgreeMsgId
	}
	return 0
}

func (x *ChatMessage) GetPriorityLevel() uint32 {
	if x != nil {
		return x.PriorityLevel
	}
	return 0
}

func (x *ChatMessage) GetLandscapeAreaCommon() *LandscapeAreaCommon {
	if x != nil {
		return x.LandscapeAreaCommon
	}
	return nil
}

func (x *ChatMessage) GetEventTime() uint64 {
	if x != nil {
		return x.EventTime
	}
	return 0
}

func (x *ChatMessage) GetSendReview() bool {
	if x != nil {
		return x.SendReview
	}
	return false
}

func (x *ChatMessage) GetFromIntercom() bool {
	if x != nil {
		return x.FromIntercom
	}
	return false
}

func (x *ChatMessage) GetIntercomHideUserCard() bool {
	if x != nil {
		return x.IntercomHideUserCard
	}
	return false
}

func (x *ChatMessage) GetChatBy() string {
	if x != nil {
		return x.ChatBy
	}
	return ""
}

func (x *ChatMessage) GetIndividualChatPriority() uint32 {
	if x != nil {
		return x.IndividualChatPriority
	}
	return 0
}

func (x *ChatMessage) GetRtfContent() *Text {
	if x != nil {
		return x.RtfContent
	}
	return nil
}

type LandscapeAreaCommon struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ShowHead            bool             `protobuf:"varint,1,opt,name=showHead,proto3" json:"showHead,omitempty"`
	ShowNickname        bool             `protobuf:"varint,2,opt,name=showNickname,proto3" json:"showNickname,omitempty"`
	ShowFontColor       bool             `protobuf:"varint,3,opt,name=showFontColor,proto3" json:"showFontColor,omitempty"`
	ColorValueList      []string         `protobuf:"bytes,4,rep,name=colorValueList,proto3" json:"colorValueList,omitempty"`
	CommentTypeTagsList []CommentTypeTag `protobuf:"varint,5,rep,packed,name=commentTypeTagsList,proto3,enum=CommentTypeTag" json:"commentTypeTagsList,omitempty"`
}

func (x *LandscapeAreaCommon) Reset() {
	*x = LandscapeAreaCommon{}
	mi := &file_douyin_proto_msgTypes[4]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *LandscapeAreaCommon) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*LandscapeAreaCommon) ProtoMessage() {}

func (x *LandscapeAreaCommon) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[4]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use LandscapeAreaCommon.ProtoReflect.Descriptor instead.
func (*LandscapeAreaCommon) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{4}
}

func (x *LandscapeAreaCommon) GetShowHead() bool {
	if x != nil {
		return x.ShowHead
	}
	return false
}

func (x *LandscapeAreaCommon) GetShowNickname() bool {
	if x != nil {
		return x.ShowNickname
	}
	return false
}

func (x *LandscapeAreaCommon) GetShowFontColor() bool {
	if x != nil {
		return x.ShowFontColor
	}
	return false
}

func (x *LandscapeAreaCommon) GetColorValueList() []string {
	if x != nil {
		return x.ColorValueList
	}
	return nil
}

func (x *LandscapeAreaCommon) GetCommentTypeTagsList() []CommentTypeTag {
	if x != nil {
		return x.CommentTypeTagsList
	}
	return nil
}

type RoomUserSeqMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Common                  *Common                          `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"`
	RanksList               []*RoomUserSeqMessageContributor `protobuf:"bytes,2,rep,name=ranksList,proto3" json:"ranksList,omitempty"`
	Total                   int64                            `protobuf:"varint,3,opt,name=total,proto3" json:"total,omitempty"`
	PopStr                  string                           `protobuf:"bytes,4,opt,name=popStr,proto3" json:"popStr,omitempty"`
	SeatsList               []*RoomUserSeqMessageContributor `protobuf:"bytes,5,rep,name=seatsList,proto3" json:"seatsList,omitempty"`
	Popularity              int64                            `protobuf:"varint,6,opt,name=popularity,proto3" json:"popularity,omitempty"`
	TotalUser               int64                            `protobuf:"varint,7,opt,name=totalUser,proto3" json:"totalUser,omitempty"`
	TotalUserStr            string                           `protobuf:"bytes,8,opt,name=totalUserStr,proto3" json:"totalUserStr,omitempty"`
	TotalStr                string                           `protobuf:"bytes,9,opt,name=totalStr,proto3" json:"totalStr,omitempty"`
	OnlineUserForAnchor     string                           `protobuf:"bytes,10,opt,name=onlineUserForAnchor,proto3" json:"onlineUserForAnchor,omitempty"`
	TotalPvForAnchor        string                           `protobuf:"bytes,11,opt,name=totalPvForAnchor,proto3" json:"totalPvForAnchor,omitempty"`
	UpRightStatsStr         string                           `protobuf:"bytes,12,opt,name=upRightStatsStr,proto3" json:"upRightStatsStr,omitempty"`
	UpRightStatsStrComplete string                           `protobuf:"bytes,13,opt,name=upRightStatsStrComplete,proto3" json:"upRightStatsStrComplete,omitempty"`
}

func (x *RoomUserSeqMessage) Reset() {
	*x = RoomUserSeqMessage{}
	mi := &file_douyin_proto_msgTypes[5]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RoomUserSeqMessage) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RoomUserSeqMessage) ProtoMessage() {}

func (x *RoomUserSeqMessage) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[5]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RoomUserSeqMessage.ProtoReflect.Descriptor instead.
func (*RoomUserSeqMessage) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{5}
}

func (x *RoomUserSeqMessage) GetCommon() *Common {
	if x != nil {
		return x.Common
	}
	return nil
}

func (x *RoomUserSeqMessage) GetRanksList() []*RoomUserSeqMessageContributor {
	if x != nil {
		return x.RanksList
	}
	return nil
}

func (x *RoomUserSeqMessage) GetTotal() int64 {
	if x != nil {
		return x.Total
	}
	return 0
}

func (x *RoomUserSeqMessage) GetPopStr() string {
	if x != nil {
		return x.PopStr
	}
	return ""
}

func (x *RoomUserSeqMessage) GetSeatsList() []*RoomUserSeqMessageContributor {
	if x != nil {
		return x.SeatsList
	}
	return nil
}

func (x *RoomUserSeqMessage) GetPopularity() int64 {
	if x != nil {
		return x.Popularity
	}
	return 0
}

func (x *RoomUserSeqMessage) GetTotalUser() int64 {
	if x != nil {
		return x.TotalUser
	}
	return 0
}

func (x *RoomUserSeqMessage) GetTotalUserStr() string {
	if x != nil {
		return x.TotalUserStr
	}
	return ""
}

func (x *RoomUserSeqMessage) GetTotalStr() string {
	if x != nil {
		return x.TotalStr
	}
	return ""
}

func (x *RoomUserSeqMessage) GetOnlineUserForAnchor() string {
	if x != nil {
		return x.OnlineUserForAnchor
	}
	return ""
}

func (x *RoomUserSeqMessage) GetTotalPvForAnchor() string {
	if x != nil {
		return x.TotalPvForAnchor
	}
	return ""
}

func (x *RoomUserSeqMessage) GetUpRightStatsStr() string {
	if x != nil {
		return x.UpRightStatsStr
	}
	return ""
}

func (x *RoomUserSeqMessage) GetUpRightStatsStrComplete() string {
	if x != nil {
		return x.UpRightStatsStrComplete
	}
	return ""
}

type CommonTextMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Common *Common `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"`
	User   *User   `protobuf:"bytes,2,opt,name=user,proto3" json:"user,omitempty"`
	Scene  string  `protobuf:"bytes,3,opt,name=scene,proto3" json:"scene,omitempty"`
}

func (x *CommonTextMessage) Reset() {
	*x = CommonTextMessage{}
	mi := &file_douyin_proto_msgTypes[6]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CommonTextMessage) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CommonTextMessage) ProtoMessage() {}

func (x *CommonTextMessage) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[6]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CommonTextMessage.ProtoReflect.Descriptor instead.
func (*CommonTextMessage) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{6}
}

func (x *CommonTextMessage) GetCommon() *Common {
	if x != nil {
		return x.Common
	}
	return nil
}

func (x *CommonTextMessage) GetUser() *User {
	if x != nil {
		return x.User
	}
	return nil
}

func (x *CommonTextMessage) GetScene() string {
	if x != nil {
		return x.Scene
	}
	return ""
}

type RoomUserSeqMessageContributor struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Score            uint64 `protobuf:"varint,1,opt,name=score,proto3" json:"score,omitempty"`
	User             *User  `protobuf:"bytes,2,opt,name=user,proto3" json:"user,omitempty"`
	Rank             uint64 `protobuf:"varint,3,opt,name=rank,proto3" json:"rank,omitempty"`
	Delta            uint64 `protobuf:"varint,4,opt,name=delta,proto3" json:"delta,omitempty"`
	IsHidden         bool   `protobuf:"varint,5,opt,name=isHidden,proto3" json:"isHidden,omitempty"`
	ScoreDescription string `protobuf:"bytes,6,opt,name=scoreDescription,proto3" json:"scoreDescription,omitempty"`
	ExactlyScore     string `protobuf:"bytes,7,opt,name=exactlyScore,proto3" json:"exactlyScore,omitempty"`
}

func (x *RoomUserSeqMessageContributor) Reset() {
	*x = RoomUserSeqMessageContributor{}
	mi := &file_douyin_proto_msgTypes[7]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RoomUserSeqMessageContributor) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RoomUserSeqMessageContributor) ProtoMessage() {}

func (x *RoomUserSeqMessageContributor) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[7]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RoomUserSeqMessageContributor.ProtoReflect.Descriptor instead.
func (*RoomUserSeqMessageContributor) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{7}
}

func (x *RoomUserSeqMessageContributor) GetScore() uint64 {
	if x != nil {
		return x.Score
	}
	return 0
}

func (x *RoomUserSeqMessageContributor) GetUser() *User {
	if x != nil {
		return x.User
	}
	return nil
}

func (x *RoomUserSeqMessageContributor) GetRank() uint64 {
	if x != nil {
		return x.Rank
	}
	return 0
}

func (x *RoomUserSeqMessageContributor) GetDelta() uint64 {
	if x != nil {
		return x.Delta
	}
	return 0
}

func (x *RoomUserSeqMessageContributor) GetIsHidden() bool {
	if x != nil {
		return x.IsHidden
	}
	return false
}

func (x *RoomUserSeqMessageContributor) GetScoreDescription() string {
	if x != nil {
		return x.ScoreDescription
	}
	return ""
}

func (x *RoomUserSeqMessageContributor) GetExactlyScore() string {
	if x != nil {
		return x.ExactlyScore
	}
	return ""
}

// 礼物消息
type GiftMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Common               *Common             `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"`                                                               // 公共信息
	GiftId               int64               `protobuf:"varint,2,opt,name=gift_id,json=giftId,proto3" json:"gift_id,omitempty"`                                                // 礼物ID
	FanTicketCount       string              `protobuf:"bytes,3,opt,name=fan_ticket_count,json=fanTicketCount,proto3" json:"fan_ticket_count,omitempty"`                       // 粉丝票数量
	GroupCount           string              `protobuf:"bytes,4,opt,name=group_count,json=groupCount,proto3" json:"group_count,omitempty"`                                     // 组数
	RepeatCount          string              `protobuf:"bytes,5,opt,name=repeat_count,json=repeatCount,proto3" json:"repeat_count,omitempty"`                                  // 重复次数
	ComboCount           string              `protobuf:"bytes,6,opt,name=combo_count,json=comboCount,proto3" json:"combo_count,omitempty"`                                     // 组合数
	User                 *User               `protobuf:"bytes,7,opt,name=user,proto3" json:"user,omitempty"`                                                                   // 用户信息
	ToUser               *User               `protobuf:"bytes,8,opt,name=to_user,json=toUser,proto3" json:"to_user,omitempty"`                                                 // 接收用户信息
	RepeatEnd            int32               `protobuf:"varint,9,opt,name=repeat_end,json=repeatEnd,proto3" json:"repeat_end,omitempty"`                                       // 重复结束标志
	TextEffect           *TextEffect         `protobuf:"bytes,10,opt,name=text_effect,json=textEffect,proto3" json:"text_effect,omitempty"`                                    // 文字效果
	GroupId              string              `protobuf:"bytes,11,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"`                                             // 组ID
	IncomeTaskgifts      string              `protobuf:"bytes,12,opt,name=income_taskgifts,json=incomeTaskgifts,proto3" json:"income_taskgifts,omitempty"`                     // 收入任务礼物
	RoomFanTicketCount   string              `protobuf:"bytes,13,opt,name=room_fan_ticket_count,json=roomFanTicketCount,proto3" json:"room_fan_ticket_count,omitempty"`        // 房间粉丝票数量
	Priority             *GiftIMPriority     `protobuf:"bytes,14,opt,name=priority,proto3" json:"priority,omitempty"`                                                          // 礼物优先级
	Gift                 *GiftStruct         `protobuf:"bytes,15,opt,name=gift,proto3" json:"gift,omitempty"`                                                                  // 礼物结构
	LogId                string              `protobuf:"bytes,16,opt,name=log_id,json=logId,proto3" json:"log_id,omitempty"`                                                   // 日志ID
	SendType             string              `protobuf:"bytes,17,opt,name=send_type,json=sendType,proto3" json:"send_type,omitempty"`                                          // 发送类型
	PublicAreaCommon     *PublicAreaCommon   `protobuf:"bytes,18,opt,name=public_area_common,json=publicAreaCommon,proto3" json:"public_area_common,omitempty"`                // 公共区域信息
	TrayDisplayText      *Text               `protobuf:"bytes,19,opt,name=tray_display_text,json=trayDisplayText,proto3" json:"tray_display_text,omitempty"`                   // 托盘显示文本
	BannedDisplayEffects string              `protobuf:"bytes,20,opt,name=banned_display_effects,json=bannedDisplayEffects,proto3" json:"banned_display_effects,omitempty"`    // 禁止显示效果
	TrayInfo             *GiftTrayInfo       `protobuf:"bytes,21,opt,name=tray_info,json=trayInfo,proto3" json:"tray_info,omitempty"`                                          // 礼物托盘信息
	AssetEffectMixInfo   *AssetEffectMixInfo `protobuf:"bytes,24,opt,name=asset_effect_mix_info,json=assetEffectMixInfo,proto3" json:"asset_effect_mix_info,omitempty"`        // 资产效果混合信息
	DisplayForSelf       bool                `protobuf:"varint,25,opt,name=display_for_self,json=displayForSelf,proto3" json:"display_for_self,omitempty"`                     // 是否仅自己显示
	InteractGiftInfo     string              `protobuf:"bytes,26,opt,name=interact_gift_info,json=interactGiftInfo,proto3" json:"interact_gift_info,omitempty"`                // 交互礼物信息
	DiyItemInfo          string              `protobuf:"bytes,27,opt,name=diy_item_info,json=diyItemInfo,proto3" json:"diy_item_info,omitempty"`                               // 自定义项目信息
	MinAssetSet          int64               `protobuf:"varint,28,opt,name=min_asset_set,json=minAssetSet,proto3" json:"min_asset_set,omitempty"`                              // 最小资产集
	TotalCount           string              `protobuf:"bytes,29,opt,name=total_count,json=totalCount,proto3" json:"total_count,omitempty"`                                    // 总数
	ClientGiftSource     int32               `protobuf:"varint,30,opt,name=client_gift_source,json=clientGiftSource,proto3" json:"client_gift_source,omitempty"`               // 客户端礼物来源
	AnchorGift           *AnchorGiftData     `protobuf:"bytes,31,opt,name=anchor_gift,json=anchorGift,proto3" json:"anchor_gift,omitempty"`                                    // 主持人礼物数据
	ToUserIds            []string            `protobuf:"bytes,32,rep,name=to_user_ids,json=toUserIds,proto3" json:"to_user_ids,omitempty"`                                     // 接收用户IDs列表
	SendTime             string              `protobuf:"bytes,33,opt,name=send_time,json=sendTime,proto3" json:"send_time,omitempty"`                                          // 发送时间
	ForceDisplayEffects  string              `protobuf:"bytes,34,opt,name=force_display_effects,json=forceDisplayEffects,proto3" json:"force_display_effects,omitempty"`       // 强制显示效果
	TraceId              string              `protobuf:"bytes,35,opt,name=trace_id,json=traceId,proto3" json:"trace_id,omitempty"`                                             // 追踪ID
	EffectDisplayTs      string              `protobuf:"bytes,36,opt,name=effect_display_ts,json=effectDisplayTs,proto3" json:"effect_display_ts,omitempty"`                   // 效果显示时间戳
	SendTogether         *SendTogether       `protobuf:"bytes,37,opt,name=send_together,json=sendTogether,proto3" json:"send_together,omitempty"`                              // 一起发送信息
	ExtraEffect          *ExtraEffect        `protobuf:"bytes,38,opt,name=extra_effect,json=extraEffect,proto3" json:"extra_effect,omitempty"`                                 // 额外效果信息
	RoomHotInfo          *RoomHotInfo        `protobuf:"bytes,39,opt,name=room_hot_info,json=roomHotInfo,proto3" json:"room_hot_info,omitempty"`                               // 房间热门信息
	GiftPlayParam        string              `protobuf:"bytes,40,opt,name=GiftPlayParam,proto3" json:"GiftPlayParam,omitempty"`                                                // 礼物播放参数
	MultiSendEffectLevel int32               `protobuf:"varint,41,opt,name=multi_send_effect_level,json=multiSendEffectLevel,proto3" json:"multi_send_effect_level,omitempty"` // 多发送效果等级
	SeriesGiftData       []*SeriesPlayGift   `protobuf:"bytes,42,rep,name=series_gift_data,json=seriesGiftData,proto3" json:"series_gift_data,omitempty"`                      // 系列礼物数据列表
}

func (x *GiftMessage) Reset() {
	*x = GiftMessage{}
	mi := &file_douyin_proto_msgTypes[8]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GiftMessage) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GiftMessage) ProtoMessage() {}

func (x *GiftMessage) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[8]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GiftMessage.ProtoReflect.Descriptor instead.
func (*GiftMessage) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{8}
}

func (x *GiftMessage) GetCommon() *Common {
	if x != nil {
		return x.Common
	}
	return nil
}

func (x *GiftMessage) GetGiftId() int64 {
	if x != nil {
		return x.GiftId
	}
	return 0
}

func (x *GiftMessage) GetFanTicketCount() string {
	if x != nil {
		return x.FanTicketCount
	}
	return ""
}

func (x *GiftMessage) GetGroupCount() string {
	if x != nil {
		return x.GroupCount
	}
	return ""
}

func (x *GiftMessage) GetRepeatCount() string {
	if x != nil {
		return x.RepeatCount
	}
	return ""
}

func (x *GiftMessage) GetComboCount() string {
	if x != nil {
		return x.ComboCount
	}
	return ""
}

func (x *GiftMessage) GetUser() *User {
	if x != nil {
		return x.User
	}
	return nil
}

func (x *GiftMessage) GetToUser() *User {
	if x != nil {
		return x.ToUser
	}
	return nil
}

func (x *GiftMessage) GetRepeatEnd() int32 {
	if x != nil {
		return x.RepeatEnd
	}
	return 0
}

func (x *GiftMessage) GetTextEffect() *TextEffect {
	if x != nil {
		return x.TextEffect
	}
	return nil
}

func (x *GiftMessage) GetGroupId() string {
	if x != nil {
		return x.GroupId
	}
	return ""
}

func (x *GiftMessage) GetIncomeTaskgifts() string {
	if x != nil {
		return x.IncomeTaskgifts
	}
	return ""
}

func (x *GiftMessage) GetRoomFanTicketCount() string {
	if x != nil {
		return x.RoomFanTicketCount
	}
	return ""
}

func (x *GiftMessage) GetPriority() *GiftIMPriority {
	if x != nil {
		return x.Priority
	}
	return nil
}

func (x *GiftMessage) GetGift() *GiftStruct {
	if x != nil {
		return x.Gift
	}
	return nil
}

func (x *GiftMessage) GetLogId() string {
	if x != nil {
		return x.LogId
	}
	return ""
}

func (x *GiftMessage) GetSendType() string {
	if x != nil {
		return x.SendType
	}
	return ""
}

func (x *GiftMessage) GetPublicAreaCommon() *PublicAreaCommon {
	if x != nil {
		return x.PublicAreaCommon
	}
	return nil
}

func (x *GiftMessage) GetTrayDisplayText() *Text {
	if x != nil {
		return x.TrayDisplayText
	}
	return nil
}

func (x *GiftMessage) GetBannedDisplayEffects() string {
	if x != nil {
		return x.BannedDisplayEffects
	}
	return ""
}

func (x *GiftMessage) GetTrayInfo() *GiftTrayInfo {
	if x != nil {
		return x.TrayInfo
	}
	return nil
}

func (x *GiftMessage) GetAssetEffectMixInfo() *AssetEffectMixInfo {
	if x != nil {
		return x.AssetEffectMixInfo
	}
	return nil
}

func (x *GiftMessage) GetDisplayForSelf() bool {
	if x != nil {
		return x.DisplayForSelf
	}
	return false
}

func (x *GiftMessage) GetInteractGiftInfo() string {
	if x != nil {
		return x.InteractGiftInfo
	}
	return ""
}

func (x *GiftMessage) GetDiyItemInfo() string {
	if x != nil {
		return x.DiyItemInfo
	}
	return ""
}

func (x *GiftMessage) GetMinAssetSet() int64 {
	if x != nil {
		return x.MinAssetSet
	}
	return 0
}

func (x *GiftMessage) GetTotalCount() string {
	if x != nil {
		return x.TotalCount
	}
	return ""
}

func (x *GiftMessage) GetClientGiftSource() int32 {
	if x != nil {
		return x.ClientGiftSource
	}
	return 0
}

func (x *GiftMessage) GetAnchorGift() *AnchorGiftData {
	if x != nil {
		return x.AnchorGift
	}
	return nil
}

func (x *GiftMessage) GetToUserIds() []string {
	if x != nil {
		return x.ToUserIds
	}
	return nil
}

func (x *GiftMessage) GetSendTime() string {
	if x != nil {
		return x.SendTime
	}
	return ""
}

func (x *GiftMessage) GetForceDisplayEffects() string {
	if x != nil {
		return x.ForceDisplayEffects
	}
	return ""
}

func (x *GiftMessage) GetTraceId() string {
	if x != nil {
		return x.TraceId
	}
	return ""
}

func (x *GiftMessage) GetEffectDisplayTs() string {
	if x != nil {
		return x.EffectDisplayTs
	}
	return ""
}

func (x *GiftMessage) GetSendTogether() *SendTogether {
	if x != nil {
		return x.SendTogether
	}
	return nil
}

func (x *GiftMessage) GetExtraEffect() *ExtraEffect {
	if x != nil {
		return x.ExtraEffect
	}
	return nil
}

func (x *GiftMessage) GetRoomHotInfo() *RoomHotInfo {
	if x != nil {
		return x.RoomHotInfo
	}
	return nil
}

func (x *GiftMessage) GetGiftPlayParam() string {
	if x != nil {
		return x.GiftPlayParam
	}
	return ""
}

func (x *GiftMessage) GetMultiSendEffectLevel() int32 {
	if x != nil {
		return x.MultiSendEffectLevel
	}
	return 0
}

func (x *GiftMessage) GetSeriesGiftData() []*SeriesPlayGift {
	if x != nil {
		return x.SeriesGiftData
	}
	return nil
}

type SeriesPlayGift struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	GiftStruct         *GiftStruct         `protobuf:"bytes,1,opt,name=gift_struct,json=giftStruct,proto3" json:"gift_struct,omitempty"`                             // 礼物结构
	SeriesTrayInfo     *SeriesTrayInfo     `protobuf:"bytes,2,opt,name=series_tray_info,json=seriesTrayInfo,proto3" json:"series_tray_info,omitempty"`               // 系列托盘信息
	SendTogether       *SendTogether       `protobuf:"bytes,3,opt,name=send_together,json=sendTogether,proto3" json:"send_together,omitempty"`                       // 一起发送信息
	DiyItemInfo        string              `protobuf:"bytes,4,opt,name=diy_item_info,json=diyItemInfo,proto3" json:"diy_item_info,omitempty"`                        // 自定义项目信息
	AnchorGift         *AnchorGiftData     `protobuf:"bytes,5,opt,name=anchor_gift,json=anchorGift,proto3" json:"anchor_gift,omitempty"`                             // 主持人礼物数据
	AssetEffectMixInfo *AssetEffectMixInfo `protobuf:"bytes,6,opt,name=asset_effect_mix_info,json=assetEffectMixInfo,proto3" json:"asset_effect_mix_info,omitempty"` // 资产效果混合信息
}

func (x *SeriesPlayGift) Reset() {
	*x = SeriesPlayGift{}
	mi := &file_douyin_proto_msgTypes[9]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SeriesPlayGift) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SeriesPlayGift) ProtoMessage() {}

func (x *SeriesPlayGift) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[9]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SeriesPlayGift.ProtoReflect.Descriptor instead.
func (*SeriesPlayGift) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{9}
}

func (x *SeriesPlayGift) GetGiftStruct() *GiftStruct {
	if x != nil {
		return x.GiftStruct
	}
	return nil
}

func (x *SeriesPlayGift) GetSeriesTrayInfo() *SeriesTrayInfo {
	if x != nil {
		return x.SeriesTrayInfo
	}
	return nil
}

func (x *SeriesPlayGift) GetSendTogether() *SendTogether {
	if x != nil {
		return x.SendTogether
	}
	return nil
}

func (x *SeriesPlayGift) GetDiyItemInfo() string {
	if x != nil {
		return x.DiyItemInfo
	}
	return ""
}

func (x *SeriesPlayGift) GetAnchorGift() *AnchorGiftData {
	if x != nil {
		return x.AnchorGift
	}
	return nil
}

func (x *SeriesPlayGift) GetAssetEffectMixInfo() *AssetEffectMixInfo {
	if x != nil {
		return x.AssetEffectMixInfo
	}
	return nil
}

type SeriesTrayInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Duration   int64  `protobuf:"varint,1,opt,name=duration,proto3" json:"duration,omitempty"`                      // 持续时间
	StaticImg  *Image `protobuf:"bytes,2,opt,name=static_img,json=staticImg,proto3" json:"static_img,omitempty"`    // 静态图像信息
	DynamicImg *Image `protobuf:"bytes,3,opt,name=dynamic_img,json=dynamicImg,proto3" json:"dynamic_img,omitempty"` // 动态图像信息
}

func (x *SeriesTrayInfo) Reset() {
	*x = SeriesTrayInfo{}
	mi := &file_douyin_proto_msgTypes[10]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SeriesTrayInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SeriesTrayInfo) ProtoMessage() {}

func (x *SeriesTrayInfo) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[10]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SeriesTrayInfo.ProtoReflect.Descriptor instead.
func (*SeriesTrayInfo) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{10}
}

func (x *SeriesTrayInfo) GetDuration() int64 {
	if x != nil {
		return x.Duration
	}
	return 0
}

func (x *SeriesTrayInfo) GetStaticImg() *Image {
	if x != nil {
		return x.StaticImg
	}
	return nil
}

func (x *SeriesTrayInfo) GetDynamicImg() *Image {
	if x != nil {
		return x.DynamicImg
	}
	return nil
}

type RoomHotInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	LocalHotStrategy int32 `protobuf:"varint,1,opt,name=local_hot_strategy,json=localHotStrategy,proto3" json:"local_hot_strategy,omitempty"` // 本地热门策略
	PublicAreaLevel  int32 `protobuf:"varint,2,opt,name=public_area_level,json=publicAreaLevel,proto3" json:"public_area_level,omitempty"`    // 公共区域等级
	GiftLevel        int32 `protobuf:"varint,3,opt,name=gift_level,json=giftLevel,proto3" json:"gift_level,omitempty"`                        // 礼物等级
}

func (x *RoomHotInfo) Reset() {
	*x = RoomHotInfo{}
	mi := &file_douyin_proto_msgTypes[11]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RoomHotInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RoomHotInfo) ProtoMessage() {}

func (x *RoomHotInfo) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[11]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RoomHotInfo.ProtoReflect.Descriptor instead.
func (*RoomHotInfo) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{11}
}

func (x *RoomHotInfo) GetLocalHotStrategy() int32 {
	if x != nil {
		return x.LocalHotStrategy
	}
	return 0
}

func (x *RoomHotInfo) GetPublicAreaLevel() int32 {
	if x != nil {
		return x.PublicAreaLevel
	}
	return 0
}

func (x *RoomHotInfo) GetGiftLevel() int32 {
	if x != nil {
		return x.GiftLevel
	}
	return 0
}

type ExtraEffect struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	AssetId     string `protobuf:"bytes,1,opt,name=asset_id,json=assetId,proto3" json:"asset_id,omitempty"`              // 资源ID
	DisplayForm int32  `protobuf:"varint,2,opt,name=display_form,json=displayForm,proto3" json:"display_form,omitempty"` // 显示形式
}

func (x *ExtraEffect) Reset() {
	*x = ExtraEffect{}
	mi := &file_douyin_proto_msgTypes[12]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ExtraEffect) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ExtraEffect) ProtoMessage() {}

func (x *ExtraEffect) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[12]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ExtraEffect.ProtoReflect.Descriptor instead.
func (*ExtraEffect) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{12}
}

func (x *ExtraEffect) GetAssetId() string {
	if x != nil {
		return x.AssetId
	}
	return ""
}

func (x *ExtraEffect) GetDisplayForm() int32 {
	if x != nil {
		return x.DisplayForm
	}
	return 0
}

type SendTogether struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Id        string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`                                // 唯一标识符
	StartTime string `protobuf:"bytes,2,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` // 开始时间（int64字符串表示）
	EndTime   string `protobuf:"bytes,3,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`       // 结束时间（int64字符串表示）
}

func (x *SendTogether) Reset() {
	*x = SendTogether{}
	mi := &file_douyin_proto_msgTypes[13]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SendTogether) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SendTogether) ProtoMessage() {}

func (x *SendTogether) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[13]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SendTogether.ProtoReflect.Descriptor instead.
func (*SendTogether) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{13}
}

func (x *SendTogether) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *SendTogether) GetStartTime() string {
	if x != nil {
		return x.StartTime
	}
	return ""
}

func (x *SendTogether) GetEndTime() string {
	if x != nil {
		return x.EndTime
	}
	return ""
}

type AssetEffectMixInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// 一个重复的EffectMixImageInfo消息类型列表
	EffectMixImageInfos []*EffectMixImageInfo `protobuf:"bytes,1,rep,name=effect_mix_image_infos,json=effectMixImageInfos,proto3" json:"effect_mix_image_infos,omitempty"`
}

func (x *AssetEffectMixInfo) Reset() {
	*x = AssetEffectMixInfo{}
	mi := &file_douyin_proto_msgTypes[14]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *AssetEffectMixInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AssetEffectMixInfo) ProtoMessage() {}

func (x *AssetEffectMixInfo) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[14]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AssetEffectMixInfo.ProtoReflect.Descriptor instead.
func (*AssetEffectMixInfo) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{14}
}

func (x *AssetEffectMixInfo) GetEffectMixImageInfos() []*EffectMixImageInfo {
	if x != nil {
		return x.EffectMixImageInfos
	}
	return nil
}

type AnchorGiftData struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	AnchorDiyOriginImg *Image `protobuf:"bytes,1,opt,name=anchor_diy_origin_img,json=anchorDiyOriginImg,proto3" json:"anchor_diy_origin_img,omitempty"` // 主持人自定义原始图像
}

func (x *AnchorGiftData) Reset() {
	*x = AnchorGiftData{}
	mi := &file_douyin_proto_msgTypes[15]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *AnchorGiftData) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AnchorGiftData) ProtoMessage() {}

func (x *AnchorGiftData) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[15]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AnchorGiftData.ProtoReflect.Descriptor instead.
func (*AnchorGiftData) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{15}
}

func (x *AnchorGiftData) GetAnchorDiyOriginImg() *Image {
	if x != nil {
		return x.AnchorDiyOriginImg
	}
	return nil
}

type EffectMixImageInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ImageKey string `protobuf:"bytes,1,opt,name=image_key,json=imageKey,proto3" json:"image_key,omitempty"` // 图片关键字
	MixImage *Image `protobuf:"bytes,2,opt,name=mix_image,json=mixImage,proto3" json:"mix_image,omitempty"` // 混合图像信息
}

func (x *EffectMixImageInfo) Reset() {
	*x = EffectMixImageInfo{}
	mi := &file_douyin_proto_msgTypes[16]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *EffectMixImageInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*EffectMixImageInfo) ProtoMessage() {}

func (x *EffectMixImageInfo) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[16]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use EffectMixImageInfo.ProtoReflect.Descriptor instead.
func (*EffectMixImageInfo) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{16}
}

func (x *EffectMixImageInfo) GetImageKey() string {
	if x != nil {
		return x.ImageKey
	}
	return ""
}

func (x *EffectMixImageInfo) GetMixImage() *Image {
	if x != nil {
		return x.MixImage
	}
	return nil
}

type GiftTrayInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	TrayDisplayText *Text           `protobuf:"bytes,1,opt,name=tray_display_text,json=trayDisplayText,proto3" json:"tray_display_text,omitempty"`    // 托盘显示文本
	TrayBaseImg     *Image          `protobuf:"bytes,2,opt,name=tray_base_img,json=trayBaseImg,proto3" json:"tray_base_img,omitempty"`                // 托盘基础图像
	TrayHeadImg     *Image          `protobuf:"bytes,3,opt,name=tray_head_img,json=trayHeadImg,proto3" json:"tray_head_img,omitempty"`                // 托盘头部图像
	TrayRightImg    *Image          `protobuf:"bytes,4,opt,name=tray_right_img,json=trayRightImg,proto3" json:"tray_right_img,omitempty"`             // 托盘右侧图像
	TrayLevel       string          `protobuf:"bytes,5,opt,name=tray_level,json=trayLevel,proto3" json:"tray_level,omitempty"`                        // 托盘等级
	TrayDynamicImg  *Image          `protobuf:"bytes,6,opt,name=tray_dynamic_img,json=trayDynamicImg,proto3" json:"tray_dynamic_img,omitempty"`       // 托盘动态图像
	TraySchemaUrl   string          `protobuf:"bytes,7,opt,name=tray_schema_url,json=traySchemaUrl,proto3" json:"tray_schema_url,omitempty"`          // 托盘模式URL
	TrayType        int32           `protobuf:"varint,8,opt,name=tray_type,json=trayType,proto3" json:"tray_type,omitempty"`                          // 托盘类型
	TrayBaseImgV2   *Image          `protobuf:"bytes,9,opt,name=tray_base_img_v2,json=trayBaseImgV2,proto3" json:"tray_base_img_v2,omitempty"`        // 托盘基础图像v2
	TrayRightImgV2  *Image          `protobuf:"bytes,10,opt,name=tray_right_img_v2,json=trayRightImgV2,proto3" json:"tray_right_img_v2,omitempty"`    // 托盘右侧图像v2
	UseHighLayer    bool            `protobuf:"varint,11,opt,name=use_high_layer,json=useHighLayer,proto3" json:"use_high_layer,omitempty"`           // 是否使用高層
	Duration        string          `protobuf:"bytes,12,opt,name=duration,proto3" json:"duration,omitempty"`                                          // 持续时间
	Toast           string          `protobuf:"bytes,13,opt,name=toast,proto3" json:"toast,omitempty"`                                                // 弹出提示
	TraySlideRate   int32           `protobuf:"varint,14,opt,name=tray_slide_rate,json=traySlideRate,proto3" json:"tray_slide_rate,omitempty"`        // 托盘滑动速率
	TrayPreEffect   *TrayPreEffect  `protobuf:"bytes,15,opt,name=tray_pre_effect,json=trayPreEffect,proto3" json:"tray_pre_effect,omitempty"`         // 托盘前效果
	TrayPostEffect  *TrayPostEffect `protobuf:"bytes,16,opt,name=tray_post_effect,json=trayPostEffect,proto3" json:"tray_post_effect,omitempty"`      // 托盘后效果
	OriginGiftId    string          `protobuf:"bytes,17,opt,name=origin_gift_id,json=originGiftId,proto3" json:"origin_gift_id,omitempty"`            // 原始礼物ID
	BuffLevel       string          `protobuf:"bytes,18,opt,name=buff_level,json=buffLevel,proto3" json:"buff_level,omitempty"`                       // 增益等级
	ToolbarCardName string          `protobuf:"bytes,19,opt,name=toolbar_card_name,json=toolbarCardName,proto3" json:"toolbar_card_name,omitempty"`   // 工具栏卡片名称
	TrayBaseWebpImg *Image          `protobuf:"bytes,20,opt,name=tray_base_webp_img,json=trayBaseWebpImg,proto3" json:"tray_base_webp_img,omitempty"` // 托盘基础Webp图像
	TrayGroupMode   int32           `protobuf:"varint,21,opt,name=tray_group_mode,json=trayGroupMode,proto3" json:"tray_group_mode,omitempty"`        // 托盘组模式
}

func (x *GiftTrayInfo) Reset() {
	*x = GiftTrayInfo{}
	mi := &file_douyin_proto_msgTypes[17]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GiftTrayInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GiftTrayInfo) ProtoMessage() {}

func (x *GiftTrayInfo) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[17]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GiftTrayInfo.ProtoReflect.Descriptor instead.
func (*GiftTrayInfo) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{17}
}

func (x *GiftTrayInfo) GetTrayDisplayText() *Text {
	if x != nil {
		return x.TrayDisplayText
	}
	return nil
}

func (x *GiftTrayInfo) GetTrayBaseImg() *Image {
	if x != nil {
		return x.TrayBaseImg
	}
	return nil
}

func (x *GiftTrayInfo) GetTrayHeadImg() *Image {
	if x != nil {
		return x.TrayHeadImg
	}
	return nil
}

func (x *GiftTrayInfo) GetTrayRightImg() *Image {
	if x != nil {
		return x.TrayRightImg
	}
	return nil
}

func (x *GiftTrayInfo) GetTrayLevel() string {
	if x != nil {
		return x.TrayLevel
	}
	return ""
}

func (x *GiftTrayInfo) GetTrayDynamicImg() *Image {
	if x != nil {
		return x.TrayDynamicImg
	}
	return nil
}

func (x *GiftTrayInfo) GetTraySchemaUrl() string {
	if x != nil {
		return x.TraySchemaUrl
	}
	return ""
}

func (x *GiftTrayInfo) GetTrayType() int32 {
	if x != nil {
		return x.TrayType
	}
	return 0
}

func (x *GiftTrayInfo) GetTrayBaseImgV2() *Image {
	if x != nil {
		return x.TrayBaseImgV2
	}
	return nil
}

func (x *GiftTrayInfo) GetTrayRightImgV2() *Image {
	if x != nil {
		return x.TrayRightImgV2
	}
	return nil
}

func (x *GiftTrayInfo) GetUseHighLayer() bool {
	if x != nil {
		return x.UseHighLayer
	}
	return false
}

func (x *GiftTrayInfo) GetDuration() string {
	if x != nil {
		return x.Duration
	}
	return ""
}

func (x *GiftTrayInfo) GetToast() string {
	if x != nil {
		return x.Toast
	}
	return ""
}

func (x *GiftTrayInfo) GetTraySlideRate() int32 {
	if x != nil {
		return x.TraySlideRate
	}
	return 0
}

func (x *GiftTrayInfo) GetTrayPreEffect() *TrayPreEffect {
	if x != nil {
		return x.TrayPreEffect
	}
	return nil
}

func (x *GiftTrayInfo) GetTrayPostEffect() *TrayPostEffect {
	if x != nil {
		return x.TrayPostEffect
	}
	return nil
}

func (x *GiftTrayInfo) GetOriginGiftId() string {
	if x != nil {
		return x.OriginGiftId
	}
	return ""
}

func (x *GiftTrayInfo) GetBuffLevel() string {
	if x != nil {
		return x.BuffLevel
	}
	return ""
}

func (x *GiftTrayInfo) GetToolbarCardName() string {
	if x != nil {
		return x.ToolbarCardName
	}
	return ""
}

func (x *GiftTrayInfo) GetTrayBaseWebpImg() *Image {
	if x != nil {
		return x.TrayBaseWebpImg
	}
	return nil
}

func (x *GiftTrayInfo) GetTrayGroupMode() int32 {
	if x != nil {
		return x.TrayGroupMode
	}
	return 0
}

type TrayPostEffect struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	PostEffectImg    *Image `protobuf:"bytes,1,opt,name=post_effect_img,json=postEffectImg,proto3" json:"post_effect_img,omitempty"`           // 后置效果图像
	PostSchema       string `protobuf:"bytes,2,opt,name=post_schema,json=postSchema,proto3" json:"post_schema,omitempty"`                      // 后置效果模式
	PostDuration     string `protobuf:"bytes,3,opt,name=post_duration,json=postDuration,proto3" json:"post_duration,omitempty"`                // 后置效果持续时间（int64字符串表示）
	PostEffectSource int32  `protobuf:"varint,4,opt,name=post_effect_source,json=postEffectSource,proto3" json:"post_effect_source,omitempty"` // 后置效果来源
	// 事件跟踪的映射字段
	EventTracking map[string]string `protobuf:"bytes,10,rep,name=event_tracking,json=eventTracking,proto3" json:"event_tracking,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // 假设字段编号为10
}

func (x *TrayPostEffect) Reset() {
	*x = TrayPostEffect{}
	mi := &file_douyin_proto_msgTypes[18]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TrayPostEffect) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TrayPostEffect) ProtoMessage() {}

func (x *TrayPostEffect) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[18]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TrayPostEffect.ProtoReflect.Descriptor instead.
func (*TrayPostEffect) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{18}
}

func (x *TrayPostEffect) GetPostEffectImg() *Image {
	if x != nil {
		return x.PostEffectImg
	}
	return nil
}

func (x *TrayPostEffect) GetPostSchema() string {
	if x != nil {
		return x.PostSchema
	}
	return ""
}

func (x *TrayPostEffect) GetPostDuration() string {
	if x != nil {
		return x.PostDuration
	}
	return ""
}

func (x *TrayPostEffect) GetPostEffectSource() int32 {
	if x != nil {
		return x.PostEffectSource
	}
	return 0
}

func (x *TrayPostEffect) GetEventTracking() map[string]string {
	if x != nil {
		return x.EventTracking
	}
	return nil
}

type TrayPreEffect struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	PreEffectImg    *Image `protobuf:"bytes,1,opt,name=pre_effect_img,json=preEffectImg,proto3" json:"pre_effect_img,omitempty"`           // 预效果图像
	TrayStartTime   string `protobuf:"bytes,2,opt,name=tray_start_time,json=trayStartTime,proto3" json:"tray_start_time,omitempty"`        // 托盘开始时间（int64字符串表示）
	TrayRipple      *Image `protobuf:"bytes,3,opt,name=tray_ripple,json=trayRipple,proto3" json:"tray_ripple,omitempty"`                   // 托盘涟漪效果图像
	PreSchema       string `protobuf:"bytes,4,opt,name=pre_schema,json=preSchema,proto3" json:"pre_schema,omitempty"`                      // 预效果模式
	PreDuration     string `protobuf:"bytes,5,opt,name=pre_duration,json=preDuration,proto3" json:"pre_duration,omitempty"`                // 预效果持续时间（int64字符串表示）
	PreEffectSource int32  `protobuf:"varint,6,opt,name=pre_effect_source,json=preEffectSource,proto3" json:"pre_effect_source,omitempty"` // 预效果来源
	Extra           string `protobuf:"bytes,7,opt,name=extra,proto3" json:"extra,omitempty"`                                               // 额外信息
}

func (x *TrayPreEffect) Reset() {
	*x = TrayPreEffect{}
	mi := &file_douyin_proto_msgTypes[19]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TrayPreEffect) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TrayPreEffect) ProtoMessage() {}

func (x *TrayPreEffect) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[19]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TrayPreEffect.ProtoReflect.Descriptor instead.
func (*TrayPreEffect) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{19}
}

func (x *TrayPreEffect) GetPreEffectImg() *Image {
	if x != nil {
		return x.PreEffectImg
	}
	return nil
}

func (x *TrayPreEffect) GetTrayStartTime() string {
	if x != nil {
		return x.TrayStartTime
	}
	return ""
}

func (x *TrayPreEffect) GetTrayRipple() *Image {
	if x != nil {
		return x.TrayRipple
	}
	return nil
}

func (x *TrayPreEffect) GetPreSchema() string {
	if x != nil {
		return x.PreSchema
	}
	return ""
}

func (x *TrayPreEffect) GetPreDuration() string {
	if x != nil {
		return x.PreDuration
	}
	return ""
}

func (x *TrayPreEffect) GetPreEffectSource() int32 {
	if x != nil {
		return x.PreEffectSource
	}
	return 0
}

func (x *TrayPreEffect) GetExtra() string {
	if x != nil {
		return x.Extra
	}
	return ""
}

type GiftStruct struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Image    *Image `protobuf:"bytes,1,opt,name=image,proto3" json:"image,omitempty"`
	Describe string `protobuf:"bytes,2,opt,name=describe,proto3" json:"describe,omitempty"`
	Notify   bool   `protobuf:"varint,3,opt,name=notify,proto3" json:"notify,omitempty"`
	Duration uint64 `protobuf:"varint,4,opt,name=duration,proto3" json:"duration,omitempty"`
	Id       uint64 `protobuf:"varint,5,opt,name=id,proto3" json:"id,omitempty"`
	// GiftStructFansClubInfo fansclubInfo = 6;
	ForLinkmic         bool   `protobuf:"varint,7,opt,name=forLinkmic,proto3" json:"forLinkmic,omitempty"`
	Doodle             bool   `protobuf:"varint,8,opt,name=doodle,proto3" json:"doodle,omitempty"`
	ForFansclub        bool   `protobuf:"varint,9,opt,name=forFansclub,proto3" json:"forFansclub,omitempty"`
	Combo              bool   `protobuf:"varint,10,opt,name=combo,proto3" json:"combo,omitempty"`
	Type               uint32 `protobuf:"varint,11,opt,name=type,proto3" json:"type,omitempty"`
	DiamondCount       uint32 `protobuf:"varint,12,opt,name=diamondCount,proto3" json:"diamondCount,omitempty"`
	IsDisplayedOnPanel bool   `protobuf:"varint,13,opt,name=isDisplayedOnPanel,proto3" json:"isDisplayedOnPanel,omitempty"`
	PrimaryEffectId    uint64 `protobuf:"varint,14,opt,name=primaryEffectId,proto3" json:"primaryEffectId,omitempty"`
	GiftLabelIcon      *Image `protobuf:"bytes,15,opt,name=giftLabelIcon,proto3" json:"giftLabelIcon,omitempty"`
	Name               string `protobuf:"bytes,16,opt,name=name,proto3" json:"name,omitempty"`
	Region             string `protobuf:"bytes,17,opt,name=region,proto3" json:"region,omitempty"`
	Manual             string `protobuf:"bytes,18,opt,name=manual,proto3" json:"manual,omitempty"`
	ForCustom          bool   `protobuf:"varint,19,opt,name=forCustom,proto3" json:"forCustom,omitempty"`
	// specialEffectsMap = 20;
	Icon       *Image `protobuf:"bytes,21,opt,name=icon,proto3" json:"icon,omitempty"`
	ActionType uint32 `protobuf:"varint,22,opt,name=actionType,proto3" json:"actionType,omitempty"` // fixme 后面的就不写了还有几十个属性
}

func (x *GiftStruct) Reset() {
	*x = GiftStruct{}
	mi := &file_douyin_proto_msgTypes[20]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GiftStruct) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GiftStruct) ProtoMessage() {}

func (x *GiftStruct) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[20]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GiftStruct.ProtoReflect.Descriptor instead.
func (*GiftStruct) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{20}
}

func (x *GiftStruct) GetImage() *Image {
	if x != nil {
		return x.Image
	}
	return nil
}

func (x *GiftStruct) GetDescribe() string {
	if x != nil {
		return x.Describe
	}
	return ""
}

func (x *GiftStruct) GetNotify() bool {
	if x != nil {
		return x.Notify
	}
	return false
}

func (x *GiftStruct) GetDuration() uint64 {
	if x != nil {
		return x.Duration
	}
	return 0
}

func (x *GiftStruct) GetId() uint64 {
	if x != nil {
		return x.Id
	}
	return 0
}

func (x *GiftStruct) GetForLinkmic() bool {
	if x != nil {
		return x.ForLinkmic
	}
	return false
}

func (x *GiftStruct) GetDoodle() bool {
	if x != nil {
		return x.Doodle
	}
	return false
}

func (x *GiftStruct) GetForFansclub() bool {
	if x != nil {
		return x.ForFansclub
	}
	return false
}

func (x *GiftStruct) GetCombo() bool {
	if x != nil {
		return x.Combo
	}
	return false
}

func (x *GiftStruct) GetType() uint32 {
	if x != nil {
		return x.Type
	}
	return 0
}

func (x *GiftStruct) GetDiamondCount() uint32 {
	if x != nil {
		return x.DiamondCount
	}
	return 0
}

func (x *GiftStruct) GetIsDisplayedOnPanel() bool {
	if x != nil {
		return x.IsDisplayedOnPanel
	}
	return false
}

func (x *GiftStruct) GetPrimaryEffectId() uint64 {
	if x != nil {
		return x.PrimaryEffectId
	}
	return 0
}

func (x *GiftStruct) GetGiftLabelIcon() *Image {
	if x != nil {
		return x.GiftLabelIcon
	}
	return nil
}

func (x *GiftStruct) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *GiftStruct) GetRegion() string {
	if x != nil {
		return x.Region
	}
	return ""
}

func (x *GiftStruct) GetManual() string {
	if x != nil {
		return x.Manual
	}
	return ""
}

func (x *GiftStruct) GetForCustom() bool {
	if x != nil {
		return x.ForCustom
	}
	return false
}

func (x *GiftStruct) GetIcon() *Image {
	if x != nil {
		return x.Icon
	}
	return nil
}

func (x *GiftStruct) GetActionType() uint32 {
	if x != nil {
		return x.ActionType
	}
	return 0
}

type GiftIMPriority struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	QueueSizesList    []uint64 `protobuf:"varint,1,rep,packed,name=queueSizesList,proto3" json:"queueSizesList,omitempty"`
	SelfQueuePriority uint64   `protobuf:"varint,2,opt,name=selfQueuePriority,proto3" json:"selfQueuePriority,omitempty"`
	Priority          uint64   `protobuf:"varint,3,opt,name=priority,proto3" json:"priority,omitempty"`
}

func (x *GiftIMPriority) Reset() {
	*x = GiftIMPriority{}
	mi := &file_douyin_proto_msgTypes[21]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GiftIMPriority) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GiftIMPriority) ProtoMessage() {}

func (x *GiftIMPriority) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[21]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GiftIMPriority.ProtoReflect.Descriptor instead.
func (*GiftIMPriority) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{21}
}

func (x *GiftIMPriority) GetQueueSizesList() []uint64 {
	if x != nil {
		return x.QueueSizesList
	}
	return nil
}

func (x *GiftIMPriority) GetSelfQueuePriority() uint64 {
	if x != nil {
		return x.SelfQueuePriority
	}
	return 0
}

func (x *GiftIMPriority) GetPriority() uint64 {
	if x != nil {
		return x.Priority
	}
	return 0
}

type TextEffect struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Portrait  *TextEffectDetail `protobuf:"bytes,1,opt,name=portrait,proto3" json:"portrait,omitempty"`
	Landscape *TextEffectDetail `protobuf:"bytes,2,opt,name=landscape,proto3" json:"landscape,omitempty"`
}

func (x *TextEffect) Reset() {
	*x = TextEffect{}
	mi := &file_douyin_proto_msgTypes[22]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TextEffect) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TextEffect) ProtoMessage() {}

func (x *TextEffect) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[22]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TextEffect.ProtoReflect.Descriptor instead.
func (*TextEffect) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{22}
}

func (x *TextEffect) GetPortrait() *TextEffectDetail {
	if x != nil {
		return x.Portrait
	}
	return nil
}

func (x *TextEffect) GetLandscape() *TextEffectDetail {
	if x != nil {
		return x.Landscape
	}
	return nil
}

type TextEffectDetail struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Text         *Text  `protobuf:"bytes,1,opt,name=text,proto3" json:"text,omitempty"`
	TextFontSize uint32 `protobuf:"varint,2,opt,name=textFontSize,proto3" json:"textFontSize,omitempty"`
	Background   *Image `protobuf:"bytes,3,opt,name=background,proto3" json:"background,omitempty"`
	Start        uint32 `protobuf:"varint,4,opt,name=start,proto3" json:"start,omitempty"`
	Duration     uint32 `protobuf:"varint,5,opt,name=duration,proto3" json:"duration,omitempty"`
	X            uint32 `protobuf:"varint,6,opt,name=x,proto3" json:"x,omitempty"`
	Y            uint32 `protobuf:"varint,7,opt,name=y,proto3" json:"y,omitempty"`
	Width        uint32 `protobuf:"varint,8,opt,name=width,proto3" json:"width,omitempty"`
	Height       uint32 `protobuf:"varint,9,opt,name=height,proto3" json:"height,omitempty"`
	ShadowDx     uint32 `protobuf:"varint,10,opt,name=shadowDx,proto3" json:"shadowDx,omitempty"`
	ShadowDy     uint32 `protobuf:"varint,11,opt,name=shadowDy,proto3" json:"shadowDy,omitempty"`
	ShadowRadius uint32 `protobuf:"varint,12,opt,name=shadowRadius,proto3" json:"shadowRadius,omitempty"`
	ShadowColor  string `protobuf:"bytes,13,opt,name=shadowColor,proto3" json:"shadowColor,omitempty"`
	StrokeColor  string `protobuf:"bytes,14,opt,name=strokeColor,proto3" json:"strokeColor,omitempty"`
	StrokeWidth  uint32 `protobuf:"varint,15,opt,name=strokeWidth,proto3" json:"strokeWidth,omitempty"`
}

func (x *TextEffectDetail) Reset() {
	*x = TextEffectDetail{}
	mi := &file_douyin_proto_msgTypes[23]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TextEffectDetail) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TextEffectDetail) ProtoMessage() {}

func (x *TextEffectDetail) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[23]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TextEffectDetail.ProtoReflect.Descriptor instead.
func (*TextEffectDetail) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{23}
}

func (x *TextEffectDetail) GetText() *Text {
	if x != nil {
		return x.Text
	}
	return nil
}

func (x *TextEffectDetail) GetTextFontSize() uint32 {
	if x != nil {
		return x.TextFontSize
	}
	return 0
}

func (x *TextEffectDetail) GetBackground() *Image {
	if x != nil {
		return x.Background
	}
	return nil
}

func (x *TextEffectDetail) GetStart() uint32 {
	if x != nil {
		return x.Start
	}
	return 0
}

func (x *TextEffectDetail) GetDuration() uint32 {
	if x != nil {
		return x.Duration
	}
	return 0
}

func (x *TextEffectDetail) GetX() uint32 {
	if x != nil {
		return x.X
	}
	return 0
}

func (x *TextEffectDetail) GetY() uint32 {
	if x != nil {
		return x.Y
	}
	return 0
}

func (x *TextEffectDetail) GetWidth() uint32 {
	if x != nil {
		return x.Width
	}
	return 0
}

func (x *TextEffectDetail) GetHeight() uint32 {
	if x != nil {
		return x.Height
	}
	return 0
}

func (x *TextEffectDetail) GetShadowDx() uint32 {
	if x != nil {
		return x.ShadowDx
	}
	return 0
}

func (x *TextEffectDetail) GetShadowDy() uint32 {
	if x != nil {
		return x.ShadowDy
	}
	return 0
}

func (x *TextEffectDetail) GetShadowRadius() uint32 {
	if x != nil {
		return x.ShadowRadius
	}
	return 0
}

func (x *TextEffectDetail) GetShadowColor() string {
	if x != nil {
		return x.ShadowColor
	}
	return ""
}

func (x *TextEffectDetail) GetStrokeColor() string {
	if x != nil {
		return x.StrokeColor
	}
	return ""
}

func (x *TextEffectDetail) GetStrokeWidth() uint32 {
	if x != nil {
		return x.StrokeWidth
	}
	return 0
}

// 成员消息
type MemberMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Common                *Common                         `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"`                                                                 // 公共信息
	User                  *User                           `protobuf:"bytes,2,opt,name=user,proto3" json:"user,omitempty"`                                                                     // 用户信息
	MemberCount           int64                           `protobuf:"varint,3,opt,name=member_count,json=memberCount,proto3" json:"member_count,omitempty"`                                   // 成员数量
	Operator              *User                           `protobuf:"bytes,4,opt,name=operator,proto3" json:"operator,omitempty"`                                                             // 操作员信息
	IsSetToAdmin          bool                            `protobuf:"varint,5,opt,name=is_set_to_admin,json=isSetToAdmin,proto3" json:"is_set_to_admin,omitempty"`                            // 是否设置为管理员
	IsTopUser             bool                            `protobuf:"varint,6,opt,name=is_top_user,json=isTopUser,proto3" json:"is_top_user,omitempty"`                                       // 是否是顶级用户
	RankScore             int64                           `protobuf:"varint,7,opt,name=rank_score,json=rankScore,proto3" json:"rank_score,omitempty"`                                         // 排名分数
	TopUserNo             int64                           `protobuf:"varint,8,opt,name=top_user_no,json=topUserNo,proto3" json:"top_user_no,omitempty"`                                       // 顶级用户编号
	EnterType             int64                           `protobuf:"varint,9,opt,name=enter_type,json=enterType,proto3" json:"enter_type,omitempty"`                                         // 进入类型
	Action                int64                           `protobuf:"varint,10,opt,name=action,proto3" json:"action,omitempty"`                                                               // 动作
	ActionDescription     string                          `protobuf:"bytes,11,opt,name=action_description,json=actionDescription,proto3" json:"action_description,omitempty"`                 // 动作描述
	UserId                int64                           `protobuf:"varint,12,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`                                                 // 用户ID
	EffectConfig          *EffectConfig                   `protobuf:"bytes,13,opt,name=effect_config,json=effectConfig,proto3" json:"effect_config,omitempty"`                                // 效果配置
	PopStr                string                          `protobuf:"bytes,14,opt,name=pop_str,json=popStr,proto3" json:"pop_str,omitempty"`                                                  // 弹出字符串
	EnterEffectConfig     *EffectConfig                   `protobuf:"bytes,15,opt,name=enter_effect_config,json=enterEffectConfig,proto3" json:"enter_effect_config,omitempty"`               // 进入效果配置
	BackgroundImage       *Image                          `protobuf:"bytes,16,opt,name=background_image,json=backgroundImage,proto3" json:"background_image,omitempty"`                       // 背景图片
	BackgroundImageV2     *Image                          `protobuf:"bytes,17,opt,name=background_image_v2,json=backgroundImageV2,proto3" json:"background_image_v2,omitempty"`               // 背景图片v2
	AnchorDisplayText     *Text                           `protobuf:"bytes,18,opt,name=anchor_display_text,json=anchorDisplayText,proto3" json:"anchor_display_text,omitempty"`               // 主持人展示文本
	PublicAreaCommon      *PublicAreaCommon               `protobuf:"bytes,19,opt,name=public_area_common,json=publicAreaCommon,proto3" json:"public_area_common,omitempty"`                  // 公共区域公共信息
	UserEnterTipType      int64                           `protobuf:"varint,20,opt,name=user_enter_tip_type,json=userEnterTipType,proto3" json:"user_enter_tip_type,omitempty"`               // 用户进入提示类型
	AnchorEnterTipType    int64                           `protobuf:"varint,21,opt,name=anchor_enter_tip_type,json=anchorEnterTipType,proto3" json:"anchor_enter_tip_type,omitempty"`         // 主持人进入提示类型
	PicoEnterEffectConfig *MemberMessage_PicoEffectConfig `protobuf:"bytes,24,opt,name=pico_enter_effect_config,json=picoEnterEffectConfig,proto3" json:"pico_enter_effect_config,omitempty"` // Pico进入效果配置
	// 假设buried_point和alternative_effect_config是嵌入在MemberMessage中的map字段
	BuriedPoint             map[string]string        `protobuf:"bytes,22,rep,name=buried_point,json=buriedPoint,proto3" json:"buried_point,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`                                       // 埋点信息
	AlternativeEffectConfig map[string]*EffectConfig `protobuf:"bytes,23,rep,name=alternative_effect_config,json=alternativeEffectConfig,proto3" json:"alternative_effect_config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // 替代效果配置
}

func (x *MemberMessage) Reset() {
	*x = MemberMessage{}
	mi := &file_douyin_proto_msgTypes[24]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *MemberMessage) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MemberMessage) ProtoMessage() {}

func (x *MemberMessage) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[24]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use MemberMessage.ProtoReflect.Descriptor instead.
func (*MemberMessage) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{24}
}

func (x *MemberMessage) GetCommon() *Common {
	if x != nil {
		return x.Common
	}
	return nil
}

func (x *MemberMessage) GetUser() *User {
	if x != nil {
		return x.User
	}
	return nil
}

func (x *MemberMessage) GetMemberCount() int64 {
	if x != nil {
		return x.MemberCount
	}
	return 0
}

func (x *MemberMessage) GetOperator() *User {
	if x != nil {
		return x.Operator
	}
	return nil
}

func (x *MemberMessage) GetIsSetToAdmin() bool {
	if x != nil {
		return x.IsSetToAdmin
	}
	return false
}

func (x *MemberMessage) GetIsTopUser() bool {
	if x != nil {
		return x.IsTopUser
	}
	return false
}

func (x *MemberMessage) GetRankScore() int64 {
	if x != nil {
		return x.RankScore
	}
	return 0
}

func (x *MemberMessage) GetTopUserNo() int64 {
	if x != nil {
		return x.TopUserNo
	}
	return 0
}

func (x *MemberMessage) GetEnterType() int64 {
	if x != nil {
		return x.EnterType
	}
	return 0
}

func (x *MemberMessage) GetAction() int64 {
	if x != nil {
		return x.Action
	}
	return 0
}

func (x *MemberMessage) GetActionDescription() string {
	if x != nil {
		return x.ActionDescription
	}
	return ""
}

func (x *MemberMessage) GetUserId() int64 {
	if x != nil {
		return x.UserId
	}
	return 0
}

func (x *MemberMessage) GetEffectConfig() *EffectConfig {
	if x != nil {
		return x.EffectConfig
	}
	return nil
}

func (x *MemberMessage) GetPopStr() string {
	if x != nil {
		return x.PopStr
	}
	return ""
}

func (x *MemberMessage) GetEnterEffectConfig() *EffectConfig {
	if x != nil {
		return x.EnterEffectConfig
	}
	return nil
}

func (x *MemberMessage) GetBackgroundImage() *Image {
	if x != nil {
		return x.BackgroundImage
	}
	return nil
}

func (x *MemberMessage) GetBackgroundImageV2() *Image {
	if x != nil {
		return x.BackgroundImageV2
	}
	return nil
}

func (x *MemberMessage) GetAnchorDisplayText() *Text {
	if x != nil {
		return x.AnchorDisplayText
	}
	return nil
}

func (x *MemberMessage) GetPublicAreaCommon() *PublicAreaCommon {
	if x != nil {
		return x.PublicAreaCommon
	}
	return nil
}

func (x *MemberMessage) GetUserEnterTipType() int64 {
	if x != nil {
		return x.UserEnterTipType
	}
	return 0
}

func (x *MemberMessage) GetAnchorEnterTipType() int64 {
	if x != nil {
		return x.AnchorEnterTipType
	}
	return 0
}

func (x *MemberMessage) GetPicoEnterEffectConfig() *MemberMessage_PicoEffectConfig {
	if x != nil {
		return x.PicoEnterEffectConfig
	}
	return nil
}

func (x *MemberMessage) GetBuriedPoint() map[string]string {
	if x != nil {
		return x.BuriedPoint
	}
	return nil
}

func (x *MemberMessage) GetAlternativeEffectConfig() map[string]*EffectConfig {
	if x != nil {
		return x.AlternativeEffectConfig
	}
	return nil
}

type PublicAreaCommon struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	UserLabel                *Image             `protobuf:"bytes,1,opt,name=user_label,json=userLabel,proto3" json:"user_label,omitempty"`
	UserConsumeInRoom        string             `protobuf:"bytes,2,opt,name=user_consume_in_room,json=userConsumeInRoom,proto3" json:"user_consume_in_room,omitempty"`
	UserSendGiftCntInRoom    string             `protobuf:"bytes,3,opt,name=user_send_gift_cnt_in_room,json=userSendGiftCntInRoom,proto3" json:"user_send_gift_cnt_in_room,omitempty"`
	IndividualPriority       string             `protobuf:"bytes,4,opt,name=individual_priority,json=individualPriority,proto3" json:"individual_priority,omitempty"`
	SupportPin               string             `protobuf:"bytes,6,opt,name=support_pin,json=supportPin,proto3" json:"support_pin,omitempty"`
	SuffixText               *SuffixText        `protobuf:"bytes,7,opt,name=suffix_text,json=suffixText,proto3" json:"suffix_text,omitempty"`
	ImAction                 int32              `protobuf:"varint,8,opt,name=im_action,json=imAction,proto3" json:"im_action,omitempty"`
	ForbiddenProfile         bool               `protobuf:"varint,9,opt,name=forbidden_profile,json=forbiddenProfile,proto3" json:"forbidden_profile,omitempty"`
	ReplyResp                *ChatReplyRespInfo `protobuf:"bytes,10,opt,name=reply_resp,json=replyResp,proto3" json:"reply_resp,omitempty"`
	IsFeatured               string             `protobuf:"bytes,12,opt,name=is_featured,json=isFeatured,proto3" json:"is_featured,omitempty"`
	NeedFilterDisplay        bool               `protobuf:"varint,13,opt,name=need_filter_display,json=needFilterDisplay,proto3" json:"need_filter_display,omitempty"`
	IndividualStrategyResult map[string]string  `protobuf:"bytes,5,rep,name=individual_strategy_result,json=individualStrategyResult,proto3" json:"individual_strategy_result,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	TrackingParams           map[string]string  `protobuf:"bytes,11,rep,name=tracking_params,json=trackingParams,proto3" json:"tracking_params,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}

func (x *PublicAreaCommon) Reset() {
	*x = PublicAreaCommon{}
	mi := &file_douyin_proto_msgTypes[25]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *PublicAreaCommon) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PublicAreaCommon) ProtoMessage() {}

func (x *PublicAreaCommon) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[25]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PublicAreaCommon.ProtoReflect.Descriptor instead.
func (*PublicAreaCommon) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{25}
}

func (x *PublicAreaCommon) GetUserLabel() *Image {
	if x != nil {
		return x.UserLabel
	}
	return nil
}

func (x *PublicAreaCommon) GetUserConsumeInRoom() string {
	if x != nil {
		return x.UserConsumeInRoom
	}
	return ""
}

func (x *PublicAreaCommon) GetUserSendGiftCntInRoom() string {
	if x != nil {
		return x.UserSendGiftCntInRoom
	}
	return ""
}

func (x *PublicAreaCommon) GetIndividualPriority() string {
	if x != nil {
		return x.IndividualPriority
	}
	return ""
}

func (x *PublicAreaCommon) GetSupportPin() string {
	if x != nil {
		return x.SupportPin
	}
	return ""
}

func (x *PublicAreaCommon) GetSuffixText() *SuffixText {
	if x != nil {
		return x.SuffixText
	}
	return nil
}

func (x *PublicAreaCommon) GetImAction() int32 {
	if x != nil {
		return x.ImAction
	}
	return 0
}

func (x *PublicAreaCommon) GetForbiddenProfile() bool {
	if x != nil {
		return x.ForbiddenProfile
	}
	return false
}

func (x *PublicAreaCommon) GetReplyResp() *ChatReplyRespInfo {
	if x != nil {
		return x.ReplyResp
	}
	return nil
}

func (x *PublicAreaCommon) GetIsFeatured() string {
	if x != nil {
		return x.IsFeatured
	}
	return ""
}

func (x *PublicAreaCommon) GetNeedFilterDisplay() bool {
	if x != nil {
		return x.NeedFilterDisplay
	}
	return false
}

func (x *PublicAreaCommon) GetIndividualStrategyResult() map[string]string {
	if x != nil {
		return x.IndividualStrategyResult
	}
	return nil
}

func (x *PublicAreaCommon) GetTrackingParams() map[string]string {
	if x != nil {
		return x.TrackingParams
	}
	return nil
}

type SuffixText struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	BizType uint64 `protobuf:"varint,1,opt,name=biz_type,json=bizType,proto3" json:"biz_type,omitempty"`
	Text    *Text  `protobuf:"bytes,2,opt,name=text,proto3" json:"text,omitempty"`
}

func (x *SuffixText) Reset() {
	*x = SuffixText{}
	mi := &file_douyin_proto_msgTypes[26]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SuffixText) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SuffixText) ProtoMessage() {}

func (x *SuffixText) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[26]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SuffixText.ProtoReflect.Descriptor instead.
func (*SuffixText) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{26}
}

func (x *SuffixText) GetBizType() uint64 {
	if x != nil {
		return x.BizType
	}
	return 0
}

func (x *SuffixText) GetText() *Text {
	if x != nil {
		return x.Text
	}
	return nil
}

type ChatReplyRespInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ReplyMsgId      uint64 `protobuf:"varint,1,opt,name=reply_msg_id,json=replyMsgId,proto3" json:"reply_msg_id,omitempty"`
	ReplyId         uint64 `protobuf:"varint,2,opt,name=reply_id,json=replyId,proto3" json:"reply_id,omitempty"`
	ReplyText       *Text  `protobuf:"bytes,3,opt,name=reply_text,json=replyText,proto3" json:"reply_text,omitempty"`
	ReplyUid        uint64 `protobuf:"varint,4,opt,name=reply_uid,json=replyUid,proto3" json:"reply_uid,omitempty"`
	ReplyWebcastUid string `protobuf:"bytes,5,opt,name=reply_webcast_uid,json=replyWebcastUid,proto3" json:"reply_webcast_uid,omitempty"`
}

func (x *ChatReplyRespInfo) Reset() {
	*x = ChatReplyRespInfo{}
	mi := &file_douyin_proto_msgTypes[27]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ChatReplyRespInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ChatReplyRespInfo) ProtoMessage() {}

func (x *ChatReplyRespInfo) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[27]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ChatReplyRespInfo.ProtoReflect.Descriptor instead.
func (*ChatReplyRespInfo) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{27}
}

func (x *ChatReplyRespInfo) GetReplyMsgId() uint64 {
	if x != nil {
		return x.ReplyMsgId
	}
	return 0
}

func (x *ChatReplyRespInfo) GetReplyId() uint64 {
	if x != nil {
		return x.ReplyId
	}
	return 0
}

func (x *ChatReplyRespInfo) GetReplyText() *Text {
	if x != nil {
		return x.ReplyText
	}
	return nil
}

func (x *ChatReplyRespInfo) GetReplyUid() uint64 {
	if x != nil {
		return x.ReplyUid
	}
	return 0
}

func (x *ChatReplyRespInfo) GetReplyWebcastUid() string {
	if x != nil {
		return x.ReplyWebcastUid
	}
	return ""
}

type EffectConfig struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Type                     uint64            `protobuf:"varint,1,opt,name=type,proto3" json:"type,omitempty"`
	Icon                     *Image            `protobuf:"bytes,2,opt,name=icon,proto3" json:"icon,omitempty"`
	AvatarPos                uint64            `protobuf:"varint,3,opt,name=avatarPos,proto3" json:"avatarPos,omitempty"`
	Text                     *Text             `protobuf:"bytes,4,opt,name=text,proto3" json:"text,omitempty"`
	TextIcon                 *Image            `protobuf:"bytes,5,opt,name=textIcon,proto3" json:"textIcon,omitempty"`
	StayTime                 uint32            `protobuf:"varint,6,opt,name=stayTime,proto3" json:"stayTime,omitempty"`
	AnimAssetId              uint64            `protobuf:"varint,7,opt,name=animAssetId,proto3" json:"animAssetId,omitempty"`
	Badge                    *Image            `protobuf:"bytes,8,opt,name=badge,proto3" json:"badge,omitempty"`
	FlexSettingArrayList     []uint64          `protobuf:"varint,9,rep,packed,name=flexSettingArrayList,proto3" json:"flexSettingArrayList,omitempty"`
	TextIconOverlay          *Image            `protobuf:"bytes,10,opt,name=textIconOverlay,proto3" json:"textIconOverlay,omitempty"`
	AnimatedBadge            *Image            `protobuf:"bytes,11,opt,name=animatedBadge,proto3" json:"animatedBadge,omitempty"`
	HasSweepLight            bool              `protobuf:"varint,12,opt,name=hasSweepLight,proto3" json:"hasSweepLight,omitempty"`
	TextFlexSettingArrayList []uint64          `protobuf:"varint,13,rep,packed,name=textFlexSettingArrayList,proto3" json:"textFlexSettingArrayList,omitempty"`
	CenterAnimAssetId        uint64            `protobuf:"varint,14,opt,name=centerAnimAssetId,proto3" json:"centerAnimAssetId,omitempty"`
	DynamicImage             *Image            `protobuf:"bytes,15,opt,name=dynamicImage,proto3" json:"dynamicImage,omitempty"`
	ExtraMap                 map[string]string `protobuf:"bytes,16,rep,name=extraMap,proto3" json:"extraMap,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	Mp4AnimAssetId           uint64            `protobuf:"varint,17,opt,name=mp4AnimAssetId,proto3" json:"mp4AnimAssetId,omitempty"`
	Priority                 uint64            `protobuf:"varint,18,opt,name=priority,proto3" json:"priority,omitempty"`
	MaxWaitTime              uint64            `protobuf:"varint,19,opt,name=maxWaitTime,proto3" json:"maxWaitTime,omitempty"`
	DressId                  string            `protobuf:"bytes,20,opt,name=dressId,proto3" json:"dressId,omitempty"`
	Alignment                uint64            `protobuf:"varint,21,opt,name=alignment,proto3" json:"alignment,omitempty"`
	AlignmentOffset          uint64            `protobuf:"varint,22,opt,name=alignmentOffset,proto3" json:"alignmentOffset,omitempty"`
}

func (x *EffectConfig) Reset() {
	*x = EffectConfig{}
	mi := &file_douyin_proto_msgTypes[28]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *EffectConfig) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*EffectConfig) ProtoMessage() {}

func (x *EffectConfig) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[28]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use EffectConfig.ProtoReflect.Descriptor instead.
func (*EffectConfig) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{28}
}

func (x *EffectConfig) GetType() uint64 {
	if x != nil {
		return x.Type
	}
	return 0
}

func (x *EffectConfig) GetIcon() *Image {
	if x != nil {
		return x.Icon
	}
	return nil
}

func (x *EffectConfig) GetAvatarPos() uint64 {
	if x != nil {
		return x.AvatarPos
	}
	return 0
}

func (x *EffectConfig) GetText() *Text {
	if x != nil {
		return x.Text
	}
	return nil
}

func (x *EffectConfig) GetTextIcon() *Image {
	if x != nil {
		return x.TextIcon
	}
	return nil
}

func (x *EffectConfig) GetStayTime() uint32 {
	if x != nil {
		return x.StayTime
	}
	return 0
}

func (x *EffectConfig) GetAnimAssetId() uint64 {
	if x != nil {
		return x.AnimAssetId
	}
	return 0
}

func (x *EffectConfig) GetBadge() *Image {
	if x != nil {
		return x.Badge
	}
	return nil
}

func (x *EffectConfig) GetFlexSettingArrayList() []uint64 {
	if x != nil {
		return x.FlexSettingArrayList
	}
	return nil
}

func (x *EffectConfig) GetTextIconOverlay() *Image {
	if x != nil {
		return x.TextIconOverlay
	}
	return nil
}

func (x *EffectConfig) GetAnimatedBadge() *Image {
	if x != nil {
		return x.AnimatedBadge
	}
	return nil
}

func (x *EffectConfig) GetHasSweepLight() bool {
	if x != nil {
		return x.HasSweepLight
	}
	return false
}

func (x *EffectConfig) GetTextFlexSettingArrayList() []uint64 {
	if x != nil {
		return x.TextFlexSettingArrayList
	}
	return nil
}

func (x *EffectConfig) GetCenterAnimAssetId() uint64 {
	if x != nil {
		return x.CenterAnimAssetId
	}
	return 0
}

func (x *EffectConfig) GetDynamicImage() *Image {
	if x != nil {
		return x.DynamicImage
	}
	return nil
}

func (x *EffectConfig) GetExtraMap() map[string]string {
	if x != nil {
		return x.ExtraMap
	}
	return nil
}

func (x *EffectConfig) GetMp4AnimAssetId() uint64 {
	if x != nil {
		return x.Mp4AnimAssetId
	}
	return 0
}

func (x *EffectConfig) GetPriority() uint64 {
	if x != nil {
		return x.Priority
	}
	return 0
}

func (x *EffectConfig) GetMaxWaitTime() uint64 {
	if x != nil {
		return x.MaxWaitTime
	}
	return 0
}

func (x *EffectConfig) GetDressId() string {
	if x != nil {
		return x.DressId
	}
	return ""
}

func (x *EffectConfig) GetAlignment() uint64 {
	if x != nil {
		return x.Alignment
	}
	return 0
}

func (x *EffectConfig) GetAlignmentOffset() uint64 {
	if x != nil {
		return x.AlignmentOffset
	}
	return 0
}

type Text struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Key            string                 `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`                                                                                                                             // 字符串类型字段
	DefaultPattern string                 `protobuf:"bytes,2,opt,name=default_pattern,json=defaultPattern,proto3" json:"default_pattern,omitempty"`                                                                                 // 字符串类型字段
	DefaultFormat  *TextFormat            `protobuf:"bytes,3,opt,name=default_format,json=defaultFormat,proto3" json:"default_format,omitempty"`                                                                                    // 嵌套类型字段
	Pieces         []*TextPiece           `protobuf:"bytes,4,rep,name=pieces,proto3" json:"pieces,omitempty"`                                                                                                                       // 可重复的嵌套类型字段
	SchemaInfos    map[string]*SchemaInfo `protobuf:"bytes,20,rep,name=schema_infos,json=schemaInfos,proto3" json:"schema_infos,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // 映射类型字段
}

func (x *Text) Reset() {
	*x = Text{}
	mi := &file_douyin_proto_msgTypes[29]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Text) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Text) ProtoMessage() {}

func (x *Text) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[29]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Text.ProtoReflect.Descriptor instead.
func (*Text) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{29}
}

func (x *Text) GetKey() string {
	if x != nil {
		return x.Key
	}
	return ""
}

func (x *Text) GetDefaultPattern() string {
	if x != nil {
		return x.DefaultPattern
	}
	return ""
}

func (x *Text) GetDefaultFormat() *TextFormat {
	if x != nil {
		return x.DefaultFormat
	}
	return nil
}

func (x *Text) GetPieces() []*TextPiece {
	if x != nil {
		return x.Pieces
	}
	return nil
}

func (x *Text) GetSchemaInfos() map[string]*SchemaInfo {
	if x != nil {
		return x.SchemaInfos
	}
	return nil
}

type TextPiece struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Type            uint32               `protobuf:"varint,1,opt,name=type,proto3" json:"type,omitempty"`
	Format          *TextFormat          `protobuf:"bytes,2,opt,name=format,proto3" json:"format,omitempty"`
	ValueRef        string               `protobuf:"bytes,3,opt,name=value_ref,json=valueRef,proto3" json:"value_ref,omitempty"`
	StringValue     string               `protobuf:"bytes,11,opt,name=string_value,json=stringValue,proto3" json:"string_value,omitempty"`
	Uservalue       *TextPieceUser       `protobuf:"bytes,21,opt,name=uservalue,proto3" json:"uservalue,omitempty"`
	Giftvalue       *TextPieceGift       `protobuf:"bytes,22,opt,name=giftvalue,proto3" json:"giftvalue,omitempty"`
	Heartvalue      *TextPieceHeart      `protobuf:"bytes,23,opt,name=heartvalue,proto3" json:"heartvalue,omitempty"`
	Patternrefvalue *TextPiecePatternRef `protobuf:"bytes,24,opt,name=patternrefvalue,proto3" json:"patternrefvalue,omitempty"`
	Imagevalue      *TextPieceImage      `protobuf:"bytes,25,opt,name=imagevalue,proto3" json:"imagevalue,omitempty"`
	SchemaKey       string               `protobuf:"bytes,100,opt,name=schema_key,json=schemaKey,proto3" json:"schema_key,omitempty"`
}

func (x *TextPiece) Reset() {
	*x = TextPiece{}
	mi := &file_douyin_proto_msgTypes[30]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TextPiece) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TextPiece) ProtoMessage() {}

func (x *TextPiece) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[30]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TextPiece.ProtoReflect.Descriptor instead.
func (*TextPiece) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{30}
}

func (x *TextPiece) GetType() uint32 {
	if x != nil {
		return x.Type
	}
	return 0
}

func (x *TextPiece) GetFormat() *TextFormat {
	if x != nil {
		return x.Format
	}
	return nil
}

func (x *TextPiece) GetValueRef() string {
	if x != nil {
		return x.ValueRef
	}
	return ""
}

func (x *TextPiece) GetStringValue() string {
	if x != nil {
		return x.StringValue
	}
	return ""
}

func (x *TextPiece) GetUservalue() *TextPieceUser {
	if x != nil {
		return x.Uservalue
	}
	return nil
}

func (x *TextPiece) GetGiftvalue() *TextPieceGift {
	if x != nil {
		return x.Giftvalue
	}
	return nil
}

func (x *TextPiece) GetHeartvalue() *TextPieceHeart {
	if x != nil {
		return x.Heartvalue
	}
	return nil
}

func (x *TextPiece) GetPatternrefvalue() *TextPiecePatternRef {
	if x != nil {
		return x.Patternrefvalue
	}
	return nil
}

func (x *TextPiece) GetImagevalue() *TextPieceImage {
	if x != nil {
		return x.Imagevalue
	}
	return nil
}

func (x *TextPiece) GetSchemaKey() string {
	if x != nil {
		return x.SchemaKey
	}
	return ""
}

type TextPieceImage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Image       *Image  `protobuf:"bytes,1,opt,name=image,proto3" json:"image,omitempty"`
	ScalingRate float32 `protobuf:"fixed32,2,opt,name=scalingRate,proto3" json:"scalingRate,omitempty"`
}

func (x *TextPieceImage) Reset() {
	*x = TextPieceImage{}
	mi := &file_douyin_proto_msgTypes[31]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TextPieceImage) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TextPieceImage) ProtoMessage() {}

func (x *TextPieceImage) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[31]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TextPieceImage.ProtoReflect.Descriptor instead.
func (*TextPieceImage) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{31}
}

func (x *TextPieceImage) GetImage() *Image {
	if x != nil {
		return x.Image
	}
	return nil
}

func (x *TextPieceImage) GetScalingRate() float32 {
	if x != nil {
		return x.ScalingRate
	}
	return 0
}

type TextPiecePatternRef struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Key            string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
	DefaultPattern string `protobuf:"bytes,2,opt,name=defaultPattern,proto3" json:"defaultPattern,omitempty"`
}

func (x *TextPiecePatternRef) Reset() {
	*x = TextPiecePatternRef{}
	mi := &file_douyin_proto_msgTypes[32]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TextPiecePatternRef) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TextPiecePatternRef) ProtoMessage() {}

func (x *TextPiecePatternRef) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[32]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TextPiecePatternRef.ProtoReflect.Descriptor instead.
func (*TextPiecePatternRef) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{32}
}

func (x *TextPiecePatternRef) GetKey() string {
	if x != nil {
		return x.Key
	}
	return ""
}

func (x *TextPiecePatternRef) GetDefaultPattern() string {
	if x != nil {
		return x.DefaultPattern
	}
	return ""
}

type TextPieceHeart struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Color string `protobuf:"bytes,1,opt,name=color,proto3" json:"color,omitempty"`
}

func (x *TextPieceHeart) Reset() {
	*x = TextPieceHeart{}
	mi := &file_douyin_proto_msgTypes[33]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TextPieceHeart) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TextPieceHeart) ProtoMessage() {}

func (x *TextPieceHeart) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[33]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TextPieceHeart.ProtoReflect.Descriptor instead.
func (*TextPieceHeart) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{33}
}

func (x *TextPieceHeart) GetColor() string {
	if x != nil {
		return x.Color
	}
	return ""
}

type TextPieceGift struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	GiftId  uint64      `protobuf:"varint,1,opt,name=giftId,proto3" json:"giftId,omitempty"`
	NameRef *PatternRef `protobuf:"bytes,2,opt,name=nameRef,proto3" json:"nameRef,omitempty"`
}

func (x *TextPieceGift) Reset() {
	*x = TextPieceGift{}
	mi := &file_douyin_proto_msgTypes[34]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TextPieceGift) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TextPieceGift) ProtoMessage() {}

func (x *TextPieceGift) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[34]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TextPieceGift.ProtoReflect.Descriptor instead.
func (*TextPieceGift) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{34}
}

func (x *TextPieceGift) GetGiftId() uint64 {
	if x != nil {
		return x.GiftId
	}
	return 0
}

func (x *TextPieceGift) GetNameRef() *PatternRef {
	if x != nil {
		return x.NameRef
	}
	return nil
}

type PatternRef struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Key            string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
	DefaultPattern string `protobuf:"bytes,2,opt,name=defaultPattern,proto3" json:"defaultPattern,omitempty"`
}

func (x *PatternRef) Reset() {
	*x = PatternRef{}
	mi := &file_douyin_proto_msgTypes[35]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *PatternRef) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PatternRef) ProtoMessage() {}

func (x *PatternRef) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[35]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PatternRef.ProtoReflect.Descriptor instead.
func (*PatternRef) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{35}
}

func (x *PatternRef) GetKey() string {
	if x != nil {
		return x.Key
	}
	return ""
}

func (x *PatternRef) GetDefaultPattern() string {
	if x != nil {
		return x.DefaultPattern
	}
	return ""
}

type TextPieceUser struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	User                   *User  `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"`
	WithColon              bool   `protobuf:"varint,2,opt,name=withColon,proto3" json:"withColon,omitempty"`
	SelfShowRealName       bool   `protobuf:"varint,3,opt,name=self_show_real_name,json=selfShowRealName,proto3" json:"self_show_real_name,omitempty"`
	LeftShowExtension      uint32 `protobuf:"varint,4,opt,name=left_show_extension,json=leftShowExtension,proto3" json:"left_show_extension,omitempty"`
	LeftAdditionalContent  string `protobuf:"bytes,5,opt,name=left_additional_content,json=leftAdditionalContent,proto3" json:"left_additional_content,omitempty"`
	RightAdditionalContent string `protobuf:"bytes,6,opt,name=right_additional_content,json=rightAdditionalContent,proto3" json:"right_additional_content,omitempty"`
}

func (x *TextPieceUser) Reset() {
	*x = TextPieceUser{}
	mi := &file_douyin_proto_msgTypes[36]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TextPieceUser) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TextPieceUser) ProtoMessage() {}

func (x *TextPieceUser) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[36]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TextPieceUser.ProtoReflect.Descriptor instead.
func (*TextPieceUser) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{36}
}

func (x *TextPieceUser) GetUser() *User {
	if x != nil {
		return x.User
	}
	return nil
}

func (x *TextPieceUser) GetWithColon() bool {
	if x != nil {
		return x.WithColon
	}
	return false
}

func (x *TextPieceUser) GetSelfShowRealName() bool {
	if x != nil {
		return x.SelfShowRealName
	}
	return false
}

func (x *TextPieceUser) GetLeftShowExtension() uint32 {
	if x != nil {
		return x.LeftShowExtension
	}
	return 0
}

func (x *TextPieceUser) GetLeftAdditionalContent() string {
	if x != nil {
		return x.LeftAdditionalContent
	}
	return ""
}

func (x *TextPieceUser) GetRightAdditionalContent() string {
	if x != nil {
		return x.RightAdditionalContent
	}
	return ""
}

type TextFormat struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Color              string `protobuf:"bytes,1,opt,name=color,proto3" json:"color,omitempty"`
	Bold               bool   `protobuf:"varint,2,opt,name=bold,proto3" json:"bold,omitempty"`
	Italic             bool   `protobuf:"varint,3,opt,name=italic,proto3" json:"italic,omitempty"`
	Weight             uint32 `protobuf:"varint,4,opt,name=weight,proto3" json:"weight,omitempty"`
	ItalicAngle        uint32 `protobuf:"varint,5,opt,name=italic_angle,json=italicAngle,proto3" json:"italic_angle,omitempty"`
	FontSize           uint32 `protobuf:"varint,6,opt,name=font_size,json=fontSize,proto3" json:"font_size,omitempty"`
	UseHeighLightColor bool   `protobuf:"varint,7,opt,name=use_heigh_light_color,json=useHeighLightColor,proto3" json:"use_heigh_light_color,omitempty"`
	UseRemoteClor      bool   `protobuf:"varint,8,opt,name=use_remote_clor,json=useRemoteClor,proto3" json:"use_remote_clor,omitempty"`
}

func (x *TextFormat) Reset() {
	*x = TextFormat{}
	mi := &file_douyin_proto_msgTypes[37]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TextFormat) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TextFormat) ProtoMessage() {}

func (x *TextFormat) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[37]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TextFormat.ProtoReflect.Descriptor instead.
func (*TextFormat) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{37}
}

func (x *TextFormat) GetColor() string {
	if x != nil {
		return x.Color
	}
	return ""
}

func (x *TextFormat) GetBold() bool {
	if x != nil {
		return x.Bold
	}
	return false
}

func (x *TextFormat) GetItalic() bool {
	if x != nil {
		return x.Italic
	}
	return false
}

func (x *TextFormat) GetWeight() uint32 {
	if x != nil {
		return x.Weight
	}
	return 0
}

func (x *TextFormat) GetItalicAngle() uint32 {
	if x != nil {
		return x.ItalicAngle
	}
	return 0
}

func (x *TextFormat) GetFontSize() uint32 {
	if x != nil {
		return x.FontSize
	}
	return 0
}

func (x *TextFormat) GetUseHeighLightColor() bool {
	if x != nil {
		return x.UseHeighLightColor
	}
	return false
}

func (x *TextFormat) GetUseRemoteClor() bool {
	if x != nil {
		return x.UseRemoteClor
	}
	return false
}

// 点赞
type LikeMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Common             *Common             `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"`
	Count              uint64              `protobuf:"varint,2,opt,name=count,proto3" json:"count,omitempty"`
	Total              uint64              `protobuf:"varint,3,opt,name=total,proto3" json:"total,omitempty"`
	Color              uint64              `protobuf:"varint,4,opt,name=color,proto3" json:"color,omitempty"`
	User               *User               `protobuf:"bytes,5,opt,name=user,proto3" json:"user,omitempty"`
	Icon               string              `protobuf:"bytes,6,opt,name=icon,proto3" json:"icon,omitempty"`
	DoubleLikeDetail   *DoubleLikeDetail   `protobuf:"bytes,7,opt,name=doubleLikeDetail,proto3" json:"doubleLikeDetail,omitempty"`
	DisplayControlInfo *DisplayControlInfo `protobuf:"bytes,8,opt,name=displayControlInfo,proto3" json:"displayControlInfo,omitempty"`
	LinkmicGuestUid    uint64              `protobuf:"varint,9,opt,name=linkmicGuestUid,proto3" json:"linkmicGuestUid,omitempty"`
	Scene              string              `protobuf:"bytes,10,opt,name=scene,proto3" json:"scene,omitempty"`
	PicoDisplayInfo    *PicoDisplayInfo    `protobuf:"bytes,11,opt,name=picoDisplayInfo,proto3" json:"picoDisplayInfo,omitempty"`
}

func (x *LikeMessage) Reset() {
	*x = LikeMessage{}
	mi := &file_douyin_proto_msgTypes[38]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *LikeMessage) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*LikeMessage) ProtoMessage() {}

func (x *LikeMessage) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[38]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use LikeMessage.ProtoReflect.Descriptor instead.
func (*LikeMessage) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{38}
}

func (x *LikeMessage) GetCommon() *Common {
	if x != nil {
		return x.Common
	}
	return nil
}

func (x *LikeMessage) GetCount() uint64 {
	if x != nil {
		return x.Count
	}
	return 0
}

func (x *LikeMessage) GetTotal() uint64 {
	if x != nil {
		return x.Total
	}
	return 0
}

func (x *LikeMessage) GetColor() uint64 {
	if x != nil {
		return x.Color
	}
	return 0
}

func (x *LikeMessage) GetUser() *User {
	if x != nil {
		return x.User
	}
	return nil
}

func (x *LikeMessage) GetIcon() string {
	if x != nil {
		return x.Icon
	}
	return ""
}

func (x *LikeMessage) GetDoubleLikeDetail() *DoubleLikeDetail {
	if x != nil {
		return x.DoubleLikeDetail
	}
	return nil
}

func (x *LikeMessage) GetDisplayControlInfo() *DisplayControlInfo {
	if x != nil {
		return x.DisplayControlInfo
	}
	return nil
}

func (x *LikeMessage) GetLinkmicGuestUid() uint64 {
	if x != nil {
		return x.LinkmicGuestUid
	}
	return 0
}

func (x *LikeMessage) GetScene() string {
	if x != nil {
		return x.Scene
	}
	return ""
}

func (x *LikeMessage) GetPicoDisplayInfo() *PicoDisplayInfo {
	if x != nil {
		return x.PicoDisplayInfo
	}
	return nil
}

type SocialMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Common           *Common           `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"`
	User             *User             `protobuf:"bytes,2,opt,name=user,proto3" json:"user,omitempty"`
	ShareType        uint64            `protobuf:"varint,3,opt,name=shareType,proto3" json:"shareType,omitempty"`
	Action           uint64            `protobuf:"varint,4,opt,name=action,proto3" json:"action,omitempty"`
	ShareTarget      string            `protobuf:"bytes,5,opt,name=shareTarget,proto3" json:"shareTarget,omitempty"`
	FollowCount      uint64            `protobuf:"varint,6,opt,name=followCount,proto3" json:"followCount,omitempty"`
	PublicAreaCommon *PublicAreaCommon `protobuf:"bytes,7,opt,name=publicAreaCommon,proto3" json:"publicAreaCommon,omitempty"`
}

func (x *SocialMessage) Reset() {
	*x = SocialMessage{}
	mi := &file_douyin_proto_msgTypes[39]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SocialMessage) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SocialMessage) ProtoMessage() {}

func (x *SocialMessage) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[39]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SocialMessage.ProtoReflect.Descriptor instead.
func (*SocialMessage) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{39}
}

func (x *SocialMessage) GetCommon() *Common {
	if x != nil {
		return x.Common
	}
	return nil
}

func (x *SocialMessage) GetUser() *User {
	if x != nil {
		return x.User
	}
	return nil
}

func (x *SocialMessage) GetShareType() uint64 {
	if x != nil {
		return x.ShareType
	}
	return 0
}

func (x *SocialMessage) GetAction() uint64 {
	if x != nil {
		return x.Action
	}
	return 0
}

func (x *SocialMessage) GetShareTarget() string {
	if x != nil {
		return x.ShareTarget
	}
	return ""
}

func (x *SocialMessage) GetFollowCount() uint64 {
	if x != nil {
		return x.FollowCount
	}
	return 0
}

func (x *SocialMessage) GetPublicAreaCommon() *PublicAreaCommon {
	if x != nil {
		return x.PublicAreaCommon
	}
	return nil
}

type PicoDisplayInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ComboSumCount uint64 `protobuf:"varint,1,opt,name=comboSumCount,proto3" json:"comboSumCount,omitempty"`
	Emoji         string `protobuf:"bytes,2,opt,name=emoji,proto3" json:"emoji,omitempty"`
	EmojiIcon     *Image `protobuf:"bytes,3,opt,name=emojiIcon,proto3" json:"emojiIcon,omitempty"`
	EmojiText     string `protobuf:"bytes,4,opt,name=emojiText,proto3" json:"emojiText,omitempty"`
}

func (x *PicoDisplayInfo) Reset() {
	*x = PicoDisplayInfo{}
	mi := &file_douyin_proto_msgTypes[40]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *PicoDisplayInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PicoDisplayInfo) ProtoMessage() {}

func (x *PicoDisplayInfo) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[40]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PicoDisplayInfo.ProtoReflect.Descriptor instead.
func (*PicoDisplayInfo) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{40}
}

func (x *PicoDisplayInfo) GetComboSumCount() uint64 {
	if x != nil {
		return x.ComboSumCount
	}
	return 0
}

func (x *PicoDisplayInfo) GetEmoji() string {
	if x != nil {
		return x.Emoji
	}
	return ""
}

func (x *PicoDisplayInfo) GetEmojiIcon() *Image {
	if x != nil {
		return x.EmojiIcon
	}
	return nil
}

func (x *PicoDisplayInfo) GetEmojiText() string {
	if x != nil {
		return x.EmojiText
	}
	return ""
}

type DoubleLikeDetail struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	DoubleFlag  bool   `protobuf:"varint,1,opt,name=doubleFlag,proto3" json:"doubleFlag,omitempty"`
	SeqId       uint32 `protobuf:"varint,2,opt,name=seqId,proto3" json:"seqId,omitempty"`
	RenewalsNum uint32 `protobuf:"varint,3,opt,name=renewalsNum,proto3" json:"renewalsNum,omitempty"`
	TriggersNum uint32 `protobuf:"varint,4,opt,name=triggersNum,proto3" json:"triggersNum,omitempty"`
}

func (x *DoubleLikeDetail) Reset() {
	*x = DoubleLikeDetail{}
	mi := &file_douyin_proto_msgTypes[41]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *DoubleLikeDetail) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DoubleLikeDetail) ProtoMessage() {}

func (x *DoubleLikeDetail) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[41]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DoubleLikeDetail.ProtoReflect.Descriptor instead.
func (*DoubleLikeDetail) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{41}
}

func (x *DoubleLikeDetail) GetDoubleFlag() bool {
	if x != nil {
		return x.DoubleFlag
	}
	return false
}

func (x *DoubleLikeDetail) GetSeqId() uint32 {
	if x != nil {
		return x.SeqId
	}
	return 0
}

func (x *DoubleLikeDetail) GetRenewalsNum() uint32 {
	if x != nil {
		return x.RenewalsNum
	}
	return 0
}

func (x *DoubleLikeDetail) GetTriggersNum() uint32 {
	if x != nil {
		return x.TriggersNum
	}
	return 0
}

type DisplayControlInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ShowText  bool `protobuf:"varint,1,opt,name=showText,proto3" json:"showText,omitempty"`
	ShowIcons bool `protobuf:"varint,2,opt,name=showIcons,proto3" json:"showIcons,omitempty"`
}

func (x *DisplayControlInfo) Reset() {
	*x = DisplayControlInfo{}
	mi := &file_douyin_proto_msgTypes[42]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *DisplayControlInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DisplayControlInfo) ProtoMessage() {}

func (x *DisplayControlInfo) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[42]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DisplayControlInfo.ProtoReflect.Descriptor instead.
func (*DisplayControlInfo) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{42}
}

func (x *DisplayControlInfo) GetShowText() bool {
	if x != nil {
		return x.ShowText
	}
	return false
}

func (x *DisplayControlInfo) GetShowIcons() bool {
	if x != nil {
		return x.ShowIcons
	}
	return false
}

type EpisodeChatMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Common         *Message `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"`
	User           *User    `protobuf:"bytes,2,opt,name=user,proto3" json:"user,omitempty"`
	Content        string   `protobuf:"bytes,3,opt,name=content,proto3" json:"content,omitempty"`
	VisibleToSende bool     `protobuf:"varint,4,opt,name=visibleToSende,proto3" json:"visibleToSende,omitempty"`
	// BackgroundImage backgroundImage = 5;
	// PublicAreaCommon publicAreaCommon = 6;
	GiftImage      *Image   `protobuf:"bytes,7,opt,name=giftImage,proto3" json:"giftImage,omitempty"`
	AgreeMsgId     uint64   `protobuf:"varint,8,opt,name=agreeMsgId,proto3" json:"agreeMsgId,omitempty"`
	ColorValueList []string `protobuf:"bytes,9,rep,name=colorValueList,proto3" json:"colorValueList,omitempty"`
}

func (x *EpisodeChatMessage) Reset() {
	*x = EpisodeChatMessage{}
	mi := &file_douyin_proto_msgTypes[43]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *EpisodeChatMessage) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*EpisodeChatMessage) ProtoMessage() {}

func (x *EpisodeChatMessage) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[43]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use EpisodeChatMessage.ProtoReflect.Descriptor instead.
func (*EpisodeChatMessage) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{43}
}

func (x *EpisodeChatMessage) GetCommon() *Message {
	if x != nil {
		return x.Common
	}
	return nil
}

func (x *EpisodeChatMessage) GetUser() *User {
	if x != nil {
		return x.User
	}
	return nil
}

func (x *EpisodeChatMessage) GetContent() string {
	if x != nil {
		return x.Content
	}
	return ""
}

func (x *EpisodeChatMessage) GetVisibleToSende() bool {
	if x != nil {
		return x.VisibleToSende
	}
	return false
}

func (x *EpisodeChatMessage) GetGiftImage() *Image {
	if x != nil {
		return x.GiftImage
	}
	return nil
}

func (x *EpisodeChatMessage) GetAgreeMsgId() uint64 {
	if x != nil {
		return x.AgreeMsgId
	}
	return 0
}

func (x *EpisodeChatMessage) GetColorValueList() []string {
	if x != nil {
		return x.ColorValueList
	}
	return nil
}

type MatchAgainstScoreMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Common        *Common  `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"`
	Against       *Against `protobuf:"bytes,2,opt,name=against,proto3" json:"against,omitempty"`
	MatchStatus   uint32   `protobuf:"varint,3,opt,name=matchStatus,proto3" json:"matchStatus,omitempty"`
	DisplayStatus uint32   `protobuf:"varint,4,opt,name=displayStatus,proto3" json:"displayStatus,omitempty"`
}

func (x *MatchAgainstScoreMessage) Reset() {
	*x = MatchAgainstScoreMessage{}
	mi := &file_douyin_proto_msgTypes[44]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *MatchAgainstScoreMessage) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MatchAgainstScoreMessage) ProtoMessage() {}

func (x *MatchAgainstScoreMessage) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[44]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use MatchAgainstScoreMessage.ProtoReflect.Descriptor instead.
func (*MatchAgainstScoreMessage) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{44}
}

func (x *MatchAgainstScoreMessage) GetCommon() *Common {
	if x != nil {
		return x.Common
	}
	return nil
}

func (x *MatchAgainstScoreMessage) GetAgainst() *Against {
	if x != nil {
		return x.Against
	}
	return nil
}

func (x *MatchAgainstScoreMessage) GetMatchStatus() uint32 {
	if x != nil {
		return x.MatchStatus
	}
	return 0
}

func (x *MatchAgainstScoreMessage) GetDisplayStatus() uint32 {
	if x != nil {
		return x.DisplayStatus
	}
	return 0
}

type Against struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	LeftName string `protobuf:"bytes,1,opt,name=leftName,proto3" json:"leftName,omitempty"`
	LeftLogo *Image `protobuf:"bytes,2,opt,name=leftLogo,proto3" json:"leftLogo,omitempty"`
	LeftGoal string `protobuf:"bytes,3,opt,name=leftGoal,proto3" json:"leftGoal,omitempty"`
	// LeftPlayersList leftPlayersList = 4;
	// LeftGoalStageDetail leftGoalStageDetail = 5;
	RightName string `protobuf:"bytes,6,opt,name=rightName,proto3" json:"rightName,omitempty"`
	RightLogo *Image `protobuf:"bytes,7,opt,name=rightLogo,proto3" json:"rightLogo,omitempty"`
	RightGoal string `protobuf:"bytes,8,opt,name=rightGoal,proto3" json:"rightGoal,omitempty"`
	// RightPlayersList rightPlayersList  = 9;
	// RightGoalStageDetail rightGoalStageDetail = 10;
	Timestamp          uint64 `protobuf:"varint,11,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
	Version            uint64 `protobuf:"varint,12,opt,name=version,proto3" json:"version,omitempty"`
	LeftTeamId         uint64 `protobuf:"varint,13,opt,name=leftTeamId,proto3" json:"leftTeamId,omitempty"`
	RightTeamId        uint64 `protobuf:"varint,14,opt,name=rightTeamId,proto3" json:"rightTeamId,omitempty"`
	DiffSei2AbsSecond  uint64 `protobuf:"varint,15,opt,name=diffSei2absSecond,proto3" json:"diffSei2absSecond,omitempty"`
	FinalGoalStage     uint32 `protobuf:"varint,16,opt,name=finalGoalStage,proto3" json:"finalGoalStage,omitempty"`
	CurrentGoalStage   uint32 `protobuf:"varint,17,opt,name=currentGoalStage,proto3" json:"currentGoalStage,omitempty"`
	LeftScoreAddition  uint32 `protobuf:"varint,18,opt,name=leftScoreAddition,proto3" json:"leftScoreAddition,omitempty"`
	RightScoreAddition uint32 `protobuf:"varint,19,opt,name=rightScoreAddition,proto3" json:"rightScoreAddition,omitempty"`
	LeftGoalInt        uint64 `protobuf:"varint,20,opt,name=leftGoalInt,proto3" json:"leftGoalInt,omitempty"`
	RightGoalInt       uint64 `protobuf:"varint,21,opt,name=rightGoalInt,proto3" json:"rightGoalInt,omitempty"`
}

func (x *Against) Reset() {
	*x = Against{}
	mi := &file_douyin_proto_msgTypes[45]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Against) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Against) ProtoMessage() {}

func (x *Against) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[45]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Against.ProtoReflect.Descriptor instead.
func (*Against) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{45}
}

func (x *Against) GetLeftName() string {
	if x != nil {
		return x.LeftName
	}
	return ""
}

func (x *Against) GetLeftLogo() *Image {
	if x != nil {
		return x.LeftLogo
	}
	return nil
}

func (x *Against) GetLeftGoal() string {
	if x != nil {
		return x.LeftGoal
	}
	return ""
}

func (x *Against) GetRightName() string {
	if x != nil {
		return x.RightName
	}
	return ""
}

func (x *Against) GetRightLogo() *Image {
	if x != nil {
		return x.RightLogo
	}
	return nil
}

func (x *Against) GetRightGoal() string {
	if x != nil {
		return x.RightGoal
	}
	return ""
}

func (x *Against) GetTimestamp() uint64 {
	if x != nil {
		return x.Timestamp
	}
	return 0
}

func (x *Against) GetVersion() uint64 {
	if x != nil {
		return x.Version
	}
	return 0
}

func (x *Against) GetLeftTeamId() uint64 {
	if x != nil {
		return x.LeftTeamId
	}
	return 0
}

func (x *Against) GetRightTeamId() uint64 {
	if x != nil {
		return x.RightTeamId
	}
	return 0
}

func (x *Against) GetDiffSei2AbsSecond() uint64 {
	if x != nil {
		return x.DiffSei2AbsSecond
	}
	return 0
}

func (x *Against) GetFinalGoalStage() uint32 {
	if x != nil {
		return x.FinalGoalStage
	}
	return 0
}

func (x *Against) GetCurrentGoalStage() uint32 {
	if x != nil {
		return x.CurrentGoalStage
	}
	return 0
}

func (x *Against) GetLeftScoreAddition() uint32 {
	if x != nil {
		return x.LeftScoreAddition
	}
	return 0
}

func (x *Against) GetRightScoreAddition() uint32 {
	if x != nil {
		return x.RightScoreAddition
	}
	return 0
}

func (x *Against) GetLeftGoalInt() uint64 {
	if x != nil {
		return x.LeftGoalInt
	}
	return 0
}

func (x *Against) GetRightGoalInt() uint64 {
	if x != nil {
		return x.RightGoalInt
	}
	return 0
}

type Common struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Method      string `protobuf:"bytes,1,opt,name=method,proto3" json:"method,omitempty"`
	MsgId       uint64 `protobuf:"varint,2,opt,name=msg_id,json=msgId,proto3" json:"msg_id,omitempty"`
	RoomId      uint64 `protobuf:"varint,3,opt,name=room_id,json=roomId,proto3" json:"room_id,omitempty"`
	CreateTime  uint64 `protobuf:"varint,4,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
	Monitor     uint32 `protobuf:"varint,5,opt,name=monitor,proto3" json:"monitor,omitempty"`
	IsShowMsg   bool   `protobuf:"varint,6,opt,name=is_show_msg,json=isShowMsg,proto3" json:"is_show_msg,omitempty"`
	Describe    string `protobuf:"bytes,7,opt,name=describe,proto3" json:"describe,omitempty"`
	DisplayText *Text  `protobuf:"bytes,8,opt,name=display_text,json=displayText,proto3" json:"display_text,omitempty"`
	// DisplayText displayText = 8;
	FoldType          uint64 `protobuf:"varint,9,opt,name=fold_type,json=foldType,proto3" json:"fold_type,omitempty"`
	AnchorFoldType    uint64 `protobuf:"varint,10,opt,name=anchor_fold_type,json=anchorFoldType,proto3" json:"anchor_fold_type,omitempty"`
	PriorityScore     uint64 `protobuf:"varint,11,opt,name=priorityScore,proto3" json:"priorityScore,omitempty"`
	LogId             string `protobuf:"bytes,12,opt,name=logId,proto3" json:"logId,omitempty"`
	MsgProcessFilterK string `protobuf:"bytes,13,opt,name=msgProcessFilterK,proto3" json:"msgProcessFilterK,omitempty"`
	MsgProcessFilterV string `protobuf:"bytes,14,opt,name=msgProcessFilterV,proto3" json:"msgProcessFilterV,omitempty"`
	User              *User  `protobuf:"bytes,15,opt,name=user,proto3" json:"user,omitempty"`
	// Room room = 16;
	AnchorFoldTypeV2   uint64 `protobuf:"varint,17,opt,name=anchor_fold_type_v2,json=anchorFoldTypeV2,proto3" json:"anchor_fold_type_v2,omitempty"`
	ProcessAtSeiTimeMs uint64 `protobuf:"varint,18,opt,name=process_at_sei_time_ms,json=processAtSeiTimeMs,proto3" json:"process_at_sei_time_ms,omitempty"`
	RandomDispatchMs   uint64 `protobuf:"varint,19,opt,name=random_dispatch_ms,json=randomDispatchMs,proto3" json:"random_dispatch_ms,omitempty"`
	IsDispatch         bool   `protobuf:"varint,20,opt,name=is_dispatch,json=isDispatch,proto3" json:"is_dispatch,omitempty"`
	ChannelId          uint64 `protobuf:"varint,21,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"`
	DiffSei2AbsSecond  uint64 `protobuf:"varint,22,opt,name=diff_sei2abs_second,json=diffSei2absSecond,proto3" json:"diff_sei2abs_second,omitempty"`
	AnchorFoldDuration uint64 `protobuf:"varint,23,opt,name=anchor_fold_duration,json=anchorFoldDuration,proto3" json:"anchor_fold_duration,omitempty"`
	AppId              uint64 `protobuf:"varint,24,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty"`
}

func (x *Common) Reset() {
	*x = Common{}
	mi := &file_douyin_proto_msgTypes[46]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Common) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Common) ProtoMessage() {}

func (x *Common) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[46]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Common.ProtoReflect.Descriptor instead.
func (*Common) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{46}
}

func (x *Common) GetMethod() string {
	if x != nil {
		return x.Method
	}
	return ""
}

func (x *Common) GetMsgId() uint64 {
	if x != nil {
		return x.MsgId
	}
	return 0
}

func (x *Common) GetRoomId() uint64 {
	if x != nil {
		return x.RoomId
	}
	return 0
}

func (x *Common) GetCreateTime() uint64 {
	if x != nil {
		return x.CreateTime
	}
	return 0
}

func (x *Common) GetMonitor() uint32 {
	if x != nil {
		return x.Monitor
	}
	return 0
}

func (x *Common) GetIsShowMsg() bool {
	if x != nil {
		return x.IsShowMsg
	}
	return false
}

func (x *Common) GetDescribe() string {
	if x != nil {
		return x.Describe
	}
	return ""
}

func (x *Common) GetDisplayText() *Text {
	if x != nil {
		return x.DisplayText
	}
	return nil
}

func (x *Common) GetFoldType() uint64 {
	if x != nil {
		return x.FoldType
	}
	return 0
}

func (x *Common) GetAnchorFoldType() uint64 {
	if x != nil {
		return x.AnchorFoldType
	}
	return 0
}

func (x *Common) GetPriorityScore() uint64 {
	if x != nil {
		return x.PriorityScore
	}
	return 0
}

func (x *Common) GetLogId() string {
	if x != nil {
		return x.LogId
	}
	return ""
}

func (x *Common) GetMsgProcessFilterK() string {
	if x != nil {
		return x.MsgProcessFilterK
	}
	return ""
}

func (x *Common) GetMsgProcessFilterV() string {
	if x != nil {
		return x.MsgProcessFilterV
	}
	return ""
}

func (x *Common) GetUser() *User {
	if x != nil {
		return x.User
	}
	return nil
}

func (x *Common) GetAnchorFoldTypeV2() uint64 {
	if x != nil {
		return x.AnchorFoldTypeV2
	}
	return 0
}

func (x *Common) GetProcessAtSeiTimeMs() uint64 {
	if x != nil {
		return x.ProcessAtSeiTimeMs
	}
	return 0
}

func (x *Common) GetRandomDispatchMs() uint64 {
	if x != nil {
		return x.RandomDispatchMs
	}
	return 0
}

func (x *Common) GetIsDispatch() bool {
	if x != nil {
		return x.IsDispatch
	}
	return false
}

func (x *Common) GetChannelId() uint64 {
	if x != nil {
		return x.ChannelId
	}
	return 0
}

func (x *Common) GetDiffSei2AbsSecond() uint64 {
	if x != nil {
		return x.DiffSei2AbsSecond
	}
	return 0
}

func (x *Common) GetAnchorFoldDuration() uint64 {
	if x != nil {
		return x.AnchorFoldDuration
	}
	return 0
}

func (x *Common) GetAppId() uint64 {
	if x != nil {
		return x.AppId
	}
	return 0
}

type User struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Id                 uint64      `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
	ShortId            uint64      `protobuf:"varint,2,opt,name=shortId,proto3" json:"shortId,omitempty"`
	NickName           string      `protobuf:"bytes,3,opt,name=nickName,proto3" json:"nickName,omitempty"`
	Gender             uint32      `protobuf:"varint,4,opt,name=gender,proto3" json:"gender,omitempty"`
	Signature          string      `protobuf:"bytes,5,opt,name=Signature,proto3" json:"Signature,omitempty"`
	Level              uint32      `protobuf:"varint,6,opt,name=Level,proto3" json:"Level,omitempty"`
	Birthday           uint64      `protobuf:"varint,7,opt,name=Birthday,proto3" json:"Birthday,omitempty"`
	Telephone          string      `protobuf:"bytes,8,opt,name=Telephone,proto3" json:"Telephone,omitempty"`
	AvatarThumb        *Image      `protobuf:"bytes,9,opt,name=AvatarThumb,proto3" json:"AvatarThumb,omitempty"`
	AvatarMedium       *Image      `protobuf:"bytes,10,opt,name=AvatarMedium,proto3" json:"AvatarMedium,omitempty"`
	AvatarLarge        *Image      `protobuf:"bytes,11,opt,name=AvatarLarge,proto3" json:"AvatarLarge,omitempty"`
	Verified           bool        `protobuf:"varint,12,opt,name=Verified,proto3" json:"Verified,omitempty"`
	Experience         uint32      `protobuf:"varint,13,opt,name=Experience,proto3" json:"Experience,omitempty"`
	City               string      `protobuf:"bytes,14,opt,name=city,proto3" json:"city,omitempty"`
	Status             int32       `protobuf:"varint,15,opt,name=Status,proto3" json:"Status,omitempty"`
	CreateTime         uint64      `protobuf:"varint,16,opt,name=CreateTime,proto3" json:"CreateTime,omitempty"`
	ModifyTime         uint64      `protobuf:"varint,17,opt,name=ModifyTime,proto3" json:"ModifyTime,omitempty"`
	Secret             uint32      `protobuf:"varint,18,opt,name=Secret,proto3" json:"Secret,omitempty"`
	ShareQrcodeUri     string      `protobuf:"bytes,19,opt,name=ShareQrcodeUri,proto3" json:"ShareQrcodeUri,omitempty"`
	IncomeSharePercent uint32      `protobuf:"varint,20,opt,name=IncomeSharePercent,proto3" json:"IncomeSharePercent,omitempty"`
	BadgeImageList     []*Image    `protobuf:"bytes,21,rep,name=BadgeImageList,proto3" json:"BadgeImageList,omitempty"`
	FollowInfo         *FollowInfo `protobuf:"bytes,22,opt,name=FollowInfo,proto3" json:"FollowInfo,omitempty"`
	PayGrade           *PayGrade   `protobuf:"bytes,23,opt,name=PayGrade,proto3" json:"PayGrade,omitempty"`
	FansClub           *FansClub   `protobuf:"bytes,24,opt,name=FansClub,proto3" json:"FansClub,omitempty"`
	// Border Border = 25;
	SpecialId         string   `protobuf:"bytes,26,opt,name=SpecialId,proto3" json:"SpecialId,omitempty"`
	AvatarBorder      *Image   `protobuf:"bytes,27,opt,name=AvatarBorder,proto3" json:"AvatarBorder,omitempty"`
	Medal             *Image   `protobuf:"bytes,28,opt,name=Medal,proto3" json:"Medal,omitempty"`
	RealTimeIconsList []*Image `protobuf:"bytes,29,rep,name=RealTimeIconsList,proto3" json:"RealTimeIconsList,omitempty"`
	DisplayId         string   `protobuf:"bytes,38,opt,name=displayId,proto3" json:"displayId,omitempty"`
	SecUid            string   `protobuf:"bytes,46,opt,name=secUid,proto3" json:"secUid,omitempty"`
	FanTicketCount    uint64   `protobuf:"varint,1022,opt,name=fanTicketCount,proto3" json:"fanTicketCount,omitempty"`
	IdStr             string   `protobuf:"bytes,1028,opt,name=idStr,proto3" json:"idStr,omitempty"`
	AgeRange          uint32   `protobuf:"varint,1045,opt,name=ageRange,proto3" json:"ageRange,omitempty"`
}

func (x *User) Reset() {
	*x = User{}
	mi := &file_douyin_proto_msgTypes[47]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *User) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*User) ProtoMessage() {}

func (x *User) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[47]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use User.ProtoReflect.Descriptor instead.
func (*User) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{47}
}

func (x *User) GetId() uint64 {
	if x != nil {
		return x.Id
	}
	return 0
}

func (x *User) GetShortId() uint64 {
	if x != nil {
		return x.ShortId
	}
	return 0
}

func (x *User) GetNickName() string {
	if x != nil {
		return x.NickName
	}
	return ""
}

func (x *User) GetGender() uint32 {
	if x != nil {
		return x.Gender
	}
	return 0
}

func (x *User) GetSignature() string {
	if x != nil {
		return x.Signature
	}
	return ""
}

func (x *User) GetLevel() uint32 {
	if x != nil {
		return x.Level
	}
	return 0
}

func (x *User) GetBirthday() uint64 {
	if x != nil {
		return x.Birthday
	}
	return 0
}

func (x *User) GetTelephone() string {
	if x != nil {
		return x.Telephone
	}
	return ""
}

func (x *User) GetAvatarThumb() *Image {
	if x != nil {
		return x.AvatarThumb
	}
	return nil
}

func (x *User) GetAvatarMedium() *Image {
	if x != nil {
		return x.AvatarMedium
	}
	return nil
}

func (x *User) GetAvatarLarge() *Image {
	if x != nil {
		return x.AvatarLarge
	}
	return nil
}

func (x *User) GetVerified() bool {
	if x != nil {
		return x.Verified
	}
	return false
}

func (x *User) GetExperience() uint32 {
	if x != nil {
		return x.Experience
	}
	return 0
}

func (x *User) GetCity() string {
	if x != nil {
		return x.City
	}
	return ""
}

func (x *User) GetStatus() int32 {
	if x != nil {
		return x.Status
	}
	return 0
}

func (x *User) GetCreateTime() uint64 {
	if x != nil {
		return x.CreateTime
	}
	return 0
}

func (x *User) GetModifyTime() uint64 {
	if x != nil {
		return x.ModifyTime
	}
	return 0
}

func (x *User) GetSecret() uint32 {
	if x != nil {
		return x.Secret
	}
	return 0
}

func (x *User) GetShareQrcodeUri() string {
	if x != nil {
		return x.ShareQrcodeUri
	}
	return ""
}

func (x *User) GetIncomeSharePercent() uint32 {
	if x != nil {
		return x.IncomeSharePercent
	}
	return 0
}

func (x *User) GetBadgeImageList() []*Image {
	if x != nil {
		return x.BadgeImageList
	}
	return nil
}

func (x *User) GetFollowInfo() *FollowInfo {
	if x != nil {
		return x.FollowInfo
	}
	return nil
}

func (x *User) GetPayGrade() *PayGrade {
	if x != nil {
		return x.PayGrade
	}
	return nil
}

func (x *User) GetFansClub() *FansClub {
	if x != nil {
		return x.FansClub
	}
	return nil
}

func (x *User) GetSpecialId() string {
	if x != nil {
		return x.SpecialId
	}
	return ""
}

func (x *User) GetAvatarBorder() *Image {
	if x != nil {
		return x.AvatarBorder
	}
	return nil
}

func (x *User) GetMedal() *Image {
	if x != nil {
		return x.Medal
	}
	return nil
}

func (x *User) GetRealTimeIconsList() []*Image {
	if x != nil {
		return x.RealTimeIconsList
	}
	return nil
}

func (x *User) GetDisplayId() string {
	if x != nil {
		return x.DisplayId
	}
	return ""
}

func (x *User) GetSecUid() string {
	if x != nil {
		return x.SecUid
	}
	return ""
}

func (x *User) GetFanTicketCount() uint64 {
	if x != nil {
		return x.FanTicketCount
	}
	return 0
}

func (x *User) GetIdStr() string {
	if x != nil {
		return x.IdStr
	}
	return ""
}

func (x *User) GetAgeRange() uint32 {
	if x != nil {
		return x.AgeRange
	}
	return 0
}

type PayGrade struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	TotalDiamondCount   int64          `protobuf:"varint,1,opt,name=totalDiamondCount,proto3" json:"totalDiamondCount,omitempty"`
	DiamondIcon         *Image         `protobuf:"bytes,2,opt,name=diamondIcon,proto3" json:"diamondIcon,omitempty"`
	Name                string         `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
	Icon                *Image         `protobuf:"bytes,4,opt,name=icon,proto3" json:"icon,omitempty"`
	NextName            string         `protobuf:"bytes,5,opt,name=nextName,proto3" json:"nextName,omitempty"`
	Level               int64          `protobuf:"varint,6,opt,name=level,proto3" json:"level,omitempty"`
	NextIcon            *Image         `protobuf:"bytes,7,opt,name=nextIcon,proto3" json:"nextIcon,omitempty"`
	NextDiamond         int64          `protobuf:"varint,8,opt,name=nextDiamond,proto3" json:"nextDiamond,omitempty"`
	NowDiamond          int64          `protobuf:"varint,9,opt,name=nowDiamond,proto3" json:"nowDiamond,omitempty"`
	ThisGradeMinDiamond int64          `protobuf:"varint,10,opt,name=thisGradeMinDiamond,proto3" json:"thisGradeMinDiamond,omitempty"`
	ThisGradeMaxDiamond int64          `protobuf:"varint,11,opt,name=thisGradeMaxDiamond,proto3" json:"thisGradeMaxDiamond,omitempty"`
	PayDiamondBak       int64          `protobuf:"varint,12,opt,name=payDiamondBak,proto3" json:"payDiamondBak,omitempty"`
	GradeDescribe       string         `protobuf:"bytes,13,opt,name=gradeDescribe,proto3" json:"gradeDescribe,omitempty"`
	GradeIconList       []*GradeIcon   `protobuf:"bytes,14,rep,name=gradeIconList,proto3" json:"gradeIconList,omitempty"`
	ScreenChatType      int64          `protobuf:"varint,15,opt,name=screenChatType,proto3" json:"screenChatType,omitempty"`
	ImIcon              *Image         `protobuf:"bytes,16,opt,name=imIcon,proto3" json:"imIcon,omitempty"`
	ImIconWithLevel     *Image         `protobuf:"bytes,17,opt,name=imIconWithLevel,proto3" json:"imIconWithLevel,omitempty"`
	LiveIcon            *Image         `protobuf:"bytes,18,opt,name=liveIcon,proto3" json:"liveIcon,omitempty"`
	NewImIconWithLevel  *Image         `protobuf:"bytes,19,opt,name=newImIconWithLevel,proto3" json:"newImIconWithLevel,omitempty"`
	NewLiveIcon         *Image         `protobuf:"bytes,20,opt,name=newLiveIcon,proto3" json:"newLiveIcon,omitempty"`
	UpgradeNeedConsume  int64          `protobuf:"varint,21,opt,name=upgradeNeedConsume,proto3" json:"upgradeNeedConsume,omitempty"`
	NextPrivileges      string         `protobuf:"bytes,22,opt,name=nextPrivileges,proto3" json:"nextPrivileges,omitempty"`
	Background          *Image         `protobuf:"bytes,23,opt,name=background,proto3" json:"background,omitempty"`
	BackgroundBack      *Image         `protobuf:"bytes,24,opt,name=backgroundBack,proto3" json:"backgroundBack,omitempty"`
	Score               int64          `protobuf:"varint,25,opt,name=score,proto3" json:"score,omitempty"`
	BuffInfo            *GradeBuffInfo `protobuf:"bytes,26,opt,name=buffInfo,proto3" json:"buffInfo,omitempty"`
	GradeBanner         string         `protobuf:"bytes,1001,opt,name=gradeBanner,proto3" json:"gradeBanner,omitempty"`
	ProfileDialogBg     *Image         `protobuf:"bytes,1002,opt,name=profileDialogBg,proto3" json:"profileDialogBg,omitempty"`
	ProfileDialogBgBack *Image         `protobuf:"bytes,1003,opt,name=profileDialogBgBack,proto3" json:"profileDialogBgBack,omitempty"`
}

func (x *PayGrade) Reset() {
	*x = PayGrade{}
	mi := &file_douyin_proto_msgTypes[48]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *PayGrade) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PayGrade) ProtoMessage() {}

func (x *PayGrade) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[48]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PayGrade.ProtoReflect.Descriptor instead.
func (*PayGrade) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{48}
}

func (x *PayGrade) GetTotalDiamondCount() int64 {
	if x != nil {
		return x.TotalDiamondCount
	}
	return 0
}

func (x *PayGrade) GetDiamondIcon() *Image {
	if x != nil {
		return x.DiamondIcon
	}
	return nil
}

func (x *PayGrade) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *PayGrade) GetIcon() *Image {
	if x != nil {
		return x.Icon
	}
	return nil
}

func (x *PayGrade) GetNextName() string {
	if x != nil {
		return x.NextName
	}
	return ""
}

func (x *PayGrade) GetLevel() int64 {
	if x != nil {
		return x.Level
	}
	return 0
}

func (x *PayGrade) GetNextIcon() *Image {
	if x != nil {
		return x.NextIcon
	}
	return nil
}

func (x *PayGrade) GetNextDiamond() int64 {
	if x != nil {
		return x.NextDiamond
	}
	return 0
}

func (x *PayGrade) GetNowDiamond() int64 {
	if x != nil {
		return x.NowDiamond
	}
	return 0
}

func (x *PayGrade) GetThisGradeMinDiamond() int64 {
	if x != nil {
		return x.ThisGradeMinDiamond
	}
	return 0
}

func (x *PayGrade) GetThisGradeMaxDiamond() int64 {
	if x != nil {
		return x.ThisGradeMaxDiamond
	}
	return 0
}

func (x *PayGrade) GetPayDiamondBak() int64 {
	if x != nil {
		return x.PayDiamondBak
	}
	return 0
}

func (x *PayGrade) GetGradeDescribe() string {
	if x != nil {
		return x.GradeDescribe
	}
	return ""
}

func (x *PayGrade) GetGradeIconList() []*GradeIcon {
	if x != nil {
		return x.GradeIconList
	}
	return nil
}

func (x *PayGrade) GetScreenChatType() int64 {
	if x != nil {
		return x.ScreenChatType
	}
	return 0
}

func (x *PayGrade) GetImIcon() *Image {
	if x != nil {
		return x.ImIcon
	}
	return nil
}

func (x *PayGrade) GetImIconWithLevel() *Image {
	if x != nil {
		return x.ImIconWithLevel
	}
	return nil
}

func (x *PayGrade) GetLiveIcon() *Image {
	if x != nil {
		return x.LiveIcon
	}
	return nil
}

func (x *PayGrade) GetNewImIconWithLevel() *Image {
	if x != nil {
		return x.NewImIconWithLevel
	}
	return nil
}

func (x *PayGrade) GetNewLiveIcon() *Image {
	if x != nil {
		return x.NewLiveIcon
	}
	return nil
}

func (x *PayGrade) GetUpgradeNeedConsume() int64 {
	if x != nil {
		return x.UpgradeNeedConsume
	}
	return 0
}

func (x *PayGrade) GetNextPrivileges() string {
	if x != nil {
		return x.NextPrivileges
	}
	return ""
}

func (x *PayGrade) GetBackground() *Image {
	if x != nil {
		return x.Background
	}
	return nil
}

func (x *PayGrade) GetBackgroundBack() *Image {
	if x != nil {
		return x.BackgroundBack
	}
	return nil
}

func (x *PayGrade) GetScore() int64 {
	if x != nil {
		return x.Score
	}
	return 0
}

func (x *PayGrade) GetBuffInfo() *GradeBuffInfo {
	if x != nil {
		return x.BuffInfo
	}
	return nil
}

func (x *PayGrade) GetGradeBanner() string {
	if x != nil {
		return x.GradeBanner
	}
	return ""
}

func (x *PayGrade) GetProfileDialogBg() *Image {
	if x != nil {
		return x.ProfileDialogBg
	}
	return nil
}

func (x *PayGrade) GetProfileDialogBgBack() *Image {
	if x != nil {
		return x.ProfileDialogBgBack
	}
	return nil
}

type FansClub struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Data       *FansClubData           `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
	PreferData map[int32]*FansClubData `protobuf:"bytes,2,rep,name=preferData,proto3" json:"preferData,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}

func (x *FansClub) Reset() {
	*x = FansClub{}
	mi := &file_douyin_proto_msgTypes[49]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *FansClub) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*FansClub) ProtoMessage() {}

func (x *FansClub) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[49]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use FansClub.ProtoReflect.Descriptor instead.
func (*FansClub) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{49}
}

func (x *FansClub) GetData() *FansClubData {
	if x != nil {
		return x.Data
	}
	return nil
}

func (x *FansClub) GetPreferData() map[int32]*FansClubData {
	if x != nil {
		return x.PreferData
	}
	return nil
}

type FansClubData struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ClubName           string     `protobuf:"bytes,1,opt,name=clubName,proto3" json:"clubName,omitempty"`
	Level              int32      `protobuf:"varint,2,opt,name=level,proto3" json:"level,omitempty"`
	UserFansClubStatus int32      `protobuf:"varint,3,opt,name=userFansClubStatus,proto3" json:"userFansClubStatus,omitempty"`
	Badge              *UserBadge `protobuf:"bytes,4,opt,name=badge,proto3" json:"badge,omitempty"`
	AvailableGiftIds   []int64    `protobuf:"varint,5,rep,packed,name=availableGiftIds,proto3" json:"availableGiftIds,omitempty"`
	AnchorId           int64      `protobuf:"varint,6,opt,name=anchorId,proto3" json:"anchorId,omitempty"`
}

func (x *FansClubData) Reset() {
	*x = FansClubData{}
	mi := &file_douyin_proto_msgTypes[50]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *FansClubData) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*FansClubData) ProtoMessage() {}

func (x *FansClubData) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[50]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use FansClubData.ProtoReflect.Descriptor instead.
func (*FansClubData) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{50}
}

func (x *FansClubData) GetClubName() string {
	if x != nil {
		return x.ClubName
	}
	return ""
}

func (x *FansClubData) GetLevel() int32 {
	if x != nil {
		return x.Level
	}
	return 0
}

func (x *FansClubData) GetUserFansClubStatus() int32 {
	if x != nil {
		return x.UserFansClubStatus
	}
	return 0
}

func (x *FansClubData) GetBadge() *UserBadge {
	if x != nil {
		return x.Badge
	}
	return nil
}

func (x *FansClubData) GetAvailableGiftIds() []int64 {
	if x != nil {
		return x.AvailableGiftIds
	}
	return nil
}

func (x *FansClubData) GetAnchorId() int64 {
	if x != nil {
		return x.AnchorId
	}
	return 0
}

type UserBadge struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Icons map[int32]*Image `protobuf:"bytes,1,rep,name=icons,proto3" json:"icons,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	Title string           `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"`
}

func (x *UserBadge) Reset() {
	*x = UserBadge{}
	mi := &file_douyin_proto_msgTypes[51]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *UserBadge) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UserBadge) ProtoMessage() {}

func (x *UserBadge) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[51]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use UserBadge.ProtoReflect.Descriptor instead.
func (*UserBadge) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{51}
}

func (x *UserBadge) GetIcons() map[int32]*Image {
	if x != nil {
		return x.Icons
	}
	return nil
}

func (x *UserBadge) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

type GradeBuffInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *GradeBuffInfo) Reset() {
	*x = GradeBuffInfo{}
	mi := &file_douyin_proto_msgTypes[52]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GradeBuffInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GradeBuffInfo) ProtoMessage() {}

func (x *GradeBuffInfo) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[52]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GradeBuffInfo.ProtoReflect.Descriptor instead.
func (*GradeBuffInfo) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{52}
}

type Border struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *Border) Reset() {
	*x = Border{}
	mi := &file_douyin_proto_msgTypes[53]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Border) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Border) ProtoMessage() {}

func (x *Border) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[53]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Border.ProtoReflect.Descriptor instead.
func (*Border) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{53}
}

type GradeIcon struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Icon        *Image `protobuf:"bytes,1,opt,name=icon,proto3" json:"icon,omitempty"`
	IconDiamond int64  `protobuf:"varint,2,opt,name=iconDiamond,proto3" json:"iconDiamond,omitempty"`
	Level       int64  `protobuf:"varint,3,opt,name=level,proto3" json:"level,omitempty"`
	LevelStr    string `protobuf:"bytes,4,opt,name=levelStr,proto3" json:"levelStr,omitempty"`
}

func (x *GradeIcon) Reset() {
	*x = GradeIcon{}
	mi := &file_douyin_proto_msgTypes[54]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GradeIcon) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GradeIcon) ProtoMessage() {}

func (x *GradeIcon) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[54]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GradeIcon.ProtoReflect.Descriptor instead.
func (*GradeIcon) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{54}
}

func (x *GradeIcon) GetIcon() *Image {
	if x != nil {
		return x.Icon
	}
	return nil
}

func (x *GradeIcon) GetIconDiamond() int64 {
	if x != nil {
		return x.IconDiamond
	}
	return 0
}

func (x *GradeIcon) GetLevel() int64 {
	if x != nil {
		return x.Level
	}
	return 0
}

func (x *GradeIcon) GetLevelStr() string {
	if x != nil {
		return x.LevelStr
	}
	return ""
}

type FollowInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	FollowingCount    uint64 `protobuf:"varint,1,opt,name=followingCount,proto3" json:"followingCount,omitempty"`
	FollowerCount     uint64 `protobuf:"varint,2,opt,name=followerCount,proto3" json:"followerCount,omitempty"`
	FollowStatus      uint64 `protobuf:"varint,3,opt,name=followStatus,proto3" json:"followStatus,omitempty"`
	PushStatus        uint64 `protobuf:"varint,4,opt,name=pushStatus,proto3" json:"pushStatus,omitempty"`
	RemarkName        string `protobuf:"bytes,5,opt,name=remarkName,proto3" json:"remarkName,omitempty"`
	FollowerCountStr  string `protobuf:"bytes,6,opt,name=followerCountStr,proto3" json:"followerCountStr,omitempty"`
	FollowingCountStr string `protobuf:"bytes,7,opt,name=followingCountStr,proto3" json:"followingCountStr,omitempty"`
}

func (x *FollowInfo) Reset() {
	*x = FollowInfo{}
	mi := &file_douyin_proto_msgTypes[55]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *FollowInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*FollowInfo) ProtoMessage() {}

func (x *FollowInfo) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[55]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use FollowInfo.ProtoReflect.Descriptor instead.
func (*FollowInfo) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{55}
}

func (x *FollowInfo) GetFollowingCount() uint64 {
	if x != nil {
		return x.FollowingCount
	}
	return 0
}

func (x *FollowInfo) GetFollowerCount() uint64 {
	if x != nil {
		return x.FollowerCount
	}
	return 0
}

func (x *FollowInfo) GetFollowStatus() uint64 {
	if x != nil {
		return x.FollowStatus
	}
	return 0
}

func (x *FollowInfo) GetPushStatus() uint64 {
	if x != nil {
		return x.PushStatus
	}
	return 0
}

func (x *FollowInfo) GetRemarkName() string {
	if x != nil {
		return x.RemarkName
	}
	return ""
}

func (x *FollowInfo) GetFollowerCountStr() string {
	if x != nil {
		return x.FollowerCountStr
	}
	return ""
}

func (x *FollowInfo) GetFollowingCountStr() string {
	if x != nil {
		return x.FollowingCountStr
	}
	return ""
}

type Image struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	UrlList         []string            `protobuf:"bytes,1,rep,name=url_list,json=urlList,proto3" json:"url_list,omitempty"`                            // 图像URL列表
	Uri             string              `protobuf:"bytes,2,opt,name=uri,proto3" json:"uri,omitempty"`                                                   // 图像统一资源标识符
	Height          string              `protobuf:"bytes,3,opt,name=height,proto3" json:"height,omitempty"`                                             // 图像高度（int64字符串表示）
	Width           string              `protobuf:"bytes,4,opt,name=width,proto3" json:"width,omitempty"`                                               // 图像宽度（int64字符串表示）
	AvgColor        string              `protobuf:"bytes,5,opt,name=avg_color,json=avgColor,proto3" json:"avg_color,omitempty"`                         // 图像平均颜色
	ImageType       int32               `protobuf:"varint,6,opt,name=image_type,json=imageType,proto3" json:"image_type,omitempty"`                     // 图像类型
	OpenWebUrl      string              `protobuf:"bytes,7,opt,name=open_web_url,json=openWebUrl,proto3" json:"open_web_url,omitempty"`                 // 打开网页的URL
	Content         *Image_Content      `protobuf:"bytes,8,opt,name=content,proto3" json:"content,omitempty"`                                           // 图像内容（嵌套消息类型）
	IsAnimated      bool                `protobuf:"varint,9,opt,name=is_animated,json=isAnimated,proto3" json:"is_animated,omitempty"`                  // 是否是动画图像
	FlexSettingList []*NinePatchSetting `protobuf:"bytes,10,rep,name=flex_setting_list,json=flexSettingList,proto3" json:"flex_setting_list,omitempty"` // 灵活设置列表（嵌套消息类型）
	TextSettingList []*NinePatchSetting `protobuf:"bytes,11,rep,name=text_setting_list,json=textSettingList,proto3" json:"text_setting_list,omitempty"` // 文本设置列表（嵌套消息类型）
}

func (x *Image) Reset() {
	*x = Image{}
	mi := &file_douyin_proto_msgTypes[56]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Image) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Image) ProtoMessage() {}

func (x *Image) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[56]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Image.ProtoReflect.Descriptor instead.
func (*Image) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{56}
}

func (x *Image) GetUrlList() []string {
	if x != nil {
		return x.UrlList
	}
	return nil
}

func (x *Image) GetUri() string {
	if x != nil {
		return x.Uri
	}
	return ""
}

func (x *Image) GetHeight() string {
	if x != nil {
		return x.Height
	}
	return ""
}

func (x *Image) GetWidth() string {
	if x != nil {
		return x.Width
	}
	return ""
}

func (x *Image) GetAvgColor() string {
	if x != nil {
		return x.AvgColor
	}
	return ""
}

func (x *Image) GetImageType() int32 {
	if x != nil {
		return x.ImageType
	}
	return 0
}

func (x *Image) GetOpenWebUrl() string {
	if x != nil {
		return x.OpenWebUrl
	}
	return ""
}

func (x *Image) GetContent() *Image_Content {
	if x != nil {
		return x.Content
	}
	return nil
}

func (x *Image) GetIsAnimated() bool {
	if x != nil {
		return x.IsAnimated
	}
	return false
}

func (x *Image) GetFlexSettingList() []*NinePatchSetting {
	if x != nil {
		return x.FlexSettingList
	}
	return nil
}

func (x *Image) GetTextSettingList() []*NinePatchSetting {
	if x != nil {
		return x.TextSettingList
	}
	return nil
}

type NinePatchSetting struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	SettingListList []string `protobuf:"bytes,1,rep,name=settingListList,proto3" json:"settingListList,omitempty"`
}

func (x *NinePatchSetting) Reset() {
	*x = NinePatchSetting{}
	mi := &file_douyin_proto_msgTypes[57]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *NinePatchSetting) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*NinePatchSetting) ProtoMessage() {}

func (x *NinePatchSetting) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[57]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use NinePatchSetting.ProtoReflect.Descriptor instead.
func (*NinePatchSetting) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{57}
}

func (x *NinePatchSetting) GetSettingListList() []string {
	if x != nil {
		return x.SettingListList
	}
	return nil
}

type PushFrame struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	SeqId           uint64         `protobuf:"varint,1,opt,name=seqId,proto3" json:"seqId,omitempty"`
	LogId           uint64         `protobuf:"varint,2,opt,name=logId,proto3" json:"logId,omitempty"`
	Service         uint64         `protobuf:"varint,3,opt,name=service,proto3" json:"service,omitempty"`
	Method          uint64         `protobuf:"varint,4,opt,name=method,proto3" json:"method,omitempty"`
	HeadersList     []*HeadersList `protobuf:"bytes,5,rep,name=headersList,proto3" json:"headersList,omitempty"`
	PayloadEncoding string         `protobuf:"bytes,6,opt,name=payloadEncoding,proto3" json:"payloadEncoding,omitempty"`
	PayloadType     string         `protobuf:"bytes,7,opt,name=payloadType,proto3" json:"payloadType,omitempty"`
	Payload         []byte         `protobuf:"bytes,8,opt,name=payload,proto3" json:"payload,omitempty"`
}

func (x *PushFrame) Reset() {
	*x = PushFrame{}
	mi := &file_douyin_proto_msgTypes[58]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *PushFrame) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PushFrame) ProtoMessage() {}

func (x *PushFrame) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[58]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PushFrame.ProtoReflect.Descriptor instead.
func (*PushFrame) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{58}
}

func (x *PushFrame) GetSeqId() uint64 {
	if x != nil {
		return x.SeqId
	}
	return 0
}

func (x *PushFrame) GetLogId() uint64 {
	if x != nil {
		return x.LogId
	}
	return 0
}

func (x *PushFrame) GetService() uint64 {
	if x != nil {
		return x.Service
	}
	return 0
}

func (x *PushFrame) GetMethod() uint64 {
	if x != nil {
		return x.Method
	}
	return 0
}

func (x *PushFrame) GetHeadersList() []*HeadersList {
	if x != nil {
		return x.HeadersList
	}
	return nil
}

func (x *PushFrame) GetPayloadEncoding() string {
	if x != nil {
		return x.PayloadEncoding
	}
	return ""
}

func (x *PushFrame) GetPayloadType() string {
	if x != nil {
		return x.PayloadType
	}
	return ""
}

func (x *PushFrame) GetPayload() []byte {
	if x != nil {
		return x.Payload
	}
	return nil
}

type Kk struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	K uint32 `protobuf:"varint,14,opt,name=k,proto3" json:"k,omitempty"`
}

func (x *Kk) Reset() {
	*x = Kk{}
	mi := &file_douyin_proto_msgTypes[59]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Kk) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Kk) ProtoMessage() {}

func (x *Kk) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[59]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Kk.ProtoReflect.Descriptor instead.
func (*Kk) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{59}
}

func (x *Kk) GetK() uint32 {
	if x != nil {
		return x.K
	}
	return 0
}

type SendMessageBody struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ConversationId      string     `protobuf:"bytes,1,opt,name=conversationId,proto3" json:"conversationId,omitempty"`
	ConversationType    uint32     `protobuf:"varint,2,opt,name=conversationType,proto3" json:"conversationType,omitempty"`
	ConversationShortId uint64     `protobuf:"varint,3,opt,name=conversationShortId,proto3" json:"conversationShortId,omitempty"`
	Content             string     `protobuf:"bytes,4,opt,name=content,proto3" json:"content,omitempty"`
	Ext                 []*ExtList `protobuf:"bytes,5,rep,name=ext,proto3" json:"ext,omitempty"`
	MessageType         uint32     `protobuf:"varint,6,opt,name=messageType,proto3" json:"messageType,omitempty"`
	Ticket              string     `protobuf:"bytes,7,opt,name=ticket,proto3" json:"ticket,omitempty"`
	ClientMessageId     string     `protobuf:"bytes,8,opt,name=clientMessageId,proto3" json:"clientMessageId,omitempty"`
}

func (x *SendMessageBody) Reset() {
	*x = SendMessageBody{}
	mi := &file_douyin_proto_msgTypes[60]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SendMessageBody) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SendMessageBody) ProtoMessage() {}

func (x *SendMessageBody) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[60]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SendMessageBody.ProtoReflect.Descriptor instead.
func (*SendMessageBody) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{60}
}

func (x *SendMessageBody) GetConversationId() string {
	if x != nil {
		return x.ConversationId
	}
	return ""
}

func (x *SendMessageBody) GetConversationType() uint32 {
	if x != nil {
		return x.ConversationType
	}
	return 0
}

func (x *SendMessageBody) GetConversationShortId() uint64 {
	if x != nil {
		return x.ConversationShortId
	}
	return 0
}

func (x *SendMessageBody) GetContent() string {
	if x != nil {
		return x.Content
	}
	return ""
}

func (x *SendMessageBody) GetExt() []*ExtList {
	if x != nil {
		return x.Ext
	}
	return nil
}

func (x *SendMessageBody) GetMessageType() uint32 {
	if x != nil {
		return x.MessageType
	}
	return 0
}

func (x *SendMessageBody) GetTicket() string {
	if x != nil {
		return x.Ticket
	}
	return ""
}

func (x *SendMessageBody) GetClientMessageId() string {
	if x != nil {
		return x.ClientMessageId
	}
	return ""
}

type ExtList struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Key   string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
	Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
}

func (x *ExtList) Reset() {
	*x = ExtList{}
	mi := &file_douyin_proto_msgTypes[61]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ExtList) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ExtList) ProtoMessage() {}

func (x *ExtList) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[61]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ExtList.ProtoReflect.Descriptor instead.
func (*ExtList) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{61}
}

func (x *ExtList) GetKey() string {
	if x != nil {
		return x.Key
	}
	return ""
}

func (x *ExtList) GetValue() string {
	if x != nil {
		return x.Value
	}
	return ""
}

type Rsp struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	A int32  `protobuf:"varint,1,opt,name=a,proto3" json:"a,omitempty"`
	B int32  `protobuf:"varint,2,opt,name=b,proto3" json:"b,omitempty"`
	C int32  `protobuf:"varint,3,opt,name=c,proto3" json:"c,omitempty"`
	D string `protobuf:"bytes,4,opt,name=d,proto3" json:"d,omitempty"`
	E int32  `protobuf:"varint,5,opt,name=e,proto3" json:"e,omitempty"`
	F *Rsp_F `protobuf:"bytes,6,opt,name=f,proto3" json:"f,omitempty"`
	G string `protobuf:"bytes,7,opt,name=g,proto3" json:"g,omitempty"`
	H uint64 `protobuf:"varint,10,opt,name=h,proto3" json:"h,omitempty"`
	I uint64 `protobuf:"varint,11,opt,name=i,proto3" json:"i,omitempty"`
	J uint64 `protobuf:"varint,13,opt,name=j,proto3" json:"j,omitempty"`
}

func (x *Rsp) Reset() {
	*x = Rsp{}
	mi := &file_douyin_proto_msgTypes[62]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Rsp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Rsp) ProtoMessage() {}

func (x *Rsp) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[62]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Rsp.ProtoReflect.Descriptor instead.
func (*Rsp) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{62}
}

func (x *Rsp) GetA() int32 {
	if x != nil {
		return x.A
	}
	return 0
}

func (x *Rsp) GetB() int32 {
	if x != nil {
		return x.B
	}
	return 0
}

func (x *Rsp) GetC() int32 {
	if x != nil {
		return x.C
	}
	return 0
}

func (x *Rsp) GetD() string {
	if x != nil {
		return x.D
	}
	return ""
}

func (x *Rsp) GetE() int32 {
	if x != nil {
		return x.E
	}
	return 0
}

func (x *Rsp) GetF() *Rsp_F {
	if x != nil {
		return x.F
	}
	return nil
}

func (x *Rsp) GetG() string {
	if x != nil {
		return x.G
	}
	return ""
}

func (x *Rsp) GetH() uint64 {
	if x != nil {
		return x.H
	}
	return 0
}

func (x *Rsp) GetI() uint64 {
	if x != nil {
		return x.I
	}
	return 0
}

func (x *Rsp) GetJ() uint64 {
	if x != nil {
		return x.J
	}
	return 0
}

type PreMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Cmd             uint32           `protobuf:"varint,1,opt,name=cmd,proto3" json:"cmd,omitempty"`
	SequenceId      uint32           `protobuf:"varint,2,opt,name=sequenceId,proto3" json:"sequenceId,omitempty"`
	SdkVersion      string           `protobuf:"bytes,3,opt,name=sdkVersion,proto3" json:"sdkVersion,omitempty"`
	Token           string           `protobuf:"bytes,4,opt,name=token,proto3" json:"token,omitempty"`
	Refer           uint32           `protobuf:"varint,5,opt,name=refer,proto3" json:"refer,omitempty"`
	InboxType       uint32           `protobuf:"varint,6,opt,name=inboxType,proto3" json:"inboxType,omitempty"`
	BuildNumber     string           `protobuf:"bytes,7,opt,name=buildNumber,proto3" json:"buildNumber,omitempty"`
	SendMessageBody *SendMessageBody `protobuf:"bytes,8,opt,name=sendMessageBody,proto3" json:"sendMessageBody,omitempty"`
	// 字段名待定
	Aa             string         `protobuf:"bytes,9,opt,name=aa,proto3" json:"aa,omitempty"`
	DevicePlatform string         `protobuf:"bytes,11,opt,name=devicePlatform,proto3" json:"devicePlatform,omitempty"`
	Headers        []*HeadersList `protobuf:"bytes,15,rep,name=headers,proto3" json:"headers,omitempty"`
	AuthType       uint32         `protobuf:"varint,18,opt,name=authType,proto3" json:"authType,omitempty"`
	Biz            string         `protobuf:"bytes,21,opt,name=biz,proto3" json:"biz,omitempty"`
	Access         string         `protobuf:"bytes,22,opt,name=access,proto3" json:"access,omitempty"`
}

func (x *PreMessage) Reset() {
	*x = PreMessage{}
	mi := &file_douyin_proto_msgTypes[63]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *PreMessage) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PreMessage) ProtoMessage() {}

func (x *PreMessage) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[63]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PreMessage.ProtoReflect.Descriptor instead.
func (*PreMessage) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{63}
}

func (x *PreMessage) GetCmd() uint32 {
	if x != nil {
		return x.Cmd
	}
	return 0
}

func (x *PreMessage) GetSequenceId() uint32 {
	if x != nil {
		return x.SequenceId
	}
	return 0
}

func (x *PreMessage) GetSdkVersion() string {
	if x != nil {
		return x.SdkVersion
	}
	return ""
}

func (x *PreMessage) GetToken() string {
	if x != nil {
		return x.Token
	}
	return ""
}

func (x *PreMessage) GetRefer() uint32 {
	if x != nil {
		return x.Refer
	}
	return 0
}

func (x *PreMessage) GetInboxType() uint32 {
	if x != nil {
		return x.InboxType
	}
	return 0
}

func (x *PreMessage) GetBuildNumber() string {
	if x != nil {
		return x.BuildNumber
	}
	return ""
}

func (x *PreMessage) GetSendMessageBody() *SendMessageBody {
	if x != nil {
		return x.SendMessageBody
	}
	return nil
}

func (x *PreMessage) GetAa() string {
	if x != nil {
		return x.Aa
	}
	return ""
}

func (x *PreMessage) GetDevicePlatform() string {
	if x != nil {
		return x.DevicePlatform
	}
	return ""
}

func (x *PreMessage) GetHeaders() []*HeadersList {
	if x != nil {
		return x.Headers
	}
	return nil
}

func (x *PreMessage) GetAuthType() uint32 {
	if x != nil {
		return x.AuthType
	}
	return 0
}

func (x *PreMessage) GetBiz() string {
	if x != nil {
		return x.Biz
	}
	return ""
}

func (x *PreMessage) GetAccess() string {
	if x != nil {
		return x.Access
	}
	return ""
}

type HeadersList struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Key   string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
	Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
}

func (x *HeadersList) Reset() {
	*x = HeadersList{}
	mi := &file_douyin_proto_msgTypes[64]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *HeadersList) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*HeadersList) ProtoMessage() {}

func (x *HeadersList) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[64]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use HeadersList.ProtoReflect.Descriptor instead.
func (*HeadersList) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{64}
}

func (x *HeadersList) GetKey() string {
	if x != nil {
		return x.Key
	}
	return ""
}

func (x *HeadersList) GetValue() string {
	if x != nil {
		return x.Value
	}
	return ""
}

type LiveShoppingMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Common      *Common `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"`
	MsgType     int32   `protobuf:"varint,2,opt,name=msgType,proto3" json:"msgType,omitempty"`
	PromotionId int64   `protobuf:"varint,4,opt,name=promotionId,proto3" json:"promotionId,omitempty"`
}

func (x *LiveShoppingMessage) Reset() {
	*x = LiveShoppingMessage{}
	mi := &file_douyin_proto_msgTypes[65]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *LiveShoppingMessage) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*LiveShoppingMessage) ProtoMessage() {}

func (x *LiveShoppingMessage) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[65]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use LiveShoppingMessage.ProtoReflect.Descriptor instead.
func (*LiveShoppingMessage) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{65}
}

func (x *LiveShoppingMessage) GetCommon() *Common {
	if x != nil {
		return x.Common
	}
	return nil
}

func (x *LiveShoppingMessage) GetMsgType() int32 {
	if x != nil {
		return x.MsgType
	}
	return 0
}

func (x *LiveShoppingMessage) GetPromotionId() int64 {
	if x != nil {
		return x.PromotionId
	}
	return 0
}

type RoomStatsMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Common         *Common `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"`
	DisplayShort   string  `protobuf:"bytes,2,opt,name=displayShort,proto3" json:"displayShort,omitempty"`
	DisplayMiddle  string  `protobuf:"bytes,3,opt,name=displayMiddle,proto3" json:"displayMiddle,omitempty"`
	DisplayLong    string  `protobuf:"bytes,4,opt,name=displayLong,proto3" json:"displayLong,omitempty"`
	DisplayValue   int64   `protobuf:"varint,5,opt,name=displayValue,proto3" json:"displayValue,omitempty"`
	DisplayVersion int64   `protobuf:"varint,6,opt,name=displayVersion,proto3" json:"displayVersion,omitempty"`
	Incremental    bool    `protobuf:"varint,7,opt,name=incremental,proto3" json:"incremental,omitempty"`
	IsHidden       bool    `protobuf:"varint,8,opt,name=isHidden,proto3" json:"isHidden,omitempty"`
	Total          int64   `protobuf:"varint,9,opt,name=total,proto3" json:"total,omitempty"`
	DisplayType    int64   `protobuf:"varint,10,opt,name=displayType,proto3" json:"displayType,omitempty"`
}

func (x *RoomStatsMessage) Reset() {
	*x = RoomStatsMessage{}
	mi := &file_douyin_proto_msgTypes[66]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RoomStatsMessage) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RoomStatsMessage) ProtoMessage() {}

func (x *RoomStatsMessage) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[66]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RoomStatsMessage.ProtoReflect.Descriptor instead.
func (*RoomStatsMessage) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{66}
}

func (x *RoomStatsMessage) GetCommon() *Common {
	if x != nil {
		return x.Common
	}
	return nil
}

func (x *RoomStatsMessage) GetDisplayShort() string {
	if x != nil {
		return x.DisplayShort
	}
	return ""
}

func (x *RoomStatsMessage) GetDisplayMiddle() string {
	if x != nil {
		return x.DisplayMiddle
	}
	return ""
}

func (x *RoomStatsMessage) GetDisplayLong() string {
	if x != nil {
		return x.DisplayLong
	}
	return ""
}

func (x *RoomStatsMessage) GetDisplayValue() int64 {
	if x != nil {
		return x.DisplayValue
	}
	return 0
}

func (x *RoomStatsMessage) GetDisplayVersion() int64 {
	if x != nil {
		return x.DisplayVersion
	}
	return 0
}

func (x *RoomStatsMessage) GetIncremental() bool {
	if x != nil {
		return x.Incremental
	}
	return false
}

func (x *RoomStatsMessage) GetIsHidden() bool {
	if x != nil {
		return x.IsHidden
	}
	return false
}

func (x *RoomStatsMessage) GetTotal() int64 {
	if x != nil {
		return x.Total
	}
	return 0
}

func (x *RoomStatsMessage) GetDisplayType() int64 {
	if x != nil {
		return x.DisplayType
	}
	return 0
}

type ProductInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	PromotionId         int64   `protobuf:"varint,1,opt,name=promotionId,proto3" json:"promotionId,omitempty"`
	Index               int32   `protobuf:"varint,2,opt,name=index,proto3" json:"index,omitempty"`
	TargetFlashUidsList []int64 `protobuf:"varint,3,rep,packed,name=targetFlashUidsList,proto3" json:"targetFlashUidsList,omitempty"`
	ExplainType         int64   `protobuf:"varint,4,opt,name=explainType,proto3" json:"explainType,omitempty"`
}

func (x *ProductInfo) Reset() {
	*x = ProductInfo{}
	mi := &file_douyin_proto_msgTypes[67]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ProductInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ProductInfo) ProtoMessage() {}

func (x *ProductInfo) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[67]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ProductInfo.ProtoReflect.Descriptor instead.
func (*ProductInfo) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{67}
}

func (x *ProductInfo) GetPromotionId() int64 {
	if x != nil {
		return x.PromotionId
	}
	return 0
}

func (x *ProductInfo) GetIndex() int32 {
	if x != nil {
		return x.Index
	}
	return 0
}

func (x *ProductInfo) GetTargetFlashUidsList() []int64 {
	if x != nil {
		return x.TargetFlashUidsList
	}
	return nil
}

func (x *ProductInfo) GetExplainType() int64 {
	if x != nil {
		return x.ExplainType
	}
	return 0
}

type CategoryInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Id               int32   `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
	Name             string  `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	PromotionIdsList []int64 `protobuf:"varint,3,rep,packed,name=promotionIdsList,proto3" json:"promotionIdsList,omitempty"`
	Type             string  `protobuf:"bytes,4,opt,name=type,proto3" json:"type,omitempty"`
	UniqueIndex      string  `protobuf:"bytes,5,opt,name=uniqueIndex,proto3" json:"uniqueIndex,omitempty"`
}

func (x *CategoryInfo) Reset() {
	*x = CategoryInfo{}
	mi := &file_douyin_proto_msgTypes[68]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CategoryInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CategoryInfo) ProtoMessage() {}

func (x *CategoryInfo) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[68]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CategoryInfo.ProtoReflect.Descriptor instead.
func (*CategoryInfo) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{68}
}

func (x *CategoryInfo) GetId() int32 {
	if x != nil {
		return x.Id
	}
	return 0
}

func (x *CategoryInfo) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *CategoryInfo) GetPromotionIdsList() []int64 {
	if x != nil {
		return x.PromotionIdsList
	}
	return nil
}

func (x *CategoryInfo) GetType() string {
	if x != nil {
		return x.Type
	}
	return ""
}

func (x *CategoryInfo) GetUniqueIndex() string {
	if x != nil {
		return x.UniqueIndex
	}
	return ""
}

type ProductChangeMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Common                 *Common         `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"`
	UpdateTimestamp        int64           `protobuf:"varint,2,opt,name=updateTimestamp,proto3" json:"updateTimestamp,omitempty"`
	UpdateToast            string          `protobuf:"bytes,3,opt,name=updateToast,proto3" json:"updateToast,omitempty"`
	UpdateProductInfoList  []*ProductInfo  `protobuf:"bytes,4,rep,name=updateProductInfoList,proto3" json:"updateProductInfoList,omitempty"`
	Total                  int64           `protobuf:"varint,5,opt,name=total,proto3" json:"total,omitempty"`
	UpdateCategoryInfoList []*CategoryInfo `protobuf:"bytes,8,rep,name=updateCategoryInfoList,proto3" json:"updateCategoryInfoList,omitempty"`
}

func (x *ProductChangeMessage) Reset() {
	*x = ProductChangeMessage{}
	mi := &file_douyin_proto_msgTypes[69]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ProductChangeMessage) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ProductChangeMessage) ProtoMessage() {}

func (x *ProductChangeMessage) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[69]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ProductChangeMessage.ProtoReflect.Descriptor instead.
func (*ProductChangeMessage) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{69}
}

func (x *ProductChangeMessage) GetCommon() *Common {
	if x != nil {
		return x.Common
	}
	return nil
}

func (x *ProductChangeMessage) GetUpdateTimestamp() int64 {
	if x != nil {
		return x.UpdateTimestamp
	}
	return 0
}

func (x *ProductChangeMessage) GetUpdateToast() string {
	if x != nil {
		return x.UpdateToast
	}
	return ""
}

func (x *ProductChangeMessage) GetUpdateProductInfoList() []*ProductInfo {
	if x != nil {
		return x.UpdateProductInfoList
	}
	return nil
}

func (x *ProductChangeMessage) GetTotal() int64 {
	if x != nil {
		return x.Total
	}
	return 0
}

func (x *ProductChangeMessage) GetUpdateCategoryInfoList() []*CategoryInfo {
	if x != nil {
		return x.UpdateCategoryInfoList
	}
	return nil
}

// from https://github.com/HaoDong108/DouyinBarrageGrab/blob/main/BarrageGrab/proto/message.proto
// status = 3 下播
type ControlMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Common *Common `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"`
	Status int32   `protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"`
}

func (x *ControlMessage) Reset() {
	*x = ControlMessage{}
	mi := &file_douyin_proto_msgTypes[70]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ControlMessage) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ControlMessage) ProtoMessage() {}

func (x *ControlMessage) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[70]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ControlMessage.ProtoReflect.Descriptor instead.
func (*ControlMessage) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{70}
}

func (x *ControlMessage) GetCommon() *Common {
	if x != nil {
		return x.Common
	}
	return nil
}

func (x *ControlMessage) GetStatus() int32 {
	if x != nil {
		return x.Status
	}
	return 0
}

// from https://github.com/HaoDong108/DouyinBarrageGrab/blob/main/BarrageGrab/proto/message.proto
type FansclubMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	CommonInfo *Common `protobuf:"bytes,1,opt,name=commonInfo,proto3" json:"commonInfo,omitempty"`
	// 升级是1，加入是2
	Type    int32  `protobuf:"varint,2,opt,name=type,proto3" json:"type,omitempty"`
	Content string `protobuf:"bytes,3,opt,name=content,proto3" json:"content,omitempty"`
	User    *User  `protobuf:"bytes,4,opt,name=user,proto3" json:"user,omitempty"`
}

func (x *FansclubMessage) Reset() {
	*x = FansclubMessage{}
	mi := &file_douyin_proto_msgTypes[71]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *FansclubMessage) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*FansclubMessage) ProtoMessage() {}

func (x *FansclubMessage) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[71]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use FansclubMessage.ProtoReflect.Descriptor instead.
func (*FansclubMessage) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{71}
}

func (x *FansclubMessage) GetCommonInfo() *Common {
	if x != nil {
		return x.CommonInfo
	}
	return nil
}

func (x *FansclubMessage) GetType() int32 {
	if x != nil {
		return x.Type
	}
	return 0
}

func (x *FansclubMessage) GetContent() string {
	if x != nil {
		return x.Content
	}
	return ""
}

func (x *FansclubMessage) GetUser() *User {
	if x != nil {
		return x.User
	}
	return nil
}

// from https://github.com/scx567888/live-room-watcher/blob/master/src/main/proto/douyin_hack/webcast/im/RoomRankMessage.proto
// 直播间排行榜
type RoomRankMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Common    *Common                     `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"`
	RanksList []*RoomRankMessage_RoomRank `protobuf:"bytes,2,rep,name=ranksList,proto3" json:"ranksList,omitempty"`
}

func (x *RoomRankMessage) Reset() {
	*x = RoomRankMessage{}
	mi := &file_douyin_proto_msgTypes[72]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RoomRankMessage) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RoomRankMessage) ProtoMessage() {}

func (x *RoomRankMessage) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[72]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RoomRankMessage.ProtoReflect.Descriptor instead.
func (*RoomRankMessage) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{72}
}

func (x *RoomRankMessage) GetCommon() *Common {
	if x != nil {
		return x.Common
	}
	return nil
}

func (x *RoomRankMessage) GetRanksList() []*RoomRankMessage_RoomRank {
	if x != nil {
		return x.RanksList
	}
	return nil
}

// from https://github.com/scx567888/live-room-watcher/blob/master/src/main/proto/douyin_hack/webcast/im/RoomMessage.proto
type RoomMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Common           *Common           `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"`
	Content          string            `protobuf:"bytes,2,opt,name=content,proto3" json:"content,omitempty"`
	SupprotLandscape bool              `protobuf:"varint,3,opt,name=supprotLandscape,proto3" json:"supprotLandscape,omitempty"`
	Roommessagetype  RoomMsgTypeEnum   `protobuf:"varint,4,opt,name=roommessagetype,proto3,enum=RoomMsgTypeEnum" json:"roommessagetype,omitempty"`
	SystemTopMsg     bool              `protobuf:"varint,5,opt,name=systemTopMsg,proto3" json:"systemTopMsg,omitempty"`
	ForcedGuarantee  bool              `protobuf:"varint,6,opt,name=forcedGuarantee,proto3" json:"forcedGuarantee,omitempty"`
	BizScene         string            `protobuf:"bytes,20,opt,name=bizScene,proto3" json:"bizScene,omitempty"`
	BuriedPointMap   map[string]string `protobuf:"bytes,30,rep,name=buriedPointMap,proto3" json:"buriedPointMap,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}

func (x *RoomMessage) Reset() {
	*x = RoomMessage{}
	mi := &file_douyin_proto_msgTypes[73]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RoomMessage) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RoomMessage) ProtoMessage() {}

func (x *RoomMessage) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[73]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RoomMessage.ProtoReflect.Descriptor instead.
func (*RoomMessage) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{73}
}

func (x *RoomMessage) GetCommon() *Common {
	if x != nil {
		return x.Common
	}
	return nil
}

func (x *RoomMessage) GetContent() string {
	if x != nil {
		return x.Content
	}
	return ""
}

func (x *RoomMessage) GetSupprotLandscape() bool {
	if x != nil {
		return x.SupprotLandscape
	}
	return false
}

func (x *RoomMessage) GetRoommessagetype() RoomMsgTypeEnum {
	if x != nil {
		return x.Roommessagetype
	}
	return RoomMsgTypeEnum_DEFAULTROOMMSG
}

func (x *RoomMessage) GetSystemTopMsg() bool {
	if x != nil {
		return x.SystemTopMsg
	}
	return false
}

func (x *RoomMessage) GetForcedGuarantee() bool {
	if x != nil {
		return x.ForcedGuarantee
	}
	return false
}

func (x *RoomMessage) GetBizScene() string {
	if x != nil {
		return x.BizScene
	}
	return ""
}

func (x *RoomMessage) GetBuriedPointMap() map[string]string {
	if x != nil {
		return x.BuriedPointMap
	}
	return nil
}

type RanklistHourEntranceMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Common *Common               `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"`
	Info   *RanklistHourEntrance `protobuf:"bytes,2,opt,name=info,proto3" json:"info,omitempty"`
}

func (x *RanklistHourEntranceMessage) Reset() {
	*x = RanklistHourEntranceMessage{}
	mi := &file_douyin_proto_msgTypes[74]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RanklistHourEntranceMessage) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RanklistHourEntranceMessage) ProtoMessage() {}

func (x *RanklistHourEntranceMessage) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[74]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RanklistHourEntranceMessage.ProtoReflect.Descriptor instead.
func (*RanklistHourEntranceMessage) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{74}
}

func (x *RanklistHourEntranceMessage) GetCommon() *Common {
	if x != nil {
		return x.Common
	}
	return nil
}

func (x *RanklistHourEntranceMessage) GetInfo() *RanklistHourEntrance {
	if x != nil {
		return x.Info
	}
	return nil
}

type RanklistHourEntrance struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	GlobalInfos          []*RanklistHourEntrance_Info `protobuf:"bytes,1,rep,name=global_infos,json=globalInfos,proto3" json:"global_infos,omitempty"`                              // 全局信息列表
	DefaultGlobalInfos   []*RanklistHourEntrance_Info `protobuf:"bytes,2,rep,name=default_global_infos,json=defaultGlobalInfos,proto3" json:"default_global_infos,omitempty"`       // 默认全局信息列表
	VerticalInfos        []*RanklistHourEntrance_Info `protobuf:"bytes,3,rep,name=vertical_infos,json=verticalInfos,proto3" json:"vertical_infos,omitempty"`                        // 垂直信息列表
	DefaultVerticalInfos []*RanklistHourEntrance_Info `protobuf:"bytes,4,rep,name=default_vertical_infos,json=defaultVerticalInfos,proto3" json:"default_vertical_infos,omitempty"` // 默认垂直信息列表
}

func (x *RanklistHourEntrance) Reset() {
	*x = RanklistHourEntrance{}
	mi := &file_douyin_proto_msgTypes[75]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RanklistHourEntrance) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RanklistHourEntrance) ProtoMessage() {}

func (x *RanklistHourEntrance) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[75]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RanklistHourEntrance.ProtoReflect.Descriptor instead.
func (*RanklistHourEntrance) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{75}
}

func (x *RanklistHourEntrance) GetGlobalInfos() []*RanklistHourEntrance_Info {
	if x != nil {
		return x.GlobalInfos
	}
	return nil
}

func (x *RanklistHourEntrance) GetDefaultGlobalInfos() []*RanklistHourEntrance_Info {
	if x != nil {
		return x.DefaultGlobalInfos
	}
	return nil
}

func (x *RanklistHourEntrance) GetVerticalInfos() []*RanklistHourEntrance_Info {
	if x != nil {
		return x.VerticalInfos
	}
	return nil
}

func (x *RanklistHourEntrance) GetDefaultVerticalInfos() []*RanklistHourEntrance_Info {
	if x != nil {
		return x.DefaultVerticalInfos
	}
	return nil
}

type RanklistHourEntrance_Info struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// "details" 字段是一个重复字段，使用 RanklistHourEntrance.Detail 消息类型
	Details []*RanklistHourEntrance_Detail `protobuf:"bytes,1,rep,name=details,proto3" json:"details,omitempty"`
}

func (x *RanklistHourEntrance_Info) Reset() {
	*x = RanklistHourEntrance_Info{}
	mi := &file_douyin_proto_msgTypes[76]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RanklistHourEntrance_Info) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RanklistHourEntrance_Info) ProtoMessage() {}

func (x *RanklistHourEntrance_Info) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[76]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RanklistHourEntrance_Info.ProtoReflect.Descriptor instead.
func (*RanklistHourEntrance_Info) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{76}
}

func (x *RanklistHourEntrance_Info) GetDetails() []*RanklistHourEntrance_Detail {
	if x != nil {
		return x.Details
	}
	return nil
}

type RanklistHourEntrance_Detail struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Pages         []*RanklistHourEntrance_Page `protobuf:"bytes,1,rep,name=pages,proto3" json:"pages,omitempty"`                                      // 假设 pages 是 RanklistHourEntrance_Page 类型
	RanklistType  int32                        `protobuf:"varint,2,opt,name=ranklist_type,json=ranklistType,proto3" json:"ranklist_type,omitempty"`   // 排名列表类型
	Title         string                       `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"`                                      // 标题
	RanklistExtra string                       `protobuf:"bytes,4,opt,name=ranklist_extra,json=ranklistExtra,proto3" json:"ranklist_extra,omitempty"` // 排名列表额外信息
	EntranceExtra string                       `protobuf:"bytes,5,opt,name=entrance_extra,json=entranceExtra,proto3" json:"entrance_extra,omitempty"` // 入口额外信息
	Schema        string                       `protobuf:"bytes,6,opt,name=schema,proto3" json:"schema,omitempty"`                                    // 模式
}

func (x *RanklistHourEntrance_Detail) Reset() {
	*x = RanklistHourEntrance_Detail{}
	mi := &file_douyin_proto_msgTypes[77]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RanklistHourEntrance_Detail) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RanklistHourEntrance_Detail) ProtoMessage() {}

func (x *RanklistHourEntrance_Detail) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[77]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RanklistHourEntrance_Detail.ProtoReflect.Descriptor instead.
func (*RanklistHourEntrance_Detail) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{77}
}

func (x *RanklistHourEntrance_Detail) GetPages() []*RanklistHourEntrance_Page {
	if x != nil {
		return x.Pages
	}
	return nil
}

func (x *RanklistHourEntrance_Detail) GetRanklistType() int32 {
	if x != nil {
		return x.RanklistType
	}
	return 0
}

func (x *RanklistHourEntrance_Detail) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *RanklistHourEntrance_Detail) GetRanklistExtra() string {
	if x != nil {
		return x.RanklistExtra
	}
	return ""
}

func (x *RanklistHourEntrance_Detail) GetEntranceExtra() string {
	if x != nil {
		return x.EntranceExtra
	}
	return ""
}

func (x *RanklistHourEntrance_Detail) GetSchema() string {
	if x != nil {
		return x.Schema
	}
	return ""
}

type RanklistHourEntrance_Page struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Content         string `protobuf:"bytes,1,opt,name=content,proto3" json:"content,omitempty"`                                        // Content of the page
	BackgroundColor string `protobuf:"bytes,2,opt,name=background_color,json=backgroundColor,proto3" json:"background_color,omitempty"` // Background color of the page
	ShowTimes       int64  `protobuf:"varint,3,opt,name=show_times,json=showTimes,proto3" json:"show_times,omitempty"`                  // Number of times the page is shown (or similar)
	ContentType     int32  `protobuf:"varint,4,opt,name=content_type,json=contentType,proto3" json:"content_type,omitempty"`            // Type of the content
}

func (x *RanklistHourEntrance_Page) Reset() {
	*x = RanklistHourEntrance_Page{}
	mi := &file_douyin_proto_msgTypes[78]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RanklistHourEntrance_Page) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RanklistHourEntrance_Page) ProtoMessage() {}

func (x *RanklistHourEntrance_Page) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[78]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RanklistHourEntrance_Page.ProtoReflect.Descriptor instead.
func (*RanklistHourEntrance_Page) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{78}
}

func (x *RanklistHourEntrance_Page) GetContent() string {
	if x != nil {
		return x.Content
	}
	return ""
}

func (x *RanklistHourEntrance_Page) GetBackgroundColor() string {
	if x != nil {
		return x.BackgroundColor
	}
	return ""
}

func (x *RanklistHourEntrance_Page) GetShowTimes() int64 {
	if x != nil {
		return x.ShowTimes
	}
	return 0
}

func (x *RanklistHourEntrance_Page) GetContentType() int32 {
	if x != nil {
		return x.ContentType
	}
	return 0
}

type InRoomBannerMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// common 字段，引用 Common 消息类型
	Common *Common `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"`
	// extra 字段，字符串类型
	Extra string `protobuf:"bytes,2,opt,name=extra,proto3" json:"extra,omitempty"`
	// position 字段，整型
	Position int32 `protobuf:"varint,3,opt,name=position,proto3" json:"position,omitempty"`
	// action_type 字段，整型
	ActionType int32 `protobuf:"varint,4,opt,name=action_type,json=actionType,proto3" json:"action_type,omitempty"`
	// container_url 字段，字符串类型
	ContainerUrl string `protobuf:"bytes,5,opt,name=container_url,json=containerUrl,proto3" json:"container_url,omitempty"`
	// lynx_container_url 字段，字符串类型
	LynxContainerUrl string `protobuf:"bytes,6,opt,name=lynx_container_url,json=lynxContainerUrl,proto3" json:"lynx_container_url,omitempty"`
	// container_type 字段，整型
	ContainerType int32 `protobuf:"varint,7,opt,name=container_type,json=containerType,proto3" json:"container_type,omitempty"`
	// op_type 字段，整型
	OpType int32 `protobuf:"varint,8,opt,name=op_type,json=opType,proto3" json:"op_type,omitempty"`
}

func (x *InRoomBannerMessage) Reset() {
	*x = InRoomBannerMessage{}
	mi := &file_douyin_proto_msgTypes[79]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *InRoomBannerMessage) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*InRoomBannerMessage) ProtoMessage() {}

func (x *InRoomBannerMessage) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[79]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use InRoomBannerMessage.ProtoReflect.Descriptor instead.
func (*InRoomBannerMessage) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{79}
}

func (x *InRoomBannerMessage) GetCommon() *Common {
	if x != nil {
		return x.Common
	}
	return nil
}

func (x *InRoomBannerMessage) GetExtra() string {
	if x != nil {
		return x.Extra
	}
	return ""
}

func (x *InRoomBannerMessage) GetPosition() int32 {
	if x != nil {
		return x.Position
	}
	return 0
}

func (x *InRoomBannerMessage) GetActionType() int32 {
	if x != nil {
		return x.ActionType
	}
	return 0
}

func (x *InRoomBannerMessage) GetContainerUrl() string {
	if x != nil {
		return x.ContainerUrl
	}
	return ""
}

func (x *InRoomBannerMessage) GetLynxContainerUrl() string {
	if x != nil {
		return x.LynxContainerUrl
	}
	return ""
}

func (x *InRoomBannerMessage) GetContainerType() int32 {
	if x != nil {
		return x.ContainerType
	}
	return 0
}

func (x *InRoomBannerMessage) GetOpType() int32 {
	if x != nil {
		return x.OpType
	}
	return 0
}

type RoomDataSyncMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// common 字段，引用 Common 消息类型
	Common *Common `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"`
	// roomID 字段，整型字符串（int64String）
	RoomID string `protobuf:"bytes,2,opt,name=roomID,proto3" json:"roomID,omitempty"`
	// syncKey 字段，字符串类型
	SyncKey string `protobuf:"bytes,3,opt,name=syncKey,proto3" json:"syncKey,omitempty"`
	// version 字段，整型字符串（int64String）
	Version string `protobuf:"bytes,4,opt,name=version,proto3" json:"version,omitempty"`
	// payload 字段，字节类型（bytes）
	Payload []byte `protobuf:"bytes,5,opt,name=payload,proto3" json:"payload,omitempty"`
	// bizLogID 字段，字符串类型
	BizLogID string `protobuf:"bytes,6,opt,name=bizLogID,proto3" json:"bizLogID,omitempty"`
}

func (x *RoomDataSyncMessage) Reset() {
	*x = RoomDataSyncMessage{}
	mi := &file_douyin_proto_msgTypes[80]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RoomDataSyncMessage) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RoomDataSyncMessage) ProtoMessage() {}

func (x *RoomDataSyncMessage) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[80]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RoomDataSyncMessage.ProtoReflect.Descriptor instead.
func (*RoomDataSyncMessage) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{80}
}

func (x *RoomDataSyncMessage) GetCommon() *Common {
	if x != nil {
		return x.Common
	}
	return nil
}

func (x *RoomDataSyncMessage) GetRoomID() string {
	if x != nil {
		return x.RoomID
	}
	return ""
}

func (x *RoomDataSyncMessage) GetSyncKey() string {
	if x != nil {
		return x.SyncKey
	}
	return ""
}

func (x *RoomDataSyncMessage) GetVersion() string {
	if x != nil {
		return x.Version
	}
	return ""
}

func (x *RoomDataSyncMessage) GetPayload() []byte {
	if x != nil {
		return x.Payload
	}
	return nil
}

func (x *RoomDataSyncMessage) GetBizLogID() string {
	if x != nil {
		return x.BizLogID
	}
	return ""
}

type LuckyBoxTempStatusMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Common *Common `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"`
}

func (x *LuckyBoxTempStatusMessage) Reset() {
	*x = LuckyBoxTempStatusMessage{}
	mi := &file_douyin_proto_msgTypes[81]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *LuckyBoxTempStatusMessage) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*LuckyBoxTempStatusMessage) ProtoMessage() {}

func (x *LuckyBoxTempStatusMessage) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[81]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use LuckyBoxTempStatusMessage.ProtoReflect.Descriptor instead.
func (*LuckyBoxTempStatusMessage) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{81}
}

func (x *LuckyBoxTempStatusMessage) GetCommon() *Common {
	if x != nil {
		return x.Common
	}
	return nil
}

type DecorationModifyMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// 存疑
	// 网页原型为DecorationModifyMessage?
	Common *Common `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"`
	Extra  string  `protobuf:"bytes,2,opt,name=extra,proto3" json:"extra,omitempty"`
}

func (x *DecorationModifyMessage) Reset() {
	*x = DecorationModifyMessage{}
	mi := &file_douyin_proto_msgTypes[82]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *DecorationModifyMessage) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DecorationModifyMessage) ProtoMessage() {}

func (x *DecorationModifyMessage) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[82]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DecorationModifyMessage.ProtoReflect.Descriptor instead.
func (*DecorationModifyMessage) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{82}
}

func (x *DecorationModifyMessage) GetCommon() *Common {
	if x != nil {
		return x.Common
	}
	return nil
}

func (x *DecorationModifyMessage) GetExtra() string {
	if x != nil {
		return x.Extra
	}
	return ""
}

type DecorationUpdateMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Common *Common           `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"`
	Detai  *DecotationDetail `protobuf:"bytes,2,opt,name=detai,proto3" json:"detai,omitempty"`
}

func (x *DecorationUpdateMessage) Reset() {
	*x = DecorationUpdateMessage{}
	mi := &file_douyin_proto_msgTypes[83]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *DecorationUpdateMessage) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DecorationUpdateMessage) ProtoMessage() {}

func (x *DecorationUpdateMessage) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[83]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DecorationUpdateMessage.ProtoReflect.Descriptor instead.
func (*DecorationUpdateMessage) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{83}
}

func (x *DecorationUpdateMessage) GetCommon() *Common {
	if x != nil {
		return x.Common
	}
	return nil
}

func (x *DecorationUpdateMessage) GetDetai() *DecotationDetail {
	if x != nil {
		return x.Detai
	}
	return nil
}

type DecotationDetail struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	TextDecoration  *Decoration `protobuf:"bytes,1,opt,name=text_decoration,json=textDecoration,proto3" json:"text_decoration,omitempty"`
	ImageDecoration *Decoration `protobuf:"bytes,2,opt,name=image_decoration,json=imageDecoration,proto3" json:"image_decoration,omitempty"`
}

func (x *DecotationDetail) Reset() {
	*x = DecotationDetail{}
	mi := &file_douyin_proto_msgTypes[84]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *DecotationDetail) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DecotationDetail) ProtoMessage() {}

func (x *DecotationDetail) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[84]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DecotationDetail.ProtoReflect.Descriptor instead.
func (*DecotationDetail) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{84}
}

func (x *DecotationDetail) GetTextDecoration() *Decoration {
	if x != nil {
		return x.TextDecoration
	}
	return nil
}

func (x *DecotationDetail) GetImageDecoration() *Decoration {
	if x != nil {
		return x.ImageDecoration
	}
	return nil
}

type Decoration struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// id 字段，整型字符串（int64String）
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// image 字段，引用 Image 消息类型
	Image *Image `protobuf:"bytes,2,opt,name=image,proto3" json:"image,omitempty"`
	// type 字段，整型字符串（int64String）
	Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"`
	// input_rect 字段，整型字符串（int64String）列表
	InputRect []string `protobuf:"bytes,4,rep,name=input_rect,json=inputRect,proto3" json:"input_rect,omitempty"`
	// text_size 字段，整型字符串（int64String）
	TextSize string `protobuf:"bytes,5,opt,name=text_size,json=textSize,proto3" json:"text_size,omitempty"`
	// text_color 字段，字符串类型
	TextColor string `protobuf:"bytes,6,opt,name=text_color,json=textColor,proto3" json:"text_color,omitempty"`
	// content 字段，字符串类型
	Content string `protobuf:"bytes,7,opt,name=content,proto3" json:"content,omitempty"`
	// max_length 字段，整型字符串（int64String）
	MaxLength string `protobuf:"bytes,8,opt,name=max_length,json=maxLength,proto3" json:"max_length,omitempty"`
	// status 字段，整型字符串（int64String）
	Status string `protobuf:"bytes,9,opt,name=status,proto3" json:"status,omitempty"`
	// h 字段，整型字符串（int64String）
	H string `protobuf:"bytes,10,opt,name=h,proto3" json:"h,omitempty"`
	// x 字段，整型字符串（int64String）
	X string `protobuf:"bytes,11,opt,name=x,proto3" json:"x,omitempty"`
	// w 字段，整型字符串（int64String）
	W string `protobuf:"bytes,12,opt,name=w,proto3" json:"w,omitempty"`
	// y 字段，整型字符串（int64String）
	Y string `protobuf:"bytes,13,opt,name=y,proto3" json:"y,omitempty"`
	// kind 字段，整型字符串（int64String）
	Kind string `protobuf:"bytes,14,opt,name=kind,proto3" json:"kind,omitempty"`
	// sub_type 字段，整型字符串（int64String）
	SubType string `protobuf:"bytes,15,opt,name=sub_type,json=subType,proto3" json:"sub_type,omitempty"`
	// reservation 字段，引用 Reservation 消息类型
	Reservation *Reservation `protobuf:"bytes,16,opt,name=reservation,proto3" json:"reservation,omitempty"`
	// nine_patch_image 字段，引用 Image 消息类型
	NinePatchImage *Image `protobuf:"bytes,17,opt,name=nine_patch_image,json=ninePatchImage,proto3" json:"nine_patch_image,omitempty"`
	// text_special_effects 字段，整型字符串（int64String）列表
	TextSpecialEffects []string `protobuf:"bytes,18,rep,name=text_special_effects,json=textSpecialEffects,proto3" json:"text_special_effects,omitempty"`
	// text_image_adjustable_start_position 字段，整型字符串（int64String）
	TextImageAdjustableStartPosition string `protobuf:"bytes,19,opt,name=text_image_adjustable_start_position,json=textImageAdjustableStartPosition,proto3" json:"text_image_adjustable_start_position,omitempty"`
	// text_image_adjustable_end_position 字段，整型字符串（int64String）
	TextImageAdjustableEndPosition string `protobuf:"bytes,20,opt,name=text_image_adjustable_end_position,json=textImageAdjustableEndPosition,proto3" json:"text_image_adjustable_end_position,omitempty"`
	// text_font_config 字段，引用 DecorationFontConfig 消息类型
	TextFontConfig *DecorationFontConfig `protobuf:"bytes,21,opt,name=text_font_config,json=textFontConfig,proto3" json:"text_font_config,omitempty"`
	// audit_text_color 字段，字符串类型
	AuditTextColor string `protobuf:"bytes,22,opt,name=audit_text_color,json=auditTextColor,proto3" json:"audit_text_color,omitempty"`
}

func (x *Decoration) Reset() {
	*x = Decoration{}
	mi := &file_douyin_proto_msgTypes[85]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Decoration) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Decoration) ProtoMessage() {}

func (x *Decoration) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[85]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Decoration.ProtoReflect.Descriptor instead.
func (*Decoration) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{85}
}

func (x *Decoration) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *Decoration) GetImage() *Image {
	if x != nil {
		return x.Image
	}
	return nil
}

func (x *Decoration) GetType() string {
	if x != nil {
		return x.Type
	}
	return ""
}

func (x *Decoration) GetInputRect() []string {
	if x != nil {
		return x.InputRect
	}
	return nil
}

func (x *Decoration) GetTextSize() string {
	if x != nil {
		return x.TextSize
	}
	return ""
}

func (x *Decoration) GetTextColor() string {
	if x != nil {
		return x.TextColor
	}
	return ""
}

func (x *Decoration) GetContent() string {
	if x != nil {
		return x.Content
	}
	return ""
}

func (x *Decoration) GetMaxLength() string {
	if x != nil {
		return x.MaxLength
	}
	return ""
}

func (x *Decoration) GetStatus() string {
	if x != nil {
		return x.Status
	}
	return ""
}

func (x *Decoration) GetH() string {
	if x != nil {
		return x.H
	}
	return ""
}

func (x *Decoration) GetX() string {
	if x != nil {
		return x.X
	}
	return ""
}

func (x *Decoration) GetW() string {
	if x != nil {
		return x.W
	}
	return ""
}

func (x *Decoration) GetY() string {
	if x != nil {
		return x.Y
	}
	return ""
}

func (x *Decoration) GetKind() string {
	if x != nil {
		return x.Kind
	}
	return ""
}

func (x *Decoration) GetSubType() string {
	if x != nil {
		return x.SubType
	}
	return ""
}

func (x *Decoration) GetReservation() *Reservation {
	if x != nil {
		return x.Reservation
	}
	return nil
}

func (x *Decoration) GetNinePatchImage() *Image {
	if x != nil {
		return x.NinePatchImage
	}
	return nil
}

func (x *Decoration) GetTextSpecialEffects() []string {
	if x != nil {
		return x.TextSpecialEffects
	}
	return nil
}

func (x *Decoration) GetTextImageAdjustableStartPosition() string {
	if x != nil {
		return x.TextImageAdjustableStartPosition
	}
	return ""
}

func (x *Decoration) GetTextImageAdjustableEndPosition() string {
	if x != nil {
		return x.TextImageAdjustableEndPosition
	}
	return ""
}

func (x *Decoration) GetTextFontConfig() *DecorationFontConfig {
	if x != nil {
		return x.TextFontConfig
	}
	return nil
}

func (x *Decoration) GetAuditTextColor() string {
	if x != nil {
		return x.AuditTextColor
	}
	return ""
}

type Reservation struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// appointment_id 字段，整型字符串（int64String）
	AppointmentId string `protobuf:"bytes,1,opt,name=appointment_id,json=appointmentId,proto3" json:"appointment_id,omitempty"`
	// anchor_id 字段，整型字符串（int64String）
	AnchorId string `protobuf:"bytes,2,opt,name=anchor_id,json=anchorId,proto3" json:"anchor_id,omitempty"`
	// room_id 字段，整型字符串（int64String）
	RoomId string `protobuf:"bytes,3,opt,name=room_id,json=roomId,proto3" json:"room_id,omitempty"`
	// start_time 字段，整型字符串（int64String）
	StartTime string `protobuf:"bytes,4,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
	// end_time 字段，整型字符串（int64String）
	EndTime string `protobuf:"bytes,5,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`
	// btn_rect 字段，整型字符串（int64String）列表，假设它是一个矩形区域
	BtnRect []string `protobuf:"bytes,6,rep,name=btn_rect,json=btnRect,proto3" json:"btn_rect,omitempty"`
	// btn_color 字段，字符串类型
	BtnColor string `protobuf:"bytes,7,opt,name=btn_color,json=btnColor,proto3" json:"btn_color,omitempty"`
	// is_reserved 字段，布尔类型
	IsReserved bool `protobuf:"varint,8,opt,name=is_reserved,json=isReserved,proto3" json:"is_reserved,omitempty"`
}

func (x *Reservation) Reset() {
	*x = Reservation{}
	mi := &file_douyin_proto_msgTypes[86]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Reservation) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Reservation) ProtoMessage() {}

func (x *Reservation) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[86]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Reservation.ProtoReflect.Descriptor instead.
func (*Reservation) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{86}
}

func (x *Reservation) GetAppointmentId() string {
	if x != nil {
		return x.AppointmentId
	}
	return ""
}

func (x *Reservation) GetAnchorId() string {
	if x != nil {
		return x.AnchorId
	}
	return ""
}

func (x *Reservation) GetRoomId() string {
	if x != nil {
		return x.RoomId
	}
	return ""
}

func (x *Reservation) GetStartTime() string {
	if x != nil {
		return x.StartTime
	}
	return ""
}

func (x *Reservation) GetEndTime() string {
	if x != nil {
		return x.EndTime
	}
	return ""
}

func (x *Reservation) GetBtnRect() []string {
	if x != nil {
		return x.BtnRect
	}
	return nil
}

func (x *Reservation) GetBtnColor() string {
	if x != nil {
		return x.BtnColor
	}
	return ""
}

func (x *Reservation) GetIsReserved() bool {
	if x != nil {
		return x.IsReserved
	}
	return false
}

type DecorationFontConfig struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// FontID 字段，整型字符串（int64String）
	FontID string `protobuf:"bytes,1,opt,name=FontID,proto3" json:"FontID,omitempty"`
	// DownloadUrl 字段，字符串类型
	DownloadUrl string `protobuf:"bytes,2,opt,name=DownloadUrl,proto3" json:"DownloadUrl,omitempty"`
	// Status 字段，整型字符串（int64String）
	Status string `protobuf:"bytes,3,opt,name=Status,proto3" json:"Status,omitempty"`
	// font_name 字段，字符串类型
	FontName string `protobuf:"bytes,4,opt,name=font_name,json=fontName,proto3" json:"font_name,omitempty"`
}

func (x *DecorationFontConfig) Reset() {
	*x = DecorationFontConfig{}
	mi := &file_douyin_proto_msgTypes[87]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *DecorationFontConfig) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DecorationFontConfig) ProtoMessage() {}

func (x *DecorationFontConfig) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[87]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DecorationFontConfig.ProtoReflect.Descriptor instead.
func (*DecorationFontConfig) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{87}
}

func (x *DecorationFontConfig) GetFontID() string {
	if x != nil {
		return x.FontID
	}
	return ""
}

func (x *DecorationFontConfig) GetDownloadUrl() string {
	if x != nil {
		return x.DownloadUrl
	}
	return ""
}

func (x *DecorationFontConfig) GetStatus() string {
	if x != nil {
		return x.Status
	}
	return ""
}

func (x *DecorationFontConfig) GetFontName() string {
	if x != nil {
		return x.FontName
	}
	return ""
}

type LinkMicAudienceKtvMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// common 字段，引用 Common 消息类型
	Common *Common `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"`
	// message_type 字段，整型字符串（int64String）
	MessageType string `protobuf:"bytes,2,opt,name=message_type,json=messageType,proto3" json:"message_type,omitempty"`
	// list_info 字段，是一个可重复的 ListInfo 消息类型列表
	ListInfo []*ListInfo `protobuf:"bytes,3,rep,name=list_info,json=listInfo,proto3" json:"list_info,omitempty"`
	// want_sing_count 字段，整型字符串（int64String）
	WantSingCount string `protobuf:"bytes,4,opt,name=want_sing_count,json=wantSingCount,proto3" json:"want_sing_count,omitempty"`
	// want_sing_song_threshold 字段，整型字符串（int64String）
	WantSingSongThreshold string `protobuf:"bytes,5,opt,name=want_sing_song_threshold,json=wantSingSongThreshold,proto3" json:"want_sing_song_threshold,omitempty"`
	// sung_song_count 字段，整型字符串（int64String）
	SungSongCount string `protobuf:"bytes,6,opt,name=sung_song_count,json=sungSongCount,proto3" json:"sung_song_count,omitempty"`
	// is_downgrade 字段，布尔类型
	IsDowngrade bool `protobuf:"varint,7,opt,name=is_downgrade,json=isDowngrade,proto3" json:"is_downgrade,omitempty"`
	// all_song_unique_list 字段，是一个可重复的 SongUniqueInfo 消息类型列表
	AllSongUniqueList []*LinkMicAudienceKtvMessage_SongUniqueInfo `protobuf:"bytes,8,rep,name=all_song_unique_list,json=allSongUniqueList,proto3" json:"all_song_unique_list,omitempty"`
}

func (x *LinkMicAudienceKtvMessage) Reset() {
	*x = LinkMicAudienceKtvMessage{}
	mi := &file_douyin_proto_msgTypes[88]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *LinkMicAudienceKtvMessage) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*LinkMicAudienceKtvMessage) ProtoMessage() {}

func (x *LinkMicAudienceKtvMessage) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[88]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use LinkMicAudienceKtvMessage.ProtoReflect.Descriptor instead.
func (*LinkMicAudienceKtvMessage) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{88}
}

func (x *LinkMicAudienceKtvMessage) GetCommon() *Common {
	if x != nil {
		return x.Common
	}
	return nil
}

func (x *LinkMicAudienceKtvMessage) GetMessageType() string {
	if x != nil {
		return x.MessageType
	}
	return ""
}

func (x *LinkMicAudienceKtvMessage) GetListInfo() []*ListInfo {
	if x != nil {
		return x.ListInfo
	}
	return nil
}

func (x *LinkMicAudienceKtvMessage) GetWantSingCount() string {
	if x != nil {
		return x.WantSingCount
	}
	return ""
}

func (x *LinkMicAudienceKtvMessage) GetWantSingSongThreshold() string {
	if x != nil {
		return x.WantSingSongThreshold
	}
	return ""
}

func (x *LinkMicAudienceKtvMessage) GetSungSongCount() string {
	if x != nil {
		return x.SungSongCount
	}
	return ""
}

func (x *LinkMicAudienceKtvMessage) GetIsDowngrade() bool {
	if x != nil {
		return x.IsDowngrade
	}
	return false
}

func (x *LinkMicAudienceKtvMessage) GetAllSongUniqueList() []*LinkMicAudienceKtvMessage_SongUniqueInfo {
	if x != nil {
		return x.AllSongUniqueList
	}
	return nil
}

type ListInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// music 字段，引用 KtvSongStruct 消息类型
	Music *KtvSongStruct `protobuf:"bytes,1,opt,name=music,proto3" json:"music,omitempty"`
	// is_self_seeing 字段，布尔类型
	IsSelfSeeing bool `protobuf:"varint,2,opt,name=is_self_seeing,json=isSelfSeeing,proto3" json:"is_self_seeing,omitempty"`
}

func (x *ListInfo) Reset() {
	*x = ListInfo{}
	mi := &file_douyin_proto_msgTypes[89]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ListInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListInfo) ProtoMessage() {}

func (x *ListInfo) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[89]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ListInfo.ProtoReflect.Descriptor instead.
func (*ListInfo) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{89}
}

func (x *ListInfo) GetMusic() *KtvSongStruct {
	if x != nil {
		return x.Music
	}
	return nil
}

func (x *ListInfo) GetIsSelfSeeing() bool {
	if x != nil {
		return x.IsSelfSeeing
	}
	return false
}

type KtvSongStruct struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// id 字段，整型字符串（int64String）
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// title 字段，字符串类型
	Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"`
	// author 字段，字符串类型
	Author string `protobuf:"bytes,3,opt,name=author,proto3" json:"author,omitempty"`
	// lyric_type 字段，整型字符串（int64String）
	LyricType string `protobuf:"bytes,4,opt,name=lyric_type,json=lyricType,proto3" json:"lyric_type,omitempty"`
	// song_url 字段，字符串类型
	SongUrl string `protobuf:"bytes,5,opt,name=song_url,json=songUrl,proto3" json:"song_url,omitempty"`
	// lyric_url_list 字段，字符串列表
	LyricUrlList []string `protobuf:"bytes,6,rep,name=lyric_url_list,json=lyricUrlList,proto3" json:"lyric_url_list,omitempty"`
	// duration 字段，整型字符串（int64String）
	Duration string `protobuf:"bytes,7,opt,name=duration,proto3" json:"duration,omitempty"`
	// cover_url 字段，字符串类型
	CoverUrl string `protobuf:"bytes,8,opt,name=cover_url,json=coverUrl,proto3" json:"cover_url,omitempty"`
	// song_pattern 字段，整型字符串（int64String）
	SongPattern string `protobuf:"bytes,9,opt,name=song_pattern,json=songPattern,proto3" json:"song_pattern,omitempty"`
	// preview_start_time 字段，双精度浮点数
	PreviewStartTime float64 `protobuf:"fixed64,10,opt,name=preview_start_time,json=previewStartTime,proto3" json:"preview_start_time,omitempty"`
	// full_track 字段，AudioInfo 消息类型
	FullTrack *KtvSongStruct_AudioInfo `protobuf:"bytes,11,opt,name=full_track,json=fullTrack,proto3" json:"full_track,omitempty"`
	// accompaniment_track 字段，AudioInfo 消息类型
	AccompanimentTrack *KtvSongStruct_AudioInfo `protobuf:"bytes,12,opt,name=accompaniment_track,json=accompanimentTrack,proto3" json:"accompaniment_track,omitempty"`
	// new_cover_url 字段，字符串类型
	NewCoverUrl string `protobuf:"bytes,13,opt,name=new_cover_url,json=newCoverUrl,proto3" json:"new_cover_url,omitempty"`
	// midi_url 字段，字符串类型
	MidiUrl string `protobuf:"bytes,14,opt,name=midi_url,json=midiUrl,proto3" json:"midi_url,omitempty"`
	// is_favorite 字段，布尔类型
	IsFavorite bool `protobuf:"varint,15,opt,name=is_favorite,json=isFavorite,proto3" json:"is_favorite,omitempty"`
	// order_info 字段，OrderInfo 消息类型
	OrderInfo *KtvSongStruct_OrderInfo `protobuf:"bytes,16,opt,name=order_info,json=orderInfo,proto3" json:"order_info,omitempty"`
	// tags 字段，字符串列表
	Tags []string `protobuf:"bytes,17,rep,name=tags,proto3" json:"tags,omitempty"`
	// music_climax 字段，MusicInterval 消息类型列表
	MusicClimax []*MusicInterval `protobuf:"bytes,19,rep,name=music_climax,json=musicClimax,proto3" json:"music_climax,omitempty"`
	// preludes 字段，MusicInterval 消息类型列表
	Preludes []*MusicInterval `protobuf:"bytes,20,rep,name=preludes,proto3" json:"preludes,omitempty"`
	// interludes 字段，MusicInterval 消息类型列表
	Interludes []*MusicInterval `protobuf:"bytes,21,rep,name=interludes,proto3" json:"interludes,omitempty"`
	// segments 字段，MusicInterval 消息类型列表
	Segments []*MusicInterval `protobuf:"bytes,22,rep,name=segments,proto3" json:"segments,omitempty"`
	// pattern_file_url 字段，字符串类型
	PatternFileUrl string `protobuf:"bytes,23,opt,name=pattern_file_url,json=patternFileUrl,proto3" json:"pattern_file_url,omitempty"`
	// bridge_segments 字段，MusicInterval 消息类型列表
	BridgeSegments []*MusicInterval `protobuf:"bytes,24,rep,name=bridge_segments,json=bridgeSegments,proto3" json:"bridge_segments,omitempty"`
	// main_segments 字段，MusicInterval 消息类型列表
	MainSegments []*MusicInterval `protobuf:"bytes,25,rep,name=main_segments,json=mainSegments,proto3" json:"main_segments,omitempty"`
	// finale_segments 字段，MusicInterval 消息类型列表
	FinaleSegments []*MusicInterval `protobuf:"bytes,26,rep,name=finale_segments,json=finaleSegments,proto3" json:"finale_segments,omitempty"`
	// chorus_info 字段，ChorusVideoInfo 消息类型
	ChorusInfo *ChorusVideoInfo `protobuf:"bytes,27,opt,name=chorus_info,json=chorusInfo,proto3" json:"chorus_info,omitempty"`
	// song_type 字段，整型
	SongType int32 `protobuf:"varint,28,opt,name=song_type,json=songType,proto3" json:"song_type,omitempty"`
	// add_song_source 字段，字符串类型
	AddSongSource string `protobuf:"bytes,29,opt,name=add_song_source,json=addSongSource,proto3" json:"add_song_source,omitempty"`
	// total_order_with_cur_anchor 字段，整型字符串（int64String）
	TotalOrderWithCurAnchor string `protobuf:"bytes,30,opt,name=total_order_with_cur_anchor,json=totalOrderWithCurAnchor,proto3" json:"total_order_with_cur_anchor,omitempty"`
	// global_total_order 字段，整型字符串（int64String）
	GlobalTotalOrder string `protobuf:"bytes,31,opt,name=global_total_order,json=globalTotalOrder,proto3" json:"global_total_order,omitempty"`
	// artist_ids 字段，整型字符串（int64String）列表
	ArtistIds []string `protobuf:"bytes,32,rep,name=artist_ids,json=artistIds,proto3" json:"artist_ids,omitempty"`
	// id_str 字段，字符串类型
	IdStr string `protobuf:"bytes,33,opt,name=id_str,json=idStr,proto3" json:"id_str,omitempty"`
	// song_copyright 字段，整型列表
	SongCopyright []int32 `protobuf:"varint,34,rep,packed,name=song_copyright,json=songCopyright,proto3" json:"song_copyright,omitempty"`
	// is_prior_song 字段，布尔类型
	IsPriorSong bool `protobuf:"varint,35,opt,name=is_prior_song,json=isPriorSong,proto3" json:"is_prior_song,omitempty"`
	// is_fragment_song 字段，布尔类型
	IsFragmentSong bool `protobuf:"varint,36,opt,name=is_fragment_song,json=isFragmentSong,proto3" json:"is_fragment_song,omitempty"`
	// fragment_lyric 字段，字符串类型
	FragmentLyric string `protobuf:"bytes,37,opt,name=fragment_lyric,json=fragmentLyric,proto3" json:"fragment_lyric,omitempty"`
	// personal_song_info 字段，PersonalSongInfo 消息类型
	PersonalSongInfo *PersonalSongInfo `protobuf:"bytes,38,opt,name=personal_song_info,json=personalSongInfo,proto3" json:"personal_song_info,omitempty"`
	// lyric_hash 字段，字符串类型
	LyricHash string `protobuf:"bytes,39,opt,name=lyric_hash,json=lyricHash,proto3" json:"lyric_hash,omitempty"`
	// midi_hash 字段，字符串类型
	MidiHash string `protobuf:"bytes,40,opt,name=midi_hash,json=midiHash,proto3" json:"midi_hash,omitempty"`
	// want_listen_info 字段，WantListenInfo 消息类型
	WantListenInfo *WantListenInfo `protobuf:"bytes,41,opt,name=want_listen_info,json=wantListenInfo,proto3" json:"want_listen_info,omitempty"`
	// challenge_info 字段，ChallengeInfo 消息类型
	ChallengeInfo *KtvSongStruct_ChallengeInfo `protobuf:"bytes,42,opt,name=challenge_info,json=challengeInfo,proto3" json:"challenge_info,omitempty"`
	// 扩展字段，假设 ext 是一个 map<string, string>
	Ext map[string]string `protobuf:"bytes,18,rep,name=ext,proto3" json:"ext,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}

func (x *KtvSongStruct) Reset() {
	*x = KtvSongStruct{}
	mi := &file_douyin_proto_msgTypes[90]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *KtvSongStruct) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*KtvSongStruct) ProtoMessage() {}

func (x *KtvSongStruct) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[90]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use KtvSongStruct.ProtoReflect.Descriptor instead.
func (*KtvSongStruct) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{90}
}

func (x *KtvSongStruct) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *KtvSongStruct) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *KtvSongStruct) GetAuthor() string {
	if x != nil {
		return x.Author
	}
	return ""
}

func (x *KtvSongStruct) GetLyricType() string {
	if x != nil {
		return x.LyricType
	}
	return ""
}

func (x *KtvSongStruct) GetSongUrl() string {
	if x != nil {
		return x.SongUrl
	}
	return ""
}

func (x *KtvSongStruct) GetLyricUrlList() []string {
	if x != nil {
		return x.LyricUrlList
	}
	return nil
}

func (x *KtvSongStruct) GetDuration() string {
	if x != nil {
		return x.Duration
	}
	return ""
}

func (x *KtvSongStruct) GetCoverUrl() string {
	if x != nil {
		return x.CoverUrl
	}
	return ""
}

func (x *KtvSongStruct) GetSongPattern() string {
	if x != nil {
		return x.SongPattern
	}
	return ""
}

func (x *KtvSongStruct) GetPreviewStartTime() float64 {
	if x != nil {
		return x.PreviewStartTime
	}
	return 0
}

func (x *KtvSongStruct) GetFullTrack() *KtvSongStruct_AudioInfo {
	if x != nil {
		return x.FullTrack
	}
	return nil
}

func (x *KtvSongStruct) GetAccompanimentTrack() *KtvSongStruct_AudioInfo {
	if x != nil {
		return x.AccompanimentTrack
	}
	return nil
}

func (x *KtvSongStruct) GetNewCoverUrl() string {
	if x != nil {
		return x.NewCoverUrl
	}
	return ""
}

func (x *KtvSongStruct) GetMidiUrl() string {
	if x != nil {
		return x.MidiUrl
	}
	return ""
}

func (x *KtvSongStruct) GetIsFavorite() bool {
	if x != nil {
		return x.IsFavorite
	}
	return false
}

func (x *KtvSongStruct) GetOrderInfo() *KtvSongStruct_OrderInfo {
	if x != nil {
		return x.OrderInfo
	}
	return nil
}

func (x *KtvSongStruct) GetTags() []string {
	if x != nil {
		return x.Tags
	}
	return nil
}

func (x *KtvSongStruct) GetMusicClimax() []*MusicInterval {
	if x != nil {
		return x.MusicClimax
	}
	return nil
}

func (x *KtvSongStruct) GetPreludes() []*MusicInterval {
	if x != nil {
		return x.Preludes
	}
	return nil
}

func (x *KtvSongStruct) GetInterludes() []*MusicInterval {
	if x != nil {
		return x.Interludes
	}
	return nil
}

func (x *KtvSongStruct) GetSegments() []*MusicInterval {
	if x != nil {
		return x.Segments
	}
	return nil
}

func (x *KtvSongStruct) GetPatternFileUrl() string {
	if x != nil {
		return x.PatternFileUrl
	}
	return ""
}

func (x *KtvSongStruct) GetBridgeSegments() []*MusicInterval {
	if x != nil {
		return x.BridgeSegments
	}
	return nil
}

func (x *KtvSongStruct) GetMainSegments() []*MusicInterval {
	if x != nil {
		return x.MainSegments
	}
	return nil
}

func (x *KtvSongStruct) GetFinaleSegments() []*MusicInterval {
	if x != nil {
		return x.FinaleSegments
	}
	return nil
}

func (x *KtvSongStruct) GetChorusInfo() *ChorusVideoInfo {
	if x != nil {
		return x.ChorusInfo
	}
	return nil
}

func (x *KtvSongStruct) GetSongType() int32 {
	if x != nil {
		return x.SongType
	}
	return 0
}

func (x *KtvSongStruct) GetAddSongSource() string {
	if x != nil {
		return x.AddSongSource
	}
	return ""
}

func (x *KtvSongStruct) GetTotalOrderWithCurAnchor() string {
	if x != nil {
		return x.TotalOrderWithCurAnchor
	}
	return ""
}

func (x *KtvSongStruct) GetGlobalTotalOrder() string {
	if x != nil {
		return x.GlobalTotalOrder
	}
	return ""
}

func (x *KtvSongStruct) GetArtistIds() []string {
	if x != nil {
		return x.ArtistIds
	}
	return nil
}

func (x *KtvSongStruct) GetIdStr() string {
	if x != nil {
		return x.IdStr
	}
	return ""
}

func (x *KtvSongStruct) GetSongCopyright() []int32 {
	if x != nil {
		return x.SongCopyright
	}
	return nil
}

func (x *KtvSongStruct) GetIsPriorSong() bool {
	if x != nil {
		return x.IsPriorSong
	}
	return false
}

func (x *KtvSongStruct) GetIsFragmentSong() bool {
	if x != nil {
		return x.IsFragmentSong
	}
	return false
}

func (x *KtvSongStruct) GetFragmentLyric() string {
	if x != nil {
		return x.FragmentLyric
	}
	return ""
}

func (x *KtvSongStruct) GetPersonalSongInfo() *PersonalSongInfo {
	if x != nil {
		return x.PersonalSongInfo
	}
	return nil
}

func (x *KtvSongStruct) GetLyricHash() string {
	if x != nil {
		return x.LyricHash
	}
	return ""
}

func (x *KtvSongStruct) GetMidiHash() string {
	if x != nil {
		return x.MidiHash
	}
	return ""
}

func (x *KtvSongStruct) GetWantListenInfo() *WantListenInfo {
	if x != nil {
		return x.WantListenInfo
	}
	return nil
}

func (x *KtvSongStruct) GetChallengeInfo() *KtvSongStruct_ChallengeInfo {
	if x != nil {
		return x.ChallengeInfo
	}
	return nil
}

func (x *KtvSongStruct) GetExt() map[string]string {
	if x != nil {
		return x.Ext
	}
	return nil
}

type PersonalSongInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// user_midi_score 字段，双精度浮点数
	UserMidiScore float64 `protobuf:"fixed64,1,opt,name=user_midi_score,json=userMidiScore,proto3" json:"user_midi_score,omitempty"`
	// is_high_score_song 字段，布尔类型
	IsHighScoreSong bool `protobuf:"varint,2,opt,name=is_high_score_song,json=isHighScoreSong,proto3" json:"is_high_score_song,omitempty"`
}

func (x *PersonalSongInfo) Reset() {
	*x = PersonalSongInfo{}
	mi := &file_douyin_proto_msgTypes[91]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *PersonalSongInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PersonalSongInfo) ProtoMessage() {}

func (x *PersonalSongInfo) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[91]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PersonalSongInfo.ProtoReflect.Descriptor instead.
func (*PersonalSongInfo) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{91}
}

func (x *PersonalSongInfo) GetUserMidiScore() float64 {
	if x != nil {
		return x.UserMidiScore
	}
	return 0
}

func (x *PersonalSongInfo) GetIsHighScoreSong() bool {
	if x != nil {
		return x.IsHighScoreSong
	}
	return false
}

type UserInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// id 字段，整型字符串（int64String）
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// nickname 字段，字符串类型
	Nickname string `protobuf:"bytes,2,opt,name=nickname,proto3" json:"nickname,omitempty"`
	// avatar 字段，Image 消息类型
	Avatar *Image `protobuf:"bytes,3,opt,name=avatar,proto3" json:"avatar,omitempty"`
	// id_str 字段，字符串类型
	IdStr string `protobuf:"bytes,4,opt,name=id_str,json=idStr,proto3" json:"id_str,omitempty"`
	// high_score_song_count 字段，字符串类型
	HighScoreSongCount string `protobuf:"bytes,5,opt,name=high_score_song_count,json=highScoreSongCount,proto3" json:"high_score_song_count,omitempty"`
	// ktv_stage_mic_pos_tag_text 字段，字符串类型
	KtvStageMicPosTagText string `protobuf:"bytes,6,opt,name=ktv_stage_mic_pos_tag_text,json=ktvStageMicPosTagText,proto3" json:"ktv_stage_mic_pos_tag_text,omitempty"`
	// ktv_lyric_text 字段，整型（int32）
	KtvLyricText int32 `protobuf:"varint,7,opt,name=ktv_lyric_text,json=ktvLyricText,proto3" json:"ktv_lyric_text,omitempty"`
	// ktv_component_lyric_text_first_line 字段，字符串类型
	KtvComponentLyricTextFirstLine string `protobuf:"bytes,8,opt,name=ktv_component_lyric_text_first_line,json=ktvComponentLyricTextFirstLine,proto3" json:"ktv_component_lyric_text_first_line,omitempty"`
	// ktv_component_lyric_text_second_line 字段，整型（int32）
	KtvComponentLyricTextSecondLine int32 `protobuf:"varint,9,opt,name=ktv_component_lyric_text_second_line,json=ktvComponentLyricTextSecondLine,proto3" json:"ktv_component_lyric_text_second_line,omitempty"`
	// high_score_song_tag 字段，UserHighScoreSongTag 消息类型
	HighScoreSongTag *UserHighScoreSongTag `protobuf:"bytes,10,opt,name=high_score_song_tag,json=highScoreSongTag,proto3" json:"high_score_song_tag,omitempty"`
	// hit_midi_record_ab 字段，整型字符串（int64String）
	HitMidiRecordAb string `protobuf:"bytes,11,opt,name=hit_midi_record_ab,json=hitMidiRecordAb,proto3" json:"hit_midi_record_ab,omitempty"`
	// user_midi_score 字段，双精度浮点数（double）
	UserMidiScore float64 `protobuf:"fixed64,12,opt,name=user_midi_score,json=userMidiScore,proto3" json:"user_midi_score,omitempty"`
	// is_high_score_song 字段，布尔类型（bool）
	IsHighScoreSong bool `protobuf:"varint,13,opt,name=is_high_score_song,json=isHighScoreSong,proto3" json:"is_high_score_song,omitempty"`
}

func (x *UserInfo) Reset() {
	*x = UserInfo{}
	mi := &file_douyin_proto_msgTypes[92]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *UserInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UserInfo) ProtoMessage() {}

func (x *UserInfo) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[92]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use UserInfo.ProtoReflect.Descriptor instead.
func (*UserInfo) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{92}
}

func (x *UserInfo) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *UserInfo) GetNickname() string {
	if x != nil {
		return x.Nickname
	}
	return ""
}

func (x *UserInfo) GetAvatar() *Image {
	if x != nil {
		return x.Avatar
	}
	return nil
}

func (x *UserInfo) GetIdStr() string {
	if x != nil {
		return x.IdStr
	}
	return ""
}

func (x *UserInfo) GetHighScoreSongCount() string {
	if x != nil {
		return x.HighScoreSongCount
	}
	return ""
}

func (x *UserInfo) GetKtvStageMicPosTagText() string {
	if x != nil {
		return x.KtvStageMicPosTagText
	}
	return ""
}

func (x *UserInfo) GetKtvLyricText() int32 {
	if x != nil {
		return x.KtvLyricText
	}
	return 0
}

func (x *UserInfo) GetKtvComponentLyricTextFirstLine() string {
	if x != nil {
		return x.KtvComponentLyricTextFirstLine
	}
	return ""
}

func (x *UserInfo) GetKtvComponentLyricTextSecondLine() int32 {
	if x != nil {
		return x.KtvComponentLyricTextSecondLine
	}
	return 0
}

func (x *UserInfo) GetHighScoreSongTag() *UserHighScoreSongTag {
	if x != nil {
		return x.HighScoreSongTag
	}
	return nil
}

func (x *UserInfo) GetHitMidiRecordAb() string {
	if x != nil {
		return x.HitMidiRecordAb
	}
	return ""
}

func (x *UserInfo) GetUserMidiScore() float64 {
	if x != nil {
		return x.UserMidiScore
	}
	return 0
}

func (x *UserInfo) GetIsHighScoreSong() bool {
	if x != nil {
		return x.IsHighScoreSong
	}
	return false
}

type WantListenInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// want_listen_count 字段，整型字符串（int64String）
	WantListenCount string `protobuf:"bytes,1,opt,name=want_listen_count,json=wantListenCount,proto3" json:"want_listen_count,omitempty"`
}

func (x *WantListenInfo) Reset() {
	*x = WantListenInfo{}
	mi := &file_douyin_proto_msgTypes[93]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *WantListenInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WantListenInfo) ProtoMessage() {}

func (x *WantListenInfo) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[93]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use WantListenInfo.ProtoReflect.Descriptor instead.
func (*WantListenInfo) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{93}
}

func (x *WantListenInfo) GetWantListenCount() string {
	if x != nil {
		return x.WantListenCount
	}
	return ""
}

type MusicInterval struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// StartTimeMillisecond 字段，整型字符串（int64String）
	StartTimeMillisecond string `protobuf:"bytes,1,opt,name=StartTimeMillisecond,proto3" json:"StartTimeMillisecond,omitempty"`
	// DurationMillisecond 字段，整型字符串（int64String）
	DurationMillisecond string `protobuf:"bytes,2,opt,name=DurationMillisecond,proto3" json:"DurationMillisecond,omitempty"`
}

func (x *MusicInterval) Reset() {
	*x = MusicInterval{}
	mi := &file_douyin_proto_msgTypes[94]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *MusicInterval) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MusicInterval) ProtoMessage() {}

func (x *MusicInterval) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[94]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use MusicInterval.ProtoReflect.Descriptor instead.
func (*MusicInterval) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{94}
}

func (x *MusicInterval) GetStartTimeMillisecond() string {
	if x != nil {
		return x.StartTimeMillisecond
	}
	return ""
}

func (x *MusicInterval) GetDurationMillisecond() string {
	if x != nil {
		return x.DurationMillisecond
	}
	return ""
}

type ChorusVideoInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// item_id 字段，整型字符串（int64String）
	ItemId string `protobuf:"bytes,1,opt,name=item_id,json=itemId,proto3" json:"item_id,omitempty"`
	// item_description 字段，字符串类型
	ItemDescription string `protobuf:"bytes,2,opt,name=item_description,json=itemDescription,proto3" json:"item_description,omitempty"`
	// item_url 字段，字符串类型
	ItemUrl string `protobuf:"bytes,3,opt,name=item_url,json=itemUrl,proto3" json:"item_url,omitempty"`
	// author_id 字段，整型字符串（int64String）
	AuthorId string `protobuf:"bytes,4,opt,name=author_id,json=authorId,proto3" json:"author_id,omitempty"`
	// author_name 字段，字符串类型
	AuthorName string `protobuf:"bytes,5,opt,name=author_name,json=authorName,proto3" json:"author_name,omitempty"`
	// use_times 字段，整型字符串（int64String）
	UseTimes string `protobuf:"bytes,6,opt,name=use_times,json=useTimes,proto3" json:"use_times,omitempty"`
	// image 字段，Image 消息类型
	Image *Image `protobuf:"bytes,7,opt,name=image,proto3" json:"image,omitempty"`
}

func (x *ChorusVideoInfo) Reset() {
	*x = ChorusVideoInfo{}
	mi := &file_douyin_proto_msgTypes[95]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ChorusVideoInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ChorusVideoInfo) ProtoMessage() {}

func (x *ChorusVideoInfo) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[95]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ChorusVideoInfo.ProtoReflect.Descriptor instead.
func (*ChorusVideoInfo) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{95}
}

func (x *ChorusVideoInfo) GetItemId() string {
	if x != nil {
		return x.ItemId
	}
	return ""
}

func (x *ChorusVideoInfo) GetItemDescription() string {
	if x != nil {
		return x.ItemDescription
	}
	return ""
}

func (x *ChorusVideoInfo) GetItemUrl() string {
	if x != nil {
		return x.ItemUrl
	}
	return ""
}

func (x *ChorusVideoInfo) GetAuthorId() string {
	if x != nil {
		return x.AuthorId
	}
	return ""
}

func (x *ChorusVideoInfo) GetAuthorName() string {
	if x != nil {
		return x.AuthorName
	}
	return ""
}

func (x *ChorusVideoInfo) GetUseTimes() string {
	if x != nil {
		return x.UseTimes
	}
	return ""
}

func (x *ChorusVideoInfo) GetImage() *Image {
	if x != nil {
		return x.Image
	}
	return nil
}

type UserHighScoreSongTag struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// high_score_song_count 字段，字符串类型
	HighScoreSongCount string `protobuf:"bytes,1,opt,name=high_score_song_count,json=highScoreSongCount,proto3" json:"high_score_song_count,omitempty"`
	// icon 字段，字符串类型
	Icon string `protobuf:"bytes,2,opt,name=icon,proto3" json:"icon,omitempty"`
	// bg_color 字段，字符串类型列表
	BgColor []string `protobuf:"bytes,3,rep,name=bg_color,json=bgColor,proto3" json:"bg_color,omitempty"`
}

func (x *UserHighScoreSongTag) Reset() {
	*x = UserHighScoreSongTag{}
	mi := &file_douyin_proto_msgTypes[96]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *UserHighScoreSongTag) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UserHighScoreSongTag) ProtoMessage() {}

func (x *UserHighScoreSongTag) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[96]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use UserHighScoreSongTag.ProtoReflect.Descriptor instead.
func (*UserHighScoreSongTag) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{96}
}

func (x *UserHighScoreSongTag) GetHighScoreSongCount() string {
	if x != nil {
		return x.HighScoreSongCount
	}
	return ""
}

func (x *UserHighScoreSongTag) GetIcon() string {
	if x != nil {
		return x.Icon
	}
	return ""
}

func (x *UserHighScoreSongTag) GetBgColor() []string {
	if x != nil {
		return x.BgColor
	}
	return nil
}

type RoomStreamAdaptationMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Common                    *Common `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"`
	AdaptationType            int32   `protobuf:"varint,2,opt,name=adaptation_type,json=adaptationType,proto3" json:"adaptation_type,omitempty"`
	AdaptationHeightRatio     float32 `protobuf:"fixed32,3,opt,name=adaptation_height_ratio,json=adaptationHeightRatio,proto3" json:"adaptation_height_ratio,omitempty"`
	AdaptationBodyCenterRatio float32 `protobuf:"fixed32,4,opt,name=adaptation_body_center_ratio,json=adaptationBodyCenterRatio,proto3" json:"adaptation_body_center_ratio,omitempty"`
}

func (x *RoomStreamAdaptationMessage) Reset() {
	*x = RoomStreamAdaptationMessage{}
	mi := &file_douyin_proto_msgTypes[97]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RoomStreamAdaptationMessage) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RoomStreamAdaptationMessage) ProtoMessage() {}

func (x *RoomStreamAdaptationMessage) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[97]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RoomStreamAdaptationMessage.ProtoReflect.Descriptor instead.
func (*RoomStreamAdaptationMessage) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{97}
}

func (x *RoomStreamAdaptationMessage) GetCommon() *Common {
	if x != nil {
		return x.Common
	}
	return nil
}

func (x *RoomStreamAdaptationMessage) GetAdaptationType() int32 {
	if x != nil {
		return x.AdaptationType
	}
	return 0
}

func (x *RoomStreamAdaptationMessage) GetAdaptationHeightRatio() float32 {
	if x != nil {
		return x.AdaptationHeightRatio
	}
	return 0
}

func (x *RoomStreamAdaptationMessage) GetAdaptationBodyCenterRatio() float32 {
	if x != nil {
		return x.AdaptationBodyCenterRatio
	}
	return 0
}

type QuizAudienceStatusMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// common 字段，引用 Common 消息类型
	Common *Common `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"`
	// quiz_list 字段，是一个可重复的 Quiz 消息类型列表
	QuizList []*Quiz `protobuf:"bytes,2,rep,name=quiz_list,json=quizList,proto3" json:"quiz_list,omitempty"`
}

func (x *QuizAudienceStatusMessage) Reset() {
	*x = QuizAudienceStatusMessage{}
	mi := &file_douyin_proto_msgTypes[98]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *QuizAudienceStatusMessage) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*QuizAudienceStatusMessage) ProtoMessage() {}

func (x *QuizAudienceStatusMessage) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[98]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use QuizAudienceStatusMessage.ProtoReflect.Descriptor instead.
func (*QuizAudienceStatusMessage) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{98}
}

func (x *QuizAudienceStatusMessage) GetCommon() *Common {
	if x != nil {
		return x.Common
	}
	return nil
}

func (x *QuizAudienceStatusMessage) GetQuizList() []*Quiz {
	if x != nil {
		return x.QuizList
	}
	return nil
}

type Quiz struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// quiz_id 字段，字符串类型
	QuizId string `protobuf:"bytes,1,opt,name=quiz_id,json=quizId,proto3" json:"quiz_id,omitempty"`
	// title 字段，字符串类型
	Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"`
	// options 字段，字符串类型
	Options string `protobuf:"bytes,3,opt,name=options,proto3" json:"options,omitempty"`
	// quiz_status 字段，整型
	QuizStatus int32 `protobuf:"varint,4,opt,name=quiz_status,json=quizStatus,proto3" json:"quiz_status,omitempty"`
	// countdown_time 字段，整型字符串（int64String）
	CountdownTime string `protobuf:"bytes,5,opt,name=countdown_time,json=countdownTime,proto3" json:"countdown_time,omitempty"`
	// win_option 字段，整型字符串（int64String）
	WinOption string `protobuf:"bytes,6,opt,name=win_option,json=winOption,proto3" json:"win_option,omitempty"`
	// bet_option 字段，整型字符串（int64String）
	BetOption string `protobuf:"bytes,7,opt,name=bet_option,json=betOption,proto3" json:"bet_option,omitempty"`
	// gain 字段，字符串类型
	Gain string `protobuf:"bytes,8,opt,name=gain,proto3" json:"gain,omitempty"`
	// template_id 字段，字符串类型
	TemplateId string `protobuf:"bytes,9,opt,name=template_id,json=templateId,proto3" json:"template_id,omitempty"`
	// absolute_end_time 字段，整型字符串（int64String）
	AbsoluteEndTime string `protobuf:"bytes,10,opt,name=absolute_end_time,json=absoluteEndTime,proto3" json:"absolute_end_time,omitempty"`
}

func (x *Quiz) Reset() {
	*x = Quiz{}
	mi := &file_douyin_proto_msgTypes[99]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Quiz) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Quiz) ProtoMessage() {}

func (x *Quiz) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[99]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Quiz.ProtoReflect.Descriptor instead.
func (*Quiz) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{99}
}

func (x *Quiz) GetQuizId() string {
	if x != nil {
		return x.QuizId
	}
	return ""
}

func (x *Quiz) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *Quiz) GetOptions() string {
	if x != nil {
		return x.Options
	}
	return ""
}

func (x *Quiz) GetQuizStatus() int32 {
	if x != nil {
		return x.QuizStatus
	}
	return 0
}

func (x *Quiz) GetCountdownTime() string {
	if x != nil {
		return x.CountdownTime
	}
	return ""
}

func (x *Quiz) GetWinOption() string {
	if x != nil {
		return x.WinOption
	}
	return ""
}

func (x *Quiz) GetBetOption() string {
	if x != nil {
		return x.BetOption
	}
	return ""
}

func (x *Quiz) GetGain() string {
	if x != nil {
		return x.Gain
	}
	return ""
}

func (x *Quiz) GetTemplateId() string {
	if x != nil {
		return x.TemplateId
	}
	return ""
}

func (x *Quiz) GetAbsoluteEndTime() string {
	if x != nil {
		return x.AbsoluteEndTime
	}
	return ""
}

type HotChatMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Common          *Common  `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"`                                              // 公共信息
	Title           string   `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"`                                                // 标题
	Content         string   `protobuf:"bytes,3,opt,name=content,proto3" json:"content,omitempty"`                                            // 内容
	Num             int64    `protobuf:"varint,4,opt,name=num,proto3" json:"num,omitempty"`                                                   // 数量
	Duration        int64    `protobuf:"varint,5,opt,name=duration,proto3" json:"duration,omitempty"`                                         // 持续时间
	ShowDuration    int64    `protobuf:"varint,6,opt,name=show_duration,json=showDuration,proto3" json:"show_duration,omitempty"`             // 显示持续时间
	SequenceId      int64    `protobuf:"varint,7,opt,name=sequence_id,json=sequenceId,proto3" json:"sequence_id,omitempty"`                   // 序列ID
	HotList         []string `protobuf:"bytes,8,rep,name=hot_list,json=hotList,proto3" json:"hot_list,omitempty"`                             // 热门列表
	RtfContent      *Text    `protobuf:"bytes,9,opt,name=rtf_content,json=rtfContent,proto3" json:"rtf_content,omitempty"`                    // 富文本内容
	ChatContentType int64    `protobuf:"varint,10,opt,name=chat_content_type,json=chatContentType,proto3" json:"chat_content_type,omitempty"` // 聊天内容类型
	// 额外信息的映射字段
	Extra map[string]string `protobuf:"bytes,200,rep,name=extra,proto3" json:"extra,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // 假设字段编号为200
}

func (x *HotChatMessage) Reset() {
	*x = HotChatMessage{}
	mi := &file_douyin_proto_msgTypes[100]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *HotChatMessage) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*HotChatMessage) ProtoMessage() {}

func (x *HotChatMessage) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[100]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use HotChatMessage.ProtoReflect.Descriptor instead.
func (*HotChatMessage) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{100}
}

func (x *HotChatMessage) GetCommon() *Common {
	if x != nil {
		return x.Common
	}
	return nil
}

func (x *HotChatMessage) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *HotChatMessage) GetContent() string {
	if x != nil {
		return x.Content
	}
	return ""
}

func (x *HotChatMessage) GetNum() int64 {
	if x != nil {
		return x.Num
	}
	return 0
}

func (x *HotChatMessage) GetDuration() int64 {
	if x != nil {
		return x.Duration
	}
	return 0
}

func (x *HotChatMessage) GetShowDuration() int64 {
	if x != nil {
		return x.ShowDuration
	}
	return 0
}

func (x *HotChatMessage) GetSequenceId() int64 {
	if x != nil {
		return x.SequenceId
	}
	return 0
}

func (x *HotChatMessage) GetHotList() []string {
	if x != nil {
		return x.HotList
	}
	return nil
}

func (x *HotChatMessage) GetRtfContent() *Text {
	if x != nil {
		return x.RtfContent
	}
	return nil
}

func (x *HotChatMessage) GetChatContentType() int64 {
	if x != nil {
		return x.ChatContentType
	}
	return 0
}

func (x *HotChatMessage) GetExtra() map[string]string {
	if x != nil {
		return x.Extra
	}
	return nil
}

type HotRoomMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// common field, assuming it's a message type imported from another .proto file
	Common *Common `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"`
	// info field, assuming it's a message type imported from another .proto file
	Info *HotRoomInfo `protobuf:"bytes,2,opt,name=info,proto3" json:"info,omitempty"`
}

func (x *HotRoomMessage) Reset() {
	*x = HotRoomMessage{}
	mi := &file_douyin_proto_msgTypes[101]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *HotRoomMessage) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*HotRoomMessage) ProtoMessage() {}

func (x *HotRoomMessage) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[101]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use HotRoomMessage.ProtoReflect.Descriptor instead.
func (*HotRoomMessage) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{101}
}

func (x *HotRoomMessage) GetCommon() *Common {
	if x != nil {
		return x.Common
	}
	return nil
}

func (x *HotRoomMessage) GetInfo() *HotRoomInfo {
	if x != nil {
		return x.Info
	}
	return nil
}

type HotRoomInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// BitMap field, an integer field represented as a string
	BitMap string `protobuf:"bytes,1,opt,name=BitMap,proto3" json:"BitMap,omitempty"`
}

func (x *HotRoomInfo) Reset() {
	*x = HotRoomInfo{}
	mi := &file_douyin_proto_msgTypes[102]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *HotRoomInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*HotRoomInfo) ProtoMessage() {}

func (x *HotRoomInfo) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[102]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use HotRoomInfo.ProtoReflect.Descriptor instead.
func (*HotRoomInfo) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{102}
}

func (x *HotRoomInfo) GetBitMap() string {
	if x != nil {
		return x.BitMap
	}
	return ""
}

type AudioChatMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// common 字段，引用 Common 消息类型
	Common *Common `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"`
	// user 字段，引用 User 消息类型
	User *User `protobuf:"bytes,2,opt,name=user,proto3" json:"user,omitempty"`
	// content 字段，字符串类型
	Content string `protobuf:"bytes,3,opt,name=content,proto3" json:"content,omitempty"`
	// audio_url 字段，字符串类型
	AudioUrl string `protobuf:"bytes,4,opt,name=audio_url,json=audioUrl,proto3" json:"audio_url,omitempty"`
	// audio_duration 字段，整型字符串（int64String）
	AudioDuration string `protobuf:"bytes,5,opt,name=audio_duration,json=audioDuration,proto3" json:"audio_duration,omitempty"`
	// public_area_common 字段，引用 PublicAreaCommon 消息类型
	PublicAreaCommon *PublicAreaCommon `protobuf:"bytes,6,opt,name=public_area_common,json=publicAreaCommon,proto3" json:"public_area_common,omitempty"`
	// rtf_content 字段，引用 Text 消息类型
	RtfContent *Text `protobuf:"bytes,7,opt,name=rtf_content,json=rtfContent,proto3" json:"rtf_content,omitempty"`
}

func (x *AudioChatMessage) Reset() {
	*x = AudioChatMessage{}
	mi := &file_douyin_proto_msgTypes[103]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *AudioChatMessage) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AudioChatMessage) ProtoMessage() {}

func (x *AudioChatMessage) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[103]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AudioChatMessage.ProtoReflect.Descriptor instead.
func (*AudioChatMessage) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{103}
}

func (x *AudioChatMessage) GetCommon() *Common {
	if x != nil {
		return x.Common
	}
	return nil
}

func (x *AudioChatMessage) GetUser() *User {
	if x != nil {
		return x.User
	}
	return nil
}

func (x *AudioChatMessage) GetContent() string {
	if x != nil {
		return x.Content
	}
	return ""
}

func (x *AudioChatMessage) GetAudioUrl() string {
	if x != nil {
		return x.AudioUrl
	}
	return ""
}

func (x *AudioChatMessage) GetAudioDuration() string {
	if x != nil {
		return x.AudioDuration
	}
	return ""
}

func (x *AudioChatMessage) GetPublicAreaCommon() *PublicAreaCommon {
	if x != nil {
		return x.PublicAreaCommon
	}
	return nil
}

func (x *AudioChatMessage) GetRtfContent() *Text {
	if x != nil {
		return x.RtfContent
	}
	return nil
}

type NotifyMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// common 字段，引用 Common 消息类型
	Common *Common `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"`
	// schema 字段，字符串类型
	Schema string `protobuf:"bytes,2,opt,name=schema,proto3" json:"schema,omitempty"`
	// notify_type 字段，整型字符串（int64String）
	NotifyType string `protobuf:"bytes,3,opt,name=notify_type,json=notifyType,proto3" json:"notify_type,omitempty"`
	// content 字段，字符串类型
	Content string `protobuf:"bytes,4,opt,name=content,proto3" json:"content,omitempty"`
	// user 字段，引用 User 消息类型
	User *User `protobuf:"bytes,5,opt,name=user,proto3" json:"user,omitempty"`
	// extra 字段，引用 NotifyMessage.Extra 消息类型
	Extra *NotifyMessage_Extra `protobuf:"bytes,6,opt,name=extra,proto3" json:"extra,omitempty"`
	// notify_class 字段，整型字符串（int64String）
	NotifyClass string `protobuf:"bytes,7,opt,name=notify_class,json=notifyClass,proto3" json:"notify_class,omitempty"`
	// flex_setting 字段，整型字符串（int64String）列表
	FlexSetting []string `protobuf:"bytes,8,rep,name=flex_setting,json=flexSetting,proto3" json:"flex_setting,omitempty"`
	// biz_scene 字段，字符串类型
	BizScene string `protobuf:"bytes,100,opt,name=biz_scene,json=bizScene,proto3" json:"biz_scene,omitempty"`
}

func (x *NotifyMessage) Reset() {
	*x = NotifyMessage{}
	mi := &file_douyin_proto_msgTypes[104]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *NotifyMessage) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*NotifyMessage) ProtoMessage() {}

func (x *NotifyMessage) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[104]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use NotifyMessage.ProtoReflect.Descriptor instead.
func (*NotifyMessage) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{104}
}

func (x *NotifyMessage) GetCommon() *Common {
	if x != nil {
		return x.Common
	}
	return nil
}

func (x *NotifyMessage) GetSchema() string {
	if x != nil {
		return x.Schema
	}
	return ""
}

func (x *NotifyMessage) GetNotifyType() string {
	if x != nil {
		return x.NotifyType
	}
	return ""
}

func (x *NotifyMessage) GetContent() string {
	if x != nil {
		return x.Content
	}
	return ""
}

func (x *NotifyMessage) GetUser() *User {
	if x != nil {
		return x.User
	}
	return nil
}

func (x *NotifyMessage) GetExtra() *NotifyMessage_Extra {
	if x != nil {
		return x.Extra
	}
	return nil
}

func (x *NotifyMessage) GetNotifyClass() string {
	if x != nil {
		return x.NotifyClass
	}
	return ""
}

func (x *NotifyMessage) GetFlexSetting() []string {
	if x != nil {
		return x.FlexSetting
	}
	return nil
}

func (x *NotifyMessage) GetBizScene() string {
	if x != nil {
		return x.BizScene
	}
	return ""
}

// 幸运盒子消息
type LuckyBoxMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Common             *Common                           `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"`
	DiamondCount       int64                             `protobuf:"varint,2,opt,name=diamond_count,json=diamondCount,proto3" json:"diamond_count,omitempty"`
	BoxId              int64                             `protobuf:"varint,3,opt,name=box_id,json=boxId,proto3" json:"box_id,omitempty"`
	SendTime           int64                             `protobuf:"varint,4,opt,name=send_time,json=sendTime,proto3" json:"send_time,omitempty"`
	DelayTime          int64                             `protobuf:"varint,5,opt,name=delay_time,json=delayTime,proto3" json:"delay_time,omitempty"`
	BoxType            int64                             `protobuf:"varint,6,opt,name=box_type,json=boxType,proto3" json:"box_type,omitempty"`
	Title              string                            `protobuf:"bytes,7,opt,name=title,proto3" json:"title,omitempty"`
	Large              bool                              `protobuf:"varint,8,opt,name=large,proto3" json:"large,omitempty"`
	Background         *Image                            `protobuf:"bytes,9,opt,name=background,proto3" json:"background,omitempty"`
	IsOfficial         bool                              `protobuf:"varint,10,opt,name=is_official,json=isOfficial,proto3" json:"is_official,omitempty"`
	Priority           int64                             `protobuf:"varint,11,opt,name=priority,proto3" json:"priority,omitempty"`
	User               *User                             `protobuf:"bytes,12,opt,name=user,proto3" json:"user,omitempty"`
	DescriptionList    []*LuckyBoxMessage_ImgText        `protobuf:"bytes,13,rep,name=description_list,json=descriptionList,proto3" json:"description_list,omitempty"` // 假设ImgText也在别处定义
	LuckyIcon          *Image                            `protobuf:"bytes,14,opt,name=lucky_icon,json=luckyIcon,proto3" json:"lucky_icon,omitempty"`
	DisplayDuration    int64                             `protobuf:"varint,15,opt,name=display_duration,json=displayDuration,proto3" json:"display_duration,omitempty"`
	BoxStatus          int32                             `protobuf:"varint,16,opt,name=box_status,json=boxStatus,proto3" json:"box_status,omitempty"`
	FlatDuration       int32                             `protobuf:"varint,17,opt,name=flat_duration,json=flatDuration,proto3" json:"flat_duration,omitempty"`
	UnpackType         int32                             `protobuf:"varint,18,opt,name=unpack_type,json=unpackType,proto3" json:"unpack_type,omitempty"`
	Meta               *LuckyBoxMessage_BoxMeta          `protobuf:"bytes,19,opt,name=meta,proto3" json:"meta,omitempty"`
	Extra              *LuckyBoxMessage_Extra            `protobuf:"bytes,20,opt,name=extra,proto3" json:"extra,omitempty"`
	BusinessType       int64                             `protobuf:"varint,21,opt,name=business_type,json=businessType,proto3" json:"business_type,omitempty"`
	TopCoverImage      *Image                            `protobuf:"bytes,22,opt,name=top_cover_image,json=topCoverImage,proto3" json:"top_cover_image,omitempty"`
	BottomCoverImage   *Image                            `protobuf:"bytes,23,opt,name=bottom_cover_image,json=bottomCoverImage,proto3" json:"bottom_cover_image,omitempty"`
	BoxIdStr           string                            `protobuf:"bytes,24,opt,name=box_id_str,json=boxIdStr,proto3" json:"box_id_str,omitempty"`
	BottomCommentMsg   *LuckyBoxMessage_BottomCommentMsg `protobuf:"bytes,25,opt,name=bottom_comment_msg,json=bottomCommentMsg,proto3" json:"bottom_comment_msg,omitempty"` // 假设BottomCommentMsg也在别处定义
	IsRiskyOwner       bool                              `protobuf:"varint,26,opt,name=is_risky_owner,json=isRiskyOwner,proto3" json:"is_risky_owner,omitempty"`
	ActivityId         string                            `protobuf:"bytes,27,opt,name=activity_id,json=activityId,proto3" json:"activity_id,omitempty"`
	Dress              *LuckyBoxMessage_Dress            `protobuf:"bytes,28,opt,name=dress,proto3" json:"dress,omitempty"`                                                 // 假设Dress也在别处定义
	PublicAreaCommon   *PublicAreaCommon                 `protobuf:"bytes,29,opt,name=public_area_common,json=publicAreaCommon,proto3" json:"public_area_common,omitempty"` // 假设PublicAreaCommon也在别处定义
	JoinFrozenDuration int64                             `protobuf:"varint,30,opt,name=join_frozen_duration,json=joinFrozenDuration,proto3" json:"join_frozen_duration,omitempty"`
}

func (x *LuckyBoxMessage) Reset() {
	*x = LuckyBoxMessage{}
	mi := &file_douyin_proto_msgTypes[105]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *LuckyBoxMessage) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*LuckyBoxMessage) ProtoMessage() {}

func (x *LuckyBoxMessage) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[105]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use LuckyBoxMessage.ProtoReflect.Descriptor instead.
func (*LuckyBoxMessage) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{105}
}

func (x *LuckyBoxMessage) GetCommon() *Common {
	if x != nil {
		return x.Common
	}
	return nil
}

func (x *LuckyBoxMessage) GetDiamondCount() int64 {
	if x != nil {
		return x.DiamondCount
	}
	return 0
}

func (x *LuckyBoxMessage) GetBoxId() int64 {
	if x != nil {
		return x.BoxId
	}
	return 0
}

func (x *LuckyBoxMessage) GetSendTime() int64 {
	if x != nil {
		return x.SendTime
	}
	return 0
}

func (x *LuckyBoxMessage) GetDelayTime() int64 {
	if x != nil {
		return x.DelayTime
	}
	return 0
}

func (x *LuckyBoxMessage) GetBoxType() int64 {
	if x != nil {
		return x.BoxType
	}
	return 0
}

func (x *LuckyBoxMessage) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *LuckyBoxMessage) GetLarge() bool {
	if x != nil {
		return x.Large
	}
	return false
}

func (x *LuckyBoxMessage) GetBackground() *Image {
	if x != nil {
		return x.Background
	}
	return nil
}

func (x *LuckyBoxMessage) GetIsOfficial() bool {
	if x != nil {
		return x.IsOfficial
	}
	return false
}

func (x *LuckyBoxMessage) GetPriority() int64 {
	if x != nil {
		return x.Priority
	}
	return 0
}

func (x *LuckyBoxMessage) GetUser() *User {
	if x != nil {
		return x.User
	}
	return nil
}

func (x *LuckyBoxMessage) GetDescriptionList() []*LuckyBoxMessage_ImgText {
	if x != nil {
		return x.DescriptionList
	}
	return nil
}

func (x *LuckyBoxMessage) GetLuckyIcon() *Image {
	if x != nil {
		return x.LuckyIcon
	}
	return nil
}

func (x *LuckyBoxMessage) GetDisplayDuration() int64 {
	if x != nil {
		return x.DisplayDuration
	}
	return 0
}

func (x *LuckyBoxMessage) GetBoxStatus() int32 {
	if x != nil {
		return x.BoxStatus
	}
	return 0
}

func (x *LuckyBoxMessage) GetFlatDuration() int32 {
	if x != nil {
		return x.FlatDuration
	}
	return 0
}

func (x *LuckyBoxMessage) GetUnpackType() int32 {
	if x != nil {
		return x.UnpackType
	}
	return 0
}

func (x *LuckyBoxMessage) GetMeta() *LuckyBoxMessage_BoxMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *LuckyBoxMessage) GetExtra() *LuckyBoxMessage_Extra {
	if x != nil {
		return x.Extra
	}
	return nil
}

func (x *LuckyBoxMessage) GetBusinessType() int64 {
	if x != nil {
		return x.BusinessType
	}
	return 0
}

func (x *LuckyBoxMessage) GetTopCoverImage() *Image {
	if x != nil {
		return x.TopCoverImage
	}
	return nil
}

func (x *LuckyBoxMessage) GetBottomCoverImage() *Image {
	if x != nil {
		return x.BottomCoverImage
	}
	return nil
}

func (x *LuckyBoxMessage) GetBoxIdStr() string {
	if x != nil {
		return x.BoxIdStr
	}
	return ""
}

func (x *LuckyBoxMessage) GetBottomCommentMsg() *LuckyBoxMessage_BottomCommentMsg {
	if x != nil {
		return x.BottomCommentMsg
	}
	return nil
}

func (x *LuckyBoxMessage) GetIsRiskyOwner() bool {
	if x != nil {
		return x.IsRiskyOwner
	}
	return false
}

func (x *LuckyBoxMessage) GetActivityId() string {
	if x != nil {
		return x.ActivityId
	}
	return ""
}

func (x *LuckyBoxMessage) GetDress() *LuckyBoxMessage_Dress {
	if x != nil {
		return x.Dress
	}
	return nil
}

func (x *LuckyBoxMessage) GetPublicAreaCommon() *PublicAreaCommon {
	if x != nil {
		return x.PublicAreaCommon
	}
	return nil
}

func (x *LuckyBoxMessage) GetJoinFrozenDuration() int64 {
	if x != nil {
		return x.JoinFrozenDuration
	}
	return 0
}

type UpdateFanTicketMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Common                 *Common `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"`                                                                     // 假设Common是已定义的消息类型
	RoomFanTicketCountText string  `protobuf:"bytes,2,opt,name=room_fan_ticket_count_text,json=roomFanTicketCountText,proto3" json:"room_fan_ticket_count_text,omitempty"` // 房间粉丝票计数文本
	RoomFanTicketCount     int64   `protobuf:"varint,3,opt,name=room_fan_ticket_count,json=roomFanTicketCount,proto3" json:"room_fan_ticket_count,omitempty"`              // 房间粉丝票计数
	ForceUpdate            bool    `protobuf:"varint,4,opt,name=force_update,json=forceUpdate,proto3" json:"force_update,omitempty"`                                       // 是否强制更新
}

func (x *UpdateFanTicketMessage) Reset() {
	*x = UpdateFanTicketMessage{}
	mi := &file_douyin_proto_msgTypes[106]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *UpdateFanTicketMessage) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UpdateFanTicketMessage) ProtoMessage() {}

func (x *UpdateFanTicketMessage) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[106]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use UpdateFanTicketMessage.ProtoReflect.Descriptor instead.
func (*UpdateFanTicketMessage) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{106}
}

func (x *UpdateFanTicketMessage) GetCommon() *Common {
	if x != nil {
		return x.Common
	}
	return nil
}

func (x *UpdateFanTicketMessage) GetRoomFanTicketCountText() string {
	if x != nil {
		return x.RoomFanTicketCountText
	}
	return ""
}

func (x *UpdateFanTicketMessage) GetRoomFanTicketCount() int64 {
	if x != nil {
		return x.RoomFanTicketCount
	}
	return 0
}

func (x *UpdateFanTicketMessage) GetForceUpdate() bool {
	if x != nil {
		return x.ForceUpdate
	}
	return false
}

type ScreenChatMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Common                   *Common                                  `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"`                                                                             // 公共信息
	User                     *User                                    `protobuf:"bytes,2,opt,name=user,proto3" json:"user,omitempty"`                                                                                 // 用户信息
	ScreenChatType           string                                   `protobuf:"bytes,3,opt,name=screen_chat_type,json=screenChatType,proto3" json:"screen_chat_type,omitempty"`                                     // 屏幕聊天类型
	Content                  string                                   `protobuf:"bytes,4,opt,name=content,proto3" json:"content,omitempty"`                                                                           // 内容
	Priority                 string                                   `protobuf:"bytes,5,opt,name=priority,proto3" json:"priority,omitempty"`                                                                         // 优先级
	Effect                   *Effect                                  `protobuf:"bytes,6,opt,name=effect,proto3" json:"effect,omitempty"`                                                                             // 效果
	BackgroundImage          *Image                                   `protobuf:"bytes,7,opt,name=background_image,json=backgroundImage,proto3" json:"background_image,omitempty"`                                    // 背景图像
	EffectV2                 *Effect                                  `protobuf:"bytes,8,opt,name=effect_v2,json=effectV2,proto3" json:"effect_v2,omitempty"`                                                         // 效果v2
	BackgroundImageV2        *Image                                   `protobuf:"bytes,9,opt,name=background_image_v2,json=backgroundImageV2,proto3" json:"background_image_v2,omitempty"`                            // 背景图像v2
	PublicAreaCommon         *PublicAreaCommon                        `protobuf:"bytes,10,opt,name=public_area_common,json=publicAreaCommon,proto3" json:"public_area_common,omitempty"`                              // 公共区域信息
	OfficialCommentConfig    *ScreenChatMessage_OfficialCommentConfig `protobuf:"bytes,11,opt,name=official_comment_config,json=officialCommentConfig,proto3" json:"official_comment_config,omitempty"`               // 官方评论配置
	EventTime                string                                   `protobuf:"bytes,12,opt,name=event_time,json=eventTime,proto3" json:"event_time,omitempty"`                                                     // 事件时间
	SendReview               bool                                     `protobuf:"varint,13,opt,name=send_review,json=sendReview,proto3" json:"send_review,omitempty"`                                                 // 是否发送审核
	ChatIdentityInfo         *ChatIdentity                            `protobuf:"bytes,14,opt,name=chat_identity_info,json=chatIdentityInfo,proto3" json:"chat_identity_info,omitempty"`                              // 聊天身份信息
	RtfContent               *Text                                    `protobuf:"bytes,30,opt,name=rtf_content,json=rtfContent,proto3" json:"rtf_content,omitempty"`                                                  // 富文本内容
	PublicAreaDoesNotDisplay bool                                     `protobuf:"varint,31,opt,name=public_area_does_not_display,json=publicAreaDoesNotDisplay,proto3" json:"public_area_does_not_display,omitempty"` // 公共区域是否不显示
	RtfContentV2             *Text                                    `protobuf:"bytes,32,opt,name=rtf_content_v2,json=rtfContentV2,proto3" json:"rtf_content_v2,omitempty"`                                          // 富文本内容v2
}

func (x *ScreenChatMessage) Reset() {
	*x = ScreenChatMessage{}
	mi := &file_douyin_proto_msgTypes[107]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ScreenChatMessage) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ScreenChatMessage) ProtoMessage() {}

func (x *ScreenChatMessage) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[107]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ScreenChatMessage.ProtoReflect.Descriptor instead.
func (*ScreenChatMessage) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{107}
}

func (x *ScreenChatMessage) GetCommon() *Common {
	if x != nil {
		return x.Common
	}
	return nil
}

func (x *ScreenChatMessage) GetUser() *User {
	if x != nil {
		return x.User
	}
	return nil
}

func (x *ScreenChatMessage) GetScreenChatType() string {
	if x != nil {
		return x.ScreenChatType
	}
	return ""
}

func (x *ScreenChatMessage) GetContent() string {
	if x != nil {
		return x.Content
	}
	return ""
}

func (x *ScreenChatMessage) GetPriority() string {
	if x != nil {
		return x.Priority
	}
	return ""
}

func (x *ScreenChatMessage) GetEffect() *Effect {
	if x != nil {
		return x.Effect
	}
	return nil
}

func (x *ScreenChatMessage) GetBackgroundImage() *Image {
	if x != nil {
		return x.BackgroundImage
	}
	return nil
}

func (x *ScreenChatMessage) GetEffectV2() *Effect {
	if x != nil {
		return x.EffectV2
	}
	return nil
}

func (x *ScreenChatMessage) GetBackgroundImageV2() *Image {
	if x != nil {
		return x.BackgroundImageV2
	}
	return nil
}

func (x *ScreenChatMessage) GetPublicAreaCommon() *PublicAreaCommon {
	if x != nil {
		return x.PublicAreaCommon
	}
	return nil
}

func (x *ScreenChatMessage) GetOfficialCommentConfig() *ScreenChatMessage_OfficialCommentConfig {
	if x != nil {
		return x.OfficialCommentConfig
	}
	return nil
}

func (x *ScreenChatMessage) GetEventTime() string {
	if x != nil {
		return x.EventTime
	}
	return ""
}

func (x *ScreenChatMessage) GetSendReview() bool {
	if x != nil {
		return x.SendReview
	}
	return false
}

func (x *ScreenChatMessage) GetChatIdentityInfo() *ChatIdentity {
	if x != nil {
		return x.ChatIdentityInfo
	}
	return nil
}

func (x *ScreenChatMessage) GetRtfContent() *Text {
	if x != nil {
		return x.RtfContent
	}
	return nil
}

func (x *ScreenChatMessage) GetPublicAreaDoesNotDisplay() bool {
	if x != nil {
		return x.PublicAreaDoesNotDisplay
	}
	return false
}

func (x *ScreenChatMessage) GetRtfContentV2() *Text {
	if x != nil {
		return x.RtfContentV2
	}
	return nil
}

type Effect struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Icon            *FlexImageStruct `protobuf:"bytes,1,opt,name=icon,proto3" json:"icon,omitempty"`                                              // 图标结构
	AvatarIcon      *Image           `protobuf:"bytes,2,opt,name=avatar_icon,json=avatarIcon,proto3" json:"avatar_icon,omitempty"`                // 头像图标
	BackgroundColor string           `protobuf:"bytes,3,opt,name=background_color,json=backgroundColor,proto3" json:"background_color,omitempty"` // 背景颜色
}

func (x *Effect) Reset() {
	*x = Effect{}
	mi := &file_douyin_proto_msgTypes[108]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Effect) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Effect) ProtoMessage() {}

func (x *Effect) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[108]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Effect.ProtoReflect.Descriptor instead.
func (*Effect) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{108}
}

func (x *Effect) GetIcon() *FlexImageStruct {
	if x != nil {
		return x.Icon
	}
	return nil
}

func (x *Effect) GetAvatarIcon() *Image {
	if x != nil {
		return x.AvatarIcon
	}
	return nil
}

func (x *Effect) GetBackgroundColor() string {
	if x != nil {
		return x.BackgroundColor
	}
	return ""
}

// FlexImageStruct消息类型
type FlexImageStruct struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	UrlList         []string `protobuf:"bytes,1,rep,name=url_list,json=urlList,proto3" json:"url_list,omitempty"`                           // 图像URL列表
	Uri             string   `protobuf:"bytes,2,opt,name=uri,proto3" json:"uri,omitempty"`                                                  // 图像统一资源标识符
	FlexSetting     string   `protobuf:"bytes,3,opt,name=flex_setting,json=flexSetting,proto3" json:"flex_setting,omitempty"`               // 弹性设置（假设为int64字符串表示）
	TextSetting     string   `protobuf:"bytes,4,opt,name=text_setting,json=textSetting,proto3" json:"text_setting,omitempty"`               // 文本设置（假设为int64字符串表示）
	TopBorderHeight string   `protobuf:"bytes,5,opt,name=top_border_height,json=topBorderHeight,proto3" json:"top_border_height,omitempty"` // 顶部边框高度（假设为int64字符串表示）
}

func (x *FlexImageStruct) Reset() {
	*x = FlexImageStruct{}
	mi := &file_douyin_proto_msgTypes[109]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *FlexImageStruct) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*FlexImageStruct) ProtoMessage() {}

func (x *FlexImageStruct) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[109]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use FlexImageStruct.ProtoReflect.Descriptor instead.
func (*FlexImageStruct) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{109}
}

func (x *FlexImageStruct) GetUrlList() []string {
	if x != nil {
		return x.UrlList
	}
	return nil
}

func (x *FlexImageStruct) GetUri() string {
	if x != nil {
		return x.Uri
	}
	return ""
}

func (x *FlexImageStruct) GetFlexSetting() string {
	if x != nil {
		return x.FlexSetting
	}
	return ""
}

func (x *FlexImageStruct) GetTextSetting() string {
	if x != nil {
		return x.TextSetting
	}
	return ""
}

func (x *FlexImageStruct) GetTopBorderHeight() string {
	if x != nil {
		return x.TopBorderHeight
	}
	return ""
}

type ChatIdentity struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ShowIdentity  int32  `protobuf:"varint,1,opt,name=show_identity,json=showIdentity,proto3" json:"show_identity,omitempty"`   // 显示身份标识（假设为int32类型）
	IdentityLabel *Image `protobuf:"bytes,2,opt,name=identity_label,json=identityLabel,proto3" json:"identity_label,omitempty"` // 身份标签图像
}

func (x *ChatIdentity) Reset() {
	*x = ChatIdentity{}
	mi := &file_douyin_proto_msgTypes[110]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ChatIdentity) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ChatIdentity) ProtoMessage() {}

func (x *ChatIdentity) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[110]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ChatIdentity.ProtoReflect.Descriptor instead.
func (*ChatIdentity) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{110}
}

func (x *ChatIdentity) GetShowIdentity() int32 {
	if x != nil {
		return x.ShowIdentity
	}
	return 0
}

func (x *ChatIdentity) GetIdentityLabel() *Image {
	if x != nil {
		return x.IdentityLabel
	}
	return nil
}

type NotifyEffectMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Common           *Common                            `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"` // 假设Common也在相应的.proto文件中定义
	Icons            []*Image                           `protobuf:"bytes,2,rep,name=icons,proto3" json:"icons,omitempty"`
	Text             *CombinedText                      `protobuf:"bytes,3,opt,name=text,proto3" json:"text,omitempty"` // 假设CombinedText也在相应的.proto文件中定义
	Background       *NotifyEffectMessage_Background    `protobuf:"bytes,4,opt,name=background,proto3" json:"background,omitempty"`
	DynamicConfig    *NotifyEffectMessage_DynamicConfig `protobuf:"bytes,5,opt,name=dynamic_config,json=dynamicConfig,proto3" json:"dynamic_config,omitempty"`
	TextV2           *CombinedText                      `protobuf:"bytes,6,opt,name=text_v2,json=textV2,proto3" json:"text_v2,omitempty"` // 假设CombinedText也在相应的.proto文件中定义
	SupportLandscape bool                               `protobuf:"varint,7,opt,name=support_landscape,json=supportLandscape,proto3" json:"support_landscape,omitempty"`
	SceneConfig      *NotifyEffectMessage_SceneConfig   `protobuf:"bytes,10,opt,name=scene_config,json=sceneConfig,proto3" json:"scene_config,omitempty"`
	BuriedPoint      map[string]string                  `protobuf:"bytes,20,rep,name=buried_point,json=buriedPoint,proto3" json:"buried_point,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // 假设埋点数据为string到string的映射
}

func (x *NotifyEffectMessage) Reset() {
	*x = NotifyEffectMessage{}
	mi := &file_douyin_proto_msgTypes[111]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *NotifyEffectMessage) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*NotifyEffectMessage) ProtoMessage() {}

func (x *NotifyEffectMessage) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[111]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use NotifyEffectMessage.ProtoReflect.Descriptor instead.
func (*NotifyEffectMessage) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{111}
}

func (x *NotifyEffectMessage) GetCommon() *Common {
	if x != nil {
		return x.Common
	}
	return nil
}

func (x *NotifyEffectMessage) GetIcons() []*Image {
	if x != nil {
		return x.Icons
	}
	return nil
}

func (x *NotifyEffectMessage) GetText() *CombinedText {
	if x != nil {
		return x.Text
	}
	return nil
}

func (x *NotifyEffectMessage) GetBackground() *NotifyEffectMessage_Background {
	if x != nil {
		return x.Background
	}
	return nil
}

func (x *NotifyEffectMessage) GetDynamicConfig() *NotifyEffectMessage_DynamicConfig {
	if x != nil {
		return x.DynamicConfig
	}
	return nil
}

func (x *NotifyEffectMessage) GetTextV2() *CombinedText {
	if x != nil {
		return x.TextV2
	}
	return nil
}

func (x *NotifyEffectMessage) GetSupportLandscape() bool {
	if x != nil {
		return x.SupportLandscape
	}
	return false
}

func (x *NotifyEffectMessage) GetSceneConfig() *NotifyEffectMessage_SceneConfig {
	if x != nil {
		return x.SceneConfig
	}
	return nil
}

func (x *NotifyEffectMessage) GetBuriedPoint() map[string]string {
	if x != nil {
		return x.BuriedPoint
	}
	return nil
}

type CombinedText struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	DisplayItems []*DisplayItem `protobuf:"bytes,1,rep,name=display_items,json=displayItems,proto3" json:"display_items,omitempty"` // 显示项列表
	SchemaInfo   *SchemaInfo    `protobuf:"bytes,10,opt,name=schema_info,json=schemaInfo,proto3" json:"schema_info,omitempty"`      // 模式信息
	ComboInfo    *ComboInfo     `protobuf:"bytes,11,opt,name=combo_info,json=comboInfo,proto3" json:"combo_info,omitempty"`         // 组合信息
}

func (x *CombinedText) Reset() {
	*x = CombinedText{}
	mi := &file_douyin_proto_msgTypes[112]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CombinedText) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CombinedText) ProtoMessage() {}

func (x *CombinedText) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[112]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CombinedText.ProtoReflect.Descriptor instead.
func (*CombinedText) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{112}
}

func (x *CombinedText) GetDisplayItems() []*DisplayItem {
	if x != nil {
		return x.DisplayItems
	}
	return nil
}

func (x *CombinedText) GetSchemaInfo() *SchemaInfo {
	if x != nil {
		return x.SchemaInfo
	}
	return nil
}

func (x *CombinedText) GetComboInfo() *ComboInfo {
	if x != nil {
		return x.ComboInfo
	}
	return nil
}

type ComboInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ComboSeq   int64 `protobuf:"varint,1,opt,name=combo_seq,json=comboSeq,proto3" json:"combo_seq,omitempty"`       // 组合序列
	ComboOrder int64 `protobuf:"varint,2,opt,name=combo_order,json=comboOrder,proto3" json:"combo_order,omitempty"` // 组合顺序
}

func (x *ComboInfo) Reset() {
	*x = ComboInfo{}
	mi := &file_douyin_proto_msgTypes[113]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ComboInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ComboInfo) ProtoMessage() {}

func (x *ComboInfo) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[113]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ComboInfo.ProtoReflect.Descriptor instead.
func (*ComboInfo) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{113}
}

func (x *ComboInfo) GetComboSeq() int64 {
	if x != nil {
		return x.ComboSeq
	}
	return 0
}

func (x *ComboInfo) GetComboOrder() int64 {
	if x != nil {
		return x.ComboOrder
	}
	return 0
}

type SchemaInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	SchemaUrl string `protobuf:"bytes,1,opt,name=schema_url,json=schemaUrl,proto3" json:"schema_url,omitempty"` // 模式URL
}

func (x *SchemaInfo) Reset() {
	*x = SchemaInfo{}
	mi := &file_douyin_proto_msgTypes[114]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SchemaInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SchemaInfo) ProtoMessage() {}

func (x *SchemaInfo) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[114]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SchemaInfo.ProtoReflect.Descriptor instead.
func (*SchemaInfo) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{114}
}

func (x *SchemaInfo) GetSchemaUrl() string {
	if x != nil {
		return x.SchemaUrl
	}
	return ""
}

type DisplayItem struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	DisplayItemType int32              `protobuf:"varint,1,opt,name=display_item_type,json=displayItemType,proto3" json:"display_item_type,omitempty"` // 显示项类型
	ComboFresh      bool               `protobuf:"varint,20,opt,name=combo_fresh,json=comboFresh,proto3" json:"combo_fresh,omitempty"`                 // 组合新鲜度标记
	SchemaInfo      *SchemaInfo        `protobuf:"bytes,21,opt,name=schema_info,json=schemaInfo,proto3" json:"schema_info,omitempty"`                  // 模式信息
	ImagesItem      *ImagesItem        `protobuf:"bytes,50,opt,name=images_item,json=imagesItem,proto3" json:"images_item,omitempty"`                  // 图像项
	TextItem        *TextItem          `protobuf:"bytes,51,opt,name=text_item,json=textItem,proto3" json:"text_item,omitempty"`                        // 文本项
	Format          *DisplayItemFormat `protobuf:"bytes,100,opt,name=format,proto3" json:"format,omitempty"`                                           // 显示项格式
}

func (x *DisplayItem) Reset() {
	*x = DisplayItem{}
	mi := &file_douyin_proto_msgTypes[115]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *DisplayItem) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DisplayItem) ProtoMessage() {}

func (x *DisplayItem) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[115]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DisplayItem.ProtoReflect.Descriptor instead.
func (*DisplayItem) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{115}
}

func (x *DisplayItem) GetDisplayItemType() int32 {
	if x != nil {
		return x.DisplayItemType
	}
	return 0
}

func (x *DisplayItem) GetComboFresh() bool {
	if x != nil {
		return x.ComboFresh
	}
	return false
}

func (x *DisplayItem) GetSchemaInfo() *SchemaInfo {
	if x != nil {
		return x.SchemaInfo
	}
	return nil
}

func (x *DisplayItem) GetImagesItem() *ImagesItem {
	if x != nil {
		return x.ImagesItem
	}
	return nil
}

func (x *DisplayItem) GetTextItem() *TextItem {
	if x != nil {
		return x.TextItem
	}
	return nil
}

func (x *DisplayItem) GetFormat() *DisplayItemFormat {
	if x != nil {
		return x.Format
	}
	return nil
}

type ImagesItem struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// 假设Image是images字段中元素的类型
	Images       []*Image `protobuf:"bytes,1,rep,name=images,proto3" json:"images,omitempty"`
	DisplayStyle int32    `protobuf:"varint,20,opt,name=display_style,json=displayStyle,proto3" json:"display_style,omitempty"`
}

func (x *ImagesItem) Reset() {
	*x = ImagesItem{}
	mi := &file_douyin_proto_msgTypes[116]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ImagesItem) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ImagesItem) ProtoMessage() {}

func (x *ImagesItem) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[116]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ImagesItem.ProtoReflect.Descriptor instead.
func (*ImagesItem) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{116}
}

func (x *ImagesItem) GetImages() []*Image {
	if x != nil {
		return x.Images
	}
	return nil
}

func (x *ImagesItem) GetDisplayStyle() int32 {
	if x != nil {
		return x.DisplayStyle
	}
	return 0
}

type TextItem struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// 文本字段，使用repeated表示可以有多个文本项
	Text []*Text `protobuf:"bytes,1,rep,name=text,proto3" json:"text,omitempty"`
}

func (x *TextItem) Reset() {
	*x = TextItem{}
	mi := &file_douyin_proto_msgTypes[117]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TextItem) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TextItem) ProtoMessage() {}

func (x *TextItem) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[117]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TextItem.ProtoReflect.Descriptor instead.
func (*TextItem) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{117}
}

func (x *TextItem) GetText() []*Text {
	if x != nil {
		return x.Text
	}
	return nil
}

type DisplayItemFormat struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	EnableLeftSpace bool   `protobuf:"varint,1,opt,name=enable_left_space,json=enableLeftSpace,proto3" json:"enable_left_space,omitempty"` // 布尔类型字段
	LeftSpace       string `protobuf:"bytes,2,opt,name=left_space,json=leftSpace,proto3" json:"left_space,omitempty"`                      // 字符串类型字段，假设int64String被转换为string
}

func (x *DisplayItemFormat) Reset() {
	*x = DisplayItemFormat{}
	mi := &file_douyin_proto_msgTypes[118]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *DisplayItemFormat) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DisplayItemFormat) ProtoMessage() {}

func (x *DisplayItemFormat) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[118]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DisplayItemFormat.ProtoReflect.Descriptor instead.
func (*DisplayItemFormat) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{118}
}

func (x *DisplayItemFormat) GetEnableLeftSpace() bool {
	if x != nil {
		return x.EnableLeftSpace
	}
	return false
}

func (x *DisplayItemFormat) GetLeftSpace() string {
	if x != nil {
		return x.LeftSpace
	}
	return ""
}

type TempStateAreaReachMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Common   *Common                             `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"` // 假设Common是已经定义好的消息类型
	ElemType int64                               `protobuf:"varint,2,opt,name=elem_type,json=elemType,proto3" json:"elem_type,omitempty"`
	ElemId   int64                               `protobuf:"varint,3,opt,name=elem_id,json=elemId,proto3" json:"elem_id,omitempty"`
	ItemId   int64                               `protobuf:"varint,4,opt,name=item_id,json=itemId,proto3" json:"item_id,omitempty"`
	Status   int64                               `protobuf:"varint,5,opt,name=status,proto3" json:"status,omitempty"`
	Resource *TempStateAreaReachMessage_Resource `protobuf:"bytes,6,opt,name=resource,proto3" json:"resource,omitempty"` // Resource是嵌套类型
}

func (x *TempStateAreaReachMessage) Reset() {
	*x = TempStateAreaReachMessage{}
	mi := &file_douyin_proto_msgTypes[119]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TempStateAreaReachMessage) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TempStateAreaReachMessage) ProtoMessage() {}

func (x *TempStateAreaReachMessage) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[119]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TempStateAreaReachMessage.ProtoReflect.Descriptor instead.
func (*TempStateAreaReachMessage) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{119}
}

func (x *TempStateAreaReachMessage) GetCommon() *Common {
	if x != nil {
		return x.Common
	}
	return nil
}

func (x *TempStateAreaReachMessage) GetElemType() int64 {
	if x != nil {
		return x.ElemType
	}
	return 0
}

func (x *TempStateAreaReachMessage) GetElemId() int64 {
	if x != nil {
		return x.ElemId
	}
	return 0
}

func (x *TempStateAreaReachMessage) GetItemId() int64 {
	if x != nil {
		return x.ItemId
	}
	return 0
}

func (x *TempStateAreaReachMessage) GetStatus() int64 {
	if x != nil {
		return x.Status
	}
	return 0
}

func (x *TempStateAreaReachMessage) GetResource() *TempStateAreaReachMessage_Resource {
	if x != nil {
		return x.Resource
	}
	return nil
}

type GrowthTask struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Id               int64              `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`                                                        // 64位整数
	IdStr            string             `protobuf:"bytes,2,opt,name=id_str,json=idStr,proto3" json:"id_str,omitempty"`                                      // 字符串
	LiveId           int64              `protobuf:"varint,3,opt,name=live_id,json=liveId,proto3" json:"live_id,omitempty"`                                  // 64位整数
	AppId            int64              `protobuf:"varint,4,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty"`                                     // 64位整数
	ClassId          int64              `protobuf:"varint,5,opt,name=class_id,json=classId,proto3" json:"class_id,omitempty"`                               // 64位整数
	GroupId          int64              `protobuf:"varint,6,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"`                               // 64位整数
	ItemType         int32              `protobuf:"varint,7,opt,name=item_type,json=itemType,proto3" json:"item_type,omitempty"`                            // 32位整数
	ItemId           string             `protobuf:"bytes,8,opt,name=item_id,json=itemId,proto3" json:"item_id,omitempty"`                                   // 字符串
	TaskName         string             `protobuf:"bytes,9,opt,name=task_name,json=taskName,proto3" json:"task_name,omitempty"`                             // 字符串
	TaskDesc         string             `protobuf:"bytes,10,opt,name=task_desc,json=taskDesc,proto3" json:"task_desc,omitempty"`                            // 字符串
	StartTime        int64              `protobuf:"varint,11,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`                        // 64位整数
	EndTime          int64              `protobuf:"varint,12,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`                              // 64位整数
	DisplayStartTime int64              `protobuf:"varint,13,opt,name=display_start_time,json=displayStartTime,proto3" json:"display_start_time,omitempty"` // 64位整数
	DisplayEndTime   int64              `protobuf:"varint,14,opt,name=display_end_time,json=displayEndTime,proto3" json:"display_end_time,omitempty"`       // 64位整数
	Status           int32              `protobuf:"varint,15,opt,name=status,proto3" json:"status,omitempty"`                                               // 32位整数
	CompletedStage   int64              `protobuf:"varint,16,opt,name=completed_stage,json=completedStage,proto3" json:"completed_stage,omitempty"`         // 64位整数
	FinishTime       int64              `protobuf:"varint,17,opt,name=finish_time,json=finishTime,proto3" json:"finish_time,omitempty"`                     // 64位整数
	StageList        []*GrowthTaskStage `protobuf:"bytes,18,rep,name=stage_list,json=stageList,proto3" json:"stage_list,omitempty"`                         // 可重复的GrowthTaskStage类型字段
	Extra            string             `protobuf:"bytes,19,opt,name=extra,proto3" json:"extra,omitempty"`                                                  // 字符串
	Config           string             `protobuf:"bytes,20,opt,name=config,proto3" json:"config,omitempty"`                                                // 字符串
	CreateTime       int64              `protobuf:"varint,21,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`                     // 64位整数
}

func (x *GrowthTask) Reset() {
	*x = GrowthTask{}
	mi := &file_douyin_proto_msgTypes[120]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GrowthTask) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GrowthTask) ProtoMessage() {}

func (x *GrowthTask) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[120]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GrowthTask.ProtoReflect.Descriptor instead.
func (*GrowthTask) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{120}
}

func (x *GrowthTask) GetId() int64 {
	if x != nil {
		return x.Id
	}
	return 0
}

func (x *GrowthTask) GetIdStr() string {
	if x != nil {
		return x.IdStr
	}
	return ""
}

func (x *GrowthTask) GetLiveId() int64 {
	if x != nil {
		return x.LiveId
	}
	return 0
}

func (x *GrowthTask) GetAppId() int64 {
	if x != nil {
		return x.AppId
	}
	return 0
}

func (x *GrowthTask) GetClassId() int64 {
	if x != nil {
		return x.ClassId
	}
	return 0
}

func (x *GrowthTask) GetGroupId() int64 {
	if x != nil {
		return x.GroupId
	}
	return 0
}

func (x *GrowthTask) GetItemType() int32 {
	if x != nil {
		return x.ItemType
	}
	return 0
}

func (x *GrowthTask) GetItemId() string {
	if x != nil {
		return x.ItemId
	}
	return ""
}

func (x *GrowthTask) GetTaskName() string {
	if x != nil {
		return x.TaskName
	}
	return ""
}

func (x *GrowthTask) GetTaskDesc() string {
	if x != nil {
		return x.TaskDesc
	}
	return ""
}

func (x *GrowthTask) GetStartTime() int64 {
	if x != nil {
		return x.StartTime
	}
	return 0
}

func (x *GrowthTask) GetEndTime() int64 {
	if x != nil {
		return x.EndTime
	}
	return 0
}

func (x *GrowthTask) GetDisplayStartTime() int64 {
	if x != nil {
		return x.DisplayStartTime
	}
	return 0
}

func (x *GrowthTask) GetDisplayEndTime() int64 {
	if x != nil {
		return x.DisplayEndTime
	}
	return 0
}

func (x *GrowthTask) GetStatus() int32 {
	if x != nil {
		return x.Status
	}
	return 0
}

func (x *GrowthTask) GetCompletedStage() int64 {
	if x != nil {
		return x.CompletedStage
	}
	return 0
}

func (x *GrowthTask) GetFinishTime() int64 {
	if x != nil {
		return x.FinishTime
	}
	return 0
}

func (x *GrowthTask) GetStageList() []*GrowthTaskStage {
	if x != nil {
		return x.StageList
	}
	return nil
}

func (x *GrowthTask) GetExtra() string {
	if x != nil {
		return x.Extra
	}
	return ""
}

func (x *GrowthTask) GetConfig() string {
	if x != nil {
		return x.Config
	}
	return ""
}

func (x *GrowthTask) GetCreateTime() int64 {
	if x != nil {
		return x.CreateTime
	}
	return 0
}

type GrowthTaskStage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ConditionList []*GrowthTaskCondition `protobuf:"bytes,1,rep,name=condition_list,json=conditionList,proto3" json:"condition_list,omitempty"`  // 条件列表，可重复的GrowthTaskCondition类型字段
	RewardList    []*GrowthTaskReward    `protobuf:"bytes,2,rep,name=reward_list,json=rewardList,proto3" json:"reward_list,omitempty"`           // 奖励列表，可重复的GrowthTaskReward类型字段
	CompletedTime int64                  `protobuf:"varint,3,opt,name=completed_time,json=completedTime,proto3" json:"completed_time,omitempty"` // 完成时间，64位整数
}

func (x *GrowthTaskStage) Reset() {
	*x = GrowthTaskStage{}
	mi := &file_douyin_proto_msgTypes[121]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GrowthTaskStage) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GrowthTaskStage) ProtoMessage() {}

func (x *GrowthTaskStage) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[121]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GrowthTaskStage.ProtoReflect.Descriptor instead.
func (*GrowthTaskStage) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{121}
}

func (x *GrowthTaskStage) GetConditionList() []*GrowthTaskCondition {
	if x != nil {
		return x.ConditionList
	}
	return nil
}

func (x *GrowthTaskStage) GetRewardList() []*GrowthTaskReward {
	if x != nil {
		return x.RewardList
	}
	return nil
}

func (x *GrowthTaskStage) GetCompletedTime() int64 {
	if x != nil {
		return x.CompletedTime
	}
	return 0
}

type GrowthTaskReward struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Def            *GrowthTaskRewardDef `protobuf:"bytes,1,opt,name=def,proto3" json:"def,omitempty"`                                              // GrowthTaskRewardDef类型字段
	Status         int32                `protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"`                                       // 奖励状态，32位整数
	Extra          string               `protobuf:"bytes,3,opt,name=extra,proto3" json:"extra,omitempty"`                                          // 额外信息，字符串类型
	RemainingCount int64                `protobuf:"varint,4,opt,name=remaining_count,json=remainingCount,proto3" json:"remaining_count,omitempty"` // 剩余数量，64位整数
}

func (x *GrowthTaskReward) Reset() {
	*x = GrowthTaskReward{}
	mi := &file_douyin_proto_msgTypes[122]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GrowthTaskReward) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GrowthTaskReward) ProtoMessage() {}

func (x *GrowthTaskReward) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[122]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GrowthTaskReward.ProtoReflect.Descriptor instead.
func (*GrowthTaskReward) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{122}
}

func (x *GrowthTaskReward) GetDef() *GrowthTaskRewardDef {
	if x != nil {
		return x.Def
	}
	return nil
}

func (x *GrowthTaskReward) GetStatus() int32 {
	if x != nil {
		return x.Status
	}
	return 0
}

func (x *GrowthTaskReward) GetExtra() string {
	if x != nil {
		return x.Extra
	}
	return ""
}

func (x *GrowthTaskReward) GetRemainingCount() int64 {
	if x != nil {
		return x.RemainingCount
	}
	return 0
}

type GrowthTaskRewardDef struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Id           int64  `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`                                          // 唯一标识符，64位整数
	RewardType   int32  `protobuf:"varint,2,opt,name=reward_type,json=rewardType,proto3" json:"reward_type,omitempty"`        // 奖励类型，32位整数
	SettleType   int32  `protobuf:"varint,3,opt,name=settle_type,json=settleType,proto3" json:"settle_type,omitempty"`        // 结算类型，32位整数
	Target       string `protobuf:"bytes,4,opt,name=target,proto3" json:"target,omitempty"`                                   // 目标，字符串类型
	Desc         string `protobuf:"bytes,5,opt,name=desc,proto3" json:"desc,omitempty"`                                       // 描述，字符串类型
	Operator     string `protobuf:"bytes,6,opt,name=operator,proto3" json:"operator,omitempty"`                               // 操作符，字符串类型
	SendParamStr string `protobuf:"bytes,7,opt,name=send_param_str,json=sendParamStr,proto3" json:"send_param_str,omitempty"` // 发送参数字符串，字符串类型
	Extra        string `protobuf:"bytes,8,opt,name=extra,proto3" json:"extra,omitempty"`                                     // 额外信息，字符串类型
	Name         string `protobuf:"bytes,9,opt,name=name,proto3" json:"name,omitempty"`                                       // 名称，字符串类型
}

func (x *GrowthTaskRewardDef) Reset() {
	*x = GrowthTaskRewardDef{}
	mi := &file_douyin_proto_msgTypes[123]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GrowthTaskRewardDef) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GrowthTaskRewardDef) ProtoMessage() {}

func (x *GrowthTaskRewardDef) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[123]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GrowthTaskRewardDef.ProtoReflect.Descriptor instead.
func (*GrowthTaskRewardDef) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{123}
}

func (x *GrowthTaskRewardDef) GetId() int64 {
	if x != nil {
		return x.Id
	}
	return 0
}

func (x *GrowthTaskRewardDef) GetRewardType() int32 {
	if x != nil {
		return x.RewardType
	}
	return 0
}

func (x *GrowthTaskRewardDef) GetSettleType() int32 {
	if x != nil {
		return x.SettleType
	}
	return 0
}

func (x *GrowthTaskRewardDef) GetTarget() string {
	if x != nil {
		return x.Target
	}
	return ""
}

func (x *GrowthTaskRewardDef) GetDesc() string {
	if x != nil {
		return x.Desc
	}
	return ""
}

func (x *GrowthTaskRewardDef) GetOperator() string {
	if x != nil {
		return x.Operator
	}
	return ""
}

func (x *GrowthTaskRewardDef) GetSendParamStr() string {
	if x != nil {
		return x.SendParamStr
	}
	return ""
}

func (x *GrowthTaskRewardDef) GetExtra() string {
	if x != nil {
		return x.Extra
	}
	return ""
}

func (x *GrowthTaskRewardDef) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

type GrowthTaskCondDef struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Id       int64  `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`            // 唯一标识符，64位整数
	Key      string `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"`           // 条件的键或代码，字符串类型
	Desc     string `protobuf:"bytes,3,opt,name=desc,proto3" json:"desc,omitempty"`         // 条件描述，字符串类型
	Operator string `protobuf:"bytes,4,opt,name=operator,proto3" json:"operator,omitempty"` // 操作符，可能定义了如何比较条件，字符串类型
	Extra    string `protobuf:"bytes,5,opt,name=extra,proto3" json:"extra,omitempty"`       // 额外信息，可能包含其他元数据，字符串类型
}

func (x *GrowthTaskCondDef) Reset() {
	*x = GrowthTaskCondDef{}
	mi := &file_douyin_proto_msgTypes[124]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GrowthTaskCondDef) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GrowthTaskCondDef) ProtoMessage() {}

func (x *GrowthTaskCondDef) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[124]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GrowthTaskCondDef.ProtoReflect.Descriptor instead.
func (*GrowthTaskCondDef) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{124}
}

func (x *GrowthTaskCondDef) GetId() int64 {
	if x != nil {
		return x.Id
	}
	return 0
}

func (x *GrowthTaskCondDef) GetKey() string {
	if x != nil {
		return x.Key
	}
	return ""
}

func (x *GrowthTaskCondDef) GetDesc() string {
	if x != nil {
		return x.Desc
	}
	return ""
}

func (x *GrowthTaskCondDef) GetOperator() string {
	if x != nil {
		return x.Operator
	}
	return ""
}

func (x *GrowthTaskCondDef) GetExtra() string {
	if x != nil {
		return x.Extra
	}
	return ""
}

type GrowthTaskCondition struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Def                 *GrowthTaskCondDef `protobuf:"bytes,1,opt,name=def,proto3" json:"def,omitempty"`                                                              // GrowthTaskCondDef类型字段
	Desc                string             `protobuf:"bytes,2,opt,name=desc,proto3" json:"desc,omitempty"`                                                            // 字符串类型字段
	CurrentValue        string             `protobuf:"bytes,3,opt,name=current_value,json=currentValue,proto3" json:"current_value,omitempty"`                        // 当前值，以字符串形式存储
	TargetValue         string             `protobuf:"bytes,4,opt,name=target_value,json=targetValue,proto3" json:"target_value,omitempty"`                           // 目标值，以字符串形式存储
	DisplayCurrentValue string             `protobuf:"bytes,5,opt,name=display_current_value,json=displayCurrentValue,proto3" json:"display_current_value,omitempty"` // 显示的当前值，以字符串形式存储
	DisplayTargetValue  string             `protobuf:"bytes,6,opt,name=display_target_value,json=displayTargetValue,proto3" json:"display_target_value,omitempty"`    // 显示的目标值，以字符串形式存储
	DisplayDelta        string             `protobuf:"bytes,7,opt,name=display_delta,json=displayDelta,proto3" json:"display_delta,omitempty"`                        // 显示的变化量，以字符串形式存储
}

func (x *GrowthTaskCondition) Reset() {
	*x = GrowthTaskCondition{}
	mi := &file_douyin_proto_msgTypes[125]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GrowthTaskCondition) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GrowthTaskCondition) ProtoMessage() {}

func (x *GrowthTaskCondition) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[125]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GrowthTaskCondition.ProtoReflect.Descriptor instead.
func (*GrowthTaskCondition) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{125}
}

func (x *GrowthTaskCondition) GetDef() *GrowthTaskCondDef {
	if x != nil {
		return x.Def
	}
	return nil
}

func (x *GrowthTaskCondition) GetDesc() string {
	if x != nil {
		return x.Desc
	}
	return ""
}

func (x *GrowthTaskCondition) GetCurrentValue() string {
	if x != nil {
		return x.CurrentValue
	}
	return ""
}

func (x *GrowthTaskCondition) GetTargetValue() string {
	if x != nil {
		return x.TargetValue
	}
	return ""
}

func (x *GrowthTaskCondition) GetDisplayCurrentValue() string {
	if x != nil {
		return x.DisplayCurrentValue
	}
	return ""
}

func (x *GrowthTaskCondition) GetDisplayTargetValue() string {
	if x != nil {
		return x.DisplayTargetValue
	}
	return ""
}

func (x *GrowthTaskCondition) GetDisplayDelta() string {
	if x != nil {
		return x.DisplayDelta
	}
	return ""
}

type GrowthTaskMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Common              *Common                                `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"`
	Task                *GrowthTask                            `protobuf:"bytes,2,opt,name=task,proto3" json:"task,omitempty"`
	Action              int32                                  `protobuf:"varint,3,opt,name=action,proto3" json:"action,omitempty"`
	CurrentContribution *GrowthTaskMessage_CurrentContribution `protobuf:"bytes,4,opt,name=current_contribution,json=currentContribution,proto3" json:"current_contribution,omitempty"`
	Contributors        []*GrowthTaskContributorRank           `protobuf:"bytes,5,rep,name=contributors,proto3" json:"contributors,omitempty"`
	QueueTaskLen        int64                                  `protobuf:"varint,6,opt,name=queue_task_len,json=queueTaskLen,proto3" json:"queue_task_len,omitempty"`
}

func (x *GrowthTaskMessage) Reset() {
	*x = GrowthTaskMessage{}
	mi := &file_douyin_proto_msgTypes[126]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GrowthTaskMessage) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GrowthTaskMessage) ProtoMessage() {}

func (x *GrowthTaskMessage) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[126]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GrowthTaskMessage.ProtoReflect.Descriptor instead.
func (*GrowthTaskMessage) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{126}
}

func (x *GrowthTaskMessage) GetCommon() *Common {
	if x != nil {
		return x.Common
	}
	return nil
}

func (x *GrowthTaskMessage) GetTask() *GrowthTask {
	if x != nil {
		return x.Task
	}
	return nil
}

func (x *GrowthTaskMessage) GetAction() int32 {
	if x != nil {
		return x.Action
	}
	return 0
}

func (x *GrowthTaskMessage) GetCurrentContribution() *GrowthTaskMessage_CurrentContribution {
	if x != nil {
		return x.CurrentContribution
	}
	return nil
}

func (x *GrowthTaskMessage) GetContributors() []*GrowthTaskContributorRank {
	if x != nil {
		return x.Contributors
	}
	return nil
}

func (x *GrowthTaskMessage) GetQueueTaskLen() int64 {
	if x != nil {
		return x.QueueTaskLen
	}
	return 0
}

type GrowthTaskContributorRank struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	User  *User `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"`    // 用户信息，关联User消息类型
	Score int64 `protobuf:"varint,2,opt,name=score,proto3" json:"score,omitempty"` // 分数，64位整数
	Rank  int64 `protobuf:"varint,3,opt,name=rank,proto3" json:"rank,omitempty"`   // 排名，64位整数
}

func (x *GrowthTaskContributorRank) Reset() {
	*x = GrowthTaskContributorRank{}
	mi := &file_douyin_proto_msgTypes[127]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GrowthTaskContributorRank) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GrowthTaskContributorRank) ProtoMessage() {}

func (x *GrowthTaskContributorRank) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[127]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GrowthTaskContributorRank.ProtoReflect.Descriptor instead.
func (*GrowthTaskContributorRank) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{127}
}

func (x *GrowthTaskContributorRank) GetUser() *User {
	if x != nil {
		return x.User
	}
	return nil
}

func (x *GrowthTaskContributorRank) GetScore() int64 {
	if x != nil {
		return x.Score
	}
	return 0
}

func (x *GrowthTaskContributorRank) GetRank() int64 {
	if x != nil {
		return x.Rank
	}
	return 0
}

type GameCPBaseMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Common   *Common            `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"`                     // 公共信息，关联Common消息类型
	ShowInfo *GameCPShowMessage `protobuf:"bytes,2,opt,name=show_info,json=showInfo,proto3" json:"show_info,omitempty"` // 展示信息，关联GameCPShowMessage消息类型
}

func (x *GameCPBaseMessage) Reset() {
	*x = GameCPBaseMessage{}
	mi := &file_douyin_proto_msgTypes[128]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GameCPBaseMessage) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GameCPBaseMessage) ProtoMessage() {}

func (x *GameCPBaseMessage) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[128]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GameCPBaseMessage.ProtoReflect.Descriptor instead.
func (*GameCPBaseMessage) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{128}
}

func (x *GameCPBaseMessage) GetCommon() *Common {
	if x != nil {
		return x.Common
	}
	return nil
}

func (x *GameCPBaseMessage) GetShowInfo() *GameCPShowMessage {
	if x != nil {
		return x.ShowInfo
	}
	return nil
}

type GameCPShowMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Type                    int32                     `protobuf:"varint,1,opt,name=type,proto3" json:"type,omitempty"`                                                                        // 消息类型
	IntroduceDownloadInfo   *Text                     `protobuf:"bytes,2,opt,name=introduce_download_info,json=introduceDownloadInfo,proto3" json:"introduce_download_info,omitempty"`        // 游戏下载信息
	GameImage               string                    `protobuf:"bytes,3,opt,name=game_image,json=gameImage,proto3" json:"game_image,omitempty"`                                              // 游戏图片
	GameName                string                    `protobuf:"bytes,4,opt,name=game_name,json=gameName,proto3" json:"game_name,omitempty"`                                                 // 游戏名称
	GameDownloadUrl         string                    `protobuf:"bytes,5,opt,name=game_download_url,json=gameDownloadUrl,proto3" json:"game_download_url,omitempty"`                          // 游戏下载链接
	GameTraceInfo           string                    `protobuf:"bytes,6,opt,name=game_trace_info,json=gameTraceInfo,proto3" json:"game_trace_info,omitempty"`                                // 游戏追踪信息
	GameTagNames            []string                  `protobuf:"bytes,7,rep,name=game_tag_names,json=gameTagNames,proto3" json:"game_tag_names,omitempty"`                                   // 游戏标签名称列表
	GameBackgroundColor     string                    `protobuf:"bytes,8,opt,name=game_background_color,json=gameBackgroundColor,proto3" json:"game_background_color,omitempty"`              // 游戏背景颜色
	IntroduceTimeLimit      int32                     `protobuf:"varint,9,opt,name=introduce_time_limit,json=introduceTimeLimit,proto3" json:"introduce_time_limit,omitempty"`                // 介绍时间限制
	IntroduceStartTime      int64                     `protobuf:"varint,10,opt,name=introduce_start_time,json=introduceStartTime,proto3" json:"introduce_start_time,omitempty"`               // 介绍开始时间
	IntroduceStopType       int32                     `protobuf:"varint,11,opt,name=introduce_stop_type,json=introduceStopType,proto3" json:"introduce_stop_type,omitempty"`                  // 介绍停止类型
	IntroduceStopMessage    *Text                     `protobuf:"bytes,12,opt,name=introduce_stop_message,json=introduceStopMessage,proto3" json:"introduce_stop_message,omitempty"`          // 介绍停止信息
	GameId                  string                    `protobuf:"bytes,13,opt,name=game_id,json=gameId,proto3" json:"game_id,omitempty"`                                                      // 游戏ID
	AuditResult             bool                      `protobuf:"varint,14,opt,name=audit_result,json=auditResult,proto3" json:"audit_result,omitempty"`                                      // 审核结果
	IosAppId                string                    `protobuf:"bytes,15,opt,name=ios_app_id,json=iosAppId,proto3" json:"ios_app_id,omitempty"`                                              // iOS应用ID
	CompanyName             string                    `protobuf:"bytes,16,opt,name=company_name,json=companyName,proto3" json:"company_name,omitempty"`                                       // 公司名称
	DownloadExtra           string                    `protobuf:"bytes,17,opt,name=download_extra,json=downloadExtra,proto3" json:"download_extra,omitempty"`                                 // 下载额外信息
	AndroidPrivacyUrl       string                    `protobuf:"bytes,18,opt,name=android_privacy_url,json=androidPrivacyUrl,proto3" json:"android_privacy_url,omitempty"`                   // Android隐私政策链接
	AndroidAuthorizationUrl string                    `protobuf:"bytes,19,opt,name=android_authorization_url,json=androidAuthorizationUrl,proto3" json:"android_authorization_url,omitempty"` // Android授权链接
	IosPrivacyUrl           string                    `protobuf:"bytes,20,opt,name=ios_privacy_url,json=iosPrivacyUrl,proto3" json:"ios_privacy_url,omitempty"`                               // iOS隐私政策链接
	IosAuthorizationUrl     string                    `protobuf:"bytes,21,opt,name=ios_authorization_url,json=iosAuthorizationUrl,proto3" json:"ios_authorization_url,omitempty"`             // iOS授权链接
	AndroidVersion          string                    `protobuf:"bytes,22,opt,name=android_version,json=androidVersion,proto3" json:"android_version,omitempty"`                              // Android版本
	IosVersion              string                    `protobuf:"bytes,23,opt,name=ios_version,json=iosVersion,proto3" json:"ios_version,omitempty"`                                          // iOS版本
	ActiveLink              string                    `protobuf:"bytes,24,opt,name=active_link,json=activeLink,proto3" json:"active_link,omitempty"`                                          // 活跃链接
	DownloadCount           int64                     `protobuf:"varint,25,opt,name=download_count,json=downloadCount,proto3" json:"download_count,omitempty"`                                // 下载次数
	IsShowAnimate           bool                      `protobuf:"varint,26,opt,name=is_show_animate,json=isShowAnimate,proto3" json:"is_show_animate,omitempty"`                              // 是否显示动画
	AnimateStartTime        int64                     `protobuf:"varint,27,opt,name=animate_start_time,json=animateStartTime,proto3" json:"animate_start_time,omitempty"`                     // 动画开始时间
	AnimateDuration         int64                     `protobuf:"varint,28,opt,name=animate_duration,json=animateDuration,proto3" json:"animate_duration,omitempty"`                          // 动画持续时间
	AntiHijackContent       string                    `protobuf:"bytes,29,opt,name=anti_hijack_content,json=antiHijackContent,proto3" json:"anti_hijack_content,omitempty"`                   // 反劫持内容
	AntiHijackImage         string                    `protobuf:"bytes,30,opt,name=anti_hijack_image,json=antiHijackImage,proto3" json:"anti_hijack_image,omitempty"`                         // 反劫持图片
	IosSalePoint            string                    `protobuf:"bytes,31,opt,name=ios_sale_point,json=iosSalePoint,proto3" json:"ios_sale_point,omitempty"`                                  // iOS销售点
	IsForbidJumpIosApp      bool                      `protobuf:"varint,32,opt,name=is_forbid_jump_ios_app,json=isForbidJumpIosApp,proto3" json:"is_forbid_jump_ios_app,omitempty"`           // 是否禁止跳转到iOS应用
	HasPlatformGift         bool                      `protobuf:"varint,33,opt,name=has_platform_gift,json=hasPlatformGift,proto3" json:"has_platform_gift,omitempty"`                        // 是否有平台礼物
	OpenGameUrl             string                    `protobuf:"bytes,44,opt,name=open_game_url,json=openGameUrl,proto3" json:"open_game_url,omitempty"`                                     // 打开游戏链接
	PropIcon                string                    `protobuf:"bytes,45,opt,name=prop_icon,json=propIcon,proto3" json:"prop_icon,omitempty"`                                                // 道具图标
	PropName                string                    `protobuf:"bytes,46,opt,name=prop_name,json=propName,proto3" json:"prop_name,omitempty"`                                                // 道具名称
	PropId                  string                    `protobuf:"bytes,47,opt,name=prop_id,json=propId,proto3" json:"prop_id,omitempty"`                                                      // 道具ID
	MarketPrice             int64                     `protobuf:"varint,48,opt,name=market_price,json=marketPrice,proto3" json:"market_price,omitempty"`                                      // 市场价格
	SellingPrice            int64                     `protobuf:"varint,49,opt,name=selling_price,json=sellingPrice,proto3" json:"selling_price,omitempty"`                                   // 销售价格
	PropSkuId               int64                     `protobuf:"varint,50,opt,name=prop_sku_id,json=propSkuId,proto3" json:"prop_sku_id,omitempty"`                                          // 道具SKU ID
	ReserveItem             *ReserveItem              `protobuf:"bytes,51,opt,name=reserve_item,json=reserveItem,proto3" json:"reserve_item,omitempty"`                                       // 预约项目
	PropType                int64                     `protobuf:"varint,52,opt,name=prop_type,json=propType,proto3" json:"prop_type,omitempty"`                                               // 道具类型
	GameAccessType          int64                     `protobuf:"varint,53,opt,name=game_access_type,json=gameAccessType,proto3" json:"game_access_type,omitempty"`                           // 游戏访问类型
	IsPropExpGame           bool                      `protobuf:"varint,54,opt,name=is_prop_exp_game,json=isPropExpGame,proto3" json:"is_prop_exp_game,omitempty"`                            // 是否是道具体验游戏
	ComponentIds            []string                  `protobuf:"bytes,55,rep,name=component_ids,json=componentIds,proto3" json:"component_ids,omitempty"`                                    // 组件ID列表
	BizType                 int32                     `protobuf:"varint,56,opt,name=biz_type,json=bizType,proto3" json:"biz_type,omitempty"`                                                  // 业务类型
	InstallUserCount        int64                     `protobuf:"varint,57,opt,name=install_user_count,json=installUserCount,proto3" json:"install_user_count,omitempty"`                     // 安装用户数量
	AndroidSalePoint        string                    `protobuf:"bytes,58,opt,name=android_sale_point,json=androidSalePoint,proto3" json:"android_sale_point,omitempty"`                      // Android销售点
	MiniGameMeta            *MiniGameMeta             `protobuf:"bytes,59,opt,name=mini_game_meta,json=miniGameMeta,proto3" json:"mini_game_meta,omitempty"`                                  // 小游戏元数据
	SupportPlatforms        int64                     `protobuf:"varint,60,opt,name=support_platforms,json=supportPlatforms,proto3" json:"support_platforms,omitempty"`                       // 支持的平台
	MiniPlayMeta            *MiniPlayMeta             `protobuf:"bytes,61,opt,name=mini_play_meta,json=miniPlayMeta,proto3" json:"mini_play_meta,omitempty"`                                  // 小游戏播放元数据
	PlayIntroduce           string                    `protobuf:"bytes,62,opt,name=play_introduce,json=playIntroduce,proto3" json:"play_introduce,omitempty"`                                 // 播放介绍
	SmallIcon               string                    `protobuf:"bytes,63,opt,name=small_icon,json=smallIcon,proto3" json:"small_icon,omitempty"`                                             // 小图标
	GameIntroductionUrl     string                    `protobuf:"bytes,64,opt,name=game_introduction_url,json=gameIntroductionUrl,proto3" json:"game_introduction_url,omitempty"`             // 游戏介绍链接
	GameIcon                *GameImageBundler         `protobuf:"bytes,65,opt,name=game_icon,json=gameIcon,proto3" json:"game_icon,omitempty"`                                                // 游戏图标捆绑
	CloudGameMeta           *CloudGameMeta            `protobuf:"bytes,66,opt,name=cloud_game_meta,json=cloudGameMeta,proto3" json:"cloud_game_meta,omitempty"`                               // 云游戏元数据
	AtmosphereContent       *AtmosphereContent        `protobuf:"bytes,67,opt,name=atmosphere_content,json=atmosphereContent,proto3" json:"atmosphere_content,omitempty"`                     // 氛围内容
	FeaturedContent         *FeaturedContent          `protobuf:"bytes,68,opt,name=featured_content,json=featuredContent,proto3" json:"featured_content,omitempty"`                           // 特色内容
	PromoteInstanceId       string                    `protobuf:"bytes,70,opt,name=promote_instance_id,json=promoteInstanceId,proto3" json:"promote_instance_id,omitempty"`                   // 推广实例ID
	PropStockNum            int64                     `protobuf:"varint,71,opt,name=prop_stock_num,json=propStockNum,proto3" json:"prop_stock_num,omitempty"`                                 // 道具库存数量
	Tag                     *IntroduceCardTag         `protobuf:"bytes,72,opt,name=tag,proto3" json:"tag,omitempty"`                                                                          // 介绍卡片标签
	CardDisplayInfo         *IntroduceCardDisplayInfo `protobuf:"bytes,73,opt,name=card_display_info,json=cardDisplayInfo,proto3" json:"card_display_info,omitempty"`                         // 卡片显示信息
	IsInPreDownloadPeriod   bool                      `protobuf:"varint,74,opt,name=is_in_pre_download_period,json=isInPreDownloadPeriod,proto3" json:"is_in_pre_download_period,omitempty"`  // 是否在预下载期
}

func (x *GameCPShowMessage) Reset() {
	*x = GameCPShowMessage{}
	mi := &file_douyin_proto_msgTypes[129]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GameCPShowMessage) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GameCPShowMessage) ProtoMessage() {}

func (x *GameCPShowMessage) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[129]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GameCPShowMessage.ProtoReflect.Descriptor instead.
func (*GameCPShowMessage) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{129}
}

func (x *GameCPShowMessage) GetType() int32 {
	if x != nil {
		return x.Type
	}
	return 0
}

func (x *GameCPShowMessage) GetIntroduceDownloadInfo() *Text {
	if x != nil {
		return x.IntroduceDownloadInfo
	}
	return nil
}

func (x *GameCPShowMessage) GetGameImage() string {
	if x != nil {
		return x.GameImage
	}
	return ""
}

func (x *GameCPShowMessage) GetGameName() string {
	if x != nil {
		return x.GameName
	}
	return ""
}

func (x *GameCPShowMessage) GetGameDownloadUrl() string {
	if x != nil {
		return x.GameDownloadUrl
	}
	return ""
}

func (x *GameCPShowMessage) GetGameTraceInfo() string {
	if x != nil {
		return x.GameTraceInfo
	}
	return ""
}

func (x *GameCPShowMessage) GetGameTagNames() []string {
	if x != nil {
		return x.GameTagNames
	}
	return nil
}

func (x *GameCPShowMessage) GetGameBackgroundColor() string {
	if x != nil {
		return x.GameBackgroundColor
	}
	return ""
}

func (x *GameCPShowMessage) GetIntroduceTimeLimit() int32 {
	if x != nil {
		return x.IntroduceTimeLimit
	}
	return 0
}

func (x *GameCPShowMessage) GetIntroduceStartTime() int64 {
	if x != nil {
		return x.IntroduceStartTime
	}
	return 0
}

func (x *GameCPShowMessage) GetIntroduceStopType() int32 {
	if x != nil {
		return x.IntroduceStopType
	}
	return 0
}

func (x *GameCPShowMessage) GetIntroduceStopMessage() *Text {
	if x != nil {
		return x.IntroduceStopMessage
	}
	return nil
}

func (x *GameCPShowMessage) GetGameId() string {
	if x != nil {
		return x.GameId
	}
	return ""
}

func (x *GameCPShowMessage) GetAuditResult() bool {
	if x != nil {
		return x.AuditResult
	}
	return false
}

func (x *GameCPShowMessage) GetIosAppId() string {
	if x != nil {
		return x.IosAppId
	}
	return ""
}

func (x *GameCPShowMessage) GetCompanyName() string {
	if x != nil {
		return x.CompanyName
	}
	return ""
}

func (x *GameCPShowMessage) GetDownloadExtra() string {
	if x != nil {
		return x.DownloadExtra
	}
	return ""
}

func (x *GameCPShowMessage) GetAndroidPrivacyUrl() string {
	if x != nil {
		return x.AndroidPrivacyUrl
	}
	return ""
}

func (x *GameCPShowMessage) GetAndroidAuthorizationUrl() string {
	if x != nil {
		return x.AndroidAuthorizationUrl
	}
	return ""
}

func (x *GameCPShowMessage) GetIosPrivacyUrl() string {
	if x != nil {
		return x.IosPrivacyUrl
	}
	return ""
}

func (x *GameCPShowMessage) GetIosAuthorizationUrl() string {
	if x != nil {
		return x.IosAuthorizationUrl
	}
	return ""
}

func (x *GameCPShowMessage) GetAndroidVersion() string {
	if x != nil {
		return x.AndroidVersion
	}
	return ""
}

func (x *GameCPShowMessage) GetIosVersion() string {
	if x != nil {
		return x.IosVersion
	}
	return ""
}

func (x *GameCPShowMessage) GetActiveLink() string {
	if x != nil {
		return x.ActiveLink
	}
	return ""
}

func (x *GameCPShowMessage) GetDownloadCount() int64 {
	if x != nil {
		return x.DownloadCount
	}
	return 0
}

func (x *GameCPShowMessage) GetIsShowAnimate() bool {
	if x != nil {
		return x.IsShowAnimate
	}
	return false
}

func (x *GameCPShowMessage) GetAnimateStartTime() int64 {
	if x != nil {
		return x.AnimateStartTime
	}
	return 0
}

func (x *GameCPShowMessage) GetAnimateDuration() int64 {
	if x != nil {
		return x.AnimateDuration
	}
	return 0
}

func (x *GameCPShowMessage) GetAntiHijackContent() string {
	if x != nil {
		return x.AntiHijackContent
	}
	return ""
}

func (x *GameCPShowMessage) GetAntiHijackImage() string {
	if x != nil {
		return x.AntiHijackImage
	}
	return ""
}

func (x *GameCPShowMessage) GetIosSalePoint() string {
	if x != nil {
		return x.IosSalePoint
	}
	return ""
}

func (x *GameCPShowMessage) GetIsForbidJumpIosApp() bool {
	if x != nil {
		return x.IsForbidJumpIosApp
	}
	return false
}

func (x *GameCPShowMessage) GetHasPlatformGift() bool {
	if x != nil {
		return x.HasPlatformGift
	}
	return false
}

func (x *GameCPShowMessage) GetOpenGameUrl() string {
	if x != nil {
		return x.OpenGameUrl
	}
	return ""
}

func (x *GameCPShowMessage) GetPropIcon() string {
	if x != nil {
		return x.PropIcon
	}
	return ""
}

func (x *GameCPShowMessage) GetPropName() string {
	if x != nil {
		return x.PropName
	}
	return ""
}

func (x *GameCPShowMessage) GetPropId() string {
	if x != nil {
		return x.PropId
	}
	return ""
}

func (x *GameCPShowMessage) GetMarketPrice() int64 {
	if x != nil {
		return x.MarketPrice
	}
	return 0
}

func (x *GameCPShowMessage) GetSellingPrice() int64 {
	if x != nil {
		return x.SellingPrice
	}
	return 0
}

func (x *GameCPShowMessage) GetPropSkuId() int64 {
	if x != nil {
		return x.PropSkuId
	}
	return 0
}

func (x *GameCPShowMessage) GetReserveItem() *ReserveItem {
	if x != nil {
		return x.ReserveItem
	}
	return nil
}

func (x *GameCPShowMessage) GetPropType() int64 {
	if x != nil {
		return x.PropType
	}
	return 0
}

func (x *GameCPShowMessage) GetGameAccessType() int64 {
	if x != nil {
		return x.GameAccessType
	}
	return 0
}

func (x *GameCPShowMessage) GetIsPropExpGame() bool {
	if x != nil {
		return x.IsPropExpGame
	}
	return false
}

func (x *GameCPShowMessage) GetComponentIds() []string {
	if x != nil {
		return x.ComponentIds
	}
	return nil
}

func (x *GameCPShowMessage) GetBizType() int32 {
	if x != nil {
		return x.BizType
	}
	return 0
}

func (x *GameCPShowMessage) GetInstallUserCount() int64 {
	if x != nil {
		return x.InstallUserCount
	}
	return 0
}

func (x *GameCPShowMessage) GetAndroidSalePoint() string {
	if x != nil {
		return x.AndroidSalePoint
	}
	return ""
}

func (x *GameCPShowMessage) GetMiniGameMeta() *MiniGameMeta {
	if x != nil {
		return x.MiniGameMeta
	}
	return nil
}

func (x *GameCPShowMessage) GetSupportPlatforms() int64 {
	if x != nil {
		return x.SupportPlatforms
	}
	return 0
}

func (x *GameCPShowMessage) GetMiniPlayMeta() *MiniPlayMeta {
	if x != nil {
		return x.MiniPlayMeta
	}
	return nil
}

func (x *GameCPShowMessage) GetPlayIntroduce() string {
	if x != nil {
		return x.PlayIntroduce
	}
	return ""
}

func (x *GameCPShowMessage) GetSmallIcon() string {
	if x != nil {
		return x.SmallIcon
	}
	return ""
}

func (x *GameCPShowMessage) GetGameIntroductionUrl() string {
	if x != nil {
		return x.GameIntroductionUrl
	}
	return ""
}

func (x *GameCPShowMessage) GetGameIcon() *GameImageBundler {
	if x != nil {
		return x.GameIcon
	}
	return nil
}

func (x *GameCPShowMessage) GetCloudGameMeta() *CloudGameMeta {
	if x != nil {
		return x.CloudGameMeta
	}
	return nil
}

func (x *GameCPShowMessage) GetAtmosphereContent() *AtmosphereContent {
	if x != nil {
		return x.AtmosphereContent
	}
	return nil
}

func (x *GameCPShowMessage) GetFeaturedContent() *FeaturedContent {
	if x != nil {
		return x.FeaturedContent
	}
	return nil
}

func (x *GameCPShowMessage) GetPromoteInstanceId() string {
	if x != nil {
		return x.PromoteInstanceId
	}
	return ""
}

func (x *GameCPShowMessage) GetPropStockNum() int64 {
	if x != nil {
		return x.PropStockNum
	}
	return 0
}

func (x *GameCPShowMessage) GetTag() *IntroduceCardTag {
	if x != nil {
		return x.Tag
	}
	return nil
}

func (x *GameCPShowMessage) GetCardDisplayInfo() *IntroduceCardDisplayInfo {
	if x != nil {
		return x.CardDisplayInfo
	}
	return nil
}

func (x *GameCPShowMessage) GetIsInPreDownloadPeriod() bool {
	if x != nil {
		return x.IsInPreDownloadPeriod
	}
	return false
}

type ReserveItem struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ReserveTodayNum string `protobuf:"bytes,1,opt,name=reserve_today_num,json=reserveTodayNum,proto3" json:"reserve_today_num,omitempty"` // 当天预订数量，字符串类型
	ReserveTotalNum string `protobuf:"bytes,2,opt,name=reserve_total_num,json=reserveTotalNum,proto3" json:"reserve_total_num,omitempty"` // 总预订数量，字符串类型
	ReserveStatus   int32  `protobuf:"varint,3,opt,name=reserve_status,json=reserveStatus,proto3" json:"reserve_status,omitempty"`        // 预订状态，32位整数
}

func (x *ReserveItem) Reset() {
	*x = ReserveItem{}
	mi := &file_douyin_proto_msgTypes[130]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ReserveItem) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ReserveItem) ProtoMessage() {}

func (x *ReserveItem) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[130]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ReserveItem.ProtoReflect.Descriptor instead.
func (*ReserveItem) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{130}
}

func (x *ReserveItem) GetReserveTodayNum() string {
	if x != nil {
		return x.ReserveTodayNum
	}
	return ""
}

func (x *ReserveItem) GetReserveTotalNum() string {
	if x != nil {
		return x.ReserveTotalNum
	}
	return ""
}

func (x *ReserveItem) GetReserveStatus() int32 {
	if x != nil {
		return x.ReserveStatus
	}
	return 0
}

type MiniGameMeta struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Schema  string `protobuf:"bytes,1,opt,name=schema,proto3" json:"schema,omitempty"`   // 小游戏的schema，字符串类型
	Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` // 小游戏的版本，字符串类型
}

func (x *MiniGameMeta) Reset() {
	*x = MiniGameMeta{}
	mi := &file_douyin_proto_msgTypes[131]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *MiniGameMeta) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MiniGameMeta) ProtoMessage() {}

func (x *MiniGameMeta) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[131]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use MiniGameMeta.ProtoReflect.Descriptor instead.
func (*MiniGameMeta) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{131}
}

func (x *MiniGameMeta) GetSchema() string {
	if x != nil {
		return x.Schema
	}
	return ""
}

func (x *MiniGameMeta) GetVersion() string {
	if x != nil {
		return x.Version
	}
	return ""
}

type MiniPlayMeta struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Schema           string `protobuf:"bytes,1,opt,name=schema,proto3" json:"schema,omitempty"`                                                // 小游戏的schema，字符串类型
	GameName         string `protobuf:"bytes,2,opt,name=game_name,json=gameName,proto3" json:"game_name,omitempty"`                            // 小游戏名称，字符串类型
	Icon             string `protobuf:"bytes,3,opt,name=icon,proto3" json:"icon,omitempty"`                                                    // 小游戏图标，字符串类型
	GameId           string `protobuf:"bytes,4,opt,name=game_id,json=gameId,proto3" json:"game_id,omitempty"`                                  // 小游戏ID，字符串类型
	AppId            string `protobuf:"bytes,5,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty"`                                     // 应用ID，字符串类型
	SupportLiveScene int64  `protobuf:"varint,6,opt,name=support_live_scene,json=supportLiveScene,proto3" json:"support_live_scene,omitempty"` // 支持的直播场景，64位整数
	Version          string `protobuf:"bytes,7,opt,name=version,proto3" json:"version,omitempty"`                                              // 小游戏版本，字符串类型
	GameType         int32  `protobuf:"varint,8,opt,name=game_type,json=gameType,proto3" json:"game_type,omitempty"`                           // 小游戏类型，32位整数
	Developer        string `protobuf:"bytes,9,opt,name=developer,proto3" json:"developer,omitempty"`                                          // 开发者信息，字符串类型
	Extra            string `protobuf:"bytes,10,opt,name=extra,proto3" json:"extra,omitempty"`                                                 // 额外信息，字符串类型
}

func (x *MiniPlayMeta) Reset() {
	*x = MiniPlayMeta{}
	mi := &file_douyin_proto_msgTypes[132]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *MiniPlayMeta) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MiniPlayMeta) ProtoMessage() {}

func (x *MiniPlayMeta) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[132]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use MiniPlayMeta.ProtoReflect.Descriptor instead.
func (*MiniPlayMeta) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{132}
}

func (x *MiniPlayMeta) GetSchema() string {
	if x != nil {
		return x.Schema
	}
	return ""
}

func (x *MiniPlayMeta) GetGameName() string {
	if x != nil {
		return x.GameName
	}
	return ""
}

func (x *MiniPlayMeta) GetIcon() string {
	if x != nil {
		return x.Icon
	}
	return ""
}

func (x *MiniPlayMeta) GetGameId() string {
	if x != nil {
		return x.GameId
	}
	return ""
}

func (x *MiniPlayMeta) GetAppId() string {
	if x != nil {
		return x.AppId
	}
	return ""
}

func (x *MiniPlayMeta) GetSupportLiveScene() int64 {
	if x != nil {
		return x.SupportLiveScene
	}
	return 0
}

func (x *MiniPlayMeta) GetVersion() string {
	if x != nil {
		return x.Version
	}
	return ""
}

func (x *MiniPlayMeta) GetGameType() int32 {
	if x != nil {
		return x.GameType
	}
	return 0
}

func (x *MiniPlayMeta) GetDeveloper() string {
	if x != nil {
		return x.Developer
	}
	return ""
}

func (x *MiniPlayMeta) GetExtra() string {
	if x != nil {
		return x.Extra
	}
	return ""
}

type GameImageBundler struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	OriginImage    *GameImage `protobuf:"bytes,1,opt,name=origin_image,json=originImage,proto3" json:"origin_image,omitempty"`            // 原始图片，GameImage类型
	ThumbImage     *GameImage `protobuf:"bytes,2,opt,name=thumb_image,json=thumbImage,proto3" json:"thumb_image,omitempty"`               // 缩略图，GameImage类型
	ThumbHeifImage *GameImage `protobuf:"bytes,3,opt,name=thumb_heif_image,json=thumbHeifImage,proto3" json:"thumb_heif_image,omitempty"` // HEIC格式的缩略图，GameImage类型
}

func (x *GameImageBundler) Reset() {
	*x = GameImageBundler{}
	mi := &file_douyin_proto_msgTypes[133]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GameImageBundler) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GameImageBundler) ProtoMessage() {}

func (x *GameImageBundler) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[133]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GameImageBundler.ProtoReflect.Descriptor instead.
func (*GameImageBundler) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{133}
}

func (x *GameImageBundler) GetOriginImage() *GameImage {
	if x != nil {
		return x.OriginImage
	}
	return nil
}

func (x *GameImageBundler) GetThumbImage() *GameImage {
	if x != nil {
		return x.ThumbImage
	}
	return nil
}

func (x *GameImageBundler) GetThumbHeifImage() *GameImage {
	if x != nil {
		return x.ThumbHeifImage
	}
	return nil
}

type GameImage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	UrlList  []string `protobuf:"bytes,1,rep,name=url_list,json=urlList,proto3" json:"url_list,omitempty"` // 图片URL列表，重复的字符串类型字段
	Uri      string   `protobuf:"bytes,2,opt,name=uri,proto3" json:"uri,omitempty"`                        // 图片统一资源标识符，字符串类型
	Height   int64    `protobuf:"varint,3,opt,name=height,proto3" json:"height,omitempty"`                 // 图片高度，64位整数
	Width    int64    `protobuf:"varint,4,opt,name=width,proto3" json:"width,omitempty"`                   // 图片宽度，64位整数
	Rotation int64    `protobuf:"varint,5,opt,name=rotation,proto3" json:"rotation,omitempty"`             // 图片旋转角度，64位整数
}

func (x *GameImage) Reset() {
	*x = GameImage{}
	mi := &file_douyin_proto_msgTypes[134]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GameImage) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GameImage) ProtoMessage() {}

func (x *GameImage) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[134]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GameImage.ProtoReflect.Descriptor instead.
func (*GameImage) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{134}
}

func (x *GameImage) GetUrlList() []string {
	if x != nil {
		return x.UrlList
	}
	return nil
}

func (x *GameImage) GetUri() string {
	if x != nil {
		return x.Uri
	}
	return ""
}

func (x *GameImage) GetHeight() int64 {
	if x != nil {
		return x.Height
	}
	return 0
}

func (x *GameImage) GetWidth() int64 {
	if x != nil {
		return x.Width
	}
	return 0
}

func (x *GameImage) GetRotation() int64 {
	if x != nil {
		return x.Rotation
	}
	return 0
}

type CloudGameMeta struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Schema string `protobuf:"bytes,1,opt,name=schema,proto3" json:"schema,omitempty"` // 云游戏的schema，字符串类型
}

func (x *CloudGameMeta) Reset() {
	*x = CloudGameMeta{}
	mi := &file_douyin_proto_msgTypes[135]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CloudGameMeta) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CloudGameMeta) ProtoMessage() {}

func (x *CloudGameMeta) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[135]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CloudGameMeta.ProtoReflect.Descriptor instead.
func (*CloudGameMeta) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{135}
}

func (x *CloudGameMeta) GetSchema() string {
	if x != nil {
		return x.Schema
	}
	return ""
}

type AtmosphereContent struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ShowDuration int64  `protobuf:"varint,1,opt,name=show_duration,json=showDuration,proto3" json:"show_duration,omitempty"` // 展示时长，64位整数
	Count        string `protobuf:"bytes,2,opt,name=count,proto3" json:"count,omitempty"`                                    // 计数，字符串类型
}

func (x *AtmosphereContent) Reset() {
	*x = AtmosphereContent{}
	mi := &file_douyin_proto_msgTypes[136]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *AtmosphereContent) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AtmosphereContent) ProtoMessage() {}

func (x *AtmosphereContent) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[136]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AtmosphereContent.ProtoReflect.Descriptor instead.
func (*AtmosphereContent) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{136}
}

func (x *AtmosphereContent) GetShowDuration() int64 {
	if x != nil {
		return x.ShowDuration
	}
	return 0
}

func (x *AtmosphereContent) GetCount() string {
	if x != nil {
		return x.Count
	}
	return ""
}

type FeaturedContent struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	RotationTime int32      `protobuf:"varint,1,opt,name=rotation_time,json=rotationTime,proto3" json:"rotation_time,omitempty"` // 轮播时间，32位整数
	Contents     []*Content `protobuf:"bytes,2,rep,name=contents,proto3" json:"contents,omitempty"`                              // 内容列表，重复的Content类型字段
}

func (x *FeaturedContent) Reset() {
	*x = FeaturedContent{}
	mi := &file_douyin_proto_msgTypes[137]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *FeaturedContent) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*FeaturedContent) ProtoMessage() {}

func (x *FeaturedContent) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[137]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use FeaturedContent.ProtoReflect.Descriptor instead.
func (*FeaturedContent) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{137}
}

func (x *FeaturedContent) GetRotationTime() int32 {
	if x != nil {
		return x.RotationTime
	}
	return 0
}

func (x *FeaturedContent) GetContents() []*Content {
	if x != nil {
		return x.Contents
	}
	return nil
}

type Content struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Type    int32    `protobuf:"varint,1,opt,name=type,proto3" json:"type,omitempty"`      // 内容类型，32位整数
	Content string   `protobuf:"bytes,2,opt,name=content,proto3" json:"content,omitempty"` // 内容正文，字符串类型
	Avatar  []string `protobuf:"bytes,3,rep,name=avatar,proto3" json:"avatar,omitempty"`   // 头像列表，重复的字符串类型字段
}

func (x *Content) Reset() {
	*x = Content{}
	mi := &file_douyin_proto_msgTypes[138]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Content) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Content) ProtoMessage() {}

func (x *Content) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[138]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Content.ProtoReflect.Descriptor instead.
func (*Content) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{138}
}

func (x *Content) GetType() int32 {
	if x != nil {
		return x.Type
	}
	return 0
}

func (x *Content) GetContent() string {
	if x != nil {
		return x.Content
	}
	return ""
}

func (x *Content) GetAvatar() []string {
	if x != nil {
		return x.Avatar
	}
	return nil
}

type IntroduceCardTag struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	IconUrl string `protobuf:"bytes,1,opt,name=icon_url,json=iconUrl,proto3" json:"icon_url,omitempty"` // 标签的图标URL，字符串类型
	SubText string `protobuf:"bytes,2,opt,name=sub_text,json=subText,proto3" json:"sub_text,omitempty"` // 标签的辅助文本，字符串类型
}

func (x *IntroduceCardTag) Reset() {
	*x = IntroduceCardTag{}
	mi := &file_douyin_proto_msgTypes[139]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *IntroduceCardTag) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*IntroduceCardTag) ProtoMessage() {}

func (x *IntroduceCardTag) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[139]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use IntroduceCardTag.ProtoReflect.Descriptor instead.
func (*IntroduceCardTag) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{139}
}

func (x *IntroduceCardTag) GetIconUrl() string {
	if x != nil {
		return x.IconUrl
	}
	return ""
}

func (x *IntroduceCardTag) GetSubText() string {
	if x != nil {
		return x.SubText
	}
	return ""
}

type IntroduceCardDisplayInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	DisplayDuration          int64 `protobuf:"varint,1,opt,name=display_duration,json=displayDuration,proto3" json:"display_duration,omitempty"`                                  // 展示时长，64位整数
	IsOpenTimerIntroduceCard bool  `protobuf:"varint,2,opt,name=is_open_timer_introduce_card,json=isOpenTimerIntroduceCard,proto3" json:"is_open_timer_introduce_card,omitempty"` // 是否开启定时介绍卡片，布尔类型
	DisplayTimerSpan         int64 `protobuf:"varint,3,opt,name=display_timer_span,json=displayTimerSpan,proto3" json:"display_timer_span,omitempty"`                             // 展示定时间隔，64位整数
	DisplayTimerLoopCnt      int64 `protobuf:"varint,4,opt,name=display_timer_loop_cnt,json=displayTimerLoopCnt,proto3" json:"display_timer_loop_cnt,omitempty"`                  // 展示定时循环次数，64位整数
}

func (x *IntroduceCardDisplayInfo) Reset() {
	*x = IntroduceCardDisplayInfo{}
	mi := &file_douyin_proto_msgTypes[140]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *IntroduceCardDisplayInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*IntroduceCardDisplayInfo) ProtoMessage() {}

func (x *IntroduceCardDisplayInfo) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[140]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use IntroduceCardDisplayInfo.ProtoReflect.Descriptor instead.
func (*IntroduceCardDisplayInfo) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{140}
}

func (x *IntroduceCardDisplayInfo) GetDisplayDuration() int64 {
	if x != nil {
		return x.DisplayDuration
	}
	return 0
}

func (x *IntroduceCardDisplayInfo) GetIsOpenTimerIntroduceCard() bool {
	if x != nil {
		return x.IsOpenTimerIntroduceCard
	}
	return false
}

func (x *IntroduceCardDisplayInfo) GetDisplayTimerSpan() int64 {
	if x != nil {
		return x.DisplayTimerSpan
	}
	return 0
}

func (x *IntroduceCardDisplayInfo) GetDisplayTimerLoopCnt() int64 {
	if x != nil {
		return x.DisplayTimerLoopCnt
	}
	return 0
}

type MemberMessage_PicoEffectConfig struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Type              int64  `protobuf:"varint,1,opt,name=type,proto3" json:"type,omitempty"`                                                        // 类型
	Icon              *Image `protobuf:"bytes,2,opt,name=icon,proto3" json:"icon,omitempty"`                                                         // 图标
	Text              *Text  `protobuf:"bytes,3,opt,name=text,proto3" json:"text,omitempty"`                                                         // 文本
	TextIcon          *Image `protobuf:"bytes,4,opt,name=text_icon,json=textIcon,proto3" json:"text_icon,omitempty"`                                 // 文本图标
	StayTime          int32  `protobuf:"varint,5,opt,name=stay_time,json=stayTime,proto3" json:"stay_time,omitempty"`                                // 停留时间
	Badge             *Image `protobuf:"bytes,6,opt,name=badge,proto3" json:"badge,omitempty"`                                                       // 徽章
	CenterAnimAssetId int64  `protobuf:"varint,7,opt,name=center_anim_asset_id,json=centerAnimAssetId,proto3" json:"center_anim_asset_id,omitempty"` // 中心动画资源ID
	DressId           string `protobuf:"bytes,9,opt,name=dress_id,json=dressId,proto3" json:"dress_id,omitempty"`                                    // 装扮ID
	// extra字段作为map存储额外信息
	Extra map[string]string `protobuf:"bytes,8,rep,name=extra,proto3" json:"extra,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // 额外信息
}

func (x *MemberMessage_PicoEffectConfig) Reset() {
	*x = MemberMessage_PicoEffectConfig{}
	mi := &file_douyin_proto_msgTypes[145]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *MemberMessage_PicoEffectConfig) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MemberMessage_PicoEffectConfig) ProtoMessage() {}

func (x *MemberMessage_PicoEffectConfig) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[145]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use MemberMessage_PicoEffectConfig.ProtoReflect.Descriptor instead.
func (*MemberMessage_PicoEffectConfig) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{24, 2}
}

func (x *MemberMessage_PicoEffectConfig) GetType() int64 {
	if x != nil {
		return x.Type
	}
	return 0
}

func (x *MemberMessage_PicoEffectConfig) GetIcon() *Image {
	if x != nil {
		return x.Icon
	}
	return nil
}

func (x *MemberMessage_PicoEffectConfig) GetText() *Text {
	if x != nil {
		return x.Text
	}
	return nil
}

func (x *MemberMessage_PicoEffectConfig) GetTextIcon() *Image {
	if x != nil {
		return x.TextIcon
	}
	return nil
}

func (x *MemberMessage_PicoEffectConfig) GetStayTime() int32 {
	if x != nil {
		return x.StayTime
	}
	return 0
}

func (x *MemberMessage_PicoEffectConfig) GetBadge() *Image {
	if x != nil {
		return x.Badge
	}
	return nil
}

func (x *MemberMessage_PicoEffectConfig) GetCenterAnimAssetId() int64 {
	if x != nil {
		return x.CenterAnimAssetId
	}
	return 0
}

func (x *MemberMessage_PicoEffectConfig) GetDressId() string {
	if x != nil {
		return x.DressId
	}
	return ""
}

func (x *MemberMessage_PicoEffectConfig) GetExtra() map[string]string {
	if x != nil {
		return x.Extra
	}
	return nil
}

type Image_Content struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Name            string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`                                              // 名称
	FontColor       string `protobuf:"bytes,2,opt,name=font_color,json=fontColor,proto3" json:"font_color,omitempty"`                   // 字体颜色
	Level           string `protobuf:"bytes,3,opt,name=level,proto3" json:"level,omitempty"`                                            // 级别（int64字符串表示）
	AlternativeText string `protobuf:"bytes,4,opt,name=alternative_text,json=alternativeText,proto3" json:"alternative_text,omitempty"` // 替代文本
}

func (x *Image_Content) Reset() {
	*x = Image_Content{}
	mi := &file_douyin_proto_msgTypes[153]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Image_Content) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Image_Content) ProtoMessage() {}

func (x *Image_Content) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[153]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Image_Content.ProtoReflect.Descriptor instead.
func (*Image_Content) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{56, 0}
}

func (x *Image_Content) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *Image_Content) GetFontColor() string {
	if x != nil {
		return x.FontColor
	}
	return ""
}

func (x *Image_Content) GetLevel() string {
	if x != nil {
		return x.Level
	}
	return ""
}

func (x *Image_Content) GetAlternativeText() string {
	if x != nil {
		return x.AlternativeText
	}
	return ""
}

type Rsp_F struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Q1 uint64 `protobuf:"varint,1,opt,name=q1,proto3" json:"q1,omitempty"`
	Q3 uint64 `protobuf:"varint,3,opt,name=q3,proto3" json:"q3,omitempty"`
	Q4 string `protobuf:"bytes,4,opt,name=q4,proto3" json:"q4,omitempty"`
	Q5 uint64 `protobuf:"varint,5,opt,name=q5,proto3" json:"q5,omitempty"`
}

func (x *Rsp_F) Reset() {
	*x = Rsp_F{}
	mi := &file_douyin_proto_msgTypes[154]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Rsp_F) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Rsp_F) ProtoMessage() {}

func (x *Rsp_F) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[154]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Rsp_F.ProtoReflect.Descriptor instead.
func (*Rsp_F) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{62, 0}
}

func (x *Rsp_F) GetQ1() uint64 {
	if x != nil {
		return x.Q1
	}
	return 0
}

func (x *Rsp_F) GetQ3() uint64 {
	if x != nil {
		return x.Q3
	}
	return 0
}

func (x *Rsp_F) GetQ4() string {
	if x != nil {
		return x.Q4
	}
	return ""
}

func (x *Rsp_F) GetQ5() uint64 {
	if x != nil {
		return x.Q5
	}
	return 0
}

type RoomRankMessage_RoomRank struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	User          *User  `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"`
	ScoreStr      string `protobuf:"bytes,2,opt,name=scoreStr,proto3" json:"scoreStr,omitempty"`
	ProfileHidden bool   `protobuf:"varint,3,opt,name=profileHidden,proto3" json:"profileHidden,omitempty"`
}

func (x *RoomRankMessage_RoomRank) Reset() {
	*x = RoomRankMessage_RoomRank{}
	mi := &file_douyin_proto_msgTypes[155]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RoomRankMessage_RoomRank) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RoomRankMessage_RoomRank) ProtoMessage() {}

func (x *RoomRankMessage_RoomRank) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[155]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RoomRankMessage_RoomRank.ProtoReflect.Descriptor instead.
func (*RoomRankMessage_RoomRank) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{72, 0}
}

func (x *RoomRankMessage_RoomRank) GetUser() *User {
	if x != nil {
		return x.User
	}
	return nil
}

func (x *RoomRankMessage_RoomRank) GetScoreStr() string {
	if x != nil {
		return x.ScoreStr
	}
	return ""
}

func (x *RoomRankMessage_RoomRank) GetProfileHidden() bool {
	if x != nil {
		return x.ProfileHidden
	}
	return false
}

type LinkMicAudienceKtvMessage_SongUniqueInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// song_id 字段，整型字符串（int64String）
	SongId string `protobuf:"bytes,1,opt,name=song_id,json=songId,proto3" json:"song_id,omitempty"`
	// user_id 字段，整型字符串（int64String）
	UserId string `protobuf:"bytes,2,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
	// song_type 字段，整型字符串（int64String）
	SongType string `protobuf:"bytes,3,opt,name=song_type,json=songType,proto3" json:"song_type,omitempty"`
	// is_public 字段，布尔类型
	IsPublic bool `protobuf:"varint,4,opt,name=is_public,json=isPublic,proto3" json:"is_public,omitempty"`
}

func (x *LinkMicAudienceKtvMessage_SongUniqueInfo) Reset() {
	*x = LinkMicAudienceKtvMessage_SongUniqueInfo{}
	mi := &file_douyin_proto_msgTypes[157]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *LinkMicAudienceKtvMessage_SongUniqueInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*LinkMicAudienceKtvMessage_SongUniqueInfo) ProtoMessage() {}

func (x *LinkMicAudienceKtvMessage_SongUniqueInfo) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[157]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use LinkMicAudienceKtvMessage_SongUniqueInfo.ProtoReflect.Descriptor instead.
func (*LinkMicAudienceKtvMessage_SongUniqueInfo) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{88, 0}
}

func (x *LinkMicAudienceKtvMessage_SongUniqueInfo) GetSongId() string {
	if x != nil {
		return x.SongId
	}
	return ""
}

func (x *LinkMicAudienceKtvMessage_SongUniqueInfo) GetUserId() string {
	if x != nil {
		return x.UserId
	}
	return ""
}

func (x *LinkMicAudienceKtvMessage_SongUniqueInfo) GetSongType() string {
	if x != nil {
		return x.SongType
	}
	return ""
}

func (x *LinkMicAudienceKtvMessage_SongUniqueInfo) GetIsPublic() bool {
	if x != nil {
		return x.IsPublic
	}
	return false
}

type KtvSongStruct_AudioInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// url 字段，字符串类型
	Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"`
	// song_patten 字段，整型字符串（int64String）
	SongPatten string `protobuf:"bytes,2,opt,name=song_patten,json=songPatten,proto3" json:"song_patten,omitempty"`
	// audio_id 字段，整型字符串（int64String）
	AudioId string `protobuf:"bytes,3,opt,name=audio_id,json=audioId,proto3" json:"audio_id,omitempty"`
	// volume_lufs 字段，双精度浮点数
	VolumeLufs float64 `protobuf:"fixed64,4,opt,name=volume_lufs,json=volumeLufs,proto3" json:"volume_lufs,omitempty"`
	// volume_peak 字段，双精度浮点数
	VolumePeak float64 `protobuf:"fixed64,5,opt,name=volume_peak,json=volumePeak,proto3" json:"volume_peak,omitempty"`
	// bpm 字段，双精度浮点数
	Bpm float64 `protobuf:"fixed64,6,opt,name=bpm,proto3" json:"bpm,omitempty"`
	// beats_point_url 字段，字符串类型
	BeatsPointUrl string `protobuf:"bytes,7,opt,name=beats_point_url,json=beatsPointUrl,proto3" json:"beats_point_url,omitempty"`
	// create_time 字段，整型字符串（int64String）
	CreateTime string `protobuf:"bytes,8,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
	// file_hash 字段，字符串类型
	FileHash string `protobuf:"bytes,9,opt,name=file_hash,json=fileHash,proto3" json:"file_hash,omitempty"`
}

func (x *KtvSongStruct_AudioInfo) Reset() {
	*x = KtvSongStruct_AudioInfo{}
	mi := &file_douyin_proto_msgTypes[159]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *KtvSongStruct_AudioInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*KtvSongStruct_AudioInfo) ProtoMessage() {}

func (x *KtvSongStruct_AudioInfo) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[159]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use KtvSongStruct_AudioInfo.ProtoReflect.Descriptor instead.
func (*KtvSongStruct_AudioInfo) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{90, 1}
}

func (x *KtvSongStruct_AudioInfo) GetUrl() string {
	if x != nil {
		return x.Url
	}
	return ""
}

func (x *KtvSongStruct_AudioInfo) GetSongPatten() string {
	if x != nil {
		return x.SongPatten
	}
	return ""
}

func (x *KtvSongStruct_AudioInfo) GetAudioId() string {
	if x != nil {
		return x.AudioId
	}
	return ""
}

func (x *KtvSongStruct_AudioInfo) GetVolumeLufs() float64 {
	if x != nil {
		return x.VolumeLufs
	}
	return 0
}

func (x *KtvSongStruct_AudioInfo) GetVolumePeak() float64 {
	if x != nil {
		return x.VolumePeak
	}
	return 0
}

func (x *KtvSongStruct_AudioInfo) GetBpm() float64 {
	if x != nil {
		return x.Bpm
	}
	return 0
}

func (x *KtvSongStruct_AudioInfo) GetBeatsPointUrl() string {
	if x != nil {
		return x.BeatsPointUrl
	}
	return ""
}

func (x *KtvSongStruct_AudioInfo) GetCreateTime() string {
	if x != nil {
		return x.CreateTime
	}
	return ""
}

func (x *KtvSongStruct_AudioInfo) GetFileHash() string {
	if x != nil {
		return x.FileHash
	}
	return ""
}

type KtvSongStruct_OrderInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// top_user 字段，是一个 UserInfo 消息类型
	TopUser *UserInfo `protobuf:"bytes,1,opt,name=top_user,json=topUser,proto3" json:"top_user,omitempty"`
	// score 字段，整型字符串（int64String）
	Score string `protobuf:"bytes,2,opt,name=score,proto3" json:"score,omitempty"`
	// order_count 字段，整型字符串（int64String）
	OrderCount string `protobuf:"bytes,3,opt,name=order_count,json=orderCount,proto3" json:"order_count,omitempty"`
	// has_added 字段，布尔类型
	HasAdded bool `protobuf:"varint,4,opt,name=has_added,json=hasAdded,proto3" json:"has_added,omitempty"`
}

func (x *KtvSongStruct_OrderInfo) Reset() {
	*x = KtvSongStruct_OrderInfo{}
	mi := &file_douyin_proto_msgTypes[160]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *KtvSongStruct_OrderInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*KtvSongStruct_OrderInfo) ProtoMessage() {}

func (x *KtvSongStruct_OrderInfo) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[160]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use KtvSongStruct_OrderInfo.ProtoReflect.Descriptor instead.
func (*KtvSongStruct_OrderInfo) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{90, 2}
}

func (x *KtvSongStruct_OrderInfo) GetTopUser() *UserInfo {
	if x != nil {
		return x.TopUser
	}
	return nil
}

func (x *KtvSongStruct_OrderInfo) GetScore() string {
	if x != nil {
		return x.Score
	}
	return ""
}

func (x *KtvSongStruct_OrderInfo) GetOrderCount() string {
	if x != nil {
		return x.OrderCount
	}
	return ""
}

func (x *KtvSongStruct_OrderInfo) GetHasAdded() bool {
	if x != nil {
		return x.HasAdded
	}
	return false
}

type KtvSongStruct_ChallengeInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// ktv_challenge_type 字段，整型（int32）
	KtvChallengeType int32 `protobuf:"varint,1,opt,name=ktv_challenge_type,json=ktvChallengeType,proto3" json:"ktv_challenge_type,omitempty"`
	// is_success 字段，布尔类型（bool）
	IsSuccess bool `protobuf:"varint,2,opt,name=is_success,json=isSuccess,proto3" json:"is_success,omitempty"`
	// score 字段，双精度浮点数（double）
	Score float64 `protobuf:"fixed64,3,opt,name=score,proto3" json:"score,omitempty"`
}

func (x *KtvSongStruct_ChallengeInfo) Reset() {
	*x = KtvSongStruct_ChallengeInfo{}
	mi := &file_douyin_proto_msgTypes[161]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *KtvSongStruct_ChallengeInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*KtvSongStruct_ChallengeInfo) ProtoMessage() {}

func (x *KtvSongStruct_ChallengeInfo) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[161]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use KtvSongStruct_ChallengeInfo.ProtoReflect.Descriptor instead.
func (*KtvSongStruct_ChallengeInfo) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{90, 3}
}

func (x *KtvSongStruct_ChallengeInfo) GetKtvChallengeType() int32 {
	if x != nil {
		return x.KtvChallengeType
	}
	return 0
}

func (x *KtvSongStruct_ChallengeInfo) GetIsSuccess() bool {
	if x != nil {
		return x.IsSuccess
	}
	return false
}

func (x *KtvSongStruct_ChallengeInfo) GetScore() float64 {
	if x != nil {
		return x.Score
	}
	return 0
}

type NotifyMessage_Extra struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// duration field, an int64 string
	Duration string `protobuf:"bytes,1,opt,name=duration,proto3" json:"duration,omitempty"`
	// background field, assuming it's a Background message
	Background *NotifyMessage_Background `protobuf:"bytes,2,opt,name=background,proto3" json:"background,omitempty"`
	// content_list field, assuming it's a ContentList message
	ContentList *NotifyMessage_ContentList `protobuf:"bytes,3,opt,name=content_list,json=contentList,proto3" json:"content_list,omitempty"`
	// need_gift_frequency field, a boolean
	NeedGiftFrequency bool `protobuf:"varint,6,opt,name=need_gift_frequency,json=needGiftFrequency,proto3" json:"need_gift_frequency,omitempty"`
	// params map field
	Params map[string]string `protobuf:"bytes,5,rep,name=params,proto3" json:"params,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}

func (x *NotifyMessage_Extra) Reset() {
	*x = NotifyMessage_Extra{}
	mi := &file_douyin_proto_msgTypes[163]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *NotifyMessage_Extra) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*NotifyMessage_Extra) ProtoMessage() {}

func (x *NotifyMessage_Extra) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[163]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use NotifyMessage_Extra.ProtoReflect.Descriptor instead.
func (*NotifyMessage_Extra) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{104, 0}
}

func (x *NotifyMessage_Extra) GetDuration() string {
	if x != nil {
		return x.Duration
	}
	return ""
}

func (x *NotifyMessage_Extra) GetBackground() *NotifyMessage_Background {
	if x != nil {
		return x.Background
	}
	return nil
}

func (x *NotifyMessage_Extra) GetContentList() *NotifyMessage_ContentList {
	if x != nil {
		return x.ContentList
	}
	return nil
}

func (x *NotifyMessage_Extra) GetNeedGiftFrequency() bool {
	if x != nil {
		return x.NeedGiftFrequency
	}
	return false
}

func (x *NotifyMessage_Extra) GetParams() map[string]string {
	if x != nil {
		return x.Params
	}
	return nil
}

type NotifyMessage_Background struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// width field, an int32
	Width int32 `protobuf:"varint,1,opt,name=width,proto3" json:"width,omitempty"`
	// height field, an int32
	Height int32 `protobuf:"varint,2,opt,name=height,proto3" json:"height,omitempty"`
	// url_list field, a repeated string
	UrlList []string `protobuf:"bytes,3,rep,name=url_list,json=urlList,proto3" json:"url_list,omitempty"`
	// uri field, a string
	Uri string `protobuf:"bytes,4,opt,name=uri,proto3" json:"uri,omitempty"`
}

func (x *NotifyMessage_Background) Reset() {
	*x = NotifyMessage_Background{}
	mi := &file_douyin_proto_msgTypes[164]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *NotifyMessage_Background) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*NotifyMessage_Background) ProtoMessage() {}

func (x *NotifyMessage_Background) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[164]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use NotifyMessage_Background.ProtoReflect.Descriptor instead.
func (*NotifyMessage_Background) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{104, 1}
}

func (x *NotifyMessage_Background) GetWidth() int32 {
	if x != nil {
		return x.Width
	}
	return 0
}

func (x *NotifyMessage_Background) GetHeight() int32 {
	if x != nil {
		return x.Height
	}
	return 0
}

func (x *NotifyMessage_Background) GetUrlList() []string {
	if x != nil {
		return x.UrlList
	}
	return nil
}

func (x *NotifyMessage_Background) GetUri() string {
	if x != nil {
		return x.Uri
	}
	return ""
}

type NotifyMessage_Content struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// 假设Content有id和text两个字段
	Content       string `protobuf:"bytes,1,opt,name=content,proto3" json:"content,omitempty"`
	NeedHighLight bool   `protobuf:"varint,2,opt,name=need_high_light,json=needHighLight,proto3" json:"need_high_light,omitempty"`
}

func (x *NotifyMessage_Content) Reset() {
	*x = NotifyMessage_Content{}
	mi := &file_douyin_proto_msgTypes[165]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *NotifyMessage_Content) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*NotifyMessage_Content) ProtoMessage() {}

func (x *NotifyMessage_Content) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[165]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use NotifyMessage_Content.ProtoReflect.Descriptor instead.
func (*NotifyMessage_Content) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{104, 2}
}

func (x *NotifyMessage_Content) GetContent() string {
	if x != nil {
		return x.Content
	}
	return ""
}

func (x *NotifyMessage_Content) GetNeedHighLight() bool {
	if x != nil {
		return x.NeedHighLight
	}
	return false
}

type NotifyMessage_ContentList struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Contents       []*NotifyMessage_Content `protobuf:"bytes,1,rep,name=contents,proto3" json:"contents,omitempty"`
	HighLightColor string                   `protobuf:"bytes,2,opt,name=high_light_color,json=highLightColor,proto3" json:"high_light_color,omitempty"`
}

func (x *NotifyMessage_ContentList) Reset() {
	*x = NotifyMessage_ContentList{}
	mi := &file_douyin_proto_msgTypes[166]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *NotifyMessage_ContentList) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*NotifyMessage_ContentList) ProtoMessage() {}

func (x *NotifyMessage_ContentList) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[166]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use NotifyMessage_ContentList.ProtoReflect.Descriptor instead.
func (*NotifyMessage_ContentList) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{104, 3}
}

func (x *NotifyMessage_ContentList) GetContents() []*NotifyMessage_Content {
	if x != nil {
		return x.Contents
	}
	return nil
}

func (x *NotifyMessage_ContentList) GetHighLightColor() string {
	if x != nil {
		return x.HighLightColor
	}
	return ""
}

type LuckyBoxMessage_ImgText struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Image *Image `protobuf:"bytes,1,opt,name=image,proto3" json:"image,omitempty"` // 使用webcast.data包中的Image消息类型
	Text  string `protobuf:"bytes,2,opt,name=text,proto3" json:"text,omitempty"`
}

func (x *LuckyBoxMessage_ImgText) Reset() {
	*x = LuckyBoxMessage_ImgText{}
	mi := &file_douyin_proto_msgTypes[168]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *LuckyBoxMessage_ImgText) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*LuckyBoxMessage_ImgText) ProtoMessage() {}

func (x *LuckyBoxMessage_ImgText) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[168]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use LuckyBoxMessage_ImgText.ProtoReflect.Descriptor instead.
func (*LuckyBoxMessage_ImgText) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{105, 0}
}

func (x *LuckyBoxMessage_ImgText) GetImage() *Image {
	if x != nil {
		return x.Image
	}
	return nil
}

func (x *LuckyBoxMessage_ImgText) GetText() string {
	if x != nil {
		return x.Text
	}
	return ""
}

type LuckyBoxMessage_BoxMeta struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	TitleDesc         string `protobuf:"bytes,1,opt,name=title_desc,json=titleDesc,proto3" json:"title_desc,omitempty"`                           // 标题描述
	ContentCountDesc  string `protobuf:"bytes,2,opt,name=content_count_desc,json=contentCountDesc,proto3" json:"content_count_desc,omitempty"`    // 内容数量描述
	ContentAmountDesc string `protobuf:"bytes,3,opt,name=content_amount_desc,json=contentAmountDesc,proto3" json:"content_amount_desc,omitempty"` // 内容金额描述
	AnimationDesc     string `protobuf:"bytes,4,opt,name=animation_desc,json=animationDesc,proto3" json:"animation_desc,omitempty"`               // 动画描述
	BeforeUnpackDesc  string `protobuf:"bytes,5,opt,name=before_unpack_desc,json=beforeUnpackDesc,proto3" json:"before_unpack_desc,omitempty"`    // 解包前的描述
	SuccessUnpackDesc string `protobuf:"bytes,6,opt,name=success_unpack_desc,json=successUnpackDesc,proto3" json:"success_unpack_desc,omitempty"` // 成功解包的描述
	FailUnpackDesc    string `protobuf:"bytes,7,opt,name=fail_unpack_desc,json=failUnpackDesc,proto3" json:"fail_unpack_desc,omitempty"`          // 解包失败的描述
	AdImage           *Image `protobuf:"bytes,8,opt,name=ad_image,json=adImage,proto3" json:"ad_image,omitempty"`                                 // 广告图像
	ImDesc            string `protobuf:"bytes,9,opt,name=im_desc,json=imDesc,proto3" json:"im_desc,omitempty"`                                    // IM描述
}

func (x *LuckyBoxMessage_BoxMeta) Reset() {
	*x = LuckyBoxMessage_BoxMeta{}
	mi := &file_douyin_proto_msgTypes[169]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *LuckyBoxMessage_BoxMeta) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*LuckyBoxMessage_BoxMeta) ProtoMessage() {}

func (x *LuckyBoxMessage_BoxMeta) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[169]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use LuckyBoxMessage_BoxMeta.ProtoReflect.Descriptor instead.
func (*LuckyBoxMessage_BoxMeta) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{105, 1}
}

func (x *LuckyBoxMessage_BoxMeta) GetTitleDesc() string {
	if x != nil {
		return x.TitleDesc
	}
	return ""
}

func (x *LuckyBoxMessage_BoxMeta) GetContentCountDesc() string {
	if x != nil {
		return x.ContentCountDesc
	}
	return ""
}

func (x *LuckyBoxMessage_BoxMeta) GetContentAmountDesc() string {
	if x != nil {
		return x.ContentAmountDesc
	}
	return ""
}

func (x *LuckyBoxMessage_BoxMeta) GetAnimationDesc() string {
	if x != nil {
		return x.AnimationDesc
	}
	return ""
}

func (x *LuckyBoxMessage_BoxMeta) GetBeforeUnpackDesc() string {
	if x != nil {
		return x.BeforeUnpackDesc
	}
	return ""
}

func (x *LuckyBoxMessage_BoxMeta) GetSuccessUnpackDesc() string {
	if x != nil {
		return x.SuccessUnpackDesc
	}
	return ""
}

func (x *LuckyBoxMessage_BoxMeta) GetFailUnpackDesc() string {
	if x != nil {
		return x.FailUnpackDesc
	}
	return ""
}

func (x *LuckyBoxMessage_BoxMeta) GetAdImage() *Image {
	if x != nil {
		return x.AdImage
	}
	return nil
}

func (x *LuckyBoxMessage_BoxMeta) GetImDesc() string {
	if x != nil {
		return x.ImDesc
	}
	return ""
}

type LuckyBoxMessage_Extra struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	CurrentRound int32             `protobuf:"varint,3,opt,name=current_round,json=currentRound,proto3" json:"current_round,omitempty"`                                                                            // 当前轮次
	Pct          int32             `protobuf:"varint,4,opt,name=pct,proto3" json:"pct,omitempty"`                                                                                                                  // 百分比
	RoundTarget  int64             `protobuf:"varint,5,opt,name=round_target,json=roundTarget,proto3" json:"round_target,omitempty"`                                                                               // 轮次目标
	AllDesc      map[string]string `protobuf:"bytes,1,rep,name=all_desc,json=allDesc,proto3" json:"all_desc,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`    // 所有描述的键值对映射
	AllImage     map[string]*Image `protobuf:"bytes,2,rep,name=all_image,json=allImage,proto3" json:"all_image,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // 所有图像的键值对映射
}

func (x *LuckyBoxMessage_Extra) Reset() {
	*x = LuckyBoxMessage_Extra{}
	mi := &file_douyin_proto_msgTypes[170]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *LuckyBoxMessage_Extra) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*LuckyBoxMessage_Extra) ProtoMessage() {}

func (x *LuckyBoxMessage_Extra) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[170]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use LuckyBoxMessage_Extra.ProtoReflect.Descriptor instead.
func (*LuckyBoxMessage_Extra) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{105, 2}
}

func (x *LuckyBoxMessage_Extra) GetCurrentRound() int32 {
	if x != nil {
		return x.CurrentRound
	}
	return 0
}

func (x *LuckyBoxMessage_Extra) GetPct() int32 {
	if x != nil {
		return x.Pct
	}
	return 0
}

func (x *LuckyBoxMessage_Extra) GetRoundTarget() int64 {
	if x != nil {
		return x.RoundTarget
	}
	return 0
}

func (x *LuckyBoxMessage_Extra) GetAllDesc() map[string]string {
	if x != nil {
		return x.AllDesc
	}
	return nil
}

func (x *LuckyBoxMessage_Extra) GetAllImage() map[string]*Image {
	if x != nil {
		return x.AllImage
	}
	return nil
}

// BottomCommentMsg消息类型，包含底部评论消息的内容
type LuckyBoxMessage_BottomCommentMsg struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Text       *Text  `protobuf:"bytes,1,opt,name=text,proto3" json:"text,omitempty"`                            // 文本内容
	Background *Image `protobuf:"bytes,2,opt,name=background,proto3" json:"background,omitempty"`                // 背景图像
	LeftIcon   *Image `protobuf:"bytes,3,opt,name=left_icon,json=leftIcon,proto3" json:"left_icon,omitempty"`    // 左侧图标
	RightIcon  *Image `protobuf:"bytes,4,opt,name=right_icon,json=rightIcon,proto3" json:"right_icon,omitempty"` // 右侧图标
}

func (x *LuckyBoxMessage_BottomCommentMsg) Reset() {
	*x = LuckyBoxMessage_BottomCommentMsg{}
	mi := &file_douyin_proto_msgTypes[171]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *LuckyBoxMessage_BottomCommentMsg) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*LuckyBoxMessage_BottomCommentMsg) ProtoMessage() {}

func (x *LuckyBoxMessage_BottomCommentMsg) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[171]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use LuckyBoxMessage_BottomCommentMsg.ProtoReflect.Descriptor instead.
func (*LuckyBoxMessage_BottomCommentMsg) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{105, 3}
}

func (x *LuckyBoxMessage_BottomCommentMsg) GetText() *Text {
	if x != nil {
		return x.Text
	}
	return nil
}

func (x *LuckyBoxMessage_BottomCommentMsg) GetBackground() *Image {
	if x != nil {
		return x.Background
	}
	return nil
}

func (x *LuckyBoxMessage_BottomCommentMsg) GetLeftIcon() *Image {
	if x != nil {
		return x.LeftIcon
	}
	return nil
}

func (x *LuckyBoxMessage_BottomCommentMsg) GetRightIcon() *Image {
	if x != nil {
		return x.RightIcon
	}
	return nil
}

type LuckyBoxMessage_Dress struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	DressId          string `protobuf:"bytes,1,opt,name=dress_id,json=dressId,proto3" json:"dress_id,omitempty"`                              // 装扮ID
	DressOfflineTime string `protobuf:"bytes,2,opt,name=dress_offline_time,json=dressOfflineTime,proto3" json:"dress_offline_time,omitempty"` // 装扮下线时间（int64字符串表示）
	JumpText         string `protobuf:"bytes,3,opt,name=jump_text,json=jumpText,proto3" json:"jump_text,omitempty"`                           // 跳转文本
	// 嵌套的映射类型，键为int64，值为字符串
	JumpSchemaToBox   map[int64]string `protobuf:"bytes,4,rep,name=jump_schema_to_box,json=jumpSchemaToBox,proto3" json:"jump_schema_to_box,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	JumpSchemaToDress map[int64]string `protobuf:"bytes,5,rep,name=jump_schema_to_dress,json=jumpSchemaToDress,proto3" json:"jump_schema_to_dress,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}

func (x *LuckyBoxMessage_Dress) Reset() {
	*x = LuckyBoxMessage_Dress{}
	mi := &file_douyin_proto_msgTypes[172]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *LuckyBoxMessage_Dress) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*LuckyBoxMessage_Dress) ProtoMessage() {}

func (x *LuckyBoxMessage_Dress) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[172]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use LuckyBoxMessage_Dress.ProtoReflect.Descriptor instead.
func (*LuckyBoxMessage_Dress) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{105, 4}
}

func (x *LuckyBoxMessage_Dress) GetDressId() string {
	if x != nil {
		return x.DressId
	}
	return ""
}

func (x *LuckyBoxMessage_Dress) GetDressOfflineTime() string {
	if x != nil {
		return x.DressOfflineTime
	}
	return ""
}

func (x *LuckyBoxMessage_Dress) GetJumpText() string {
	if x != nil {
		return x.JumpText
	}
	return ""
}

func (x *LuckyBoxMessage_Dress) GetJumpSchemaToBox() map[int64]string {
	if x != nil {
		return x.JumpSchemaToBox
	}
	return nil
}

func (x *LuckyBoxMessage_Dress) GetJumpSchemaToDress() map[int64]string {
	if x != nil {
		return x.JumpSchemaToDress
	}
	return nil
}

type ScreenChatMessage_OfficialCommentConfig struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Official bool `protobuf:"varint,1,opt,name=official,proto3" json:"official,omitempty"` // 是否官方评论
}

func (x *ScreenChatMessage_OfficialCommentConfig) Reset() {
	*x = ScreenChatMessage_OfficialCommentConfig{}
	mi := &file_douyin_proto_msgTypes[177]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ScreenChatMessage_OfficialCommentConfig) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ScreenChatMessage_OfficialCommentConfig) ProtoMessage() {}

func (x *ScreenChatMessage_OfficialCommentConfig) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[177]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ScreenChatMessage_OfficialCommentConfig.ProtoReflect.Descriptor instead.
func (*ScreenChatMessage_OfficialCommentConfig) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{107, 0}
}

func (x *ScreenChatMessage_OfficialCommentConfig) GetOfficial() bool {
	if x != nil {
		return x.Official
	}
	return false
}

// Background嵌套消息类型
type NotifyEffectMessage_Background struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	BackgroundImage  *Image `protobuf:"bytes,1,opt,name=background_image,json=backgroundImage,proto3" json:"background_image,omitempty"`
	BackgroundColor  string `protobuf:"bytes,10,opt,name=background_color,json=backgroundColor,proto3" json:"background_color,omitempty"`
	BackgroundEffect *Image `protobuf:"bytes,11,opt,name=background_effect,json=backgroundEffect,proto3" json:"background_effect,omitempty"`
}

func (x *NotifyEffectMessage_Background) Reset() {
	*x = NotifyEffectMessage_Background{}
	mi := &file_douyin_proto_msgTypes[179]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *NotifyEffectMessage_Background) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*NotifyEffectMessage_Background) ProtoMessage() {}

func (x *NotifyEffectMessage_Background) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[179]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use NotifyEffectMessage_Background.ProtoReflect.Descriptor instead.
func (*NotifyEffectMessage_Background) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{111, 1}
}

func (x *NotifyEffectMessage_Background) GetBackgroundImage() *Image {
	if x != nil {
		return x.BackgroundImage
	}
	return nil
}

func (x *NotifyEffectMessage_Background) GetBackgroundColor() string {
	if x != nil {
		return x.BackgroundColor
	}
	return ""
}

func (x *NotifyEffectMessage_Background) GetBackgroundEffect() *Image {
	if x != nil {
		return x.BackgroundEffect
	}
	return nil
}

// DynamicConfig嵌套消息类型
type NotifyEffectMessage_DynamicConfig struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	StayTime          int32 `protobuf:"varint,1,opt,name=stay_time,json=stayTime,proto3" json:"stay_time,omitempty"`
	MaxStayTime       int32 `protobuf:"varint,2,opt,name=max_stay_time,json=maxStayTime,proto3" json:"max_stay_time,omitempty"`
	DisplayEffectType int32 `protobuf:"varint,3,opt,name=display_effect_type,json=displayEffectType,proto3" json:"display_effect_type,omitempty"`
}

func (x *NotifyEffectMessage_DynamicConfig) Reset() {
	*x = NotifyEffectMessage_DynamicConfig{}
	mi := &file_douyin_proto_msgTypes[180]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *NotifyEffectMessage_DynamicConfig) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*NotifyEffectMessage_DynamicConfig) ProtoMessage() {}

func (x *NotifyEffectMessage_DynamicConfig) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[180]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use NotifyEffectMessage_DynamicConfig.ProtoReflect.Descriptor instead.
func (*NotifyEffectMessage_DynamicConfig) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{111, 2}
}

func (x *NotifyEffectMessage_DynamicConfig) GetStayTime() int32 {
	if x != nil {
		return x.StayTime
	}
	return 0
}

func (x *NotifyEffectMessage_DynamicConfig) GetMaxStayTime() int32 {
	if x != nil {
		return x.MaxStayTime
	}
	return 0
}

func (x *NotifyEffectMessage_DynamicConfig) GetDisplayEffectType() int32 {
	if x != nil {
		return x.DisplayEffectType
	}
	return 0
}

type NotifyEffectMessage_BindingGiftMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Msg    *GiftMessage `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg,omitempty"`       // 嵌套类型字段
	Common *Common      `protobuf:"bytes,2,opt,name=common,proto3" json:"common,omitempty"` // 嵌套类型字段
}

func (x *NotifyEffectMessage_BindingGiftMessage) Reset() {
	*x = NotifyEffectMessage_BindingGiftMessage{}
	mi := &file_douyin_proto_msgTypes[181]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *NotifyEffectMessage_BindingGiftMessage) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*NotifyEffectMessage_BindingGiftMessage) ProtoMessage() {}

func (x *NotifyEffectMessage_BindingGiftMessage) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[181]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use NotifyEffectMessage_BindingGiftMessage.ProtoReflect.Descriptor instead.
func (*NotifyEffectMessage_BindingGiftMessage) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{111, 3}
}

func (x *NotifyEffectMessage_BindingGiftMessage) GetMsg() *GiftMessage {
	if x != nil {
		return x.Msg
	}
	return nil
}

func (x *NotifyEffectMessage_BindingGiftMessage) GetCommon() *Common {
	if x != nil {
		return x.Common
	}
	return nil
}

// SceneConfig嵌套消息类型
type NotifyEffectMessage_SceneConfig struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Scene         string `protobuf:"bytes,1,opt,name=scene,proto3" json:"scene,omitempty"`
	Priority      string `protobuf:"bytes,2,opt,name=priority,proto3" json:"priority,omitempty"` // 假设优先级为string类型，如int64字符串表示
	NeedAggregate bool   `protobuf:"varint,3,opt,name=need_aggregate,json=needAggregate,proto3" json:"need_aggregate,omitempty"`
	AggregateNum  string `protobuf:"bytes,4,opt,name=aggregate_num,json=aggregateNum,proto3" json:"aggregate_num,omitempty"`    // 假设聚合数为string类型，如int64字符串表示
	AggregateText *Text  `protobuf:"bytes,5,opt,name=aggregate_text,json=aggregateText,proto3" json:"aggregate_text,omitempty"` // 假设Text也在相应的.proto文件中定义
	SubScene      string `protobuf:"bytes,6,opt,name=sub_scene,json=subScene,proto3" json:"sub_scene,omitempty"`
	MaxWaitTime   string `protobuf:"bytes,7,opt,name=max_wait_time,json=maxWaitTime,proto3" json:"max_wait_time,omitempty"` // 假设最大等待时间为string类型，如int64字符串表示
}

func (x *NotifyEffectMessage_SceneConfig) Reset() {
	*x = NotifyEffectMessage_SceneConfig{}
	mi := &file_douyin_proto_msgTypes[182]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *NotifyEffectMessage_SceneConfig) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*NotifyEffectMessage_SceneConfig) ProtoMessage() {}

func (x *NotifyEffectMessage_SceneConfig) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[182]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use NotifyEffectMessage_SceneConfig.ProtoReflect.Descriptor instead.
func (*NotifyEffectMessage_SceneConfig) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{111, 4}
}

func (x *NotifyEffectMessage_SceneConfig) GetScene() string {
	if x != nil {
		return x.Scene
	}
	return ""
}

func (x *NotifyEffectMessage_SceneConfig) GetPriority() string {
	if x != nil {
		return x.Priority
	}
	return ""
}

func (x *NotifyEffectMessage_SceneConfig) GetNeedAggregate() bool {
	if x != nil {
		return x.NeedAggregate
	}
	return false
}

func (x *NotifyEffectMessage_SceneConfig) GetAggregateNum() string {
	if x != nil {
		return x.AggregateNum
	}
	return ""
}

func (x *NotifyEffectMessage_SceneConfig) GetAggregateText() *Text {
	if x != nil {
		return x.AggregateText
	}
	return nil
}

func (x *NotifyEffectMessage_SceneConfig) GetSubScene() string {
	if x != nil {
		return x.SubScene
	}
	return ""
}

func (x *NotifyEffectMessage_SceneConfig) GetMaxWaitTime() string {
	if x != nil {
		return x.MaxWaitTime
	}
	return ""
}

type TempStateAreaReachMessage_Resource struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Name        string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	Icon        string `protobuf:"bytes,2,opt,name=icon,proto3" json:"icon,omitempty"`
	Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
	Extra       string `protobuf:"bytes,4,opt,name=extra,proto3" json:"extra,omitempty"`
}

func (x *TempStateAreaReachMessage_Resource) Reset() {
	*x = TempStateAreaReachMessage_Resource{}
	mi := &file_douyin_proto_msgTypes[183]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TempStateAreaReachMessage_Resource) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TempStateAreaReachMessage_Resource) ProtoMessage() {}

func (x *TempStateAreaReachMessage_Resource) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[183]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TempStateAreaReachMessage_Resource.ProtoReflect.Descriptor instead.
func (*TempStateAreaReachMessage_Resource) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{119, 0}
}

func (x *TempStateAreaReachMessage_Resource) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *TempStateAreaReachMessage_Resource) GetIcon() string {
	if x != nil {
		return x.Icon
	}
	return ""
}

func (x *TempStateAreaReachMessage_Resource) GetDescription() string {
	if x != nil {
		return x.Description
	}
	return ""
}

func (x *TempStateAreaReachMessage_Resource) GetExtra() string {
	if x != nil {
		return x.Extra
	}
	return ""
}

type GrowthTaskMessage_CurrentContribution struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	User      *User           `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"`                                                                                                                      // 关联User消息类型
	DeltaInfo map[int64]int64 `protobuf:"bytes,2,rep,name=delta_info,json=deltaInfo,proto3" json:"delta_info,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // 映射类型字段，存储贡献变化
}

func (x *GrowthTaskMessage_CurrentContribution) Reset() {
	*x = GrowthTaskMessage_CurrentContribution{}
	mi := &file_douyin_proto_msgTypes[184]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GrowthTaskMessage_CurrentContribution) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GrowthTaskMessage_CurrentContribution) ProtoMessage() {}

func (x *GrowthTaskMessage_CurrentContribution) ProtoReflect() protoreflect.Message {
	mi := &file_douyin_proto_msgTypes[184]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GrowthTaskMessage_CurrentContribution.ProtoReflect.Descriptor instead.
func (*GrowthTaskMessage_CurrentContribution) Descriptor() ([]byte, []int) {
	return file_douyin_proto_rawDescGZIP(), []int{126, 0}
}

func (x *GrowthTaskMessage_CurrentContribution) GetUser() *User {
	if x != nil {
		return x.User
	}
	return nil
}

func (x *GrowthTaskMessage_CurrentContribution) GetDeltaInfo() map[int64]int64 {
	if x != nil {
		return x.DeltaInfo
	}
	return nil
}

var File_douyin_proto protoreflect.FileDescriptor

var file_douyin_proto_rawDesc = []byte{
	0x0a, 0x0c, 0x64, 0x6f, 0x75, 0x79, 0x69, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf4,
	0x03, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x0c, 0x6d,
	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28,
	0x0b, 0x32, 0x08, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0c, 0x6d, 0x65, 0x73,
	0x73, 0x61, 0x67, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72,
	0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f,
	0x72, 0x12, 0x24, 0x0a, 0x0d, 0x66, 0x65, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76,
	0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x66, 0x65, 0x74, 0x63, 0x68, 0x49,
	0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x6e, 0x6f, 0x77, 0x18, 0x04,
	0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6e, 0x6f, 0x77, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x6e, 0x74,
	0x65, 0x72, 0x6e, 0x61, 0x6c, 0x45, 0x78, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b,
	0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x45, 0x78, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x66,
	0x65, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09,
	0x66, 0x65, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x72, 0x6f, 0x75,
	0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a,
	0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x50,
	0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x72, 0x6f, 0x75, 0x74,
	0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x68, 0x65, 0x61, 0x72, 0x74,
	0x62, 0x65, 0x61, 0x74, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01,
	0x28, 0x04, 0x52, 0x11, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x44, 0x75, 0x72,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x65, 0x64, 0x41, 0x63, 0x6b,
	0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6e, 0x65, 0x65, 0x64, 0x41, 0x63, 0x6b, 0x12,
	0x1e, 0x0a, 0x0a, 0x70, 0x75, 0x73, 0x68, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x0a, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x75, 0x73, 0x68, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12,
	0x1e, 0x0a, 0x0a, 0x6c, 0x69, 0x76, 0x65, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x0b, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x69, 0x76, 0x65, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x12,
	0x24, 0x0a, 0x0d, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4e, 0x6f, 0x4d, 0x6f, 0x72, 0x65,
	0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4e,
	0x6f, 0x4d, 0x6f, 0x72, 0x65, 0x1a, 0x3e, 0x0a, 0x10, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x50, 0x61,
	0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76,
	0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
	0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xeb, 0x01, 0x0a, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
	0x65, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79,
	0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c,
	0x6f, 0x61, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x73, 0x67, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x03, 0x52, 0x05, 0x6d, 0x73, 0x67, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x73, 0x67,
	0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x54,
	0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x05, 0x20,
	0x01, 0x28, 0x03, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x6e,
	0x65, 0x65, 0x64, 0x57, 0x72, 0x64, 0x73, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01,
	0x28, 0x08, 0x52, 0x0d, 0x6e, 0x65, 0x65, 0x64, 0x57, 0x72, 0x64, 0x73, 0x53, 0x74, 0x6f, 0x72,
	0x65, 0x12, 0x20, 0x0a, 0x0b, 0x77, 0x72, 0x64, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
	0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x77, 0x72, 0x64, 0x73, 0x56, 0x65, 0x72, 0x73,
	0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x77, 0x72, 0x64, 0x73, 0x53, 0x75, 0x62, 0x4b, 0x65,
	0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x77, 0x72, 0x64, 0x73, 0x53, 0x75, 0x62,
	0x4b, 0x65, 0x79, 0x22, 0x86, 0x03, 0x0a, 0x10, 0x45, 0x6d, 0x6f, 0x6a, 0x69, 0x43, 0x68, 0x61,
	0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d,
	0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f,
	0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x04, 0x75, 0x73, 0x65,
	0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04,
	0x75, 0x73, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6d, 0x6f, 0x6a, 0x69, 0x49, 0x64, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x65, 0x6d, 0x6f, 0x6a, 0x69, 0x49, 0x64, 0x12, 0x29,
	0x0a, 0x0c, 0x65, 0x6d, 0x6f, 0x6a, 0x69, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x04,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x52, 0x0c, 0x65, 0x6d, 0x6f,
	0x6a, 0x69, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x64, 0x65, 0x66,
	0x61, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e,
	0x74, 0x12, 0x30, 0x0a, 0x0f, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x49,
	0x6d, 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61,
	0x67, 0x65, 0x52, 0x0f, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x49, 0x6d,
	0x61, 0x67, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x49, 0x6e, 0x74, 0x65, 0x72,
	0x63, 0x6f, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x49,
	0x6e, 0x74, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x12, 0x32, 0x0a, 0x14, 0x69, 0x6e, 0x74, 0x65, 0x72,
	0x63, 0x6f, 0x6d, 0x48, 0x69, 0x64, 0x65, 0x55, 0x73, 0x65, 0x72, 0x43, 0x61, 0x72, 0x64, 0x18,
	0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x48,
	0x69, 0x64, 0x65, 0x55, 0x73, 0x65, 0x72, 0x43, 0x61, 0x72, 0x64, 0x12, 0x3f, 0x0a, 0x12, 0x70,
	0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x61, 0x72, 0x65, 0x61, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
	0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63,
	0x41, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x10, 0x70, 0x75, 0x62, 0x6c,
	0x69, 0x63, 0x41, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x22, 0xa7, 0x06, 0x0a,
	0x0b, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x06,
	0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x43,
	0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x19, 0x0a,
	0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x55, 0x73,
	0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74,
	0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65,
	0x6e, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x54, 0x6f, 0x53,
	0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x76, 0x69, 0x73,
	0x69, 0x62, 0x6c, 0x65, 0x54, 0x6f, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x30, 0x0a, 0x0f,
	0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x18,
	0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x0f, 0x62,
	0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x30,
	0x0a, 0x13, 0x66, 0x75, 0x6c, 0x6c, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x54, 0x65, 0x78, 0x74,
	0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x66, 0x75, 0x6c,
	0x6c, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x54, 0x65, 0x78, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72,
	0x12, 0x34, 0x0a, 0x11, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x49, 0x6d,
	0x61, 0x67, 0x65, 0x56, 0x32, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d,
	0x61, 0x67, 0x65, 0x52, 0x11, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x49,
	0x6d, 0x61, 0x67, 0x65, 0x56, 0x32, 0x12, 0x3d, 0x0a, 0x10, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63,
	0x41, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x11, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x41, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x6d,
	0x6d, 0x6f, 0x6e, 0x52, 0x10, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x41, 0x72, 0x65, 0x61, 0x43,
	0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x09, 0x67, 0x69, 0x66, 0x74, 0x49, 0x6d, 0x61,
	0x67, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65,
	0x52, 0x09, 0x67, 0x69, 0x66, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61,
	0x67, 0x72, 0x65, 0x65, 0x4d, 0x73, 0x67, 0x49, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x04, 0x52,
	0x0a, 0x61, 0x67, 0x72, 0x65, 0x65, 0x4d, 0x73, 0x67, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x70,
	0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x0c, 0x20, 0x01,
	0x28, 0x0d, 0x52, 0x0d, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x4c, 0x65, 0x76, 0x65,
	0x6c, 0x12, 0x46, 0x0a, 0x13, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x63, 0x61, 0x70, 0x65, 0x41, 0x72,
	0x65, 0x61, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14,
	0x2e, 0x4c, 0x61, 0x6e, 0x64, 0x73, 0x63, 0x61, 0x70, 0x65, 0x41, 0x72, 0x65, 0x61, 0x43, 0x6f,
	0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x13, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x63, 0x61, 0x70, 0x65, 0x41,
	0x72, 0x65, 0x61, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x76, 0x65,
	0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x65, 0x76,
	0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x65, 0x6e, 0x64, 0x52,
	0x65, 0x76, 0x69, 0x65, 0x77, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x73, 0x65, 0x6e,
	0x64, 0x52, 0x65, 0x76, 0x69, 0x65, 0x77, 0x12, 0x22, 0x0a, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x49,
	0x6e, 0x74, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x66,
	0x72, 0x6f, 0x6d, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x12, 0x32, 0x0a, 0x14, 0x69,
	0x6e, 0x74, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x48, 0x69, 0x64, 0x65, 0x55, 0x73, 0x65, 0x72, 0x43,
	0x61, 0x72, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x69, 0x6e, 0x74, 0x65, 0x72,
	0x63, 0x6f, 0x6d, 0x48, 0x69, 0x64, 0x65, 0x55, 0x73, 0x65, 0x72, 0x43, 0x61, 0x72, 0x64, 0x12,
	0x16, 0x0a, 0x06, 0x63, 0x68, 0x61, 0x74, 0x42, 0x79, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x06, 0x63, 0x68, 0x61, 0x74, 0x42, 0x79, 0x12, 0x36, 0x0a, 0x16, 0x69, 0x6e, 0x64, 0x69, 0x76,
	0x69, 0x64, 0x75, 0x61, 0x6c, 0x43, 0x68, 0x61, 0x74, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74,
	0x79, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x16, 0x69, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64,
	0x75, 0x61, 0x6c, 0x43, 0x68, 0x61, 0x74, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12,
	0x25, 0x0a, 0x0a, 0x72, 0x74, 0x66, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x16, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x52, 0x0a, 0x72, 0x74, 0x66, 0x43,
	0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0xe6, 0x01, 0x0a, 0x13, 0x4c, 0x61, 0x6e, 0x64, 0x73,
	0x63, 0x61, 0x70, 0x65, 0x41, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x1a,
	0x0a, 0x08, 0x73, 0x68, 0x6f, 0x77, 0x48, 0x65, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08,
	0x52, 0x08, 0x73, 0x68, 0x6f, 0x77, 0x48, 0x65, 0x61, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x68,
	0x6f, 0x77, 0x4e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08,
	0x52, 0x0c, 0x73, 0x68, 0x6f, 0x77, 0x4e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x24,
	0x0a, 0x0d, 0x73, 0x68, 0x6f, 0x77, 0x46, 0x6f, 0x6e, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x73, 0x68, 0x6f, 0x77, 0x46, 0x6f, 0x6e, 0x74, 0x43,
	0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x26, 0x0a, 0x0e, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x56, 0x61, 0x6c,
	0x75, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f,
	0x6c, 0x6f, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x13,
	0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x54, 0x61, 0x67, 0x73, 0x4c,
	0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x43, 0x6f, 0x6d, 0x6d,
	0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x54, 0x61, 0x67, 0x52, 0x13, 0x63, 0x6f, 0x6d, 0x6d,
	0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x54, 0x61, 0x67, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x22,
	0x9f, 0x04, 0x0a, 0x12, 0x52, 0x6f, 0x6f, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x71, 0x4d,
	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52,
	0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x3c, 0x0a, 0x09, 0x72, 0x61, 0x6e, 0x6b, 0x73,
	0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x52, 0x6f, 0x6f,
	0x6d, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x71, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x43,
	0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x6f, 0x72, 0x52, 0x09, 0x72, 0x61, 0x6e, 0x6b,
	0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x70,
	0x6f, 0x70, 0x53, 0x74, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x6f, 0x70,
	0x53, 0x74, 0x72, 0x12, 0x3c, 0x0a, 0x09, 0x73, 0x65, 0x61, 0x74, 0x73, 0x4c, 0x69, 0x73, 0x74,
	0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x52, 0x6f, 0x6f, 0x6d, 0x55, 0x73, 0x65,
	0x72, 0x53, 0x65, 0x71, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72,
	0x69, 0x62, 0x75, 0x74, 0x6f, 0x72, 0x52, 0x09, 0x73, 0x65, 0x61, 0x74, 0x73, 0x4c, 0x69, 0x73,
	0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x18,
	0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74,
	0x79, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x18, 0x07,
	0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x12,
	0x22, 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x53, 0x74, 0x72, 0x18,
	0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x55, 0x73, 0x65, 0x72,
	0x53, 0x74, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x18,
	0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x12,
	0x30, 0x0a, 0x13, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x55, 0x73, 0x65, 0x72, 0x46, 0x6f, 0x72,
	0x41, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6f, 0x6e,
	0x6c, 0x69, 0x6e, 0x65, 0x55, 0x73, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x41, 0x6e, 0x63, 0x68, 0x6f,
	0x72, 0x12, 0x2a, 0x0a, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x50, 0x76, 0x46, 0x6f, 0x72, 0x41,
	0x6e, 0x63, 0x68, 0x6f, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x74, 0x6f, 0x74,
	0x61, 0x6c, 0x50, 0x76, 0x46, 0x6f, 0x72, 0x41, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x12, 0x28, 0x0a,
	0x0f, 0x75, 0x70, 0x52, 0x69, 0x67, 0x68, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x53, 0x74, 0x72,
	0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x75, 0x70, 0x52, 0x69, 0x67, 0x68, 0x74, 0x53,
	0x74, 0x61, 0x74, 0x73, 0x53, 0x74, 0x72, 0x12, 0x38, 0x0a, 0x17, 0x75, 0x70, 0x52, 0x69, 0x67,
	0x68, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x53, 0x74, 0x72, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65,
	0x74, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x75, 0x70, 0x52, 0x69, 0x67, 0x68,
	0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x53, 0x74, 0x72, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74,
	0x65, 0x22, 0x65, 0x0a, 0x11, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x54, 0x65, 0x78, 0x74, 0x4d,
	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52,
	0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73,
	0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x65, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x05, 0x73, 0x63, 0x65, 0x6e, 0x65, 0x22, 0xe6, 0x01, 0x0a, 0x1d, 0x52, 0x6f, 0x6f,
	0x6d, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x71, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x43,
	0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63,
	0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65,
	0x12, 0x19, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05,
	0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x72,
	0x61, 0x6e, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x12,
	0x14, 0x0a, 0x05, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05,
	0x64, 0x65, 0x6c, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x73, 0x48, 0x69, 0x64, 0x64, 0x65,
	0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x48, 0x69, 0x64, 0x64, 0x65,
	0x6e, 0x12, 0x2a, 0x0a, 0x10, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69,
	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x63, 0x6f,
	0x72, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a,
	0x0c, 0x65, 0x78, 0x61, 0x63, 0x74, 0x6c, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x07, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x78, 0x61, 0x63, 0x74, 0x6c, 0x79, 0x53, 0x63, 0x6f, 0x72,
	0x65, 0x22, 0xff, 0x0c, 0x0a, 0x0b, 0x47, 0x69, 0x66, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
	0x65, 0x12, 0x1f, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x07, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d,
	0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x69, 0x66, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x03, 0x52, 0x06, 0x67, 0x69, 0x66, 0x74, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x66,
	0x61, 0x6e, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x66, 0x61, 0x6e, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74,
	0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x63,
	0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x67, 0x72, 0x6f, 0x75,
	0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74,
	0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65,
	0x70, 0x65, 0x61, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6d,
	0x62, 0x6f, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
	0x63, 0x6f, 0x6d, 0x62, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x04, 0x75, 0x73,
	0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52,
	0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x07, 0x74, 0x6f, 0x5f, 0x75, 0x73, 0x65, 0x72,
	0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x06, 0x74,
	0x6f, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x5f,
	0x65, 0x6e, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x72, 0x65, 0x70, 0x65, 0x61,
	0x74, 0x45, 0x6e, 0x64, 0x12, 0x2c, 0x0a, 0x0b, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x65, 0x66, 0x66,
	0x65, 0x63, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x54, 0x65, 0x78, 0x74,
	0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x52, 0x0a, 0x74, 0x65, 0x78, 0x74, 0x45, 0x66, 0x66, 0x65,
	0x63, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x0b,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x29, 0x0a,
	0x10, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x65, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x67, 0x69, 0x66, 0x74,
	0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x65, 0x54,
	0x61, 0x73, 0x6b, 0x67, 0x69, 0x66, 0x74, 0x73, 0x12, 0x31, 0x0a, 0x15, 0x72, 0x6f, 0x6f, 0x6d,
	0x5f, 0x66, 0x61, 0x6e, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e,
	0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x72, 0x6f, 0x6f, 0x6d, 0x46, 0x61, 0x6e,
	0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x08, 0x70,
	0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e,
	0x47, 0x69, 0x66, 0x74, 0x49, 0x4d, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x08,
	0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x1f, 0x0a, 0x04, 0x67, 0x69, 0x66, 0x74,
	0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x47, 0x69, 0x66, 0x74, 0x53, 0x74, 0x72,
	0x75, 0x63, 0x74, 0x52, 0x04, 0x67, 0x69, 0x66, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x6c, 0x6f, 0x67,
	0x5f, 0x69, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x6f, 0x67, 0x49, 0x64,
	0x12, 0x1b, 0x0a, 0x09, 0x73, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x11, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x6e, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3f, 0x0a,
	0x12, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x61, 0x72, 0x65, 0x61, 0x5f, 0x63, 0x6f, 0x6d,
	0x6d, 0x6f, 0x6e, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x50, 0x75, 0x62, 0x6c,
	0x69, 0x63, 0x41, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x10, 0x70, 0x75,
	0x62, 0x6c, 0x69, 0x63, 0x41, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x31,
	0x0a, 0x11, 0x74, 0x72, 0x61, 0x79, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x74,
	0x65, 0x78, 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x54, 0x65, 0x78, 0x74,
	0x52, 0x0f, 0x74, 0x72, 0x61, 0x79, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x54, 0x65, 0x78,
	0x74, 0x12, 0x34, 0x0a, 0x16, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x5f, 0x64, 0x69, 0x73, 0x70,
	0x6c, 0x61, 0x79, 0x5f, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x14, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79,
	0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x73, 0x12, 0x2a, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x79, 0x5f,
	0x69, 0x6e, 0x66, 0x6f, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x47, 0x69, 0x66,
	0x74, 0x54, 0x72, 0x61, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x74, 0x72, 0x61, 0x79, 0x49,
	0x6e, 0x66, 0x6f, 0x12, 0x46, 0x0a, 0x15, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x66, 0x66,
	0x65, 0x63, 0x74, 0x5f, 0x6d, 0x69, 0x78, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x18, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x13, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74,
	0x4d, 0x69, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x12, 0x61, 0x73, 0x73, 0x65, 0x74, 0x45, 0x66,
	0x66, 0x65, 0x63, 0x74, 0x4d, 0x69, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x28, 0x0a, 0x10, 0x64,
	0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x73, 0x65, 0x6c, 0x66, 0x18,
	0x19, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x46, 0x6f,
	0x72, 0x53, 0x65, 0x6c, 0x66, 0x12, 0x2c, 0x0a, 0x12, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x63,
	0x74, 0x5f, 0x67, 0x69, 0x66, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x1a, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x10, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x63, 0x74, 0x47, 0x69, 0x66, 0x74, 0x49,
	0x6e, 0x66, 0x6f, 0x12, 0x22, 0x0a, 0x0d, 0x64, 0x69, 0x79, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x5f,
	0x69, 0x6e, 0x66, 0x6f, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x79, 0x49,
	0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x22, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x5f, 0x61,
	0x73, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b,
	0x6d, 0x69, 0x6e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x53, 0x65, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x74,
	0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2c, 0x0a, 0x12,
	0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x67, 0x69, 0x66, 0x74, 0x5f, 0x73, 0x6f, 0x75, 0x72,
	0x63, 0x65, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74,
	0x47, 0x69, 0x66, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x30, 0x0a, 0x0b, 0x61, 0x6e,
	0x63, 0x68, 0x6f, 0x72, 0x5f, 0x67, 0x69, 0x66, 0x74, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x0f, 0x2e, 0x41, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x47, 0x69, 0x66, 0x74, 0x44, 0x61, 0x74, 0x61,
	0x52, 0x0a, 0x61, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x47, 0x69, 0x66, 0x74, 0x12, 0x1e, 0x0a, 0x0b,
	0x74, 0x6f, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x20, 0x20, 0x03, 0x28,
	0x09, 0x52, 0x09, 0x74, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x1b, 0x0a, 0x09,
	0x73, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x21, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x08, 0x73, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x66, 0x6f, 0x72,
	0x63, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x65, 0x66, 0x66, 0x65, 0x63,
	0x74, 0x73, 0x18, 0x22, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x44,
	0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x73, 0x12, 0x19, 0x0a,
	0x08, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x23, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x07, 0x74, 0x72, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x65, 0x66, 0x66, 0x65,
	0x63, 0x74, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x74, 0x73, 0x18, 0x24, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x0f, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x44, 0x69, 0x73, 0x70, 0x6c,
	0x61, 0x79, 0x54, 0x73, 0x12, 0x32, 0x0a, 0x0d, 0x73, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x6f, 0x67,
	0x65, 0x74, 0x68, 0x65, 0x72, 0x18, 0x25, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x53, 0x65,
	0x6e, 0x64, 0x54, 0x6f, 0x67, 0x65, 0x74, 0x68, 0x65, 0x72, 0x52, 0x0c, 0x73, 0x65, 0x6e, 0x64,
	0x54, 0x6f, 0x67, 0x65, 0x74, 0x68, 0x65, 0x72, 0x12, 0x2f, 0x0a, 0x0c, 0x65, 0x78, 0x74, 0x72,
	0x61, 0x5f, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x18, 0x26, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c,
	0x2e, 0x45, 0x78, 0x74, 0x72, 0x61, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x52, 0x0b, 0x65, 0x78,
	0x74, 0x72, 0x61, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x12, 0x30, 0x0a, 0x0d, 0x72, 0x6f, 0x6f,
	0x6d, 0x5f, 0x68, 0x6f, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x27, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x0c, 0x2e, 0x52, 0x6f, 0x6f, 0x6d, 0x48, 0x6f, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b,
	0x72, 0x6f, 0x6f, 0x6d, 0x48, 0x6f, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x0a, 0x0d, 0x47,
	0x69, 0x66, 0x74, 0x50, 0x6c, 0x61, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x28, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x0d, 0x47, 0x69, 0x66, 0x74, 0x50, 0x6c, 0x61, 0x79, 0x50, 0x61, 0x72, 0x61,
	0x6d, 0x12, 0x35, 0x0a, 0x17, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x5f, 0x73, 0x65, 0x6e, 0x64, 0x5f,
	0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x29, 0x20, 0x01,
	0x28, 0x05, 0x52, 0x14, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x65, 0x6e, 0x64, 0x45, 0x66, 0x66,
	0x65, 0x63, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x39, 0x0a, 0x10, 0x73, 0x65, 0x72, 0x69,
	0x65, 0x73, 0x5f, 0x67, 0x69, 0x66, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x2a, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x47,
	0x69, 0x66, 0x74, 0x52, 0x0e, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x47, 0x69, 0x66, 0x74, 0x44,
	0x61, 0x74, 0x61, 0x22, 0xcb, 0x02, 0x0a, 0x0e, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x50, 0x6c,
	0x61, 0x79, 0x47, 0x69, 0x66, 0x74, 0x12, 0x2c, 0x0a, 0x0b, 0x67, 0x69, 0x66, 0x74, 0x5f, 0x73,
	0x74, 0x72, 0x75, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x47, 0x69,
	0x66, 0x74, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x0a, 0x67, 0x69, 0x66, 0x74, 0x53, 0x74,
	0x72, 0x75, 0x63, 0x74, 0x12, 0x39, 0x0a, 0x10, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x5f, 0x74,
	0x72, 0x61, 0x79, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f,
	0x2e, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x54, 0x72, 0x61, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52,
	0x0e, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x54, 0x72, 0x61, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12,
	0x32, 0x0a, 0x0d, 0x73, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x6f, 0x67, 0x65, 0x74, 0x68, 0x65, 0x72,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x54, 0x6f, 0x67,
	0x65, 0x74, 0x68, 0x65, 0x72, 0x52, 0x0c, 0x73, 0x65, 0x6e, 0x64, 0x54, 0x6f, 0x67, 0x65, 0x74,
	0x68, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x0d, 0x64, 0x69, 0x79, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x5f,
	0x69, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x79, 0x49,
	0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x30, 0x0a, 0x0b, 0x61, 0x6e, 0x63, 0x68, 0x6f,
	0x72, 0x5f, 0x67, 0x69, 0x66, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x41,
	0x6e, 0x63, 0x68, 0x6f, 0x72, 0x47, 0x69, 0x66, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0a, 0x61,
	0x6e, 0x63, 0x68, 0x6f, 0x72, 0x47, 0x69, 0x66, 0x74, 0x12, 0x46, 0x0a, 0x15, 0x61, 0x73, 0x73,
	0x65, 0x74, 0x5f, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x5f, 0x6d, 0x69, 0x78, 0x5f, 0x69, 0x6e,
	0x66, 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74,
	0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x4d, 0x69, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x12, 0x61,
	0x73, 0x73, 0x65, 0x74, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x4d, 0x69, 0x78, 0x49, 0x6e, 0x66,
	0x6f, 0x22, 0x7c, 0x0a, 0x0e, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x54, 0x72, 0x61, 0x79, 0x49,
	0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12,
	0x25, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x09, 0x73, 0x74, 0x61,
	0x74, 0x69, 0x63, 0x49, 0x6d, 0x67, 0x12, 0x27, 0x0a, 0x0b, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69,
	0x63, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d,
	0x61, 0x67, 0x65, 0x52, 0x0a, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x49, 0x6d, 0x67, 0x22,
	0x86, 0x01, 0x0a, 0x0b, 0x52, 0x6f, 0x6f, 0x6d, 0x48, 0x6f, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12,
	0x2c, 0x0a, 0x12, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x68, 0x6f, 0x74, 0x5f, 0x73, 0x74, 0x72,
	0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x6c, 0x6f, 0x63,
	0x61, 0x6c, 0x48, 0x6f, 0x74, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x2a, 0x0a,
	0x11, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x61, 0x72, 0x65, 0x61, 0x5f, 0x6c, 0x65, 0x76,
	0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63,
	0x41, 0x72, 0x65, 0x61, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x69, 0x66,
	0x74, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x67,
	0x69, 0x66, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0x4b, 0x0a, 0x0b, 0x45, 0x78, 0x74, 0x72,
	0x61, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x73, 0x73, 0x65, 0x74,
	0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x73, 0x73, 0x65, 0x74,
	0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x66, 0x6f,
	0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61,
	0x79, 0x46, 0x6f, 0x72, 0x6d, 0x22, 0x58, 0x0a, 0x0c, 0x53, 0x65, 0x6e, 0x64, 0x54, 0x6f, 0x67,
	0x65, 0x74, 0x68, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74,
	0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74,
	0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22,
	0x5e, 0x0a, 0x12, 0x41, 0x73, 0x73, 0x65, 0x74, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x4d, 0x69,
	0x78, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x48, 0x0a, 0x16, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x5f,
	0x6d, 0x69, 0x78, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x73, 0x18,
	0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x4d, 0x69,
	0x78, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x13, 0x65, 0x66, 0x66, 0x65,
	0x63, 0x74, 0x4d, 0x69, 0x78, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x22,
	0x4b, 0x0a, 0x0e, 0x41, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x47, 0x69, 0x66, 0x74, 0x44, 0x61, 0x74,
	0x61, 0x12, 0x39, 0x0a, 0x15, 0x61, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x5f, 0x64, 0x69, 0x79, 0x5f,
	0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x12, 0x61, 0x6e, 0x63, 0x68, 0x6f, 0x72,
	0x44, 0x69, 0x79, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x49, 0x6d, 0x67, 0x22, 0x56, 0x0a, 0x12,
	0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x4d, 0x69, 0x78, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x6e,
	0x66, 0x6f, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4b, 0x65, 0x79, 0x12,
	0x23, 0x0a, 0x09, 0x6d, 0x69, 0x78, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x08, 0x6d, 0x69, 0x78, 0x49,
	0x6d, 0x61, 0x67, 0x65, 0x22, 0x82, 0x07, 0x0a, 0x0c, 0x47, 0x69, 0x66, 0x74, 0x54, 0x72, 0x61,
	0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x31, 0x0a, 0x11, 0x74, 0x72, 0x61, 0x79, 0x5f, 0x64, 0x69,
	0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x05, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x52, 0x0f, 0x74, 0x72, 0x61, 0x79, 0x44, 0x69, 0x73,
	0x70, 0x6c, 0x61, 0x79, 0x54, 0x65, 0x78, 0x74, 0x12, 0x2a, 0x0a, 0x0d, 0x74, 0x72, 0x61, 0x79,
	0x5f, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x79, 0x42, 0x61, 0x73,
	0x65, 0x49, 0x6d, 0x67, 0x12, 0x2a, 0x0a, 0x0d, 0x74, 0x72, 0x61, 0x79, 0x5f, 0x68, 0x65, 0x61,
	0x64, 0x5f, 0x69, 0x6d, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d,
	0x61, 0x67, 0x65, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x79, 0x48, 0x65, 0x61, 0x64, 0x49, 0x6d, 0x67,
	0x12, 0x2c, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x79, 0x5f, 0x72, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x69,
	0x6d, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65,
	0x52, 0x0c, 0x74, 0x72, 0x61, 0x79, 0x52, 0x69, 0x67, 0x68, 0x74, 0x49, 0x6d, 0x67, 0x12, 0x1d,
	0x0a, 0x0a, 0x74, 0x72, 0x61, 0x79, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x09, 0x74, 0x72, 0x61, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x30, 0x0a,
	0x10, 0x74, 0x72, 0x61, 0x79, 0x5f, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x69, 0x6d,
	0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52,
	0x0e, 0x74, 0x72, 0x61, 0x79, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x49, 0x6d, 0x67, 0x12,
	0x26, 0x0a, 0x0f, 0x74, 0x72, 0x61, 0x79, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x75,
	0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x79, 0x53, 0x63,
	0x68, 0x65, 0x6d, 0x61, 0x55, 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x79, 0x5f,
	0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x74, 0x72, 0x61, 0x79,
	0x54, 0x79, 0x70, 0x65, 0x12, 0x2f, 0x0a, 0x10, 0x74, 0x72, 0x61, 0x79, 0x5f, 0x62, 0x61, 0x73,
	0x65, 0x5f, 0x69, 0x6d, 0x67, 0x5f, 0x76, 0x32, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06,
	0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x79, 0x42, 0x61, 0x73, 0x65,
	0x49, 0x6d, 0x67, 0x56, 0x32, 0x12, 0x31, 0x0a, 0x11, 0x74, 0x72, 0x61, 0x79, 0x5f, 0x72, 0x69,
	0x67, 0x68, 0x74, 0x5f, 0x69, 0x6d, 0x67, 0x5f, 0x76, 0x32, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x0e, 0x74, 0x72, 0x61, 0x79, 0x52, 0x69,
	0x67, 0x68, 0x74, 0x49, 0x6d, 0x67, 0x56, 0x32, 0x12, 0x24, 0x0a, 0x0e, 0x75, 0x73, 0x65, 0x5f,
	0x68, 0x69, 0x67, 0x68, 0x5f, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08,
	0x52, 0x0c, 0x75, 0x73, 0x65, 0x48, 0x69, 0x67, 0x68, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x1a,
	0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f,
	0x61, 0x73, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x61, 0x73, 0x74,
	0x12, 0x26, 0x0a, 0x0f, 0x74, 0x72, 0x61, 0x79, 0x5f, 0x73, 0x6c, 0x69, 0x64, 0x65, 0x5f, 0x72,
	0x61, 0x74, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x79, 0x53,
	0x6c, 0x69, 0x64, 0x65, 0x52, 0x61, 0x74, 0x65, 0x12, 0x36, 0x0a, 0x0f, 0x74, 0x72, 0x61, 0x79,
	0x5f, 0x70, 0x72, 0x65, 0x5f, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x0e, 0x2e, 0x54, 0x72, 0x61, 0x79, 0x50, 0x72, 0x65, 0x45, 0x66, 0x66, 0x65, 0x63,
	0x74, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x79, 0x50, 0x72, 0x65, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74,
	0x12, 0x39, 0x0a, 0x10, 0x74, 0x72, 0x61, 0x79, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x65, 0x66,
	0x66, 0x65, 0x63, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x54, 0x72, 0x61,
	0x79, 0x50, 0x6f, 0x73, 0x74, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x52, 0x0e, 0x74, 0x72, 0x61,
	0x79, 0x50, 0x6f, 0x73, 0x74, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x6f,
	0x72, 0x69, 0x67, 0x69, 0x6e, 0x5f, 0x67, 0x69, 0x66, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x11, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x47, 0x69, 0x66, 0x74, 0x49,
	0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x75, 0x66, 0x66, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18,
	0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x75, 0x66, 0x66, 0x4c, 0x65, 0x76, 0x65, 0x6c,
	0x12, 0x2a, 0x0a, 0x11, 0x74, 0x6f, 0x6f, 0x6c, 0x62, 0x61, 0x72, 0x5f, 0x63, 0x61, 0x72, 0x64,
	0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x74, 0x6f, 0x6f,
	0x6c, 0x62, 0x61, 0x72, 0x43, 0x61, 0x72, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x12,
	0x74, 0x72, 0x61, 0x79, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x77, 0x65, 0x62, 0x70, 0x5f, 0x69,
	0x6d, 0x67, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65,
	0x52, 0x0f, 0x74, 0x72, 0x61, 0x79, 0x42, 0x61, 0x73, 0x65, 0x57, 0x65, 0x62, 0x70, 0x49, 0x6d,
	0x67, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x72, 0x61, 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f,
	0x6d, 0x6f, 0x64, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x79,
	0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0xc1, 0x02, 0x0a, 0x0e, 0x54, 0x72,
	0x61, 0x79, 0x50, 0x6f, 0x73, 0x74, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x12, 0x2e, 0x0a, 0x0f,
	0x70, 0x6f, 0x73, 0x74, 0x5f, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x6d, 0x67, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x0d, 0x70,
	0x6f, 0x73, 0x74, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x49, 0x6d, 0x67, 0x12, 0x1f, 0x0a, 0x0b,
	0x70, 0x6f, 0x73, 0x74, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x23, 0x0a,
	0x0d, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x6f, 0x73, 0x74, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x12, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x65, 0x66, 0x66, 0x65, 0x63,
	0x74, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10,
	0x70, 0x6f, 0x73, 0x74, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65,
	0x12, 0x49, 0x0a, 0x0e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x69,
	0x6e, 0x67, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x54, 0x72, 0x61, 0x79, 0x50,
	0x6f, 0x73, 0x74, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54,
	0x72, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x65, 0x76,
	0x65, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x1a, 0x40, 0x0a, 0x12, 0x45,
	0x76, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x74, 0x72,
	0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
	0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x92, 0x02,
	0x0a, 0x0d, 0x54, 0x72, 0x61, 0x79, 0x50, 0x72, 0x65, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x12,
	0x2c, 0x0a, 0x0e, 0x70, 0x72, 0x65, 0x5f, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x6d,
	0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52,
	0x0c, 0x70, 0x72, 0x65, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x49, 0x6d, 0x67, 0x12, 0x26, 0x0a,
	0x0f, 0x74, 0x72, 0x61, 0x79, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x79, 0x53, 0x74, 0x61, 0x72,
	0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x79, 0x5f, 0x72, 0x69,
	0x70, 0x70, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61,
	0x67, 0x65, 0x52, 0x0a, 0x74, 0x72, 0x61, 0x79, 0x52, 0x69, 0x70, 0x70, 0x6c, 0x65, 0x12, 0x1d,
	0x0a, 0x0a, 0x70, 0x72, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x04, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x21, 0x0a,
	0x0c, 0x70, 0x72, 0x65, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x12, 0x2a, 0x0a, 0x11, 0x70, 0x72, 0x65, 0x5f, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x5f, 0x73,
	0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x70, 0x72, 0x65,
	0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05,
	0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x78, 0x74,
	0x72, 0x61, 0x22, 0xd8, 0x04, 0x0a, 0x0a, 0x47, 0x69, 0x66, 0x74, 0x53, 0x74, 0x72, 0x75, 0x63,
	0x74, 0x12, 0x1c, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12,
	0x1a, 0x0a, 0x08, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x08, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6e,
	0x6f, 0x74, 0x69, 0x66, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6e, 0x6f, 0x74,
	0x69, 0x66, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12,
	0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12,
	0x1e, 0x0a, 0x0a, 0x66, 0x6f, 0x72, 0x4c, 0x69, 0x6e, 0x6b, 0x6d, 0x69, 0x63, 0x18, 0x07, 0x20,
	0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x6f, 0x72, 0x4c, 0x69, 0x6e, 0x6b, 0x6d, 0x69, 0x63, 0x12,
	0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6f, 0x64, 0x6c, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52,
	0x06, 0x64, 0x6f, 0x6f, 0x64, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x66, 0x6f, 0x72, 0x46, 0x61,
	0x6e, 0x73, 0x63, 0x6c, 0x75, 0x62, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x66, 0x6f,
	0x72, 0x46, 0x61, 0x6e, 0x73, 0x63, 0x6c, 0x75, 0x62, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x6d,
	0x62, 0x6f, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x63, 0x6f, 0x6d, 0x62, 0x6f, 0x12,
	0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x74,
	0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x64, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x43, 0x6f,
	0x75, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x64, 0x69, 0x61, 0x6d, 0x6f,
	0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x69, 0x73, 0x44, 0x69, 0x73,
	0x70, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x4f, 0x6e, 0x50, 0x61, 0x6e, 0x65, 0x6c, 0x18, 0x0d, 0x20,
	0x01, 0x28, 0x08, 0x52, 0x12, 0x69, 0x73, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x64,
	0x4f, 0x6e, 0x50, 0x61, 0x6e, 0x65, 0x6c, 0x12, 0x28, 0x0a, 0x0f, 0x70, 0x72, 0x69, 0x6d, 0x61,
	0x72, 0x79, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x49, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x04,
	0x52, 0x0f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x49,
	0x64, 0x12, 0x2c, 0x0a, 0x0d, 0x67, 0x69, 0x66, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x49, 0x63,
	0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65,
	0x52, 0x0d, 0x67, 0x69, 0x66, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x49, 0x63, 0x6f, 0x6e, 0x12,
	0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
	0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x11, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x6d,
	0x61, 0x6e, 0x75, 0x61, 0x6c, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x61, 0x6e,
	0x75, 0x61, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x6f, 0x72, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d,
	0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x6f, 0x72, 0x43, 0x75, 0x73, 0x74, 0x6f,
	0x6d, 0x12, 0x1a, 0x0a, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x1e, 0x0a,
	0x0a, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28,
	0x0d, 0x52, 0x0a, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x22, 0x82, 0x01,
	0x0a, 0x0e, 0x47, 0x69, 0x66, 0x74, 0x49, 0x4d, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79,
	0x12, 0x26, 0x0a, 0x0e, 0x71, 0x75, 0x65, 0x75, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x73, 0x4c, 0x69,
	0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x0e, 0x71, 0x75, 0x65, 0x75, 0x65, 0x53,
	0x69, 0x7a, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x73, 0x65, 0x6c, 0x66,
	0x51, 0x75, 0x65, 0x75, 0x65, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x04, 0x52, 0x11, 0x73, 0x65, 0x6c, 0x66, 0x51, 0x75, 0x65, 0x75, 0x65, 0x50, 0x72,
	0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69,
	0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69,
	0x74, 0x79, 0x22, 0x6c, 0x0a, 0x0a, 0x54, 0x65, 0x78, 0x74, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74,
	0x12, 0x2d, 0x0a, 0x08, 0x70, 0x6f, 0x72, 0x74, 0x72, 0x61, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x11, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x44,
	0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x08, 0x70, 0x6f, 0x72, 0x74, 0x72, 0x61, 0x69, 0x74, 0x12,
	0x2f, 0x0a, 0x09, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x63, 0x61, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x11, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x44,
	0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x09, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x63, 0x61, 0x70, 0x65,
	0x22, 0xb7, 0x03, 0x0a, 0x10, 0x54, 0x65, 0x78, 0x74, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x44,
	0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x19, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74,
	0x12, 0x22, 0x0a, 0x0c, 0x74, 0x65, 0x78, 0x74, 0x46, 0x6f, 0x6e, 0x74, 0x53, 0x69, 0x7a, 0x65,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x74, 0x65, 0x78, 0x74, 0x46, 0x6f, 0x6e, 0x74,
	0x53, 0x69, 0x7a, 0x65, 0x12, 0x26, 0x0a, 0x0a, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75,
	0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65,
	0x52, 0x0a, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05,
	0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61,
	0x72, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05,
	0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0c,
	0x0a, 0x01, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x01, 0x78, 0x12, 0x0c, 0x0a, 0x01,
	0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x01, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x69,
	0x64, 0x74, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68,
	0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d,
	0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x68, 0x61, 0x64,
	0x6f, 0x77, 0x44, 0x78, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x73, 0x68, 0x61, 0x64,
	0x6f, 0x77, 0x44, 0x78, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x44, 0x79,
	0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x44, 0x79,
	0x12, 0x22, 0x0a, 0x0c, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x52, 0x61, 0x64, 0x69, 0x75, 0x73,
	0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x52, 0x61,
	0x64, 0x69, 0x75, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x43, 0x6f,
	0x6c, 0x6f, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x68, 0x61, 0x64, 0x6f,
	0x77, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65,
	0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x74, 0x72,
	0x6f, 0x6b, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x74, 0x72, 0x6f,
	0x6b, 0x65, 0x57, 0x69, 0x64, 0x74, 0x68, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x73,
	0x74, 0x72, 0x6f, 0x6b, 0x65, 0x57, 0x69, 0x64, 0x74, 0x68, 0x22, 0x91, 0x0d, 0x0a, 0x0d, 0x4d,
	0x65, 0x6d, 0x62, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x06,
	0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x43,
	0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x19, 0x0a,
	0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x55, 0x73,
	0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x65, 0x6d, 0x62,
	0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b,
	0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x08, 0x6f,
	0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e,
	0x55, 0x73, 0x65, 0x72, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x25,
	0x0a, 0x0f, 0x69, 0x73, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x6f, 0x5f, 0x61, 0x64, 0x6d, 0x69,
	0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x73, 0x53, 0x65, 0x74, 0x54, 0x6f,
	0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x74, 0x6f, 0x70, 0x5f,
	0x75, 0x73, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x54, 0x6f,
	0x70, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x61, 0x6e, 0x6b, 0x5f, 0x73, 0x63,
	0x6f, 0x72, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x72, 0x61, 0x6e, 0x6b, 0x53,
	0x63, 0x6f, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x0b, 0x74, 0x6f, 0x70, 0x5f, 0x75, 0x73, 0x65, 0x72,
	0x5f, 0x6e, 0x6f, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x6f, 0x70, 0x55, 0x73,
	0x65, 0x72, 0x4e, 0x6f, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x74, 0x79,
	0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x54,
	0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20,
	0x01, 0x28, 0x03, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x12, 0x61,
	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f,
	0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44,
	0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73,
	0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65,
	0x72, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x0d, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x6f,
	0x6e, 0x66, 0x69, 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x45, 0x66, 0x66,
	0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0c, 0x65, 0x66, 0x66, 0x65, 0x63,
	0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x6f, 0x70, 0x5f, 0x73,
	0x74, 0x72, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x6f, 0x70, 0x53, 0x74, 0x72,
	0x12, 0x3d, 0x0a, 0x13, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74,
	0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e,
	0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x11, 0x65, 0x6e,
	0x74, 0x65, 0x72, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12,
	0x31, 0x0a, 0x10, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x69, 0x6d,
	0x61, 0x67, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67,
	0x65, 0x52, 0x0f, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x49, 0x6d, 0x61,
	0x67, 0x65, 0x12, 0x36, 0x0a, 0x13, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64,
	0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x76, 0x32, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x11, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f,
	0x75, 0x6e, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x56, 0x32, 0x12, 0x35, 0x0a, 0x13, 0x61, 0x6e,
	0x63, 0x68, 0x6f, 0x72, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x74, 0x65, 0x78,
	0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x52, 0x11,
	0x61, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x54, 0x65, 0x78,
	0x74, 0x12, 0x3f, 0x0a, 0x12, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x61, 0x72, 0x65, 0x61,
	0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e,
	0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x41, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e,
	0x52, 0x10, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x41, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x6d, 0x6d,
	0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x13, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x65, 0x6e, 0x74, 0x65, 0x72,
	0x5f, 0x74, 0x69, 0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x03, 0x52,
	0x10, 0x75, 0x73, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x54, 0x69, 0x70, 0x54, 0x79, 0x70,
	0x65, 0x12, 0x31, 0x0a, 0x15, 0x61, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x5f, 0x65, 0x6e, 0x74, 0x65,
	0x72, 0x5f, 0x74, 0x69, 0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x03,
	0x52, 0x12, 0x61, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x54, 0x69, 0x70,
	0x54, 0x79, 0x70, 0x65, 0x12, 0x58, 0x0a, 0x18, 0x70, 0x69, 0x63, 0x6f, 0x5f, 0x65, 0x6e, 0x74,
	0x65, 0x72, 0x5f, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,
	0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4d,
	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x50, 0x69, 0x63, 0x6f, 0x45, 0x66, 0x66, 0x65, 0x63,
	0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x15, 0x70, 0x69, 0x63, 0x6f, 0x45, 0x6e, 0x74,
	0x65, 0x72, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x42,
	0x0a, 0x0c, 0x62, 0x75, 0x72, 0x69, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x16,
	0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4d, 0x65, 0x73,
	0x73, 0x61, 0x67, 0x65, 0x2e, 0x42, 0x75, 0x72, 0x69, 0x65, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74,
	0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x62, 0x75, 0x72, 0x69, 0x65, 0x64, 0x50, 0x6f, 0x69,
	0x6e, 0x74, 0x12, 0x67, 0x0a, 0x19, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76,
	0x65, 0x5f, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18,
	0x17, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4d, 0x65,
	0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76,
	0x65, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74,
	0x72, 0x79, 0x52, 0x17, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x45,
	0x66, 0x66, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x3e, 0x0a, 0x10, 0x42,
	0x75, 0x72, 0x69, 0x65, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
	0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65,
	0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x59, 0x0a, 0x1c, 0x41,
	0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74,
	0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
	0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x23, 0x0a,
	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x45,
	0x66, 0x66, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x05, 0x76, 0x61, 0x6c,
	0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x85, 0x03, 0x0a, 0x10, 0x50, 0x69, 0x63, 0x6f, 0x45,
	0x66, 0x66, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x74,
	0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12,
	0x1a, 0x0a, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e,
	0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x04, 0x74,
	0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x54, 0x65, 0x78, 0x74,
	0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x23, 0x0a, 0x09, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x69,
	0x63, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67,
	0x65, 0x52, 0x08, 0x74, 0x65, 0x78, 0x74, 0x49, 0x63, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x73,
	0x74, 0x61, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08,
	0x73, 0x74, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x05, 0x62, 0x61, 0x64, 0x67,
	0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52,
	0x05, 0x62, 0x61, 0x64, 0x67, 0x65, 0x12, 0x2f, 0x0a, 0x14, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72,
	0x5f, 0x61, 0x6e, 0x69, 0x6d, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x07,
	0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x69, 0x6d,
	0x41, 0x73, 0x73, 0x65, 0x74, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x64, 0x72, 0x65, 0x73, 0x73,
	0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x72, 0x65, 0x73, 0x73,
	0x49, 0x64, 0x12, 0x40, 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x08, 0x20, 0x03, 0x28,
	0x0b, 0x32, 0x2a, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
	0x65, 0x2e, 0x50, 0x69, 0x63, 0x6f, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66,
	0x69, 0x67, 0x2e, 0x45, 0x78, 0x74, 0x72, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x65,
	0x78, 0x74, 0x72, 0x61, 0x1a, 0x38, 0x0a, 0x0a, 0x45, 0x78, 0x74, 0x72, 0x61, 0x45, 0x6e, 0x74,
	0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xc2,
	0x06, 0x0a, 0x10, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x41, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x6d,
	0x6d, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6c, 0x61, 0x62, 0x65,
	0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52,
	0x09, 0x75, 0x73, 0x65, 0x72, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x2f, 0x0a, 0x14, 0x75, 0x73,
	0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x6e, 0x5f, 0x72, 0x6f,
	0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x75, 0x73, 0x65, 0x72, 0x43, 0x6f,
	0x6e, 0x73, 0x75, 0x6d, 0x65, 0x49, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x12, 0x39, 0x0a, 0x1a, 0x75,
	0x73, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x6e, 0x64, 0x5f, 0x67, 0x69, 0x66, 0x74, 0x5f, 0x63, 0x6e,
	0x74, 0x5f, 0x69, 0x6e, 0x5f, 0x72, 0x6f, 0x6f, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x15, 0x75, 0x73, 0x65, 0x72, 0x53, 0x65, 0x6e, 0x64, 0x47, 0x69, 0x66, 0x74, 0x43, 0x6e, 0x74,
	0x49, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x12, 0x2f, 0x0a, 0x13, 0x69, 0x6e, 0x64, 0x69, 0x76, 0x69,
	0x64, 0x75, 0x61, 0x6c, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x12, 0x69, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x50,
	0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x75, 0x70, 0x70, 0x6f,
	0x72, 0x74, 0x5f, 0x70, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x75,
	0x70, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x69, 0x6e, 0x12, 0x2c, 0x0a, 0x0b, 0x73, 0x75, 0x66, 0x66,
	0x69, 0x78, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e,
	0x53, 0x75, 0x66, 0x66, 0x69, 0x78, 0x54, 0x65, 0x78, 0x74, 0x52, 0x0a, 0x73, 0x75, 0x66, 0x66,
	0x69, 0x78, 0x54, 0x65, 0x78, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x6d, 0x5f, 0x61, 0x63, 0x74,
	0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x69, 0x6d, 0x41, 0x63, 0x74,
	0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x11, 0x66, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e,
	0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10,
	0x66, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65,
	0x12, 0x31, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x18, 0x0a,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79,
	0x52, 0x65, 0x73, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x52,
	0x65, 0x73, 0x70, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72,
	0x65, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x73, 0x46, 0x65, 0x61, 0x74,
	0x75, 0x72, 0x65, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x6e, 0x65, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x6c,
	0x74, 0x65, 0x72, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28,
	0x08, 0x52, 0x11, 0x6e, 0x65, 0x65, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x44, 0x69, 0x73,
	0x70, 0x6c, 0x61, 0x79, 0x12, 0x6d, 0x0a, 0x1a, 0x69, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75,
	0x61, 0x6c, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x5f, 0x72, 0x65, 0x73, 0x75,
	0x6c, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69,
	0x63, 0x41, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x49, 0x6e, 0x64, 0x69,
	0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, 0x65,
	0x73, 0x75, 0x6c, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x18, 0x69, 0x6e, 0x64, 0x69, 0x76,
	0x69, 0x64, 0x75, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, 0x65, 0x73,
	0x75, 0x6c, 0x74, 0x12, 0x4e, 0x0a, 0x0f, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x5f,
	0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x50,
	0x75, 0x62, 0x6c, 0x69, 0x63, 0x41, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e,
	0x54, 0x72, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e,
	0x74, 0x72, 0x79, 0x52, 0x0e, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x72,
	0x61, 0x6d, 0x73, 0x1a, 0x4b, 0x0a, 0x1d, 0x49, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61,
	0x6c, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x45,
	0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
	0x1a, 0x41, 0x0a, 0x13, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x72, 0x61,
	0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
	0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
	0x02, 0x38, 0x01, 0x22, 0x42, 0x0a, 0x0a, 0x53, 0x75, 0x66, 0x66, 0x69, 0x78, 0x54, 0x65, 0x78,
	0x74, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x69, 0x7a, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x04, 0x52, 0x07, 0x62, 0x69, 0x7a, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x04,
	0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x54, 0x65, 0x78,
	0x74, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x22, 0xbf, 0x01, 0x0a, 0x11, 0x43, 0x68, 0x61, 0x74,
	0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x73, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x20, 0x0a,
	0x0c, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x5f, 0x6d, 0x73, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x04, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x4d, 0x73, 0x67, 0x49, 0x64, 0x12,
	0x19, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x04, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0a, 0x72, 0x65,
	0x70, 0x6c, 0x79, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05,
	0x2e, 0x54, 0x65, 0x78, 0x74, 0x52, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x54, 0x65, 0x78, 0x74,
	0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x04, 0x20,
	0x01, 0x28, 0x04, 0x52, 0x08, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x55, 0x69, 0x64, 0x12, 0x2a, 0x0a,
	0x11, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x5f, 0x77, 0x65, 0x62, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x75,
	0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x57,
	0x65, 0x62, 0x63, 0x61, 0x73, 0x74, 0x55, 0x69, 0x64, 0x22, 0x85, 0x07, 0x0a, 0x0c, 0x45, 0x66,
	0x66, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79,
	0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a,
	0x0a, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49,
	0x6d, 0x61, 0x67, 0x65, 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x76,
	0x61, 0x74, 0x61, 0x72, 0x50, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x61,
	0x76, 0x61, 0x74, 0x61, 0x72, 0x50, 0x6f, 0x73, 0x12, 0x19, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x52, 0x04, 0x74,
	0x65, 0x78, 0x74, 0x12, 0x22, 0x0a, 0x08, 0x74, 0x65, 0x78, 0x74, 0x49, 0x63, 0x6f, 0x6e, 0x18,
	0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x08, 0x74,
	0x65, 0x78, 0x74, 0x49, 0x63, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x79, 0x54,
	0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x73, 0x74, 0x61, 0x79, 0x54,
	0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x6e, 0x69, 0x6d, 0x41, 0x73, 0x73, 0x65, 0x74,
	0x49, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x61, 0x6e, 0x69, 0x6d, 0x41, 0x73,
	0x73, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x05, 0x62, 0x61, 0x64, 0x67, 0x65, 0x18, 0x08,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x05, 0x62, 0x61,
	0x64, 0x67, 0x65, 0x12, 0x32, 0x0a, 0x14, 0x66, 0x6c, 0x65, 0x78, 0x53, 0x65, 0x74, 0x74, 0x69,
	0x6e, 0x67, 0x41, 0x72, 0x72, 0x61, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x09, 0x20, 0x03, 0x28,
	0x04, 0x52, 0x14, 0x66, 0x6c, 0x65, 0x78, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x41, 0x72,
	0x72, 0x61, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x0f, 0x74, 0x65, 0x78, 0x74, 0x49,
	0x63, 0x6f, 0x6e, 0x4f, 0x76, 0x65, 0x72, 0x6c, 0x61, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x0f, 0x74, 0x65, 0x78, 0x74, 0x49, 0x63,
	0x6f, 0x6e, 0x4f, 0x76, 0x65, 0x72, 0x6c, 0x61, 0x79, 0x12, 0x2c, 0x0a, 0x0d, 0x61, 0x6e, 0x69,
	0x6d, 0x61, 0x74, 0x65, 0x64, 0x42, 0x61, 0x64, 0x67, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x0d, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74,
	0x65, 0x64, 0x42, 0x61, 0x64, 0x67, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x68, 0x61, 0x73, 0x53, 0x77,
	0x65, 0x65, 0x70, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d,
	0x68, 0x61, 0x73, 0x53, 0x77, 0x65, 0x65, 0x70, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x12, 0x3a, 0x0a,
	0x18, 0x74, 0x65, 0x78, 0x74, 0x46, 0x6c, 0x65, 0x78, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67,
	0x41, 0x72, 0x72, 0x61, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x04, 0x52,
	0x18, 0x74, 0x65, 0x78, 0x74, 0x46, 0x6c, 0x65, 0x78, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67,
	0x41, 0x72, 0x72, 0x61, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x63, 0x65, 0x6e,
	0x74, 0x65, 0x72, 0x41, 0x6e, 0x69, 0x6d, 0x41, 0x73, 0x73, 0x65, 0x74, 0x49, 0x64, 0x18, 0x0e,
	0x20, 0x01, 0x28, 0x04, 0x52, 0x11, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x69, 0x6d,
	0x41, 0x73, 0x73, 0x65, 0x74, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x0c, 0x64, 0x79, 0x6e, 0x61, 0x6d,
	0x69, 0x63, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e,
	0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x0c, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x49, 0x6d,
	0x61, 0x67, 0x65, 0x12, 0x37, 0x0a, 0x08, 0x65, 0x78, 0x74, 0x72, 0x61, 0x4d, 0x61, 0x70, 0x18,
	0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x43, 0x6f,
	0x6e, 0x66, 0x69, 0x67, 0x2e, 0x45, 0x78, 0x74, 0x72, 0x61, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74,
	0x72, 0x79, 0x52, 0x08, 0x65, 0x78, 0x74, 0x72, 0x61, 0x4d, 0x61, 0x70, 0x12, 0x26, 0x0a, 0x0e,
	0x6d, 0x70, 0x34, 0x41, 0x6e, 0x69, 0x6d, 0x41, 0x73, 0x73, 0x65, 0x74, 0x49, 0x64, 0x18, 0x11,
	0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x6d, 0x70, 0x34, 0x41, 0x6e, 0x69, 0x6d, 0x41, 0x73, 0x73,
	0x65, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79,
	0x18, 0x12, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79,
	0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x57, 0x61, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18,
	0x13, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x57, 0x61, 0x69, 0x74, 0x54, 0x69,
	0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x72, 0x65, 0x73, 0x73, 0x49, 0x64, 0x18, 0x14, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x72, 0x65, 0x73, 0x73, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09,
	0x61, 0x6c, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x04, 0x52,
	0x09, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x61, 0x6c,
	0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x16, 0x20,
	0x01, 0x28, 0x04, 0x52, 0x0f, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x4f, 0x66,
	0x66, 0x73, 0x65, 0x74, 0x1a, 0x3b, 0x0a, 0x0d, 0x45, 0x78, 0x74, 0x72, 0x61, 0x4d, 0x61, 0x70,
	0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
	0x01, 0x22, 0xa1, 0x02, 0x0a, 0x04, 0x54, 0x65, 0x78, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
	0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x27, 0x0a, 0x0f,
	0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x50, 0x61,
	0x74, 0x74, 0x65, 0x72, 0x6e, 0x12, 0x32, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74,
	0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e,
	0x54, 0x65, 0x78, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61,
	0x75, 0x6c, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x22, 0x0a, 0x06, 0x70, 0x69, 0x65,
	0x63, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x54, 0x65, 0x78, 0x74,
	0x50, 0x69, 0x65, 0x63, 0x65, 0x52, 0x06, 0x70, 0x69, 0x65, 0x63, 0x65, 0x73, 0x12, 0x39, 0x0a,
	0x0c, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x73, 0x18, 0x14, 0x20,
	0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d,
	0x61, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x73, 0x63, 0x68,
	0x65, 0x6d, 0x61, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x1a, 0x4b, 0x0a, 0x10, 0x53, 0x63, 0x68, 0x65,
	0x6d, 0x61, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
	0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x21,
	0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e,
	0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
	0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xa1, 0x03, 0x0a, 0x09, 0x54, 0x65, 0x78, 0x74, 0x50, 0x69,
	0x65, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x0d, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61,
	0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x46, 0x6f,
	0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x1b, 0x0a, 0x09,
	0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x08, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x66, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x74, 0x72,
	0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2c, 0x0a, 0x09,
	0x75, 0x73, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x0e, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x50, 0x69, 0x65, 0x63, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52,
	0x09, 0x75, 0x73, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2c, 0x0a, 0x09, 0x67, 0x69,
	0x66, 0x74, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e,
	0x54, 0x65, 0x78, 0x74, 0x50, 0x69, 0x65, 0x63, 0x65, 0x47, 0x69, 0x66, 0x74, 0x52, 0x09, 0x67,
	0x69, 0x66, 0x74, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2f, 0x0a, 0x0a, 0x68, 0x65, 0x61, 0x72,
	0x74, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x54,
	0x65, 0x78, 0x74, 0x50, 0x69, 0x65, 0x63, 0x65, 0x48, 0x65, 0x61, 0x72, 0x74, 0x52, 0x0a, 0x68,
	0x65, 0x61, 0x72, 0x74, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3e, 0x0a, 0x0f, 0x70, 0x61, 0x74,
	0x74, 0x65, 0x72, 0x6e, 0x72, 0x65, 0x66, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x18, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x14, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x50, 0x69, 0x65, 0x63, 0x65, 0x50, 0x61,
	0x74, 0x74, 0x65, 0x72, 0x6e, 0x52, 0x65, 0x66, 0x52, 0x0f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72,
	0x6e, 0x72, 0x65, 0x66, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2f, 0x0a, 0x0a, 0x69, 0x6d, 0x61,
	0x67, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e,
	0x54, 0x65, 0x78, 0x74, 0x50, 0x69, 0x65, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x0a,
	0x69, 0x6d, 0x61, 0x67, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x63,
	0x68, 0x65, 0x6d, 0x61, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x64, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
	0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4b, 0x65, 0x79, 0x22, 0x50, 0x0a, 0x0e, 0x54, 0x65, 0x78,
	0x74, 0x50, 0x69, 0x65, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x05, 0x69,
	0x6d, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61,
	0x67, 0x65, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x63, 0x61,
	0x6c, 0x69, 0x6e, 0x67, 0x52, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0b,
	0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x61, 0x74, 0x65, 0x22, 0x4f, 0x0a, 0x13, 0x54,
	0x65, 0x78, 0x74, 0x50, 0x69, 0x65, 0x63, 0x65, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x52,
	0x65, 0x66, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x03, 0x6b, 0x65, 0x79, 0x12, 0x26, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x50,
	0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x65,
	0x66, 0x61, 0x75, 0x6c, 0x74, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x22, 0x26, 0x0a, 0x0e,
	0x54, 0x65, 0x78, 0x74, 0x50, 0x69, 0x65, 0x63, 0x65, 0x48, 0x65, 0x61, 0x72, 0x74, 0x12, 0x14,
	0x0a, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63,
	0x6f, 0x6c, 0x6f, 0x72, 0x22, 0x4e, 0x0a, 0x0d, 0x54, 0x65, 0x78, 0x74, 0x50, 0x69, 0x65, 0x63,
	0x65, 0x47, 0x69, 0x66, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x67, 0x69, 0x66, 0x74, 0x49, 0x64, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x67, 0x69, 0x66, 0x74, 0x49, 0x64, 0x12, 0x25, 0x0a,
	0x07, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b,
	0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x52, 0x65, 0x66, 0x52, 0x07, 0x6e, 0x61, 0x6d,
	0x65, 0x52, 0x65, 0x66, 0x22, 0x46, 0x0a, 0x0a, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x52,
	0x65, 0x66, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x03, 0x6b, 0x65, 0x79, 0x12, 0x26, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x50,
	0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x65,
	0x66, 0x61, 0x75, 0x6c, 0x74, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x22, 0x99, 0x02, 0x0a,
	0x0d, 0x54, 0x65, 0x78, 0x74, 0x50, 0x69, 0x65, 0x63, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x19,
	0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x55,
	0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x77, 0x69, 0x74,
	0x68, 0x43, 0x6f, 0x6c, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x77, 0x69,
	0x74, 0x68, 0x43, 0x6f, 0x6c, 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x13, 0x73, 0x65, 0x6c, 0x66, 0x5f,
	0x73, 0x68, 0x6f, 0x77, 0x5f, 0x72, 0x65, 0x61, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x73, 0x65, 0x6c, 0x66, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65,
	0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x73,
	0x68, 0x6f, 0x77, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20,
	0x01, 0x28, 0x0d, 0x52, 0x11, 0x6c, 0x65, 0x66, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x45, 0x78, 0x74,
	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x17, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x61,
	0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e,
	0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x6c, 0x65, 0x66, 0x74, 0x41, 0x64, 0x64,
	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x38,
	0x0a, 0x18, 0x72, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
	0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x16, 0x72, 0x69, 0x67, 0x68, 0x74, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61,
	0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x81, 0x02, 0x0a, 0x0a, 0x54, 0x65, 0x78,
	0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x12, 0x0a,
	0x04, 0x62, 0x6f, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x62, 0x6f, 0x6c,
	0x64, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x74, 0x61, 0x6c, 0x69, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x08, 0x52, 0x06, 0x69, 0x74, 0x61, 0x6c, 0x69, 0x63, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x65, 0x69,
	0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68,
	0x74, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x74, 0x61, 0x6c, 0x69, 0x63, 0x5f, 0x61, 0x6e, 0x67, 0x6c,
	0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x69, 0x74, 0x61, 0x6c, 0x69, 0x63, 0x41,
	0x6e, 0x67, 0x6c, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x6f, 0x6e, 0x74, 0x5f, 0x73, 0x69, 0x7a,
	0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x66, 0x6f, 0x6e, 0x74, 0x53, 0x69, 0x7a,
	0x65, 0x12, 0x31, 0x0a, 0x15, 0x75, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x5f, 0x6c,
	0x69, 0x67, 0x68, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08,
	0x52, 0x12, 0x75, 0x73, 0x65, 0x48, 0x65, 0x69, 0x67, 0x68, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x43,
	0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x26, 0x0a, 0x0f, 0x75, 0x73, 0x65, 0x5f, 0x72, 0x65, 0x6d, 0x6f,
	0x74, 0x65, 0x5f, 0x63, 0x6c, 0x6f, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x75,
	0x73, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6c, 0x6f, 0x72, 0x22, 0x9f, 0x03, 0x0a,
	0x0b, 0x4c, 0x69, 0x6b, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x06,
	0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x43,
	0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x14, 0x0a,
	0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6f,
	0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x04, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x6c,
	0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x12,
	0x19, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e,
	0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x63,
	0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x3d,
	0x0a, 0x10, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x4c, 0x69, 0x6b, 0x65, 0x44, 0x65, 0x74, 0x61,
	0x69, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x44, 0x6f, 0x75, 0x62, 0x6c,
	0x65, 0x4c, 0x69, 0x6b, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x10, 0x64, 0x6f, 0x75,
	0x62, 0x6c, 0x65, 0x4c, 0x69, 0x6b, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x43, 0x0a,
	0x12, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x49,
	0x6e, 0x66, 0x6f, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x44, 0x69, 0x73, 0x70,
	0x6c, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x12,
	0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x49, 0x6e,
	0x66, 0x6f, 0x12, 0x28, 0x0a, 0x0f, 0x6c, 0x69, 0x6e, 0x6b, 0x6d, 0x69, 0x63, 0x47, 0x75, 0x65,
	0x73, 0x74, 0x55, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x6c, 0x69, 0x6e,
	0x6b, 0x6d, 0x69, 0x63, 0x47, 0x75, 0x65, 0x73, 0x74, 0x55, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05,
	0x73, 0x63, 0x65, 0x6e, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x63, 0x65,
	0x6e, 0x65, 0x12, 0x3a, 0x0a, 0x0f, 0x70, 0x69, 0x63, 0x6f, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61,
	0x79, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x50, 0x69,
	0x63, 0x6f, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0f, 0x70,
	0x69, 0x63, 0x6f, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x84,
	0x02, 0x0a, 0x0d, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
	0x12, 0x1f, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x07, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
	0x6e, 0x12, 0x19, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x05, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09,
	0x73, 0x68, 0x61, 0x72, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52,
	0x09, 0x73, 0x68, 0x61, 0x72, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63,
	0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69,
	0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x68, 0x61, 0x72, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65,
	0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x68, 0x61, 0x72, 0x65, 0x54, 0x61,
	0x72, 0x67, 0x65, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x43, 0x6f,
	0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x66, 0x6f, 0x6c, 0x6c, 0x6f,
	0x77, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3d, 0x0a, 0x10, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63,
	0x41, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x11, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x41, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x6d,
	0x6d, 0x6f, 0x6e, 0x52, 0x10, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x41, 0x72, 0x65, 0x61, 0x43,
	0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x22, 0x91, 0x01, 0x0a, 0x0f, 0x50, 0x69, 0x63, 0x6f, 0x44, 0x69,
	0x73, 0x70, 0x6c, 0x61, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x6d,
	0x62, 0x6f, 0x53, 0x75, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04,
	0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x62, 0x6f, 0x53, 0x75, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12,
	0x14, 0x0a, 0x05, 0x65, 0x6d, 0x6f, 0x6a, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
	0x65, 0x6d, 0x6f, 0x6a, 0x69, 0x12, 0x24, 0x0a, 0x09, 0x65, 0x6d, 0x6f, 0x6a, 0x69, 0x49, 0x63,
	0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65,
	0x52, 0x09, 0x65, 0x6d, 0x6f, 0x6a, 0x69, 0x49, 0x63, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x65,
	0x6d, 0x6f, 0x6a, 0x69, 0x54, 0x65, 0x78, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
	0x65, 0x6d, 0x6f, 0x6a, 0x69, 0x54, 0x65, 0x78, 0x74, 0x22, 0x8c, 0x01, 0x0a, 0x10, 0x44, 0x6f,
	0x75, 0x62, 0x6c, 0x65, 0x4c, 0x69, 0x6b, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x1e,
	0x0a, 0x0a, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x08, 0x52, 0x0a, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x14,
	0x0a, 0x05, 0x73, 0x65, 0x71, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73,
	0x65, 0x71, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x6e, 0x65, 0x77, 0x61, 0x6c, 0x73,
	0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x72, 0x65, 0x6e, 0x65, 0x77,
	0x61, 0x6c, 0x73, 0x4e, 0x75, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65,
	0x72, 0x73, 0x4e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x74, 0x72, 0x69,
	0x67, 0x67, 0x65, 0x72, 0x73, 0x4e, 0x75, 0x6d, 0x22, 0x4e, 0x0a, 0x12, 0x44, 0x69, 0x73, 0x70,
	0x6c, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a,
	0x0a, 0x08, 0x73, 0x68, 0x6f, 0x77, 0x54, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08,
	0x52, 0x08, 0x73, 0x68, 0x6f, 0x77, 0x54, 0x65, 0x78, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x68,
	0x6f, 0x77, 0x49, 0x63, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x73,
	0x68, 0x6f, 0x77, 0x49, 0x63, 0x6f, 0x6e, 0x73, 0x22, 0x81, 0x02, 0x0a, 0x12, 0x45, 0x70, 0x69,
	0x73, 0x6f, 0x64, 0x65, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12,
	0x20, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x08, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
	0x6e, 0x12, 0x19, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x05, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07,
	0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63,
	0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c,
	0x65, 0x54, 0x6f, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e,
	0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x54, 0x6f, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x12, 0x24,
	0x0a, 0x09, 0x67, 0x69, 0x66, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x09, 0x67, 0x69, 0x66, 0x74, 0x49,
	0x6d, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x67, 0x72, 0x65, 0x65, 0x4d, 0x73, 0x67,
	0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x61, 0x67, 0x72, 0x65, 0x65, 0x4d,
	0x73, 0x67, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x56, 0x61, 0x6c,
	0x75, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f,
	0x6c, 0x6f, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x22, 0xa7, 0x01, 0x0a,
	0x18, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x41, 0x67, 0x61, 0x69, 0x6e, 0x73, 0x74, 0x53, 0x63, 0x6f,
	0x72, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x06, 0x63, 0x6f, 0x6d,
	0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x43, 0x6f, 0x6d, 0x6d,
	0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x07, 0x61, 0x67,
	0x61, 0x69, 0x6e, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x41, 0x67,
	0x61, 0x69, 0x6e, 0x73, 0x74, 0x52, 0x07, 0x61, 0x67, 0x61, 0x69, 0x6e, 0x73, 0x74, 0x12, 0x20,
	0x0a, 0x0b, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x0d, 0x52, 0x0b, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
	0x12, 0x24, 0x0a, 0x0d, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75,
	0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79,
	0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xe7, 0x04, 0x0a, 0x07, 0x41, 0x67, 0x61, 0x69, 0x6e,
	0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x65, 0x66, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x65, 0x66, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22,
	0x0a, 0x08, 0x6c, 0x65, 0x66, 0x74, 0x4c, 0x6f, 0x67, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x08, 0x6c, 0x65, 0x66, 0x74, 0x4c, 0x6f,
	0x67, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x65, 0x66, 0x74, 0x47, 0x6f, 0x61, 0x6c, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x65, 0x66, 0x74, 0x47, 0x6f, 0x61, 0x6c, 0x12, 0x1c,
	0x0a, 0x09, 0x72, 0x69, 0x67, 0x68, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x09, 0x72, 0x69, 0x67, 0x68, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x09,
	0x72, 0x69, 0x67, 0x68, 0x74, 0x4c, 0x6f, 0x67, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x09, 0x72, 0x69, 0x67, 0x68, 0x74, 0x4c, 0x6f,
	0x67, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x69, 0x67, 0x68, 0x74, 0x47, 0x6f, 0x61, 0x6c, 0x18,
	0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x69, 0x67, 0x68, 0x74, 0x47, 0x6f, 0x61, 0x6c,
	0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0b, 0x20,
	0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x18,
	0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x04, 0x52,
	0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x6c, 0x65, 0x66, 0x74,
	0x54, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x6c, 0x65,
	0x66, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x69, 0x67, 0x68,
	0x74, 0x54, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x72,
	0x69, 0x67, 0x68, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x11, 0x64, 0x69,
	0x66, 0x66, 0x53, 0x65, 0x69, 0x32, 0x61, 0x62, 0x73, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x18,
	0x0f, 0x20, 0x01, 0x28, 0x04, 0x52, 0x11, 0x64, 0x69, 0x66, 0x66, 0x53, 0x65, 0x69, 0x32, 0x61,
	0x62, 0x73, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x66, 0x69, 0x6e, 0x61,
	0x6c, 0x47, 0x6f, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x67, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0d,
	0x52, 0x0e, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x47, 0x6f, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x67, 0x65,
	0x12, 0x2a, 0x0a, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x47, 0x6f, 0x61, 0x6c, 0x53,
	0x74, 0x61, 0x67, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x63, 0x75, 0x72, 0x72,
	0x65, 0x6e, 0x74, 0x47, 0x6f, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x2c, 0x0a, 0x11,
	0x6c, 0x65, 0x66, 0x74, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f,
	0x6e, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x6c, 0x65, 0x66, 0x74, 0x53, 0x63, 0x6f,
	0x72, 0x65, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x12, 0x72, 0x69,
	0x67, 0x68, 0x74, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
	0x18, 0x13, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x72, 0x69, 0x67, 0x68, 0x74, 0x53, 0x63, 0x6f,
	0x72, 0x65, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x6c, 0x65,
	0x66, 0x74, 0x47, 0x6f, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x04, 0x52,
	0x0b, 0x6c, 0x65, 0x66, 0x74, 0x47, 0x6f, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0c,
	0x72, 0x69, 0x67, 0x68, 0x74, 0x47, 0x6f, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x18, 0x15, 0x20, 0x01,
	0x28, 0x04, 0x52, 0x0c, 0x72, 0x69, 0x67, 0x68, 0x74, 0x47, 0x6f, 0x61, 0x6c, 0x49, 0x6e, 0x74,
	0x22, 0xb5, 0x06, 0x0a, 0x06, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x6d,
	0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74,
	0x68, 0x6f, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x6d, 0x73, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x04, 0x52, 0x05, 0x6d, 0x73, 0x67, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f,
	0x6f, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x72, 0x6f, 0x6f,
	0x6d, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69,
	0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65,
	0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x18,
	0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x12, 0x1e,
	0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x06, 0x20,
	0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x53, 0x68, 0x6f, 0x77, 0x4d, 0x73, 0x67, 0x12, 0x1a,
	0x0a, 0x08, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x08, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0x28, 0x0a, 0x0c, 0x64, 0x69,
	0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x05, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79,
	0x54, 0x65, 0x78, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x6f, 0x6c, 0x64, 0x5f, 0x74, 0x79, 0x70,
	0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x66, 0x6f, 0x6c, 0x64, 0x54, 0x79, 0x70,
	0x65, 0x12, 0x28, 0x0a, 0x10, 0x61, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x5f, 0x66, 0x6f, 0x6c, 0x64,
	0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x61, 0x6e, 0x63,
	0x68, 0x6f, 0x72, 0x46, 0x6f, 0x6c, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x70,
	0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x0b, 0x20, 0x01,
	0x28, 0x04, 0x52, 0x0d, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x53, 0x63, 0x6f, 0x72,
	0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x6f, 0x67, 0x49, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x05, 0x6c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x11, 0x6d, 0x73, 0x67, 0x50, 0x72,
	0x6f, 0x63, 0x65, 0x73, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x4b, 0x18, 0x0d, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x11, 0x6d, 0x73, 0x67, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x46, 0x69,
	0x6c, 0x74, 0x65, 0x72, 0x4b, 0x12, 0x2c, 0x0a, 0x11, 0x6d, 0x73, 0x67, 0x50, 0x72, 0x6f, 0x63,
	0x65, 0x73, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x56, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x11, 0x6d, 0x73, 0x67, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x46, 0x69, 0x6c, 0x74,
	0x65, 0x72, 0x56, 0x12, 0x19, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x05, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x2d,
	0x0a, 0x13, 0x61, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x5f, 0x66, 0x6f, 0x6c, 0x64, 0x5f, 0x74, 0x79,
	0x70, 0x65, 0x5f, 0x76, 0x32, 0x18, 0x11, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x61, 0x6e, 0x63,
	0x68, 0x6f, 0x72, 0x46, 0x6f, 0x6c, 0x64, 0x54, 0x79, 0x70, 0x65, 0x56, 0x32, 0x12, 0x32, 0x0a,
	0x16, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x74, 0x5f, 0x73, 0x65, 0x69, 0x5f,
	0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6d, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x04, 0x52, 0x12, 0x70,
	0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x41, 0x74, 0x53, 0x65, 0x69, 0x54, 0x69, 0x6d, 0x65, 0x4d,
	0x73, 0x12, 0x2c, 0x0a, 0x12, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x5f, 0x64, 0x69, 0x73, 0x70,
	0x61, 0x74, 0x63, 0x68, 0x5f, 0x6d, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x72,
	0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x73, 0x12,
	0x1f, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x18, 0x14,
	0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68,
	0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x15,
	0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12,
	0x2e, 0x0a, 0x13, 0x64, 0x69, 0x66, 0x66, 0x5f, 0x73, 0x65, 0x69, 0x32, 0x61, 0x62, 0x73, 0x5f,
	0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x16, 0x20, 0x01, 0x28, 0x04, 0x52, 0x11, 0x64, 0x69,
	0x66, 0x66, 0x53, 0x65, 0x69, 0x32, 0x61, 0x62, 0x73, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x12,
	0x30, 0x0a, 0x14, 0x61, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x5f, 0x66, 0x6f, 0x6c, 0x64, 0x5f, 0x64,
	0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x17, 0x20, 0x01, 0x28, 0x04, 0x52, 0x12, 0x61,
	0x6e, 0x63, 0x68, 0x6f, 0x72, 0x46, 0x6f, 0x6c, 0x64, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x18, 0x20, 0x01, 0x28,
	0x04, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x22, 0xc6, 0x08, 0x0a, 0x04, 0x55, 0x73, 0x65,
	0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69,
	0x64, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x04, 0x52, 0x07, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6e,
	0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e,
	0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65,
	0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12,
	0x1c, 0x0a, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x14, 0x0a,
	0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x4c, 0x65,
	0x76, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x42, 0x69, 0x72, 0x74, 0x68, 0x64, 0x61, 0x79, 0x18,
	0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x42, 0x69, 0x72, 0x74, 0x68, 0x64, 0x61, 0x79, 0x12,
	0x1c, 0x0a, 0x09, 0x54, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x08, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x09, 0x54, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x28, 0x0a,
	0x0b, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x54, 0x68, 0x75, 0x6d, 0x62, 0x18, 0x09, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x0b, 0x41, 0x76, 0x61, 0x74,
	0x61, 0x72, 0x54, 0x68, 0x75, 0x6d, 0x62, 0x12, 0x2a, 0x0a, 0x0c, 0x41, 0x76, 0x61, 0x74, 0x61,
	0x72, 0x4d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e,
	0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x0c, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x4d, 0x65, 0x64,
	0x69, 0x75, 0x6d, 0x12, 0x28, 0x0a, 0x0b, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x4c, 0x61, 0x72,
	0x67, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65,
	0x52, 0x0b, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x4c, 0x61, 0x72, 0x67, 0x65, 0x12, 0x1a, 0x0a,
	0x08, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52,
	0x08, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x45, 0x78, 0x70,
	0x65, 0x72, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x45,
	0x78, 0x70, 0x65, 0x72, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x69, 0x74,
	0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x69, 0x74, 0x79, 0x12, 0x16, 0x0a,
	0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53,
	0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54,
	0x69, 0x6d, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74,
	0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x54,
	0x69, 0x6d, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x4d, 0x6f, 0x64, 0x69, 0x66,
	0x79, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18,
	0x12, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x26, 0x0a,
	0x0e, 0x53, 0x68, 0x61, 0x72, 0x65, 0x51, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x55, 0x72, 0x69, 0x18,
	0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x53, 0x68, 0x61, 0x72, 0x65, 0x51, 0x72, 0x63, 0x6f,
	0x64, 0x65, 0x55, 0x72, 0x69, 0x12, 0x2e, 0x0a, 0x12, 0x49, 0x6e, 0x63, 0x6f, 0x6d, 0x65, 0x53,
	0x68, 0x61, 0x72, 0x65, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28,
	0x0d, 0x52, 0x12, 0x49, 0x6e, 0x63, 0x6f, 0x6d, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x50, 0x65,
	0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x0e, 0x42, 0x61, 0x64, 0x67, 0x65, 0x49, 0x6d,
	0x61, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x15, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x06, 0x2e,
	0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x0e, 0x42, 0x61, 0x64, 0x67, 0x65, 0x49, 0x6d, 0x61, 0x67,
	0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x0a, 0x46, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x49,
	0x6e, 0x66, 0x6f, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x46, 0x6f, 0x6c, 0x6c,
	0x6f, 0x77, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x46, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x49, 0x6e,
	0x66, 0x6f, 0x12, 0x25, 0x0a, 0x08, 0x50, 0x61, 0x79, 0x47, 0x72, 0x61, 0x64, 0x65, 0x18, 0x17,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x50, 0x61, 0x79, 0x47, 0x72, 0x61, 0x64, 0x65, 0x52,
	0x08, 0x50, 0x61, 0x79, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, 0x25, 0x0a, 0x08, 0x46, 0x61, 0x6e,
	0x73, 0x43, 0x6c, 0x75, 0x62, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x46, 0x61,
	0x6e, 0x73, 0x43, 0x6c, 0x75, 0x62, 0x52, 0x08, 0x46, 0x61, 0x6e, 0x73, 0x43, 0x6c, 0x75, 0x62,
	0x12, 0x1c, 0x0a, 0x09, 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x18, 0x1a, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x09, 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x2a,
	0x0a, 0x0c, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x42, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x1b,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x0c, 0x41, 0x76,
	0x61, 0x74, 0x61, 0x72, 0x42, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x05, 0x4d, 0x65,
	0x64, 0x61, 0x6c, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67,
	0x65, 0x52, 0x05, 0x4d, 0x65, 0x64, 0x61, 0x6c, 0x12, 0x34, 0x0a, 0x11, 0x52, 0x65, 0x61, 0x6c,
	0x54, 0x69, 0x6d, 0x65, 0x49, 0x63, 0x6f, 0x6e, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x1d, 0x20,
	0x03, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x11, 0x52, 0x65, 0x61,
	0x6c, 0x54, 0x69, 0x6d, 0x65, 0x49, 0x63, 0x6f, 0x6e, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1c,
	0x0a, 0x09, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x49, 0x64, 0x18, 0x26, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x09, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06,
	0x73, 0x65, 0x63, 0x55, 0x69, 0x64, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65,
	0x63, 0x55, 0x69, 0x64, 0x12, 0x27, 0x0a, 0x0e, 0x66, 0x61, 0x6e, 0x54, 0x69, 0x63, 0x6b, 0x65,
	0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0xfe, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x66,
	0x61, 0x6e, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x15, 0x0a,
	0x05, 0x69, 0x64, 0x53, 0x74, 0x72, 0x18, 0x84, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69,
	0x64, 0x53, 0x74, 0x72, 0x12, 0x1b, 0x0a, 0x08, 0x61, 0x67, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65,
	0x18, 0x95, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x61, 0x67, 0x65, 0x52, 0x61, 0x6e, 0x67,
	0x65, 0x22, 0x8f, 0x09, 0x0a, 0x08, 0x50, 0x61, 0x79, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, 0x2c,
	0x0a, 0x11, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x43, 0x6f,
	0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x74, 0x6f, 0x74, 0x61, 0x6c,
	0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x0b,
	0x64, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x49, 0x63, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x0b, 0x64, 0x69, 0x61, 0x6d, 0x6f,
	0x6e, 0x64, 0x49, 0x63, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x04, 0x69, 0x63,
	0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65,
	0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x65, 0x78, 0x74, 0x4e, 0x61,
	0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x65, 0x78, 0x74, 0x4e, 0x61,
	0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28,
	0x03, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x22, 0x0a, 0x08, 0x6e, 0x65, 0x78, 0x74,
	0x49, 0x63, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61,
	0x67, 0x65, 0x52, 0x08, 0x6e, 0x65, 0x78, 0x74, 0x49, 0x63, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b,
	0x6e, 0x65, 0x78, 0x74, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28,
	0x03, 0x52, 0x0b, 0x6e, 0x65, 0x78, 0x74, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x1e,
	0x0a, 0x0a, 0x6e, 0x6f, 0x77, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x09, 0x20, 0x01,
	0x28, 0x03, 0x52, 0x0a, 0x6e, 0x6f, 0x77, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x30,
	0x0a, 0x13, 0x74, 0x68, 0x69, 0x73, 0x47, 0x72, 0x61, 0x64, 0x65, 0x4d, 0x69, 0x6e, 0x44, 0x69,
	0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x13, 0x74, 0x68, 0x69,
	0x73, 0x47, 0x72, 0x61, 0x64, 0x65, 0x4d, 0x69, 0x6e, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64,
	0x12, 0x30, 0x0a, 0x13, 0x74, 0x68, 0x69, 0x73, 0x47, 0x72, 0x61, 0x64, 0x65, 0x4d, 0x61, 0x78,
	0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x13, 0x74,
	0x68, 0x69, 0x73, 0x47, 0x72, 0x61, 0x64, 0x65, 0x4d, 0x61, 0x78, 0x44, 0x69, 0x61, 0x6d, 0x6f,
	0x6e, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x70, 0x61, 0x79, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64,
	0x42, 0x61, 0x6b, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x70, 0x61, 0x79, 0x44, 0x69,
	0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x42, 0x61, 0x6b, 0x12, 0x24, 0x0a, 0x0d, 0x67, 0x72, 0x61, 0x64,
	0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x0d, 0x67, 0x72, 0x61, 0x64, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0x30,
	0x0a, 0x0d, 0x67, 0x72, 0x61, 0x64, 0x65, 0x49, 0x63, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x18,
	0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x47, 0x72, 0x61, 0x64, 0x65, 0x49, 0x63, 0x6f,
	0x6e, 0x52, 0x0d, 0x67, 0x72, 0x61, 0x64, 0x65, 0x49, 0x63, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74,
	0x12, 0x26, 0x0a, 0x0e, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x43, 0x68, 0x61, 0x74, 0x54, 0x79,
	0x70, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e,
	0x43, 0x68, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x06, 0x69, 0x6d, 0x49, 0x63,
	0x6f, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65,
	0x52, 0x06, 0x69, 0x6d, 0x49, 0x63, 0x6f, 0x6e, 0x12, 0x30, 0x0a, 0x0f, 0x69, 0x6d, 0x49, 0x63,
	0x6f, 0x6e, 0x57, 0x69, 0x74, 0x68, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x11, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x0f, 0x69, 0x6d, 0x49, 0x63, 0x6f,
	0x6e, 0x57, 0x69, 0x74, 0x68, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x22, 0x0a, 0x08, 0x6c, 0x69,
	0x76, 0x65, 0x49, 0x63, 0x6f, 0x6e, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49,
	0x6d, 0x61, 0x67, 0x65, 0x52, 0x08, 0x6c, 0x69, 0x76, 0x65, 0x49, 0x63, 0x6f, 0x6e, 0x12, 0x36,
	0x0a, 0x12, 0x6e, 0x65, 0x77, 0x49, 0x6d, 0x49, 0x63, 0x6f, 0x6e, 0x57, 0x69, 0x74, 0x68, 0x4c,
	0x65, 0x76, 0x65, 0x6c, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61,
	0x67, 0x65, 0x52, 0x12, 0x6e, 0x65, 0x77, 0x49, 0x6d, 0x49, 0x63, 0x6f, 0x6e, 0x57, 0x69, 0x74,
	0x68, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x28, 0x0a, 0x0b, 0x6e, 0x65, 0x77, 0x4c, 0x69, 0x76,
	0x65, 0x49, 0x63, 0x6f, 0x6e, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d,
	0x61, 0x67, 0x65, 0x52, 0x0b, 0x6e, 0x65, 0x77, 0x4c, 0x69, 0x76, 0x65, 0x49, 0x63, 0x6f, 0x6e,
	0x12, 0x2e, 0x0a, 0x12, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x4e, 0x65, 0x65, 0x64, 0x43,
	0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x75, 0x70,
	0x67, 0x72, 0x61, 0x64, 0x65, 0x4e, 0x65, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65,
	0x12, 0x26, 0x0a, 0x0e, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67,
	0x65, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x72,
	0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0a, 0x62, 0x61, 0x63, 0x6b,
	0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49,
	0x6d, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64,
	0x12, 0x2e, 0x0a, 0x0e, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x42, 0x61,
	0x63, 0x6b, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65,
	0x52, 0x0e, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x42, 0x61, 0x63, 0x6b,
	0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x19, 0x20, 0x01, 0x28, 0x03, 0x52,
	0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x2a, 0x0a, 0x08, 0x62, 0x75, 0x66, 0x66, 0x49, 0x6e,
	0x66, 0x6f, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x47, 0x72, 0x61, 0x64, 0x65,
	0x42, 0x75, 0x66, 0x66, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x62, 0x75, 0x66, 0x66, 0x49, 0x6e,
	0x66, 0x6f, 0x12, 0x21, 0x0a, 0x0b, 0x67, 0x72, 0x61, 0x64, 0x65, 0x42, 0x61, 0x6e, 0x6e, 0x65,
	0x72, 0x18, 0xe9, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x67, 0x72, 0x61, 0x64, 0x65, 0x42,
	0x61, 0x6e, 0x6e, 0x65, 0x72, 0x12, 0x31, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65,
	0x44, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x42, 0x67, 0x18, 0xea, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65,
	0x44, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x42, 0x67, 0x12, 0x39, 0x0a, 0x13, 0x70, 0x72, 0x6f, 0x66,
	0x69, 0x6c, 0x65, 0x44, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x42, 0x67, 0x42, 0x61, 0x63, 0x6b, 0x18,
	0xeb, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x13,
	0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x44, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x42, 0x67, 0x42,
	0x61, 0x63, 0x6b, 0x22, 0xb6, 0x01, 0x0a, 0x08, 0x46, 0x61, 0x6e, 0x73, 0x43, 0x6c, 0x75, 0x62,
	0x12, 0x21, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d,
	0x2e, 0x46, 0x61, 0x6e, 0x73, 0x43, 0x6c, 0x75, 0x62, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64,
	0x61, 0x74, 0x61, 0x12, 0x39, 0x0a, 0x0a, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x44, 0x61, 0x74,
	0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x46, 0x61, 0x6e, 0x73, 0x43, 0x6c,
	0x75, 0x62, 0x2e, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74,
	0x72, 0x79, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x4c,
	0x0a, 0x0f, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72,
	0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03,
	0x6b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x46, 0x61, 0x6e, 0x73, 0x43, 0x6c, 0x75, 0x62, 0x44, 0x61, 0x74,
	0x61, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xda, 0x01, 0x0a,
	0x0c, 0x46, 0x61, 0x6e, 0x73, 0x43, 0x6c, 0x75, 0x62, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a,
	0x08, 0x63, 0x6c, 0x75, 0x62, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x08, 0x63, 0x6c, 0x75, 0x62, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76,
	0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12,
	0x2e, 0x0a, 0x12, 0x75, 0x73, 0x65, 0x72, 0x46, 0x61, 0x6e, 0x73, 0x43, 0x6c, 0x75, 0x62, 0x53,
	0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x75, 0x73, 0x65,
	0x72, 0x46, 0x61, 0x6e, 0x73, 0x43, 0x6c, 0x75, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12,
	0x20, 0x0a, 0x05, 0x62, 0x61, 0x64, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a,
	0x2e, 0x55, 0x73, 0x65, 0x72, 0x42, 0x61, 0x64, 0x67, 0x65, 0x52, 0x05, 0x62, 0x61, 0x64, 0x67,
	0x65, 0x12, 0x2a, 0x0a, 0x10, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x69,
	0x66, 0x74, 0x49, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x03, 0x52, 0x10, 0x61, 0x76, 0x61,
	0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x69, 0x66, 0x74, 0x49, 0x64, 0x73, 0x12, 0x1a, 0x0a,
	0x08, 0x61, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52,
	0x08, 0x61, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x49, 0x64, 0x22, 0x90, 0x01, 0x0a, 0x09, 0x55, 0x73,
	0x65, 0x72, 0x42, 0x61, 0x64, 0x67, 0x65, 0x12, 0x2b, 0x0a, 0x05, 0x69, 0x63, 0x6f, 0x6e, 0x73,
	0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x42, 0x61, 0x64,
	0x67, 0x65, 0x2e, 0x49, 0x63, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x69,
	0x63, 0x6f, 0x6e, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x1a, 0x40, 0x0a, 0x0a, 0x49, 0x63,
	0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1c, 0x0a, 0x05, 0x76, 0x61,
	0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67,
	0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x0f, 0x0a, 0x0d,
	0x47, 0x72, 0x61, 0x64, 0x65, 0x42, 0x75, 0x66, 0x66, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x08, 0x0a,
	0x06, 0x42, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x22, 0x7b, 0x0a, 0x09, 0x47, 0x72, 0x61, 0x64, 0x65,
	0x49, 0x63, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e,
	0x12, 0x20, 0x0a, 0x0b, 0x69, 0x63, 0x6f, 0x6e, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x69, 0x63, 0x6f, 0x6e, 0x44, 0x69, 0x61, 0x6d, 0x6f,
	0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x03, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x65, 0x76, 0x65,
	0x6c, 0x53, 0x74, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x65, 0x76, 0x65,
	0x6c, 0x53, 0x74, 0x72, 0x22, 0x98, 0x02, 0x0a, 0x0a, 0x46, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x49,
	0x6e, 0x66, 0x6f, 0x12, 0x26, 0x0a, 0x0e, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67,
	0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x66, 0x6f, 0x6c,
	0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x66,
	0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x04, 0x52, 0x0d, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e,
	0x74, 0x12, 0x22, 0x0a, 0x0c, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x75,
	0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x53,
	0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x75, 0x73, 0x68, 0x53, 0x74, 0x61,
	0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x70, 0x75, 0x73, 0x68, 0x53,
	0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x4e,
	0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x6d, 0x61, 0x72,
	0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x65,
	0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x10, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x74,
	0x72, 0x12, 0x2c, 0x0a, 0x11, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x43, 0x6f,
	0x75, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x66, 0x6f,
	0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x22,
	0x88, 0x04, 0x0a, 0x05, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x75, 0x72, 0x6c,
	0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x75, 0x72, 0x6c,
	0x4c, 0x69, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x14,
	0x0a, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x77,
	0x69, 0x64, 0x74, 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x76, 0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x6f,
	0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x76, 0x67, 0x43, 0x6f, 0x6c, 0x6f,
	0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18,
	0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65,
	0x12, 0x20, 0x0a, 0x0c, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x77, 0x65, 0x62, 0x5f, 0x75, 0x72, 0x6c,
	0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x70, 0x65, 0x6e, 0x57, 0x65, 0x62, 0x55,
	0x72, 0x6c, 0x12, 0x28, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x08, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x74,
	0x65, 0x6e, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b,
	0x69, 0x73, 0x5f, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28,
	0x08, 0x52, 0x0a, 0x69, 0x73, 0x41, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x12, 0x3d, 0x0a,
	0x11, 0x66, 0x6c, 0x65, 0x78, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x69,
	0x73, 0x74, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x4e, 0x69, 0x6e, 0x65, 0x50,
	0x61, 0x74, 0x63, 0x68, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x0f, 0x66, 0x6c, 0x65,
	0x78, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x11,
	0x74, 0x65, 0x78, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x69, 0x73,
	0x74, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x4e, 0x69, 0x6e, 0x65, 0x50, 0x61,
	0x74, 0x63, 0x68, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x0f, 0x74, 0x65, 0x78, 0x74,
	0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x1a, 0x7d, 0x0a, 0x07, 0x43,
	0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x6f,
	0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
	0x66, 0x6f, 0x6e, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76,
	0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12,
	0x29, 0x0a, 0x10, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x74,
	0x65, 0x78, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x6c, 0x74, 0x65, 0x72,
	0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x54, 0x65, 0x78, 0x74, 0x22, 0x3c, 0x0a, 0x10, 0x4e, 0x69,
	0x6e, 0x65, 0x50, 0x61, 0x74, 0x63, 0x68, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x28,
	0x0a, 0x0f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x69, 0x73,
	0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67,
	0x4c, 0x69, 0x73, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x22, 0xff, 0x01, 0x0a, 0x09, 0x50, 0x75, 0x73,
	0x68, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x65, 0x71, 0x49, 0x64, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x73, 0x65, 0x71, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05,
	0x6c, 0x6f, 0x67, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x6c, 0x6f, 0x67,
	0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x04, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06,
	0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6d, 0x65,
	0x74, 0x68, 0x6f, 0x64, 0x12, 0x2e, 0x0a, 0x0b, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x4c,
	0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x48, 0x65, 0x61, 0x64,
	0x65, 0x72, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x0b, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73,
	0x4c, 0x69, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x45,
	0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70,
	0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x20,
	0x0a, 0x0b, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65,
	0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28,
	0x0c, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x12, 0x0a, 0x02, 0x6b, 0x6b,
	0x12, 0x0c, 0x0a, 0x01, 0x6b, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x01, 0x6b, 0x22, 0xb1,
	0x02, 0x0a, 0x0f, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x6f,
	0x64, 0x79, 0x12, 0x26, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x76,
	0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x10, 0x63, 0x6f,
	0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x30, 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72,
	0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x04, 0x52, 0x13, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74,
	0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65,
	0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x03, 0x65, 0x78, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x08, 0x2e, 0x45, 0x78, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x03, 0x65, 0x78, 0x74, 0x12, 0x20,
	0x0a, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20,
	0x01, 0x28, 0x0d, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65,
	0x12, 0x16, 0x0a, 0x06, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x06, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x6c, 0x69, 0x65,
	0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x0f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
	0x49, 0x64, 0x22, 0x31, 0x0a, 0x07, 0x45, 0x78, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x10, 0x0a,
	0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
	0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
	0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xde, 0x01, 0x0a, 0x03, 0x52, 0x73, 0x70, 0x12, 0x0c, 0x0a,
	0x01, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x61, 0x12, 0x0c, 0x0a, 0x01, 0x62,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x62, 0x12, 0x0c, 0x0a, 0x01, 0x63, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x63, 0x12, 0x0c, 0x0a, 0x01, 0x64, 0x18, 0x04, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x01, 0x64, 0x12, 0x0c, 0x0a, 0x01, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05,
	0x52, 0x01, 0x65, 0x12, 0x14, 0x0a, 0x01, 0x66, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06,
	0x2e, 0x52, 0x73, 0x70, 0x2e, 0x46, 0x52, 0x01, 0x66, 0x12, 0x0c, 0x0a, 0x01, 0x67, 0x18, 0x07,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x01, 0x67, 0x12, 0x0c, 0x0a, 0x01, 0x68, 0x18, 0x0a, 0x20, 0x01,
	0x28, 0x04, 0x52, 0x01, 0x68, 0x12, 0x0c, 0x0a, 0x01, 0x69, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x04,
	0x52, 0x01, 0x69, 0x12, 0x0c, 0x0a, 0x01, 0x6a, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x04, 0x52, 0x01,
	0x6a, 0x1a, 0x43, 0x0a, 0x01, 0x46, 0x12, 0x0e, 0x0a, 0x02, 0x71, 0x31, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x04, 0x52, 0x02, 0x71, 0x31, 0x12, 0x0e, 0x0a, 0x02, 0x71, 0x33, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x04, 0x52, 0x02, 0x71, 0x33, 0x12, 0x0e, 0x0a, 0x02, 0x71, 0x34, 0x18, 0x04, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x02, 0x71, 0x34, 0x12, 0x0e, 0x0a, 0x02, 0x71, 0x35, 0x18, 0x05, 0x20, 0x01,
	0x28, 0x04, 0x52, 0x02, 0x71, 0x35, 0x22, 0xac, 0x03, 0x0a, 0x0a, 0x50, 0x72, 0x65, 0x4d, 0x65,
	0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x6d, 0x64, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0d, 0x52, 0x03, 0x63, 0x6d, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x65, 0x71, 0x75, 0x65,
	0x6e, 0x63, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x73, 0x65, 0x71,
	0x75, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x64, 0x6b, 0x56, 0x65,
	0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x64, 0x6b,
	0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x14, 0x0a,
	0x05, 0x72, 0x65, 0x66, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x72, 0x65,
	0x66, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x62, 0x6f, 0x78, 0x54, 0x79, 0x70, 0x65,
	0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x69, 0x6e, 0x62, 0x6f, 0x78, 0x54, 0x79, 0x70,
	0x65, 0x12, 0x20, 0x0a, 0x0b, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72,
	0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x4e, 0x75, 0x6d,
	0x62, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x0f, 0x73, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61,
	0x67, 0x65, 0x42, 0x6f, 0x64, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x53,
	0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x6f, 0x64, 0x79, 0x52, 0x0f,
	0x73, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x6f, 0x64, 0x79, 0x12,
	0x0e, 0x0a, 0x02, 0x61, 0x61, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x61, 0x61, 0x12,
	0x26, 0x0a, 0x0e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
	0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50,
	0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x26, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65,
	0x72, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65,
	0x72, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12,
	0x1a, 0x0a, 0x08, 0x61, 0x75, 0x74, 0x68, 0x54, 0x79, 0x70, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28,
	0x0d, 0x52, 0x08, 0x61, 0x75, 0x74, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x62,
	0x69, 0x7a, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x62, 0x69, 0x7a, 0x12, 0x16, 0x0a,
	0x06, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61,
	0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x35, 0x0a, 0x0b, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73,
	0x4c, 0x69, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x72, 0x0a, 0x13,
	0x4c, 0x69, 0x76, 0x65, 0x53, 0x68, 0x6f, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x4d, 0x65, 0x73, 0x73,
	0x61, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f,
	0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20,
	0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x04, 0x20,
	0x01, 0x28, 0x03, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64,
	0x22, 0xe1, 0x02, 0x0a, 0x10, 0x52, 0x6f, 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x73, 0x4d, 0x65,
	0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06,
	0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61,
	0x79, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x69,
	0x73, 0x70, 0x6c, 0x61, 0x79, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x64, 0x69,
	0x73, 0x70, 0x6c, 0x61, 0x79, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x0d, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65,
	0x12, 0x20, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4c, 0x6f, 0x6e, 0x67, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4c, 0x6f,
	0x6e, 0x67, 0x12, 0x22, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x6c,
	0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61,
	0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61,
	0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e,
	0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x20,
	0x0a, 0x0b, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x18, 0x07, 0x20,
	0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c,
	0x12, 0x1a, 0x0a, 0x08, 0x69, 0x73, 0x48, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x18, 0x08, 0x20, 0x01,
	0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x48, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x12, 0x14, 0x0a, 0x05,
	0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74,
	0x61, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x54, 0x79, 0x70,
	0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79,
	0x54, 0x79, 0x70, 0x65, 0x22, 0x99, 0x01, 0x0a, 0x0b, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74,
	0x49, 0x6e, 0x66, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f,
	0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6d, 0x6f,
	0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x30, 0x0a, 0x13,
	0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x46, 0x6c, 0x61, 0x73, 0x68, 0x55, 0x69, 0x64, 0x73, 0x4c,
	0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, 0x52, 0x13, 0x74, 0x61, 0x72, 0x67, 0x65,
	0x74, 0x46, 0x6c, 0x61, 0x73, 0x68, 0x55, 0x69, 0x64, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x20,
	0x0a, 0x0b, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20,
	0x01, 0x28, 0x03, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65,
	0x22, 0x94, 0x01, 0x0a, 0x0c, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x6e, 0x66,
	0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69,
	0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69,
	0x6f, 0x6e, 0x49, 0x64, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, 0x52,
	0x10, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x4c, 0x69, 0x73,
	0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x49,
	0x6e, 0x64, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x75, 0x6e, 0x69, 0x71,
	0x75, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x22, 0xa4, 0x02, 0x0a, 0x14, 0x50, 0x72, 0x6f, 0x64,
	0x75, 0x63, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
	0x12, 0x1f, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x07, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
	0x6e, 0x12, 0x28, 0x0a, 0x0f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73,
	0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x75, 0x70, 0x64, 0x61,
	0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x75,
	0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x61, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x61, 0x73, 0x74, 0x12, 0x42, 0x0a,
	0x15, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x6e,
	0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x50,
	0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x15, 0x75, 0x70, 0x64, 0x61,
	0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73,
	0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03,
	0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x45, 0x0a, 0x16, 0x75, 0x70, 0x64, 0x61, 0x74,
	0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73,
	0x74, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f,
	0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x16, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x61,
	0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x49,
	0x0a, 0x0e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
	0x12, 0x1f, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x07, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
	0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x83, 0x01, 0x0a, 0x0f, 0x46, 0x61,
	0x6e, 0x73, 0x63, 0x6c, 0x75, 0x62, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x27, 0x0a,
	0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x07, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d,
	0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f,
	0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e,
	0x74, 0x65, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x05, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22,
	0xd4, 0x01, 0x0a, 0x0f, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x61, 0x6e, 0x6b, 0x4d, 0x65, 0x73, 0x73,
	0x61, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f,
	0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x09, 0x72, 0x61, 0x6e, 0x6b, 0x73, 0x4c, 0x69, 0x73,
	0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x61,
	0x6e, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x61,
	0x6e, 0x6b, 0x52, 0x09, 0x72, 0x61, 0x6e, 0x6b, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x1a, 0x67, 0x0a,
	0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x19, 0x0a, 0x04, 0x75, 0x73, 0x65,
	0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04,
	0x75, 0x73, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x53, 0x74, 0x72,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x53, 0x74, 0x72,
	0x12, 0x24, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x48, 0x69, 0x64, 0x64, 0x65,
	0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65,
	0x48, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x22, 0xa7, 0x03, 0x0a, 0x0b, 0x52, 0x6f, 0x6f, 0x6d, 0x4d,
	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52,
	0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65,
	0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e,
	0x74, 0x12, 0x2a, 0x0a, 0x10, 0x73, 0x75, 0x70, 0x70, 0x72, 0x6f, 0x74, 0x4c, 0x61, 0x6e, 0x64,
	0x73, 0x63, 0x61, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x73, 0x75, 0x70,
	0x70, 0x72, 0x6f, 0x74, 0x4c, 0x61, 0x6e, 0x64, 0x73, 0x63, 0x61, 0x70, 0x65, 0x12, 0x3a, 0x0a,
	0x0f, 0x72, 0x6f, 0x6f, 0x6d, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x74, 0x79, 0x70, 0x65,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x52, 0x6f, 0x6f, 0x6d, 0x4d, 0x73, 0x67,
	0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0f, 0x72, 0x6f, 0x6f, 0x6d, 0x6d, 0x65,
	0x73, 0x73, 0x61, 0x67, 0x65, 0x74, 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x79, 0x73,
	0x74, 0x65, 0x6d, 0x54, 0x6f, 0x70, 0x4d, 0x73, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52,
	0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x54, 0x6f, 0x70, 0x4d, 0x73, 0x67, 0x12, 0x28, 0x0a,
	0x0f, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x64, 0x47, 0x75, 0x61, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x65,
	0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x64, 0x47, 0x75,
	0x61, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x69, 0x7a, 0x53, 0x63,
	0x65, 0x6e, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x69, 0x7a, 0x53, 0x63,
	0x65, 0x6e, 0x65, 0x12, 0x48, 0x0a, 0x0e, 0x62, 0x75, 0x72, 0x69, 0x65, 0x64, 0x50, 0x6f, 0x69,
	0x6e, 0x74, 0x4d, 0x61, 0x70, 0x18, 0x1e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x52, 0x6f,
	0x6f, 0x6d, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x42, 0x75, 0x72, 0x69, 0x65, 0x64,
	0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x62,
	0x75, 0x72, 0x69, 0x65, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4d, 0x61, 0x70, 0x1a, 0x41, 0x0a,
	0x13, 0x42, 0x75, 0x72, 0x69, 0x65, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4d, 0x61, 0x70, 0x45,
	0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
	0x22, 0x69, 0x0a, 0x1b, 0x52, 0x61, 0x6e, 0x6b, 0x6c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x75, 0x72,
	0x45, 0x6e, 0x74, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12,
	0x1f, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x07, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e,
	0x12, 0x29, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15,
	0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x6c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x75, 0x72, 0x45, 0x6e, 0x74,
	0x72, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x22, 0xb8, 0x02, 0x0a, 0x14,
	0x52, 0x61, 0x6e, 0x6b, 0x6c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x75, 0x72, 0x45, 0x6e, 0x74, 0x72,
	0x61, 0x6e, 0x63, 0x65, 0x12, 0x3d, 0x0a, 0x0c, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x69,
	0x6e, 0x66, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x52, 0x61, 0x6e,
	0x6b, 0x6c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x75, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x61, 0x6e, 0x63,
	0x65, 0x5f, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e,
	0x66, 0x6f, 0x73, 0x12, 0x4c, 0x0a, 0x14, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x67,
	0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,
	0x0b, 0x32, 0x1a, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x6c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x75, 0x72,
	0x45, 0x6e, 0x74, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x12, 0x64,
	0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x66, 0x6f,
	0x73, 0x12, 0x41, 0x0a, 0x0e, 0x76, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x69, 0x6e,
	0x66, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x52, 0x61, 0x6e, 0x6b,
	0x6c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x75, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x61, 0x6e, 0x63, 0x65,
	0x5f, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0d, 0x76, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x49,
	0x6e, 0x66, 0x6f, 0x73, 0x12, 0x50, 0x0a, 0x16, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f,
	0x76, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x73, 0x18, 0x04,
	0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x6c, 0x69, 0x73, 0x74, 0x48,
	0x6f, 0x75, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x49, 0x6e, 0x66, 0x6f,
	0x52, 0x14, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61,
	0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x22, 0x53, 0x0a, 0x19, 0x52, 0x61, 0x6e, 0x6b, 0x6c, 0x69,
	0x73, 0x74, 0x48, 0x6f, 0x75, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x49,
	0x6e, 0x66, 0x6f, 0x12, 0x36, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01,
	0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x6c, 0x69, 0x73, 0x74, 0x48,
	0x6f, 0x75, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x44, 0x65, 0x74, 0x61,
	0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xf0, 0x01, 0x0a, 0x1b,
	0x52, 0x61, 0x6e, 0x6b, 0x6c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x75, 0x72, 0x45, 0x6e, 0x74, 0x72,
	0x61, 0x6e, 0x63, 0x65, 0x5f, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x30, 0x0a, 0x05, 0x70,
	0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x52, 0x61, 0x6e,
	0x6b, 0x6c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x75, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x61, 0x6e, 0x63,
	0x65, 0x5f, 0x50, 0x61, 0x67, 0x65, 0x52, 0x05, 0x70, 0x61, 0x67, 0x65, 0x73, 0x12, 0x23, 0x0a,
	0x0d, 0x72, 0x61, 0x6e, 0x6b, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x72, 0x61, 0x6e, 0x6b, 0x6c, 0x69, 0x73, 0x74, 0x54, 0x79,
	0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x61, 0x6e, 0x6b,
	0x6c, 0x69, 0x73, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x0d, 0x72, 0x61, 0x6e, 0x6b, 0x6c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x74, 0x72, 0x61, 0x12,
	0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x65, 0x78, 0x74, 0x72,
	0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x6e, 0x63,
	0x65, 0x45, 0x78, 0x74, 0x72, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61,
	0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x22, 0xa2,
	0x01, 0x0a, 0x19, 0x52, 0x61, 0x6e, 0x6b, 0x6c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x75, 0x72, 0x45,
	0x6e, 0x74, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x50, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07,
	0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63,
	0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72,
	0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x0f, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x6f,
	0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x68, 0x6f, 0x77, 0x54, 0x69, 0x6d, 0x65, 0x73,
	0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54,
	0x79, 0x70, 0x65, 0x22, 0x9c, 0x02, 0x0a, 0x13, 0x49, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x42, 0x61,
	0x6e, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x06, 0x63,
	0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x43, 0x6f,
	0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05,
	0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x78, 0x74,
	0x72, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f,
	0x0a, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20,
	0x01, 0x28, 0x05, 0x52, 0x0a, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12,
	0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x75, 0x72, 0x6c,
	0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
	0x72, 0x55, 0x72, 0x6c, 0x12, 0x2c, 0x0a, 0x12, 0x6c, 0x79, 0x6e, 0x78, 0x5f, 0x63, 0x6f, 0x6e,
	0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x10, 0x6c, 0x79, 0x6e, 0x78, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x55,
	0x72, 0x6c, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f,
	0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74,
	0x61, 0x69, 0x6e, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x6f, 0x70, 0x5f,
	0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6f, 0x70, 0x54, 0x79,
	0x70, 0x65, 0x22, 0xb8, 0x01, 0x0a, 0x13, 0x52, 0x6f, 0x6f, 0x6d, 0x44, 0x61, 0x74, 0x61, 0x53,
	0x79, 0x6e, 0x63, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x06, 0x63, 0x6f,
	0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x43, 0x6f, 0x6d,
	0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x72,
	0x6f, 0x6f, 0x6d, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x6f, 0x6f,
	0x6d, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x79, 0x6e, 0x63, 0x4b, 0x65, 0x79, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x79, 0x6e, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x18, 0x0a,
	0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
	0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f,
	0x61, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61,
	0x64, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x69, 0x7a, 0x4c, 0x6f, 0x67, 0x49, 0x44, 0x18, 0x06, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x69, 0x7a, 0x4c, 0x6f, 0x67, 0x49, 0x44, 0x22, 0x3c, 0x0a,
	0x19, 0x4c, 0x75, 0x63, 0x6b, 0x79, 0x42, 0x6f, 0x78, 0x54, 0x65, 0x6d, 0x70, 0x53, 0x74, 0x61,
	0x74, 0x75, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x06, 0x63, 0x6f,
	0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x43, 0x6f, 0x6d,
	0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x22, 0x50, 0x0a, 0x17, 0x44,
	0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x4d,
	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52,
	0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x22, 0x63, 0x0a,
	0x17, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74,
	0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d,
	0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f,
	0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x05, 0x64, 0x65, 0x74,
	0x61, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x44, 0x65, 0x63, 0x6f, 0x74,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x05, 0x64, 0x65, 0x74,
	0x61, 0x69, 0x22, 0x80, 0x01, 0x0a, 0x10, 0x44, 0x65, 0x63, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x34, 0x0a, 0x0f, 0x74, 0x65, 0x78, 0x74, 0x5f,
	0x64, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x0b, 0x2e, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x74,
	0x65, 0x78, 0x74, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a,
	0x10, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x64, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x44, 0x65, 0x63, 0x6f, 0x72,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xfc, 0x05, 0x0a, 0x0a, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x02, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x05, 0x69, 0x6d, 0x61,
	0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f,
	0x72, 0x65, 0x63, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, 0x70, 0x75,
	0x74, 0x52, 0x65, 0x63, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x73, 0x69,
	0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x78, 0x74, 0x53, 0x69,
	0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72,
	0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x65, 0x78, 0x74, 0x43, 0x6f, 0x6c, 0x6f,
	0x72, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x6d,
	0x61, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x09, 0x6d, 0x61, 0x78, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74,
	0x61, 0x74, 0x75, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74,
	0x75, 0x73, 0x12, 0x0c, 0x0a, 0x01, 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x01, 0x68,
	0x12, 0x0c, 0x0a, 0x01, 0x78, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x01, 0x78, 0x12, 0x0c,
	0x0a, 0x01, 0x77, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x01, 0x77, 0x12, 0x0c, 0x0a, 0x01,
	0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x01, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69,
	0x6e, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x19,
	0x0a, 0x08, 0x73, 0x75, 0x62, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x07, 0x73, 0x75, 0x62, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2e, 0x0a, 0x0b, 0x72, 0x65, 0x73,
	0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c,
	0x2e, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x72, 0x65,
	0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x30, 0x0a, 0x10, 0x6e, 0x69, 0x6e,
	0x65, 0x5f, 0x70, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x11, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x0e, 0x6e, 0x69, 0x6e,
	0x65, 0x50, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x74,
	0x65, 0x78, 0x74, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 0x5f, 0x65, 0x66, 0x66, 0x65,
	0x63, 0x74, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x74, 0x65, 0x78, 0x74, 0x53,
	0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x73, 0x12, 0x4e, 0x0a,
	0x24, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x61, 0x64, 0x6a, 0x75,
	0x73, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x70, 0x6f, 0x73,
	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x20, 0x74, 0x65, 0x78,
	0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x61, 0x62, 0x6c, 0x65,
	0x53, 0x74, 0x61, 0x72, 0x74, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4a, 0x0a,
	0x22, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x61, 0x64, 0x6a, 0x75,
	0x73, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74,
	0x69, 0x6f, 0x6e, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1e, 0x74, 0x65, 0x78, 0x74, 0x49,
	0x6d, 0x61, 0x67, 0x65, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e,
	0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x10, 0x74, 0x65, 0x78,
	0x74, 0x5f, 0x66, 0x6f, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x15, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x46, 0x6f, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x74, 0x65, 0x78, 0x74,
	0x46, 0x6f, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x28, 0x0a, 0x10, 0x61, 0x75,
	0x64, 0x69, 0x74, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x16,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x75, 0x64, 0x69, 0x74, 0x54, 0x65, 0x78, 0x74, 0x43,
	0x6f, 0x6c, 0x6f, 0x72, 0x22, 0xfd, 0x01, 0x0a, 0x0b, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x6d,
	0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70,
	0x70, 0x6f, 0x69, 0x6e, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x61,
	0x6e, 0x63, 0x68, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
	0x61, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6f, 0x6d,
	0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x6f, 0x6f, 0x6d, 0x49,
	0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65,
	0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x62,
	0x74, 0x6e, 0x5f, 0x72, 0x65, 0x63, 0x74, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x62,
	0x74, 0x6e, 0x52, 0x65, 0x63, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x74, 0x6e, 0x5f, 0x63, 0x6f,
	0x6c, 0x6f, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x74, 0x6e, 0x43, 0x6f,
	0x6c, 0x6f, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76,
	0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x52, 0x65, 0x73, 0x65,
	0x72, 0x76, 0x65, 0x64, 0x22, 0x85, 0x01, 0x0a, 0x14, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x46, 0x6f, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x16, 0x0a,
	0x06, 0x46, 0x6f, 0x6e, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x46,
	0x6f, 0x6e, 0x74, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61,
	0x64, 0x55, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x44, 0x6f, 0x77, 0x6e,
	0x6c, 0x6f, 0x61, 0x64, 0x55, 0x72, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75,
	0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12,
	0x1b, 0x0a, 0x09, 0x66, 0x6f, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x08, 0x66, 0x6f, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x8d, 0x04, 0x0a,
	0x19, 0x4c, 0x69, 0x6e, 0x6b, 0x4d, 0x69, 0x63, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65,
	0x4b, 0x74, 0x76, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x06, 0x63, 0x6f,
	0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x43, 0x6f, 0x6d,
	0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x6d,
	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x26,
	0x0a, 0x09, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x03, 0x28,
	0x0b, 0x32, 0x09, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x6c, 0x69,
	0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x26, 0x0a, 0x0f, 0x77, 0x61, 0x6e, 0x74, 0x5f, 0x73,
	0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x0d, 0x77, 0x61, 0x6e, 0x74, 0x53, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x37,
	0x0a, 0x18, 0x77, 0x61, 0x6e, 0x74, 0x5f, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x6f, 0x6e, 0x67,
	0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x15, 0x77, 0x61, 0x6e, 0x74, 0x53, 0x69, 0x6e, 0x67, 0x53, 0x6f, 0x6e, 0x67, 0x54, 0x68,
	0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x73, 0x75, 0x6e, 0x67, 0x5f,
	0x73, 0x6f, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x0d, 0x73, 0x75, 0x6e, 0x67, 0x53, 0x6f, 0x6e, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12,
	0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x67, 0x72, 0x61, 0x64, 0x65, 0x18,
	0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x44, 0x6f, 0x77, 0x6e, 0x67, 0x72, 0x61,
	0x64, 0x65, 0x12, 0x5a, 0x0a, 0x14, 0x61, 0x6c, 0x6c, 0x5f, 0x73, 0x6f, 0x6e, 0x67, 0x5f, 0x75,
	0x6e, 0x69, 0x71, 0x75, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x29, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x4d, 0x69, 0x63, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e,
	0x63, 0x65, 0x4b, 0x74, 0x76, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x53, 0x6f, 0x6e,
	0x67, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x11, 0x61, 0x6c, 0x6c,
	0x53, 0x6f, 0x6e, 0x67, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x1a, 0x7c,
	0x0a, 0x0e, 0x53, 0x6f, 0x6e, 0x67, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x49, 0x6e, 0x66, 0x6f,
	0x12, 0x17, 0x0a, 0x07, 0x73, 0x6f, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x06, 0x73, 0x6f, 0x6e, 0x67, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65,
	0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72,
	0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x6f, 0x6e, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x6f, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12,
	0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, 0x04, 0x20, 0x01,
	0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x22, 0x56, 0x0a, 0x08,
	0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x0a, 0x05, 0x6d, 0x75, 0x73, 0x69,
	0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x4b, 0x74, 0x76, 0x53, 0x6f, 0x6e,
	0x67, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x05, 0x6d, 0x75, 0x73, 0x69, 0x63, 0x12, 0x24,
	0x0a, 0x0e, 0x69, 0x73, 0x5f, 0x73, 0x65, 0x6c, 0x66, 0x5f, 0x73, 0x65, 0x65, 0x69, 0x6e, 0x67,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x73, 0x53, 0x65, 0x6c, 0x66, 0x53, 0x65,
	0x65, 0x69, 0x6e, 0x67, 0x22, 0x9c, 0x12, 0x0a, 0x0d, 0x4b, 0x74, 0x76, 0x53, 0x6f, 0x6e, 0x67,
	0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06,
	0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x75,
	0x74, 0x68, 0x6f, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x79, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x79,
	0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x79, 0x72, 0x69, 0x63, 0x54,
	0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x6f, 0x6e, 0x67, 0x5f, 0x75, 0x72, 0x6c, 0x18,
	0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x6f, 0x6e, 0x67, 0x55, 0x72, 0x6c, 0x12, 0x24,
	0x0a, 0x0e, 0x6c, 0x79, 0x72, 0x69, 0x63, 0x5f, 0x75, 0x72, 0x6c, 0x5f, 0x6c, 0x69, 0x73, 0x74,
	0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x79, 0x72, 0x69, 0x63, 0x55, 0x72, 0x6c,
	0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x08, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x21, 0x0a,
	0x0c, 0x73, 0x6f, 0x6e, 0x67, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x09, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x6f, 0x6e, 0x67, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e,
	0x12, 0x2c, 0x0a, 0x12, 0x70, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x73, 0x74, 0x61, 0x72,
	0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x70, 0x72,
	0x65, 0x76, 0x69, 0x65, 0x77, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x37,
	0x0a, 0x0a, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x18, 0x0b, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x18, 0x2e, 0x4b, 0x74, 0x76, 0x53, 0x6f, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x75,
	0x63, 0x74, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x66, 0x75,
	0x6c, 0x6c, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x12, 0x49, 0x0a, 0x13, 0x61, 0x63, 0x63, 0x6f, 0x6d,
	0x70, 0x61, 0x6e, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x18, 0x0c,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x4b, 0x74, 0x76, 0x53, 0x6f, 0x6e, 0x67, 0x53, 0x74,
	0x72, 0x75, 0x63, 0x74, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x12,
	0x61, 0x63, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x61,
	0x63, 0x6b, 0x12, 0x22, 0x0a, 0x0d, 0x6e, 0x65, 0x77, 0x5f, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x5f,
	0x75, 0x72, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x65, 0x77, 0x43, 0x6f,
	0x76, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x69, 0x64, 0x69, 0x5f, 0x75,
	0x72, 0x6c, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x69, 0x64, 0x69, 0x55, 0x72,
	0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x66, 0x61, 0x76, 0x6f, 0x72, 0x69, 0x74, 0x65,
	0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x46, 0x61, 0x76, 0x6f, 0x72, 0x69,
	0x74, 0x65, 0x12, 0x37, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f,
	0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x4b, 0x74, 0x76, 0x53, 0x6f, 0x6e, 0x67,
	0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f,
	0x52, 0x09, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x74,
	0x61, 0x67, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12,
	0x31, 0x0a, 0x0c, 0x6d, 0x75, 0x73, 0x69, 0x63, 0x5f, 0x63, 0x6c, 0x69, 0x6d, 0x61, 0x78, 0x18,
	0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x4d, 0x75, 0x73, 0x69, 0x63, 0x49, 0x6e, 0x74,
	0x65, 0x72, 0x76, 0x61, 0x6c, 0x52, 0x0b, 0x6d, 0x75, 0x73, 0x69, 0x63, 0x43, 0x6c, 0x69, 0x6d,
	0x61, 0x78, 0x12, 0x2a, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x6c, 0x75, 0x64, 0x65, 0x73, 0x18, 0x14,
	0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x4d, 0x75, 0x73, 0x69, 0x63, 0x49, 0x6e, 0x74, 0x65,
	0x72, 0x76, 0x61, 0x6c, 0x52, 0x08, 0x70, 0x72, 0x65, 0x6c, 0x75, 0x64, 0x65, 0x73, 0x12, 0x2e,
	0x0a, 0x0a, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6c, 0x75, 0x64, 0x65, 0x73, 0x18, 0x15, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x4d, 0x75, 0x73, 0x69, 0x63, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76,
	0x61, 0x6c, 0x52, 0x0a, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6c, 0x75, 0x64, 0x65, 0x73, 0x12, 0x2a,
	0x0a, 0x08, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x16, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x0e, 0x2e, 0x4d, 0x75, 0x73, 0x69, 0x63, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c,
	0x52, 0x08, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x70, 0x61,
	0x74, 0x74, 0x65, 0x72, 0x6e, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x17,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x69, 0x6c,
	0x65, 0x55, 0x72, 0x6c, 0x12, 0x37, 0x0a, 0x0f, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x73,
	0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x18, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e,
	0x4d, 0x75, 0x73, 0x69, 0x63, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x52, 0x0e, 0x62,
	0x72, 0x69, 0x64, 0x67, 0x65, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x33, 0x0a,
	0x0d, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x19,
	0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x4d, 0x75, 0x73, 0x69, 0x63, 0x49, 0x6e, 0x74, 0x65,
	0x72, 0x76, 0x61, 0x6c, 0x52, 0x0c, 0x6d, 0x61, 0x69, 0x6e, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e,
	0x74, 0x73, 0x12, 0x37, 0x0a, 0x0f, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x65, 0x5f, 0x73, 0x65, 0x67,
	0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x1a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x4d, 0x75,
	0x73, 0x69, 0x63, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x52, 0x0e, 0x66, 0x69, 0x6e,
	0x61, 0x6c, 0x65, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x31, 0x0a, 0x0b, 0x63,
	0x68, 0x6f, 0x72, 0x75, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x10, 0x2e, 0x43, 0x68, 0x6f, 0x72, 0x75, 0x73, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x49, 0x6e,
	0x66, 0x6f, 0x52, 0x0a, 0x63, 0x68, 0x6f, 0x72, 0x75, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1b,
	0x0a, 0x09, 0x73, 0x6f, 0x6e, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x1c, 0x20, 0x01, 0x28,
	0x05, 0x52, 0x08, 0x73, 0x6f, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x61,
	0x64, 0x64, 0x5f, 0x73, 0x6f, 0x6e, 0x67, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x1d,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x64, 0x64, 0x53, 0x6f, 0x6e, 0x67, 0x53, 0x6f, 0x75,
	0x72, 0x63, 0x65, 0x12, 0x3c, 0x0a, 0x1b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6f, 0x72, 0x64,
	0x65, 0x72, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x63, 0x75, 0x72, 0x5f, 0x61, 0x6e, 0x63, 0x68,
	0x6f, 0x72, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4f,
	0x72, 0x64, 0x65, 0x72, 0x57, 0x69, 0x74, 0x68, 0x43, 0x75, 0x72, 0x41, 0x6e, 0x63, 0x68, 0x6f,
	0x72, 0x12, 0x2c, 0x0a, 0x12, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x74, 0x6f, 0x74, 0x61,
	0x6c, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x67,
	0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12,
	0x1d, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x20, 0x20,
	0x03, 0x28, 0x09, 0x52, 0x09, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x49, 0x64, 0x73, 0x12, 0x15,
	0x0a, 0x06, 0x69, 0x64, 0x5f, 0x73, 0x74, 0x72, 0x18, 0x21, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
	0x69, 0x64, 0x53, 0x74, 0x72, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x6f, 0x6e, 0x67, 0x5f, 0x63, 0x6f,
	0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x18, 0x22, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0d, 0x73,
	0x6f, 0x6e, 0x67, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x12, 0x22, 0x0a, 0x0d,
	0x69, 0x73, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x5f, 0x73, 0x6f, 0x6e, 0x67, 0x18, 0x23, 0x20,
	0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x53, 0x6f, 0x6e, 0x67,
	0x12, 0x28, 0x0a, 0x10, 0x69, 0x73, 0x5f, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x5f,
	0x73, 0x6f, 0x6e, 0x67, 0x18, 0x24, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x73, 0x46, 0x72,
	0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x6f, 0x6e, 0x67, 0x12, 0x25, 0x0a, 0x0e, 0x66, 0x72,
	0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x79, 0x72, 0x69, 0x63, 0x18, 0x25, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x0d, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x79, 0x72, 0x69,
	0x63, 0x12, 0x3f, 0x0a, 0x12, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x6f,
	0x6e, 0x67, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x26, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e,
	0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x6f, 0x6e, 0x67, 0x49, 0x6e, 0x66, 0x6f,
	0x52, 0x10, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x6f, 0x6e, 0x67, 0x49, 0x6e,
	0x66, 0x6f, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x79, 0x72, 0x69, 0x63, 0x5f, 0x68, 0x61, 0x73, 0x68,
	0x18, 0x27, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x79, 0x72, 0x69, 0x63, 0x48, 0x61, 0x73,
	0x68, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x69, 0x64, 0x69, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x28,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x69, 0x64, 0x69, 0x48, 0x61, 0x73, 0x68, 0x12, 0x39,
	0x0a, 0x10, 0x77, 0x61, 0x6e, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x5f, 0x69, 0x6e,
	0x66, 0x6f, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x57, 0x61, 0x6e, 0x74, 0x4c,
	0x69, 0x73, 0x74, 0x65, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0e, 0x77, 0x61, 0x6e, 0x74, 0x4c,
	0x69, 0x73, 0x74, 0x65, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x43, 0x0a, 0x0e, 0x63, 0x68, 0x61,
	0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x2a, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x1c, 0x2e, 0x4b, 0x74, 0x76, 0x53, 0x6f, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x75, 0x63,
	0x74, 0x2e, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52,
	0x0d, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x29,
	0x0a, 0x03, 0x65, 0x78, 0x74, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x4b, 0x74,
	0x76, 0x53, 0x6f, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x45, 0x78, 0x74, 0x45,
	0x6e, 0x74, 0x72, 0x79, 0x52, 0x03, 0x65, 0x78, 0x74, 0x1a, 0x36, 0x0a, 0x08, 0x45, 0x78, 0x74,
	0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
	0x01, 0x1a, 0x93, 0x02, 0x0a, 0x09, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x49, 0x6e, 0x66, 0x6f, 0x12,
	0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72,
	0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6f, 0x6e, 0x67, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x6e,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6f, 0x6e, 0x67, 0x50, 0x61, 0x74, 0x74,
	0x65, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x49, 0x64, 0x12, 0x1f, 0x0a,
	0x0b, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x6c, 0x75, 0x66, 0x73, 0x18, 0x04, 0x20, 0x01,
	0x28, 0x01, 0x52, 0x0a, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x4c, 0x75, 0x66, 0x73, 0x12, 0x1f,
	0x0a, 0x0b, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x70, 0x65, 0x61, 0x6b, 0x18, 0x05, 0x20,
	0x01, 0x28, 0x01, 0x52, 0x0a, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x50, 0x65, 0x61, 0x6b, 0x12,
	0x10, 0x0a, 0x03, 0x62, 0x70, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x62, 0x70,
	0x6d, 0x12, 0x26, 0x0a, 0x0f, 0x62, 0x65, 0x61, 0x74, 0x73, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74,
	0x5f, 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x62, 0x65, 0x61, 0x74,
	0x73, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x72, 0x65,
	0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
	0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69,
	0x6c, 0x65, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66,
	0x69, 0x6c, 0x65, 0x48, 0x61, 0x73, 0x68, 0x1a, 0x85, 0x01, 0x0a, 0x09, 0x4f, 0x72, 0x64, 0x65,
	0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x5f, 0x75, 0x73, 0x65,
	0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e,
	0x66, 0x6f, 0x52, 0x07, 0x74, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x73,
	0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72,
	0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x75,
	0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x68, 0x61, 0x73, 0x5f, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x68, 0x61, 0x73, 0x41, 0x64, 0x64, 0x65, 0x64, 0x1a,
	0x72, 0x0a, 0x0d, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f,
	0x12, 0x2c, 0x0a, 0x12, 0x6b, 0x74, 0x76, 0x5f, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67,
	0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x6b, 0x74,
	0x76, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d,
	0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a,
	0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x73, 0x63,
	0x6f, 0x72, 0x65, 0x22, 0x67, 0x0a, 0x10, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x53,
	0x6f, 0x6e, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x26, 0x0a, 0x0f, 0x75, 0x73, 0x65, 0x72, 0x5f,
	0x6d, 0x69, 0x64, 0x69, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01,
	0x52, 0x0d, 0x75, 0x73, 0x65, 0x72, 0x4d, 0x69, 0x64, 0x69, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12,
	0x2b, 0x0a, 0x12, 0x69, 0x73, 0x5f, 0x68, 0x69, 0x67, 0x68, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65,
	0x5f, 0x73, 0x6f, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x69, 0x73, 0x48,
	0x69, 0x67, 0x68, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x53, 0x6f, 0x6e, 0x67, 0x22, 0xe5, 0x04, 0x0a,
	0x08, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63,
	0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63,
	0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x06, 0x61,
	0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x15, 0x0a, 0x06, 0x69, 0x64, 0x5f, 0x73, 0x74, 0x72, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x64, 0x53, 0x74, 0x72, 0x12, 0x31, 0x0a, 0x15,
	0x68, 0x69, 0x67, 0x68, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x73, 0x6f, 0x6e, 0x67, 0x5f,
	0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x68, 0x69, 0x67,
	0x68, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x53, 0x6f, 0x6e, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12,
	0x39, 0x0a, 0x1a, 0x6b, 0x74, 0x76, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x6d, 0x69, 0x63,
	0x5f, 0x70, 0x6f, 0x73, 0x5f, 0x74, 0x61, 0x67, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x06, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x15, 0x6b, 0x74, 0x76, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4d, 0x69, 0x63,
	0x50, 0x6f, 0x73, 0x54, 0x61, 0x67, 0x54, 0x65, 0x78, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x6b, 0x74,
	0x76, 0x5f, 0x6c, 0x79, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x07, 0x20, 0x01,
	0x28, 0x05, 0x52, 0x0c, 0x6b, 0x74, 0x76, 0x4c, 0x79, 0x72, 0x69, 0x63, 0x54, 0x65, 0x78, 0x74,
	0x12, 0x4b, 0x0a, 0x23, 0x6b, 0x74, 0x76, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e,
	0x74, 0x5f, 0x6c, 0x79, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x66, 0x69, 0x72,
	0x73, 0x74, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1e, 0x6b,
	0x74, 0x76, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x4c, 0x79, 0x72, 0x69, 0x63,
	0x54, 0x65, 0x78, 0x74, 0x46, 0x69, 0x72, 0x73, 0x74, 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x4d, 0x0a,
	0x24, 0x6b, 0x74, 0x76, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x5f, 0x6c,
	0x79, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64,
	0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x1f, 0x6b, 0x74, 0x76,
	0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x4c, 0x79, 0x72, 0x69, 0x63, 0x54, 0x65,
	0x78, 0x74, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x44, 0x0a, 0x13,
	0x68, 0x69, 0x67, 0x68, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x73, 0x6f, 0x6e, 0x67, 0x5f,
	0x74, 0x61, 0x67, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x55, 0x73, 0x65, 0x72,
	0x48, 0x69, 0x67, 0x68, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x53, 0x6f, 0x6e, 0x67, 0x54, 0x61, 0x67,
	0x52, 0x10, 0x68, 0x69, 0x67, 0x68, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x53, 0x6f, 0x6e, 0x67, 0x54,
	0x61, 0x67, 0x12, 0x2b, 0x0a, 0x12, 0x68, 0x69, 0x74, 0x5f, 0x6d, 0x69, 0x64, 0x69, 0x5f, 0x72,
	0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x61, 0x62, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f,
	0x68, 0x69, 0x74, 0x4d, 0x69, 0x64, 0x69, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x41, 0x62, 0x12,
	0x26, 0x0a, 0x0f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x69, 0x64, 0x69, 0x5f, 0x73, 0x63, 0x6f,
	0x72, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0d, 0x75, 0x73, 0x65, 0x72, 0x4d, 0x69,
	0x64, 0x69, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x2b, 0x0a, 0x12, 0x69, 0x73, 0x5f, 0x68, 0x69,
	0x67, 0x68, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x73, 0x6f, 0x6e, 0x67, 0x18, 0x0d, 0x20,
	0x01, 0x28, 0x08, 0x52, 0x0f, 0x69, 0x73, 0x48, 0x69, 0x67, 0x68, 0x53, 0x63, 0x6f, 0x72, 0x65,
	0x53, 0x6f, 0x6e, 0x67, 0x22, 0x3c, 0x0a, 0x0e, 0x57, 0x61, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74,
	0x65, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2a, 0x0a, 0x11, 0x77, 0x61, 0x6e, 0x74, 0x5f, 0x6c,
	0x69, 0x73, 0x74, 0x65, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x0f, 0x77, 0x61, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x43, 0x6f, 0x75,
	0x6e, 0x74, 0x22, 0x75, 0x0a, 0x0d, 0x4d, 0x75, 0x73, 0x69, 0x63, 0x49, 0x6e, 0x74, 0x65, 0x72,
	0x76, 0x61, 0x6c, 0x12, 0x32, 0x0a, 0x14, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65,
	0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x14, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x4d, 0x69, 0x6c, 0x6c,
	0x69, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x12, 0x30, 0x0a, 0x13, 0x44, 0x75, 0x72, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x69,
	0x6c, 0x6c, 0x69, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x22, 0xe9, 0x01, 0x0a, 0x0f, 0x43, 0x68,
	0x6f, 0x72, 0x75, 0x73, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x17, 0x0a,
	0x07, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
	0x69, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x64,
	0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x0f, 0x69, 0x74, 0x65, 0x6d, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f,
	0x6e, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x74, 0x65, 0x6d, 0x55, 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09,
	0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x08, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x75, 0x74,
	0x68, 0x6f, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
	0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x73,
	0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75,
	0x73, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65,
	0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x05,
	0x69, 0x6d, 0x61, 0x67, 0x65, 0x22, 0x78, 0x0a, 0x14, 0x55, 0x73, 0x65, 0x72, 0x48, 0x69, 0x67,
	0x68, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x53, 0x6f, 0x6e, 0x67, 0x54, 0x61, 0x67, 0x12, 0x31, 0x0a,
	0x15, 0x68, 0x69, 0x67, 0x68, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x73, 0x6f, 0x6e, 0x67,
	0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x68, 0x69,
	0x67, 0x68, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x53, 0x6f, 0x6e, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74,
	0x12, 0x12, 0x0a, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
	0x69, 0x63, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72,
	0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x62, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x22,
	0xe0, 0x01, 0x0a, 0x1b, 0x52, 0x6f, 0x6f, 0x6d, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x41, 0x64,
	0x61, 0x70, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12,
	0x1f, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x07, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e,
	0x12, 0x27, 0x0a, 0x0f, 0x61, 0x64, 0x61, 0x70, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74,
	0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x61, 0x64, 0x61, 0x70, 0x74,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x36, 0x0a, 0x17, 0x61, 0x64, 0x61,
	0x70, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x72,
	0x61, 0x74, 0x69, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x15, 0x61, 0x64, 0x61, 0x70,
	0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x61, 0x74, 0x69,
	0x6f, 0x12, 0x3f, 0x0a, 0x1c, 0x61, 0x64, 0x61, 0x70, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
	0x62, 0x6f, 0x64, 0x79, 0x5f, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x72, 0x61, 0x74, 0x69,
	0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x19, 0x61, 0x64, 0x61, 0x70, 0x74, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x64, 0x79, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x61, 0x74,
	0x69, 0x6f, 0x22, 0x60, 0x0a, 0x19, 0x51, 0x75, 0x69, 0x7a, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e,
	0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12,
	0x1f, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x07, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e,
	0x12, 0x22, 0x0a, 0x09, 0x71, 0x75, 0x69, 0x7a, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20,
	0x03, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x51, 0x75, 0x69, 0x7a, 0x52, 0x08, 0x71, 0x75, 0x69, 0x7a,
	0x4c, 0x69, 0x73, 0x74, 0x22, 0xb6, 0x02, 0x0a, 0x04, 0x51, 0x75, 0x69, 0x7a, 0x12, 0x17, 0x0a,
	0x07, 0x71, 0x75, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
	0x71, 0x75, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07,
	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f,
	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x71, 0x75, 0x69, 0x7a, 0x5f, 0x73,
	0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x71, 0x75, 0x69,
	0x7a, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x75, 0x6e, 0x74,
	0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x0d, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1d,
	0x0a, 0x0a, 0x77, 0x69, 0x6e, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x09, 0x77, 0x69, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a,
	0x0a, 0x62, 0x65, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x09, 0x62, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04,
	0x67, 0x61, 0x69, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x67, 0x61, 0x69, 0x6e,
	0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18,
	0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49,
	0x64, 0x12, 0x2a, 0x0a, 0x11, 0x61, 0x62, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x65, 0x5f, 0x65, 0x6e,
	0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x62,
	0x73, 0x6f, 0x6c, 0x75, 0x74, 0x65, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xb1, 0x03,
	0x0a, 0x0e, 0x48, 0x6f, 0x74, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
	0x12, 0x1f, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x07, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
	0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65,
	0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e,
	0x74, 0x12, 0x10, 0x0a, 0x03, 0x6e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03,
	0x6e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18,
	0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12,
	0x23, 0x0a, 0x0d, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x73, 0x68, 0x6f, 0x77, 0x44, 0x75, 0x72, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65,
	0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x73, 0x65, 0x71, 0x75, 0x65,
	0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x68, 0x6f, 0x74, 0x5f, 0x6c, 0x69, 0x73,
	0x74, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x68, 0x6f, 0x74, 0x4c, 0x69, 0x73, 0x74,
	0x12, 0x26, 0x0a, 0x0b, 0x72, 0x74, 0x66, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18,
	0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x52, 0x0a, 0x72, 0x74,
	0x66, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x63, 0x68, 0x61, 0x74,
	0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20,
	0x01, 0x28, 0x03, 0x52, 0x0f, 0x63, 0x68, 0x61, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74,
	0x54, 0x79, 0x70, 0x65, 0x12, 0x31, 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0xc8, 0x01,
	0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x48, 0x6f, 0x74, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65,
	0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x45, 0x78, 0x74, 0x72, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79,
	0x52, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x1a, 0x38, 0x0a, 0x0a, 0x45, 0x78, 0x74, 0x72, 0x61,
	0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
	0x01, 0x22, 0x53, 0x0a, 0x0e, 0x48, 0x6f, 0x74, 0x52, 0x6f, 0x6f, 0x6d, 0x4d, 0x65, 0x73, 0x73,
	0x61, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f,
	0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x48, 0x6f, 0x74, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f,
	0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x22, 0x25, 0x0a, 0x0b, 0x48, 0x6f, 0x74, 0x52, 0x6f, 0x6f,
	0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x42, 0x69, 0x74, 0x4d, 0x61, 0x70, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x42, 0x69, 0x74, 0x4d, 0x61, 0x70, 0x22, 0x95, 0x02,
	0x0a, 0x10, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61,
	0x67, 0x65, 0x12, 0x1f, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x07, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d,
	0x6d, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x05, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x18,
	0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x75, 0x64, 0x69,
	0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x75, 0x64,
	0x69, 0x6f, 0x55, 0x72, 0x6c, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x5f, 0x64,
	0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61,
	0x75, 0x64, 0x69, 0x6f, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x12,
	0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x61, 0x72, 0x65, 0x61, 0x5f, 0x63, 0x6f, 0x6d, 0x6d,
	0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69,
	0x63, 0x41, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x10, 0x70, 0x75, 0x62,
	0x6c, 0x69, 0x63, 0x41, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x26, 0x0a,
	0x0b, 0x72, 0x74, 0x66, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x05, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x52, 0x0a, 0x72, 0x74, 0x66, 0x43, 0x6f,
	0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x95, 0x07, 0x0a, 0x0d, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79,
	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
	0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e,
	0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65,
	0x6d, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61,
	0x12, 0x1f, 0x0a, 0x0b, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, 0x79, 0x70,
	0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x04, 0x75,
	0x73, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x55, 0x73, 0x65, 0x72,
	0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18,
	0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x4d, 0x65,
	0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x45, 0x78, 0x74, 0x72, 0x61, 0x52, 0x05, 0x65, 0x78, 0x74,
	0x72, 0x61, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x5f, 0x63, 0x6c, 0x61,
	0x73, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79,
	0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x6c, 0x65, 0x78, 0x5f, 0x73, 0x65,
	0x74, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x6c, 0x65,
	0x78, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x69, 0x7a, 0x5f,
	0x73, 0x63, 0x65, 0x6e, 0x65, 0x18, 0x64, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x69, 0x7a,
	0x53, 0x63, 0x65, 0x6e, 0x65, 0x1a, 0xc2, 0x02, 0x0a, 0x05, 0x45, 0x78, 0x74, 0x72, 0x61, 0x12,
	0x1a, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x62,
	0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x19, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e,
	0x42, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x0a, 0x62, 0x61, 0x63, 0x6b,
	0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x3d, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e,
	0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x4e,
	0x6f, 0x74, 0x69, 0x66, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x43, 0x6f, 0x6e,
	0x74, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e,
	0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x6e, 0x65, 0x65, 0x64, 0x5f, 0x67, 0x69,
	0x66, 0x74, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x06, 0x20, 0x01,
	0x28, 0x08, 0x52, 0x11, 0x6e, 0x65, 0x65, 0x64, 0x47, 0x69, 0x66, 0x74, 0x46, 0x72, 0x65, 0x71,
	0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x38, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18,
	0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x4d, 0x65,
	0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x45, 0x78, 0x74, 0x72, 0x61, 0x2e, 0x50, 0x61, 0x72, 0x61,
	0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a,
	0x39, 0x0a, 0x0b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
	0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,
	0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x67, 0x0a, 0x0a, 0x42, 0x61,
	0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x69, 0x64, 0x74,
	0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x16,
	0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06,
	0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x75, 0x72, 0x6c, 0x5f, 0x6c, 0x69,
	0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x75, 0x72, 0x6c, 0x4c, 0x69, 0x73,
	0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
	0x75, 0x72, 0x69, 0x1a, 0x4b, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x18,
	0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x65, 0x64,
	0x5f, 0x68, 0x69, 0x67, 0x68, 0x5f, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x08, 0x52, 0x0d, 0x6e, 0x65, 0x65, 0x64, 0x48, 0x69, 0x67, 0x68, 0x4c, 0x69, 0x67, 0x68, 0x74,
	0x1a, 0x6b, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12,
	0x32, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
	0x0b, 0x32, 0x16, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
	0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65,
	0x6e, 0x74, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x68, 0x69, 0x67, 0x68, 0x5f, 0x6c, 0x69, 0x67, 0x68,
	0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x68,
	0x69, 0x67, 0x68, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x22, 0x9c, 0x14,
	0x0a, 0x0f, 0x4c, 0x75, 0x63, 0x6b, 0x79, 0x42, 0x6f, 0x78, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
	0x65, 0x12, 0x1f, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x07, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d,
	0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x5f, 0x63, 0x6f,
	0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x64, 0x69, 0x61, 0x6d, 0x6f,
	0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x6f, 0x78, 0x5f, 0x69,
	0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x62, 0x6f, 0x78, 0x49, 0x64, 0x12, 0x1b,
	0x0a, 0x09, 0x73, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28,
	0x03, 0x52, 0x08, 0x73, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x64,
	0x65, 0x6c, 0x61, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52,
	0x09, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x6f,
	0x78, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x62, 0x6f,
	0x78, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x07,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c,
	0x61, 0x72, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x6c, 0x61, 0x72, 0x67,
	0x65, 0x12, 0x26, 0x0a, 0x0a, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x18,
	0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x62,
	0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x73, 0x5f,
	0x6f, 0x66, 0x66, 0x69, 0x63, 0x69, 0x61, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a,
	0x69, 0x73, 0x4f, 0x66, 0x66, 0x69, 0x63, 0x69, 0x61, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72,
	0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x70, 0x72,
	0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x19, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x0c,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65,
	0x72, 0x12, 0x43, 0x0a, 0x10, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e,
	0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x4c, 0x75,
	0x63, 0x6b, 0x79, 0x42, 0x6f, 0x78, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x49, 0x6d,
	0x67, 0x54, 0x65, 0x78, 0x74, 0x52, 0x0f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
	0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0a, 0x6c, 0x75, 0x63, 0x6b, 0x79, 0x5f,
	0x69, 0x63, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61,
	0x67, 0x65, 0x52, 0x09, 0x6c, 0x75, 0x63, 0x6b, 0x79, 0x49, 0x63, 0x6f, 0x6e, 0x12, 0x29, 0x0a,
	0x10, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79,
	0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6f, 0x78, 0x5f,
	0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x62, 0x6f,
	0x78, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x6c, 0x61, 0x74, 0x5f,
	0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c,
	0x66, 0x6c, 0x61, 0x74, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b,
	0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28,
	0x05, 0x52, 0x0a, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a,
	0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x4c, 0x75,
	0x63, 0x6b, 0x79, 0x42, 0x6f, 0x78, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x42, 0x6f,
	0x78, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x2c, 0x0a, 0x05, 0x65,
	0x78, 0x74, 0x72, 0x61, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x4c, 0x75, 0x63,
	0x6b, 0x79, 0x42, 0x6f, 0x78, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x45, 0x78, 0x74,
	0x72, 0x61, 0x52, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x12, 0x23, 0x0a, 0x0d, 0x62, 0x75, 0x73,
	0x69, 0x6e, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x03,
	0x52, 0x0c, 0x62, 0x75, 0x73, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2e,
	0x0a, 0x0f, 0x74, 0x6f, 0x70, 0x5f, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x6d, 0x61, 0x67,
	0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52,
	0x0d, 0x74, 0x6f, 0x70, 0x43, 0x6f, 0x76, 0x65, 0x72, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x34,
	0x0a, 0x12, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x5f, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x69,
	0x6d, 0x61, 0x67, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61,
	0x67, 0x65, 0x52, 0x10, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x43, 0x6f, 0x76, 0x65, 0x72, 0x49,
	0x6d, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x0a, 0x62, 0x6f, 0x78, 0x5f, 0x69, 0x64, 0x5f, 0x73,
	0x74, 0x72, 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x6f, 0x78, 0x49, 0x64, 0x53,
	0x74, 0x72, 0x12, 0x4f, 0x0a, 0x12, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x5f, 0x63, 0x6f, 0x6d,
	0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21,
	0x2e, 0x4c, 0x75, 0x63, 0x6b, 0x79, 0x42, 0x6f, 0x78, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
	0x2e, 0x42, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x73,
	0x67, 0x52, 0x10, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74,
	0x4d, 0x73, 0x67, 0x12, 0x24, 0x0a, 0x0e, 0x69, 0x73, 0x5f, 0x72, 0x69, 0x73, 0x6b, 0x79, 0x5f,
	0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x73, 0x52,
	0x69, 0x73, 0x6b, 0x79, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x63, 0x74,
	0x69, 0x76, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
	0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x05, 0x64, 0x72,
	0x65, 0x73, 0x73, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x4c, 0x75, 0x63, 0x6b,
	0x79, 0x42, 0x6f, 0x78, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x44, 0x72, 0x65, 0x73,
	0x73, 0x52, 0x05, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x3f, 0x0a, 0x12, 0x70, 0x75, 0x62, 0x6c,
	0x69, 0x63, 0x5f, 0x61, 0x72, 0x65, 0x61, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x1d,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x41, 0x72, 0x65,
	0x61, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x10, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x41,
	0x72, 0x65, 0x61, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x30, 0x0a, 0x14, 0x6a, 0x6f, 0x69,
	0x6e, 0x5f, 0x66, 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x6a, 0x6f, 0x69, 0x6e, 0x46, 0x72, 0x6f,
	0x7a, 0x65, 0x6e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x3b, 0x0a, 0x07, 0x49,
	0x6d, 0x67, 0x54, 0x65, 0x78, 0x74, 0x12, 0x1c, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x05, 0x69,
	0x6d, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x1a, 0xf1, 0x02, 0x0a, 0x07, 0x42, 0x6f, 0x78,
	0x4d, 0x65, 0x74, 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x5f, 0x64, 0x65,
	0x73, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x44,
	0x65, 0x73, 0x63, 0x12, 0x2c, 0x0a, 0x12, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x63,
	0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x10, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x44, 0x65, 0x73,
	0x63, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x61, 0x6d, 0x6f,
	0x75, 0x6e, 0x74, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11,
	0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x44, 0x65, 0x73,
	0x63, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64,
	0x65, 0x73, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x6e, 0x69, 0x6d, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x73, 0x63, 0x12, 0x2c, 0x0a, 0x12, 0x62, 0x65, 0x66, 0x6f,
	0x72, 0x65, 0x5f, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x18, 0x05,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x55, 0x6e, 0x70, 0x61,
	0x63, 0x6b, 0x44, 0x65, 0x73, 0x63, 0x12, 0x2e, 0x0a, 0x13, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73,
	0x73, 0x5f, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x18, 0x06, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x55, 0x6e, 0x70, 0x61,
	0x63, 0x6b, 0x44, 0x65, 0x73, 0x63, 0x12, 0x28, 0x0a, 0x10, 0x66, 0x61, 0x69, 0x6c, 0x5f, 0x75,
	0x6e, 0x70, 0x61, 0x63, 0x6b, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x0e, 0x66, 0x61, 0x69, 0x6c, 0x55, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x44, 0x65, 0x73, 0x63,
	0x12, 0x21, 0x0a, 0x08, 0x61, 0x64, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x07, 0x61, 0x64, 0x49, 0x6d,
	0x61, 0x67, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x6d, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x18, 0x09,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x6d, 0x44, 0x65, 0x73, 0x63, 0x1a, 0xe5, 0x02, 0x0a,
	0x05, 0x45, 0x78, 0x74, 0x72, 0x61, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e,
	0x74, 0x5f, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x63,
	0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x70,
	0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x70, 0x63, 0x74, 0x12, 0x21, 0x0a,
	0x0c, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x05, 0x20,
	0x01, 0x28, 0x03, 0x52, 0x0b, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74,
	0x12, 0x3e, 0x0a, 0x08, 0x61, 0x6c, 0x6c, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x18, 0x01, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x23, 0x2e, 0x4c, 0x75, 0x63, 0x6b, 0x79, 0x42, 0x6f, 0x78, 0x4d, 0x65, 0x73,
	0x73, 0x61, 0x67, 0x65, 0x2e, 0x45, 0x78, 0x74, 0x72, 0x61, 0x2e, 0x41, 0x6c, 0x6c, 0x44, 0x65,
	0x73, 0x63, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x61, 0x6c, 0x6c, 0x44, 0x65, 0x73, 0x63,
	0x12, 0x41, 0x0a, 0x09, 0x61, 0x6c, 0x6c, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20,
	0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x4c, 0x75, 0x63, 0x6b, 0x79, 0x42, 0x6f, 0x78, 0x4d, 0x65,
	0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x45, 0x78, 0x74, 0x72, 0x61, 0x2e, 0x41, 0x6c, 0x6c, 0x49,
	0x6d, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x61, 0x6c, 0x6c, 0x49, 0x6d,
	0x61, 0x67, 0x65, 0x1a, 0x3a, 0x0a, 0x0c, 0x41, 0x6c, 0x6c, 0x44, 0x65, 0x73, 0x63, 0x45, 0x6e,
	0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a,
	0x43, 0x0a, 0x0d, 0x41, 0x6c, 0x6c, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79,
	0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,
	0x65, 0x79, 0x12, 0x1c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
	0x3a, 0x02, 0x38, 0x01, 0x1a, 0xa1, 0x01, 0x0a, 0x10, 0x42, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x43,
	0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x73, 0x67, 0x12, 0x19, 0x0a, 0x04, 0x74, 0x65, 0x78,
	0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x52, 0x04,
	0x74, 0x65, 0x78, 0x74, 0x12, 0x26, 0x0a, 0x0a, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75,
	0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65,
	0x52, 0x0a, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x23, 0x0a, 0x09,
	0x6c, 0x65, 0x66, 0x74, 0x5f, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x08, 0x6c, 0x65, 0x66, 0x74, 0x49, 0x63, 0x6f,
	0x6e, 0x12, 0x25, 0x0a, 0x0a, 0x72, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x69, 0x63, 0x6f, 0x6e, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x09, 0x72,
	0x69, 0x67, 0x68, 0x74, 0x49, 0x63, 0x6f, 0x6e, 0x1a, 0xb1, 0x03, 0x0a, 0x05, 0x44, 0x72, 0x65,
	0x73, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x72, 0x65, 0x73, 0x73, 0x49, 0x64, 0x12, 0x2c, 0x0a,
	0x12, 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x74,
	0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x64, 0x72, 0x65, 0x73, 0x73,
	0x4f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6a,
	0x75, 0x6d, 0x70, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
	0x6a, 0x75, 0x6d, 0x70, 0x54, 0x65, 0x78, 0x74, 0x12, 0x58, 0x0a, 0x12, 0x6a, 0x75, 0x6d, 0x70,
	0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x74, 0x6f, 0x5f, 0x62, 0x6f, 0x78, 0x18, 0x04,
	0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x4c, 0x75, 0x63, 0x6b, 0x79, 0x42, 0x6f, 0x78, 0x4d,
	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x44, 0x72, 0x65, 0x73, 0x73, 0x2e, 0x4a, 0x75, 0x6d,
	0x70, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x54, 0x6f, 0x42, 0x6f, 0x78, 0x45, 0x6e, 0x74, 0x72,
	0x79, 0x52, 0x0f, 0x6a, 0x75, 0x6d, 0x70, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x54, 0x6f, 0x42,
	0x6f, 0x78, 0x12, 0x5e, 0x0a, 0x14, 0x6a, 0x75, 0x6d, 0x70, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d,
	0x61, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x2d, 0x2e, 0x4c, 0x75, 0x63, 0x6b, 0x79, 0x42, 0x6f, 0x78, 0x4d, 0x65, 0x73, 0x73, 0x61,
	0x67, 0x65, 0x2e, 0x44, 0x72, 0x65, 0x73, 0x73, 0x2e, 0x4a, 0x75, 0x6d, 0x70, 0x53, 0x63, 0x68,
	0x65, 0x6d, 0x61, 0x54, 0x6f, 0x44, 0x72, 0x65, 0x73, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
	0x11, 0x6a, 0x75, 0x6d, 0x70, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x54, 0x6f, 0x44, 0x72, 0x65,
	0x73, 0x73, 0x1a, 0x42, 0x0a, 0x14, 0x4a, 0x75, 0x6d, 0x70, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61,
	0x54, 0x6f, 0x42, 0x6f, 0x78, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
	0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05,
	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c,
	0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x44, 0x0a, 0x16, 0x4a, 0x75, 0x6d, 0x70, 0x53, 0x63,
	0x68, 0x65, 0x6d, 0x61, 0x54, 0x6f, 0x44, 0x72, 0x65, 0x73, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
	0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b,
	0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xcb, 0x01, 0x0a,
	0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x61, 0x6e, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74,
	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
	0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e,
	0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x3a, 0x0a, 0x1a, 0x72, 0x6f, 0x6f, 0x6d,
	0x5f, 0x66, 0x61, 0x6e, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e,
	0x74, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x72, 0x6f,
	0x6f, 0x6d, 0x46, 0x61, 0x6e, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74,
	0x54, 0x65, 0x78, 0x74, 0x12, 0x31, 0x0a, 0x15, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x66, 0x61, 0x6e,
	0x5f, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x03, 0x52, 0x12, 0x72, 0x6f, 0x6f, 0x6d, 0x46, 0x61, 0x6e, 0x54, 0x69, 0x63, 0x6b,
	0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x6f, 0x72, 0x63, 0x65,
	0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x66,
	0x6f, 0x72, 0x63, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x22, 0xcb, 0x06, 0x0a, 0x11, 0x53,
	0x63, 0x72, 0x65, 0x65, 0x6e, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
	0x12, 0x1f, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x07, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
	0x6e, 0x12, 0x19, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x05, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x28, 0x0a, 0x10,
	0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x43, 0x68,
	0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e,
	0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74,
	0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x1f, 0x0a, 0x06,
	0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x45,
	0x66, 0x66, 0x65, 0x63, 0x74, 0x52, 0x06, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x12, 0x31, 0x0a,
	0x10, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x69, 0x6d, 0x61, 0x67,
	0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52,
	0x0f, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65,
	0x12, 0x24, 0x0a, 0x09, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x5f, 0x76, 0x32, 0x18, 0x08, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x52, 0x08, 0x65, 0x66,
	0x66, 0x65, 0x63, 0x74, 0x56, 0x32, 0x12, 0x36, 0x0a, 0x13, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72,
	0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x76, 0x32, 0x18, 0x09, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x11, 0x62, 0x61, 0x63,
	0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x56, 0x32, 0x12, 0x3f,
	0x0a, 0x12, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x61, 0x72, 0x65, 0x61, 0x5f, 0x63, 0x6f,
	0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x50, 0x75, 0x62,
	0x6c, 0x69, 0x63, 0x41, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x10, 0x70,
	0x75, 0x62, 0x6c, 0x69, 0x63, 0x41, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12,
	0x60, 0x0a, 0x17, 0x6f, 0x66, 0x66, 0x69, 0x63, 0x69, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x6d, 0x6d,
	0x65, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x28, 0x2e, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x73,
	0x73, 0x61, 0x67, 0x65, 0x2e, 0x4f, 0x66, 0x66, 0x69, 0x63, 0x69, 0x61, 0x6c, 0x43, 0x6f, 0x6d,
	0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x15, 0x6f, 0x66, 0x66, 0x69,
	0x63, 0x69, 0x61, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69,
	0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18,
	0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65,
	0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x18,
	0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x73, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x76, 0x69, 0x65,
	0x77, 0x12, 0x3b, 0x0a, 0x12, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69,
	0x74, 0x79, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e,
	0x43, 0x68, 0x61, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x10, 0x63, 0x68,
	0x61, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x26,
	0x0a, 0x0b, 0x72, 0x74, 0x66, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x1e, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x52, 0x0a, 0x72, 0x74, 0x66, 0x43,
	0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x3e, 0x0a, 0x1c, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63,
	0x5f, 0x61, 0x72, 0x65, 0x61, 0x5f, 0x64, 0x6f, 0x65, 0x73, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x64,
	0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x70, 0x75,
	0x62, 0x6c, 0x69, 0x63, 0x41, 0x72, 0x65, 0x61, 0x44, 0x6f, 0x65, 0x73, 0x4e, 0x6f, 0x74, 0x44,
	0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x12, 0x2b, 0x0a, 0x0e, 0x72, 0x74, 0x66, 0x5f, 0x63, 0x6f,
	0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x32, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05,
	0x2e, 0x54, 0x65, 0x78, 0x74, 0x52, 0x0c, 0x72, 0x74, 0x66, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e,
	0x74, 0x56, 0x32, 0x1a, 0x33, 0x0a, 0x15, 0x4f, 0x66, 0x66, 0x69, 0x63, 0x69, 0x61, 0x6c, 0x43,
	0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08,
	0x6f, 0x66, 0x66, 0x69, 0x63, 0x69, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08,
	0x6f, 0x66, 0x66, 0x69, 0x63, 0x69, 0x61, 0x6c, 0x22, 0x82, 0x01, 0x0a, 0x06, 0x45, 0x66, 0x66,
	0x65, 0x63, 0x74, 0x12, 0x24, 0x0a, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x10, 0x2e, 0x46, 0x6c, 0x65, 0x78, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x74, 0x72,
	0x75, 0x63, 0x74, 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0b, 0x61, 0x76, 0x61,
	0x74, 0x61, 0x72, 0x5f, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06,
	0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x49, 0x63,
	0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64,
	0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x62, 0x61,
	0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x22, 0xb0, 0x01,
	0x0a, 0x0f, 0x46, 0x6c, 0x65, 0x78, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x74, 0x72, 0x75, 0x63,
	0x74, 0x12, 0x19, 0x0a, 0x08, 0x75, 0x72, 0x6c, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20,
	0x03, 0x28, 0x09, 0x52, 0x07, 0x75, 0x72, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03,
	0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x21,
	0x0a, 0x0c, 0x66, 0x6c, 0x65, 0x78, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x6c, 0x65, 0x78, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e,
	0x67, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e,
	0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x65, 0x78, 0x74, 0x53, 0x65, 0x74,
	0x74, 0x69, 0x6e, 0x67, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x6f, 0x70, 0x5f, 0x62, 0x6f, 0x72, 0x64,
	0x65, 0x72, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x0f, 0x74, 0x6f, 0x70, 0x42, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74,
	0x22, 0x62, 0x0a, 0x0c, 0x43, 0x68, 0x61, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79,
	0x12, 0x23, 0x0a, 0x0d, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74,
	0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x73, 0x68, 0x6f, 0x77, 0x49, 0x64, 0x65,
	0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x2d, 0x0a, 0x0e, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74,
	0x79, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e,
	0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x0d, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x4c,
	0x61, 0x62, 0x65, 0x6c, 0x22, 0xa0, 0x09, 0x0a, 0x13, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x45,
	0x66, 0x66, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x06,
	0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x43,
	0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x1c, 0x0a,
	0x05, 0x69, 0x63, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49,
	0x6d, 0x61, 0x67, 0x65, 0x52, 0x05, 0x69, 0x63, 0x6f, 0x6e, 0x73, 0x12, 0x21, 0x0a, 0x04, 0x74,
	0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x43, 0x6f, 0x6d, 0x62,
	0x69, 0x6e, 0x65, 0x64, 0x54, 0x65, 0x78, 0x74, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x3f,
	0x0a, 0x0a, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x45, 0x66, 0x66, 0x65, 0x63,
	0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f,
	0x75, 0x6e, 0x64, 0x52, 0x0a, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x12,
	0x49, 0x0a, 0x0e, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69,
	0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79,
	0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x44, 0x79,
	0x6e, 0x61, 0x6d, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, 0x64, 0x79, 0x6e,
	0x61, 0x6d, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x26, 0x0a, 0x07, 0x74, 0x65,
	0x78, 0x74, 0x5f, 0x76, 0x32, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x43, 0x6f,
	0x6d, 0x62, 0x69, 0x6e, 0x65, 0x64, 0x54, 0x65, 0x78, 0x74, 0x52, 0x06, 0x74, 0x65, 0x78, 0x74,
	0x56, 0x32, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x61,
	0x6e, 0x64, 0x73, 0x63, 0x61, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x73,
	0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x4c, 0x61, 0x6e, 0x64, 0x73, 0x63, 0x61, 0x70, 0x65, 0x12,
	0x43, 0x0a, 0x0c, 0x73, 0x63, 0x65, 0x6e, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18,
	0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x45, 0x66,
	0x66, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x53, 0x63, 0x65, 0x6e,
	0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0b, 0x73, 0x63, 0x65, 0x6e, 0x65, 0x43, 0x6f,
	0x6e, 0x66, 0x69, 0x67, 0x12, 0x48, 0x0a, 0x0c, 0x62, 0x75, 0x72, 0x69, 0x65, 0x64, 0x5f, 0x70,
	0x6f, 0x69, 0x6e, 0x74, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x4e, 0x6f, 0x74,
	0x69, 0x66, 0x79, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
	0x2e, 0x42, 0x75, 0x72, 0x69, 0x65, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x45, 0x6e, 0x74, 0x72,
	0x79, 0x52, 0x0b, 0x62, 0x75, 0x72, 0x69, 0x65, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x1a, 0x3e,
	0x0a, 0x10, 0x42, 0x75, 0x72, 0x69, 0x65, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x45, 0x6e, 0x74,
	0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x9f,
	0x01, 0x0a, 0x0a, 0x42, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x31, 0x0a,
	0x10, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x69, 0x6d, 0x61, 0x67,
	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52,
	0x0f, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65,
	0x12, 0x29, 0x0a, 0x10, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x63,
	0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x62, 0x61, 0x63, 0x6b,
	0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x33, 0x0a, 0x11, 0x62,
	0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74,
	0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x10,
	0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74,
	0x1a, 0x80, 0x01, 0x0a, 0x0d, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66,
	0x69, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x73, 0x74, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x12,
	0x22, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x74, 0x61, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x53, 0x74, 0x61, 0x79, 0x54,
	0x69, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x65,
	0x66, 0x66, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05,
	0x52, 0x11, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x54,
	0x79, 0x70, 0x65, 0x1a, 0x55, 0x0a, 0x12, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x47, 0x69,
	0x66, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x03, 0x6d, 0x73, 0x67,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x47, 0x69, 0x66, 0x74, 0x4d, 0x65, 0x73,
	0x73, 0x61, 0x67, 0x65, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x1f, 0x0a, 0x06, 0x63, 0x6f, 0x6d,
	0x6d, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x43, 0x6f, 0x6d, 0x6d,
	0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x1a, 0xfa, 0x01, 0x0a, 0x0b, 0x53,
	0x63, 0x65, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63,
	0x65, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x63, 0x65, 0x6e, 0x65,
	0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x25, 0x0a, 0x0e,
	0x6e, 0x65, 0x65, 0x64, 0x5f, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x6e, 0x65, 0x65, 0x64, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67,
	0x61, 0x74, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65,
	0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x67, 0x67, 0x72,
	0x65, 0x67, 0x61, 0x74, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x2c, 0x0a, 0x0e, 0x61, 0x67, 0x67, 0x72,
	0x65, 0x67, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x05, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x52, 0x0d, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61,
	0x74, 0x65, 0x54, 0x65, 0x78, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x75, 0x62, 0x5f, 0x73, 0x63,
	0x65, 0x6e, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x75, 0x62, 0x53, 0x63,
	0x65, 0x6e, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x5f,
	0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x57,
	0x61, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x9a, 0x01, 0x0a, 0x0c, 0x43, 0x6f, 0x6d, 0x62,
	0x69, 0x6e, 0x65, 0x64, 0x54, 0x65, 0x78, 0x74, 0x12, 0x31, 0x0a, 0x0d, 0x64, 0x69, 0x73, 0x70,
	0x6c, 0x61, 0x79, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x0c, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x0c, 0x64,
	0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x2c, 0x0a, 0x0b, 0x73,
	0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x0b, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x73,
	0x63, 0x68, 0x65, 0x6d, 0x61, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x29, 0x0a, 0x0a, 0x63, 0x6f, 0x6d,
	0x62, 0x6f, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e,
	0x43, 0x6f, 0x6d, 0x62, 0x6f, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x62, 0x6f,
	0x49, 0x6e, 0x66, 0x6f, 0x22, 0x49, 0x0a, 0x09, 0x43, 0x6f, 0x6d, 0x62, 0x6f, 0x49, 0x6e, 0x66,
	0x6f, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x62, 0x6f, 0x5f, 0x73, 0x65, 0x71, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x62, 0x6f, 0x53, 0x65, 0x71, 0x12, 0x1f,
	0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x62, 0x6f, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x62, 0x6f, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x22,
	0x2b, 0x0a, 0x0a, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1d, 0x0a,
	0x0a, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x09, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x55, 0x72, 0x6c, 0x22, 0x8a, 0x02, 0x0a,
	0x0b, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x2a, 0x0a, 0x11,
	0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x74, 0x79, 0x70,
	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79,
	0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x62,
	0x6f, 0x5f, 0x66, 0x72, 0x65, 0x73, 0x68, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x63,
	0x6f, 0x6d, 0x62, 0x6f, 0x46, 0x72, 0x65, 0x73, 0x68, 0x12, 0x2c, 0x0a, 0x0b, 0x73, 0x63, 0x68,
	0x65, 0x6d, 0x61, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b,
	0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x73, 0x63, 0x68,
	0x65, 0x6d, 0x61, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2c, 0x0a, 0x0b, 0x69, 0x6d, 0x61, 0x67, 0x65,
	0x73, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x49,
	0x6d, 0x61, 0x67, 0x65, 0x73, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65,
	0x73, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x26, 0x0a, 0x09, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x69, 0x74,
	0x65, 0x6d, 0x18, 0x33, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x49,
	0x74, 0x65, 0x6d, 0x52, 0x08, 0x74, 0x65, 0x78, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x2a, 0x0a,
	0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e,
	0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x49, 0x74, 0x65, 0x6d, 0x46, 0x6f, 0x72, 0x6d, 0x61,
	0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x51, 0x0a, 0x0a, 0x49, 0x6d, 0x61,
	0x67, 0x65, 0x73, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1e, 0x0a, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65,
	0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52,
	0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x69, 0x73, 0x70, 0x6c,
	0x61, 0x79, 0x5f, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c,
	0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x22, 0x25, 0x0a, 0x08,
	0x54, 0x65, 0x78, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x19, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74,
	0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x52, 0x04, 0x74,
	0x65, 0x78, 0x74, 0x22, 0x5e, 0x0a, 0x11, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x49, 0x74,
	0x65, 0x6d, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x65, 0x6e, 0x61, 0x62,
	0x6c, 0x65, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x08, 0x52, 0x0f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x4c, 0x65, 0x66, 0x74, 0x53,
	0x70, 0x61, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x73, 0x70, 0x61,
	0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x65, 0x66, 0x74, 0x53, 0x70,
	0x61, 0x63, 0x65, 0x22, 0xd0, 0x02, 0x0a, 0x19, 0x54, 0x65, 0x6d, 0x70, 0x53, 0x74, 0x61, 0x74,
	0x65, 0x41, 0x72, 0x65, 0x61, 0x52, 0x65, 0x61, 0x63, 0x68, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
	0x65, 0x12, 0x1f, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x07, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d,
	0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x6c, 0x65, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x65, 0x6c, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12,
	0x17, 0x0a, 0x07, 0x65, 0x6c, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03,
	0x52, 0x06, 0x65, 0x6c, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x74, 0x65, 0x6d,
	0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x69, 0x74, 0x65, 0x6d, 0x49,
	0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28,
	0x03, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3f, 0x0a, 0x08, 0x72, 0x65, 0x73,
	0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x54, 0x65,
	0x6d, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x41, 0x72, 0x65, 0x61, 0x52, 0x65, 0x61, 0x63, 0x68,
	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
	0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x1a, 0x6a, 0x0a, 0x08, 0x52, 0x65,
	0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x63,
	0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x20,
	0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e,
	0x12, 0x14, 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x22, 0xfd, 0x04, 0x0a, 0x0a, 0x47, 0x72, 0x6f, 0x77, 0x74,
	0x68, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x69, 0x64, 0x5f, 0x73, 0x74, 0x72, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x64, 0x53, 0x74, 0x72, 0x12, 0x17, 0x0a, 0x07,
	0x6c, 0x69, 0x76, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6c,
	0x69, 0x76, 0x65, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08,
	0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07,
	0x63, 0x6c, 0x61, 0x73, 0x73, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70,
	0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70,
	0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18,
	0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x69, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12,
	0x17, 0x0a, 0x07, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x06, 0x69, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x73, 0x6b,
	0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x73,
	0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x64, 0x65,
	0x73, 0x63, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x44, 0x65,
	0x73, 0x63, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65,
	0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d,
	0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20,
	0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x12,
	0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69,
	0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61,
	0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x64, 0x69,
	0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0e,
	0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x45, 0x6e, 0x64,
	0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0f,
	0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x27, 0x0a, 0x0f,
	0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18,
	0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64,
	0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x5f,
	0x74, 0x69, 0x6d, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x6e, 0x69,
	0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f,
	0x6c, 0x69, 0x73, 0x74, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x47, 0x72, 0x6f,
	0x77, 0x74, 0x68, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x09, 0x73, 0x74,
	0x61, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61,
	0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x12, 0x16, 0x0a,
	0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63,
	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f,
	0x74, 0x69, 0x6d, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61,
	0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xa9, 0x01, 0x0a, 0x0f, 0x47, 0x72, 0x6f, 0x77, 0x74,
	0x68, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x3b, 0x0a, 0x0e, 0x63, 0x6f,
	0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x14, 0x2e, 0x47, 0x72, 0x6f, 0x77, 0x74, 0x68, 0x54, 0x61, 0x73, 0x6b, 0x43,
	0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74,
	0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x0b, 0x72, 0x65, 0x77, 0x61, 0x72,
	0x64, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x47,
	0x72, 0x6f, 0x77, 0x74, 0x68, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52,
	0x0a, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x63,
	0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x03, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x54, 0x69,
	0x6d, 0x65, 0x22, 0x91, 0x01, 0x0a, 0x10, 0x47, 0x72, 0x6f, 0x77, 0x74, 0x68, 0x54, 0x61, 0x73,
	0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x03, 0x64, 0x65, 0x66, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x47, 0x72, 0x6f, 0x77, 0x74, 0x68, 0x54, 0x61, 0x73,
	0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x44, 0x65, 0x66, 0x52, 0x03, 0x64, 0x65, 0x66, 0x12,
	0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,
	0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x12, 0x27, 0x0a,
	0x0f, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e,
	0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xff, 0x01, 0x0a, 0x13, 0x47, 0x72, 0x6f, 0x77, 0x74,
	0x68, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x44, 0x65, 0x66, 0x12, 0x0e,
	0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1f,
	0x0a, 0x0b, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x05, 0x52, 0x0a, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12,
	0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x73, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65,
	0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63,
	0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x1a, 0x0a, 0x08,
	0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
	0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x24, 0x0a, 0x0e, 0x73, 0x65, 0x6e, 0x64,
	0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x73, 0x74, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x0c, 0x73, 0x65, 0x6e, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x53, 0x74, 0x72, 0x12, 0x14,
	0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65,
	0x78, 0x74, 0x72, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x7b, 0x0a, 0x11, 0x47, 0x72, 0x6f, 0x77,
	0x74, 0x68, 0x54, 0x61, 0x73, 0x6b, 0x43, 0x6f, 0x6e, 0x64, 0x44, 0x65, 0x66, 0x12, 0x0e, 0x0a,
	0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a,
	0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
	0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64,
	0x65, 0x73, 0x63, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12,
	0x14, 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
	0x65, 0x78, 0x74, 0x72, 0x61, 0x22, 0xa2, 0x02, 0x0a, 0x13, 0x47, 0x72, 0x6f, 0x77, 0x74, 0x68,
	0x54, 0x61, 0x73, 0x6b, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a,
	0x03, 0x64, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x47, 0x72, 0x6f,
	0x77, 0x74, 0x68, 0x54, 0x61, 0x73, 0x6b, 0x43, 0x6f, 0x6e, 0x64, 0x44, 0x65, 0x66, 0x52, 0x03,
	0x64, 0x65, 0x66, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x75, 0x72, 0x72, 0x65,
	0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c,
	0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, 0x0a, 0x0c,
	0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12,
	0x32, 0x0a, 0x15, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x63, 0x75, 0x72, 0x72, 0x65,
	0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13,
	0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x56, 0x61,
	0x6c, 0x75, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x74,
	0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x12, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74,
	0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79,
	0x5f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x69,
	0x73, 0x70, 0x6c, 0x61, 0x79, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x22, 0xf5, 0x03, 0x0a, 0x11, 0x47,
	0x72, 0x6f, 0x77, 0x74, 0x68, 0x54, 0x61, 0x73, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
	0x12, 0x1f, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x07, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
	0x6e, 0x12, 0x1f, 0x0a, 0x04, 0x74, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x0b, 0x2e, 0x47, 0x72, 0x6f, 0x77, 0x74, 0x68, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x04, 0x74, 0x61,
	0x73, 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x05, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x59, 0x0a, 0x14, 0x63, 0x75,
	0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69,
	0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x47, 0x72, 0x6f, 0x77, 0x74,
	0x68, 0x54, 0x61, 0x73, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x43, 0x75, 0x72,
	0x72, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e,
	0x52, 0x13, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62,
	0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62,
	0x75, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x47, 0x72,
	0x6f, 0x77, 0x74, 0x68, 0x54, 0x61, 0x73, 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75,
	0x74, 0x6f, 0x72, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62,
	0x75, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x74,
	0x61, 0x73, 0x6b, 0x5f, 0x6c, 0x65, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x71,
	0x75, 0x65, 0x75, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x4c, 0x65, 0x6e, 0x1a, 0xc4, 0x01, 0x0a, 0x13,
	0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74,
	0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x05, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x54,
	0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x35, 0x2e, 0x47, 0x72, 0x6f, 0x77, 0x74, 0x68, 0x54, 0x61, 0x73, 0x6b, 0x4d,
	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x6f,
	0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x74, 0x61,
	0x49, 0x6e, 0x66, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x74, 0x61,
	0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x3c, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x49, 0x6e, 0x66,
	0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
	0x38, 0x01, 0x22, 0x60, 0x0a, 0x19, 0x47, 0x72, 0x6f, 0x77, 0x74, 0x68, 0x54, 0x61, 0x73, 0x6b,
	0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x6f, 0x72, 0x52, 0x61, 0x6e, 0x6b, 0x12,
	0x19, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e,
	0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63,
	0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65,
	0x12, 0x12, 0x0a, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04,
	0x72, 0x61, 0x6e, 0x6b, 0x22, 0x65, 0x0a, 0x11, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x50, 0x42, 0x61,
	0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x06, 0x63, 0x6f, 0x6d,
	0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x43, 0x6f, 0x6d, 0x6d,
	0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x2f, 0x0a, 0x09, 0x73, 0x68,
	0x6f, 0x77, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e,
	0x47, 0x61, 0x6d, 0x65, 0x43, 0x50, 0x53, 0x68, 0x6f, 0x77, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
	0x65, 0x52, 0x08, 0x73, 0x68, 0x6f, 0x77, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x93, 0x15, 0x0a, 0x11,
	0x47, 0x61, 0x6d, 0x65, 0x43, 0x50, 0x53, 0x68, 0x6f, 0x77, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
	0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
	0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x3d, 0x0a, 0x17, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75,
	0x63, 0x65, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x6e, 0x66, 0x6f,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x52, 0x15, 0x69,
	0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64,
	0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x6d, 0x61,
	0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x61, 0x6d, 0x65, 0x49, 0x6d,
	0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x67, 0x61, 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65,
	0x12, 0x2a, 0x0a, 0x11, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61,
	0x64, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x67, 0x61, 0x6d,
	0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x72, 0x6c, 0x12, 0x26, 0x0a, 0x0f,
	0x67, 0x61, 0x6d, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18,
	0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x67, 0x61, 0x6d, 0x65, 0x54, 0x72, 0x61, 0x63, 0x65,
	0x49, 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x0a, 0x0e, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x74, 0x61, 0x67,
	0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x67, 0x61,
	0x6d, 0x65, 0x54, 0x61, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x67, 0x61,
	0x6d, 0x65, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x63, 0x6f,
	0x6c, 0x6f, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x67, 0x61, 0x6d, 0x65, 0x42,
	0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x30,
	0x0a, 0x14, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65,
	0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x69, 0x6e,
	0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74,
	0x12, 0x30, 0x0a, 0x14, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x5f, 0x73, 0x74,
	0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12,
	0x69, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69,
	0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x5f,
	0x73, 0x74, 0x6f, 0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52,
	0x11, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x53, 0x74, 0x6f, 0x70, 0x54, 0x79,
	0x70, 0x65, 0x12, 0x3b, 0x0a, 0x16, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x5f,
	0x73, 0x74, 0x6f, 0x70, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x05, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x52, 0x14, 0x69, 0x6e, 0x74, 0x72, 0x6f,
	0x64, 0x75, 0x63, 0x65, 0x53, 0x74, 0x6f, 0x70, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12,
	0x17, 0x0a, 0x07, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x06, 0x67, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x75, 0x64, 0x69,
	0x74, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b,
	0x61, 0x75, 0x64, 0x69, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1c, 0x0a, 0x0a, 0x69,
	0x6f, 0x73, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x08, 0x69, 0x6f, 0x73, 0x41, 0x70, 0x70, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6d,
	0x70, 0x61, 0x6e, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e,
	0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x11,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x78,
	0x74, 0x72, 0x61, 0x12, 0x2e, 0x0a, 0x13, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x5f, 0x70,
	0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x11, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79,
	0x55, 0x72, 0x6c, 0x12, 0x3a, 0x0a, 0x19, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x5f, 0x61,
	0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x6c,
	0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x41,
	0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x72, 0x6c, 0x12,
	0x26, 0x0a, 0x0f, 0x69, 0x6f, 0x73, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x5f, 0x75,
	0x72, 0x6c, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x6f, 0x73, 0x50, 0x72, 0x69,
	0x76, 0x61, 0x63, 0x79, 0x55, 0x72, 0x6c, 0x12, 0x32, 0x0a, 0x15, 0x69, 0x6f, 0x73, 0x5f, 0x61,
	0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x6c,
	0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x69, 0x6f, 0x73, 0x41, 0x75, 0x74, 0x68, 0x6f,
	0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x61,
	0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x16,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x56, 0x65, 0x72,
	0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6f, 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73,
	0x69, 0x6f, 0x6e, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6f, 0x73, 0x56, 0x65,
	0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f,
	0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x63, 0x74, 0x69,
	0x76, 0x65, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f,
	0x61, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x19, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d,
	0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x26, 0x0a,
	0x0f, 0x69, 0x73, 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65,
	0x18, 0x1a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x73, 0x53, 0x68, 0x6f, 0x77, 0x41, 0x6e,
	0x69, 0x6d, 0x61, 0x74, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65,
	0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x1b, 0x20, 0x01, 0x28,
	0x03, 0x52, 0x10, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54,
	0x69, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x5f, 0x64,
	0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x61,
	0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e,
	0x0a, 0x13, 0x61, 0x6e, 0x74, 0x69, 0x5f, 0x68, 0x69, 0x6a, 0x61, 0x63, 0x6b, 0x5f, 0x63, 0x6f,
	0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x61, 0x6e, 0x74,
	0x69, 0x48, 0x69, 0x6a, 0x61, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x2a,
	0x0a, 0x11, 0x61, 0x6e, 0x74, 0x69, 0x5f, 0x68, 0x69, 0x6a, 0x61, 0x63, 0x6b, 0x5f, 0x69, 0x6d,
	0x61, 0x67, 0x65, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x6e, 0x74, 0x69, 0x48,
	0x69, 0x6a, 0x61, 0x63, 0x6b, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x69, 0x6f,
	0x73, 0x5f, 0x73, 0x61, 0x6c, 0x65, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x1f, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x0c, 0x69, 0x6f, 0x73, 0x53, 0x61, 0x6c, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74,
	0x12, 0x32, 0x0a, 0x16, 0x69, 0x73, 0x5f, 0x66, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x5f, 0x6a, 0x75,
	0x6d, 0x70, 0x5f, 0x69, 0x6f, 0x73, 0x5f, 0x61, 0x70, 0x70, 0x18, 0x20, 0x20, 0x01, 0x28, 0x08,
	0x52, 0x12, 0x69, 0x73, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x4a, 0x75, 0x6d, 0x70, 0x49, 0x6f,
	0x73, 0x41, 0x70, 0x70, 0x12, 0x2a, 0x0a, 0x11, 0x68, 0x61, 0x73, 0x5f, 0x70, 0x6c, 0x61, 0x74,
	0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x67, 0x69, 0x66, 0x74, 0x18, 0x21, 0x20, 0x01, 0x28, 0x08, 0x52,
	0x0f, 0x68, 0x61, 0x73, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x47, 0x69, 0x66, 0x74,
	0x12, 0x22, 0x0a, 0x0d, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x75, 0x72,
	0x6c, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x70, 0x65, 0x6e, 0x47, 0x61, 0x6d,
	0x65, 0x55, 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x5f, 0x69, 0x63, 0x6f,
	0x6e, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x49, 0x63, 0x6f,
	0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x2e,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17,
	0x0a, 0x07, 0x70, 0x72, 0x6f, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x06, 0x70, 0x72, 0x6f, 0x70, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x72, 0x6b, 0x65,
	0x74, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x30, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x6d,
	0x61, 0x72, 0x6b, 0x65, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x65,
	0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x31, 0x20, 0x01, 0x28,
	0x03, 0x52, 0x0c, 0x73, 0x65, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12,
	0x1e, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x5f, 0x73, 0x6b, 0x75, 0x5f, 0x69, 0x64, 0x18, 0x32,
	0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x53, 0x6b, 0x75, 0x49, 0x64, 0x12,
	0x2f, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x18,
	0x33, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x49,
	0x74, 0x65, 0x6d, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x49, 0x74, 0x65, 0x6d,
	0x12, 0x1b, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x34, 0x20,
	0x01, 0x28, 0x03, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x28, 0x0a,
	0x10, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x79, 0x70,
	0x65, 0x18, 0x35, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x67, 0x61, 0x6d, 0x65, 0x41, 0x63, 0x63,
	0x65, 0x73, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x27, 0x0a, 0x10, 0x69, 0x73, 0x5f, 0x70, 0x72,
	0x6f, 0x70, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x67, 0x61, 0x6d, 0x65, 0x18, 0x36, 0x20, 0x01, 0x28,
	0x08, 0x52, 0x0d, 0x69, 0x73, 0x50, 0x72, 0x6f, 0x70, 0x45, 0x78, 0x70, 0x47, 0x61, 0x6d, 0x65,
	0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64,
	0x73, 0x18, 0x37, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65,
	0x6e, 0x74, 0x49, 0x64, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x69, 0x7a, 0x5f, 0x74, 0x79, 0x70,
	0x65, 0x18, 0x38, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x62, 0x69, 0x7a, 0x54, 0x79, 0x70, 0x65,
	0x12, 0x2c, 0x0a, 0x12, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x5f, 0x75, 0x73, 0x65, 0x72,
	0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x39, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x69, 0x6e,
	0x73, 0x74, 0x61, 0x6c, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2c,
	0x0a, 0x12, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x5f, 0x73, 0x61, 0x6c, 0x65, 0x5f, 0x70,
	0x6f, 0x69, 0x6e, 0x74, 0x18, 0x3a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x61, 0x6e, 0x64, 0x72,
	0x6f, 0x69, 0x64, 0x53, 0x61, 0x6c, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x33, 0x0a, 0x0e,
	0x6d, 0x69, 0x6e, 0x69, 0x5f, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x3b,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x4d, 0x69, 0x6e, 0x69, 0x47, 0x61, 0x6d, 0x65, 0x4d,
	0x65, 0x74, 0x61, 0x52, 0x0c, 0x6d, 0x69, 0x6e, 0x69, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x65, 0x74,
	0x61, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x70, 0x6c, 0x61,
	0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x18, 0x3c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x73, 0x75,
	0x70, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x12, 0x33,
	0x0a, 0x0e, 0x6d, 0x69, 0x6e, 0x69, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6d, 0x65, 0x74, 0x61,
	0x18, 0x3d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x4d, 0x69, 0x6e, 0x69, 0x50, 0x6c, 0x61,
	0x79, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x0c, 0x6d, 0x69, 0x6e, 0x69, 0x50, 0x6c, 0x61, 0x79, 0x4d,
	0x65, 0x74, 0x61, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x69, 0x6e, 0x74, 0x72,
	0x6f, 0x64, 0x75, 0x63, 0x65, 0x18, 0x3e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x6c, 0x61,
	0x79, 0x49, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x6d,
	0x61, 0x6c, 0x6c, 0x5f, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x3f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
	0x73, 0x6d, 0x61, 0x6c, 0x6c, 0x49, 0x63, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x15, 0x67, 0x61, 0x6d,
	0x65, 0x5f, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75,
	0x72, 0x6c, 0x18, 0x40, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x67, 0x61, 0x6d, 0x65, 0x49, 0x6e,
	0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x2e, 0x0a,
	0x09, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x41, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x11, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x42, 0x75, 0x6e, 0x64,
	0x6c, 0x65, 0x72, 0x52, 0x08, 0x67, 0x61, 0x6d, 0x65, 0x49, 0x63, 0x6f, 0x6e, 0x12, 0x36, 0x0a,
	0x0f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61,
	0x18, 0x42, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x47, 0x61,
	0x6d, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x0d, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x47, 0x61, 0x6d,
	0x65, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x41, 0x0a, 0x12, 0x61, 0x74, 0x6d, 0x6f, 0x73, 0x70, 0x68,
	0x65, 0x72, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x43, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x12, 0x2e, 0x41, 0x74, 0x6d, 0x6f, 0x73, 0x70, 0x68, 0x65, 0x72, 0x65, 0x43, 0x6f,
	0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x11, 0x61, 0x74, 0x6d, 0x6f, 0x73, 0x70, 0x68, 0x65, 0x72,
	0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x3b, 0x0a, 0x10, 0x66, 0x65, 0x61, 0x74,
	0x75, 0x72, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x44, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x10, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x64, 0x43, 0x6f, 0x6e,
	0x74, 0x65, 0x6e, 0x74, 0x52, 0x0f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x64, 0x43, 0x6f,
	0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65,
	0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x46, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x11, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61,
	0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x70, 0x5f, 0x73, 0x74,
	0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x47, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x70,
	0x72, 0x6f, 0x70, 0x53, 0x74, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x12, 0x23, 0x0a, 0x03, 0x74,
	0x61, 0x67, 0x18, 0x48, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x49, 0x6e, 0x74, 0x72, 0x6f,
	0x64, 0x75, 0x63, 0x65, 0x43, 0x61, 0x72, 0x64, 0x54, 0x61, 0x67, 0x52, 0x03, 0x74, 0x61, 0x67,
	0x12, 0x45, 0x0a, 0x11, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79,
	0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x49, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x49, 0x6e,
	0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x43, 0x61, 0x72, 0x64, 0x44, 0x69, 0x73, 0x70, 0x6c,
	0x61, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0f, 0x63, 0x61, 0x72, 0x64, 0x44, 0x69, 0x73, 0x70,
	0x6c, 0x61, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x38, 0x0a, 0x19, 0x69, 0x73, 0x5f, 0x69, 0x6e,
	0x5f, 0x70, 0x72, 0x65, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x65,
	0x72, 0x69, 0x6f, 0x64, 0x18, 0x4a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x69, 0x73, 0x49, 0x6e,
	0x50, 0x72, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x69, 0x6f,
	0x64, 0x22, 0x8c, 0x01, 0x0a, 0x0b, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x49, 0x74, 0x65,
	0x6d, 0x12, 0x2a, 0x0a, 0x11, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x5f, 0x74, 0x6f, 0x64,
	0x61, 0x79, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65,
	0x73, 0x65, 0x72, 0x76, 0x65, 0x54, 0x6f, 0x64, 0x61, 0x79, 0x4e, 0x75, 0x6d, 0x12, 0x2a, 0x0a,
	0x11, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6e,
	0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76,
	0x65, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4e, 0x75, 0x6d, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x73,
	0x65, 0x72, 0x76, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x05, 0x52, 0x0d, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
	0x22, 0x40, 0x0a, 0x0c, 0x4d, 0x69, 0x6e, 0x69, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x65, 0x74, 0x61,
	0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73,
	0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69,
	0x6f, 0x6e, 0x22, 0xa0, 0x02, 0x0a, 0x0c, 0x4d, 0x69, 0x6e, 0x69, 0x50, 0x6c, 0x61, 0x79, 0x4d,
	0x65, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x1b, 0x0a, 0x09, 0x67,
	0x61, 0x6d, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
	0x67, 0x61, 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x63, 0x6f, 0x6e,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07,
	0x67, 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67,
	0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18,
	0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x12,
	0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x63, 0x65,
	0x6e, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72,
	0x74, 0x4c, 0x69, 0x76, 0x65, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65,
	0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72,
	0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x74, 0x79, 0x70,
	0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x67, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70,
	0x65, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x18, 0x09,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x12,
	0x14, 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
	0x65, 0x78, 0x74, 0x72, 0x61, 0x22, 0xa4, 0x01, 0x0a, 0x10, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x6d,
	0x61, 0x67, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x12, 0x2d, 0x0a, 0x0c, 0x6f, 0x72,
	0x69, 0x67, 0x69, 0x6e, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x0a, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x0b, 0x6f, 0x72,
	0x69, 0x67, 0x69, 0x6e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x2b, 0x0a, 0x0b, 0x74, 0x68, 0x75,
	0x6d, 0x62, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a,
	0x2e, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x74, 0x68, 0x75, 0x6d,
	0x62, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x34, 0x0a, 0x10, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x5f,
	0x68, 0x65, 0x69, 0x66, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x0a, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x0e, 0x74, 0x68,
	0x75, 0x6d, 0x62, 0x48, 0x65, 0x69, 0x66, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x22, 0x82, 0x01, 0x0a,
	0x09, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x75, 0x72,
	0x6c, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x75, 0x72,
	0x6c, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68,
	0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12,
	0x14, 0x0a, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05,
	0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x22, 0x27, 0x0a, 0x0d, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x65,
	0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x22, 0x4e, 0x0a, 0x11, 0x41, 0x74,
	0x6d, 0x6f, 0x73, 0x70, 0x68, 0x65, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12,
	0x23, 0x0a, 0x0d, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x73, 0x68, 0x6f, 0x77, 0x44, 0x75, 0x72, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x5c, 0x0a, 0x0f, 0x46, 0x65,
	0x61, 0x74, 0x75, 0x72, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x23, 0x0a,
	0x0d, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69,
	0x6d, 0x65, 0x12, 0x24, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02,
	0x20, 0x03, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x08,
	0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x4f, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74,
	0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65,
	0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e,
	0x74, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x03, 0x20, 0x03, 0x28,
	0x09, 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x22, 0x48, 0x0a, 0x10, 0x49, 0x6e, 0x74,
	0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x43, 0x61, 0x72, 0x64, 0x54, 0x61, 0x67, 0x12, 0x19, 0x0a,
	0x08, 0x69, 0x63, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x07, 0x69, 0x63, 0x6f, 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x75, 0x62, 0x5f,
	0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x54,
	0x65, 0x78, 0x74, 0x22, 0xe8, 0x01, 0x0a, 0x18, 0x49, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63,
	0x65, 0x43, 0x61, 0x72, 0x64, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x49, 0x6e, 0x66, 0x6f,
	0x12, 0x29, 0x0a, 0x10, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x64, 0x75, 0x72, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x64, 0x69, 0x73, 0x70,
	0x6c, 0x61, 0x79, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x1c, 0x69,
	0x73, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x74,
	0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x08, 0x52, 0x18, 0x69, 0x73, 0x4f, 0x70, 0x65, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x72, 0x49, 0x6e,
	0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x43, 0x61, 0x72, 0x64, 0x12, 0x2c, 0x0a, 0x12, 0x64,
	0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x5f, 0x73, 0x70, 0x61,
	0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79,
	0x54, 0x69, 0x6d, 0x65, 0x72, 0x53, 0x70, 0x61, 0x6e, 0x12, 0x33, 0x0a, 0x16, 0x64, 0x69, 0x73,
	0x70, 0x6c, 0x61, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x5f,
	0x63, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x13, 0x64, 0x69, 0x73, 0x70, 0x6c,
	0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x72, 0x4c, 0x6f, 0x6f, 0x70, 0x43, 0x6e, 0x74, 0x2a, 0x43,
	0x0a, 0x0e, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x54, 0x61, 0x67,
	0x12, 0x19, 0x0a, 0x15, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x54, 0x54, 0x59, 0x50, 0x45, 0x54,
	0x41, 0x47, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x43,
	0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x54, 0x54, 0x59, 0x50, 0x45, 0x54, 0x41, 0x47, 0x53, 0x54, 0x41,
	0x52, 0x10, 0x01, 0x2a, 0xdd, 0x01, 0x0a, 0x0f, 0x52, 0x6f, 0x6f, 0x6d, 0x4d, 0x73, 0x67, 0x54,
	0x79, 0x70, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x45, 0x46, 0x41, 0x55,
	0x4c, 0x54, 0x52, 0x4f, 0x4f, 0x4d, 0x4d, 0x53, 0x47, 0x10, 0x00, 0x12, 0x1d, 0x0a, 0x19, 0x45,
	0x43, 0x4f, 0x4d, 0x4c, 0x49, 0x56, 0x45, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x59, 0x53, 0x41, 0x56,
	0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x4d, 0x53, 0x47, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x4f,
	0x4e, 0x53, 0x55, 0x4d, 0x45, 0x52, 0x52, 0x45, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x52, 0x4f,
	0x4f, 0x4d, 0x4d, 0x53, 0x47, 0x10, 0x02, 0x12, 0x1c, 0x0a, 0x18, 0x4a, 0x55, 0x4d, 0x41, 0x4e,
	0x4a, 0x49, 0x44, 0x41, 0x54, 0x41, 0x41, 0x55, 0x54, 0x48, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x59,
	0x4d, 0x53, 0x47, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x56, 0x53, 0x57, 0x45, 0x4c, 0x43, 0x4f,
	0x4d, 0x45, 0x4d, 0x53, 0x47, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x4d, 0x49, 0x4e, 0x4f, 0x52,
	0x52, 0x45, 0x46, 0x55, 0x4e, 0x44, 0x4d, 0x53, 0x47, 0x10, 0x05, 0x12, 0x1f, 0x0a, 0x1b, 0x50,
	0x41, 0x49, 0x44, 0x4c, 0x49, 0x56, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x4e, 0x4f, 0x54, 0x49, 0x46,
	0x59, 0x41, 0x4e, 0x43, 0x48, 0x4f, 0x52, 0x4d, 0x53, 0x47, 0x10, 0x06, 0x12, 0x15, 0x0a, 0x11,
	0x48, 0x4f, 0x53, 0x54, 0x54, 0x45, 0x41, 0x4d, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x4d, 0x53,
	0x47, 0x10, 0x07, 0x42, 0x13, 0x5a, 0x11, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64,
	0x2f, 0x64, 0x6f, 0x75, 0x79, 0x69, 0x6e, 0x2f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_douyin_proto_rawDescOnce sync.Once
	file_douyin_proto_rawDescData = file_douyin_proto_rawDesc
)

func file_douyin_proto_rawDescGZIP() []byte {
	file_douyin_proto_rawDescOnce.Do(func() {
		file_douyin_proto_rawDescData = protoimpl.X.CompressGZIP(file_douyin_proto_rawDescData)
	})
	return file_douyin_proto_rawDescData
}

var file_douyin_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
var file_douyin_proto_msgTypes = make([]protoimpl.MessageInfo, 186)
var file_douyin_proto_goTypes = []any{
	(CommentTypeTag)(0),                    // 0: CommentTypeTag
	(RoomMsgTypeEnum)(0),                   // 1: RoomMsgTypeEnum
	(*Response)(nil),                       // 2: Response
	(*Message)(nil),                        // 3: Message
	(*EmojiChatMessage)(nil),               // 4: EmojiChatMessage
	(*ChatMessage)(nil),                    // 5: ChatMessage
	(*LandscapeAreaCommon)(nil),            // 6: LandscapeAreaCommon
	(*RoomUserSeqMessage)(nil),             // 7: RoomUserSeqMessage
	(*CommonTextMessage)(nil),              // 8: CommonTextMessage
	(*RoomUserSeqMessageContributor)(nil),  // 9: RoomUserSeqMessageContributor
	(*GiftMessage)(nil),                    // 10: GiftMessage
	(*SeriesPlayGift)(nil),                 // 11: SeriesPlayGift
	(*SeriesTrayInfo)(nil),                 // 12: SeriesTrayInfo
	(*RoomHotInfo)(nil),                    // 13: RoomHotInfo
	(*ExtraEffect)(nil),                    // 14: ExtraEffect
	(*SendTogether)(nil),                   // 15: SendTogether
	(*AssetEffectMixInfo)(nil),             // 16: AssetEffectMixInfo
	(*AnchorGiftData)(nil),                 // 17: AnchorGiftData
	(*EffectMixImageInfo)(nil),             // 18: EffectMixImageInfo
	(*GiftTrayInfo)(nil),                   // 19: GiftTrayInfo
	(*TrayPostEffect)(nil),                 // 20: TrayPostEffect
	(*TrayPreEffect)(nil),                  // 21: TrayPreEffect
	(*GiftStruct)(nil),                     // 22: GiftStruct
	(*GiftIMPriority)(nil),                 // 23: GiftIMPriority
	(*TextEffect)(nil),                     // 24: TextEffect
	(*TextEffectDetail)(nil),               // 25: TextEffectDetail
	(*MemberMessage)(nil),                  // 26: MemberMessage
	(*PublicAreaCommon)(nil),               // 27: PublicAreaCommon
	(*SuffixText)(nil),                     // 28: SuffixText
	(*ChatReplyRespInfo)(nil),              // 29: ChatReplyRespInfo
	(*EffectConfig)(nil),                   // 30: EffectConfig
	(*Text)(nil),                           // 31: Text
	(*TextPiece)(nil),                      // 32: TextPiece
	(*TextPieceImage)(nil),                 // 33: TextPieceImage
	(*TextPiecePatternRef)(nil),            // 34: TextPiecePatternRef
	(*TextPieceHeart)(nil),                 // 35: TextPieceHeart
	(*TextPieceGift)(nil),                  // 36: TextPieceGift
	(*PatternRef)(nil),                     // 37: PatternRef
	(*TextPieceUser)(nil),                  // 38: TextPieceUser
	(*TextFormat)(nil),                     // 39: TextFormat
	(*LikeMessage)(nil),                    // 40: LikeMessage
	(*SocialMessage)(nil),                  // 41: SocialMessage
	(*PicoDisplayInfo)(nil),                // 42: PicoDisplayInfo
	(*DoubleLikeDetail)(nil),               // 43: DoubleLikeDetail
	(*DisplayControlInfo)(nil),             // 44: DisplayControlInfo
	(*EpisodeChatMessage)(nil),             // 45: EpisodeChatMessage
	(*MatchAgainstScoreMessage)(nil),       // 46: MatchAgainstScoreMessage
	(*Against)(nil),                        // 47: Against
	(*Common)(nil),                         // 48: Common
	(*User)(nil),                           // 49: User
	(*PayGrade)(nil),                       // 50: PayGrade
	(*FansClub)(nil),                       // 51: FansClub
	(*FansClubData)(nil),                   // 52: FansClubData
	(*UserBadge)(nil),                      // 53: UserBadge
	(*GradeBuffInfo)(nil),                  // 54: GradeBuffInfo
	(*Border)(nil),                         // 55: Border
	(*GradeIcon)(nil),                      // 56: GradeIcon
	(*FollowInfo)(nil),                     // 57: FollowInfo
	(*Image)(nil),                          // 58: Image
	(*NinePatchSetting)(nil),               // 59: NinePatchSetting
	(*PushFrame)(nil),                      // 60: PushFrame
	(*Kk)(nil),                             // 61: kk
	(*SendMessageBody)(nil),                // 62: SendMessageBody
	(*ExtList)(nil),                        // 63: ExtList
	(*Rsp)(nil),                            // 64: Rsp
	(*PreMessage)(nil),                     // 65: PreMessage
	(*HeadersList)(nil),                    // 66: HeadersList
	(*LiveShoppingMessage)(nil),            // 67: LiveShoppingMessage
	(*RoomStatsMessage)(nil),               // 68: RoomStatsMessage
	(*ProductInfo)(nil),                    // 69: ProductInfo
	(*CategoryInfo)(nil),                   // 70: CategoryInfo
	(*ProductChangeMessage)(nil),           // 71: ProductChangeMessage
	(*ControlMessage)(nil),                 // 72: ControlMessage
	(*FansclubMessage)(nil),                // 73: FansclubMessage
	(*RoomRankMessage)(nil),                // 74: RoomRankMessage
	(*RoomMessage)(nil),                    // 75: RoomMessage
	(*RanklistHourEntranceMessage)(nil),    // 76: RanklistHourEntranceMessage
	(*RanklistHourEntrance)(nil),           // 77: RanklistHourEntrance
	(*RanklistHourEntrance_Info)(nil),      // 78: RanklistHourEntrance_Info
	(*RanklistHourEntrance_Detail)(nil),    // 79: RanklistHourEntrance_Detail
	(*RanklistHourEntrance_Page)(nil),      // 80: RanklistHourEntrance_Page
	(*InRoomBannerMessage)(nil),            // 81: InRoomBannerMessage
	(*RoomDataSyncMessage)(nil),            // 82: RoomDataSyncMessage
	(*LuckyBoxTempStatusMessage)(nil),      // 83: LuckyBoxTempStatusMessage
	(*DecorationModifyMessage)(nil),        // 84: DecorationModifyMessage
	(*DecorationUpdateMessage)(nil),        // 85: DecorationUpdateMessage
	(*DecotationDetail)(nil),               // 86: DecotationDetail
	(*Decoration)(nil),                     // 87: Decoration
	(*Reservation)(nil),                    // 88: Reservation
	(*DecorationFontConfig)(nil),           // 89: DecorationFontConfig
	(*LinkMicAudienceKtvMessage)(nil),      // 90: LinkMicAudienceKtvMessage
	(*ListInfo)(nil),                       // 91: ListInfo
	(*KtvSongStruct)(nil),                  // 92: KtvSongStruct
	(*PersonalSongInfo)(nil),               // 93: PersonalSongInfo
	(*UserInfo)(nil),                       // 94: UserInfo
	(*WantListenInfo)(nil),                 // 95: WantListenInfo
	(*MusicInterval)(nil),                  // 96: MusicInterval
	(*ChorusVideoInfo)(nil),                // 97: ChorusVideoInfo
	(*UserHighScoreSongTag)(nil),           // 98: UserHighScoreSongTag
	(*RoomStreamAdaptationMessage)(nil),    // 99: RoomStreamAdaptationMessage
	(*QuizAudienceStatusMessage)(nil),      // 100: QuizAudienceStatusMessage
	(*Quiz)(nil),                           // 101: Quiz
	(*HotChatMessage)(nil),                 // 102: HotChatMessage
	(*HotRoomMessage)(nil),                 // 103: HotRoomMessage
	(*HotRoomInfo)(nil),                    // 104: HotRoomInfo
	(*AudioChatMessage)(nil),               // 105: AudioChatMessage
	(*NotifyMessage)(nil),                  // 106: NotifyMessage
	(*LuckyBoxMessage)(nil),                // 107: LuckyBoxMessage
	(*UpdateFanTicketMessage)(nil),         // 108: UpdateFanTicketMessage
	(*ScreenChatMessage)(nil),              // 109: ScreenChatMessage
	(*Effect)(nil),                         // 110: Effect
	(*FlexImageStruct)(nil),                // 111: FlexImageStruct
	(*ChatIdentity)(nil),                   // 112: ChatIdentity
	(*NotifyEffectMessage)(nil),            // 113: NotifyEffectMessage
	(*CombinedText)(nil),                   // 114: CombinedText
	(*ComboInfo)(nil),                      // 115: ComboInfo
	(*SchemaInfo)(nil),                     // 116: SchemaInfo
	(*DisplayItem)(nil),                    // 117: DisplayItem
	(*ImagesItem)(nil),                     // 118: ImagesItem
	(*TextItem)(nil),                       // 119: TextItem
	(*DisplayItemFormat)(nil),              // 120: DisplayItemFormat
	(*TempStateAreaReachMessage)(nil),      // 121: TempStateAreaReachMessage
	(*GrowthTask)(nil),                     // 122: GrowthTask
	(*GrowthTaskStage)(nil),                // 123: GrowthTaskStage
	(*GrowthTaskReward)(nil),               // 124: GrowthTaskReward
	(*GrowthTaskRewardDef)(nil),            // 125: GrowthTaskRewardDef
	(*GrowthTaskCondDef)(nil),              // 126: GrowthTaskCondDef
	(*GrowthTaskCondition)(nil),            // 127: GrowthTaskCondition
	(*GrowthTaskMessage)(nil),              // 128: GrowthTaskMessage
	(*GrowthTaskContributorRank)(nil),      // 129: GrowthTaskContributorRank
	(*GameCPBaseMessage)(nil),              // 130: GameCPBaseMessage
	(*GameCPShowMessage)(nil),              // 131: GameCPShowMessage
	(*ReserveItem)(nil),                    // 132: ReserveItem
	(*MiniGameMeta)(nil),                   // 133: MiniGameMeta
	(*MiniPlayMeta)(nil),                   // 134: MiniPlayMeta
	(*GameImageBundler)(nil),               // 135: GameImageBundler
	(*GameImage)(nil),                      // 136: GameImage
	(*CloudGameMeta)(nil),                  // 137: CloudGameMeta
	(*AtmosphereContent)(nil),              // 138: AtmosphereContent
	(*FeaturedContent)(nil),                // 139: FeaturedContent
	(*Content)(nil),                        // 140: Content
	(*IntroduceCardTag)(nil),               // 141: IntroduceCardTag
	(*IntroduceCardDisplayInfo)(nil),       // 142: IntroduceCardDisplayInfo
	nil,                                    // 143: Response.RouteParamsEntry
	nil,                                    // 144: TrayPostEffect.EventTrackingEntry
	nil,                                    // 145: MemberMessage.BuriedPointEntry
	nil,                                    // 146: MemberMessage.AlternativeEffectConfigEntry
	(*MemberMessage_PicoEffectConfig)(nil), // 147: MemberMessage.PicoEffectConfig
	nil,                                    // 148: MemberMessage.PicoEffectConfig.ExtraEntry
	nil,                                    // 149: PublicAreaCommon.IndividualStrategyResultEntry
	nil,                                    // 150: PublicAreaCommon.TrackingParamsEntry
	nil,                                    // 151: EffectConfig.ExtraMapEntry
	nil,                                    // 152: Text.SchemaInfosEntry
	nil,                                    // 153: FansClub.PreferDataEntry
	nil,                                    // 154: UserBadge.IconsEntry
	(*Image_Content)(nil),                  // 155: Image.Content
	(*Rsp_F)(nil),                          // 156: Rsp.F
	(*RoomRankMessage_RoomRank)(nil),       // 157: RoomRankMessage.RoomRank
	nil,                                    // 158: RoomMessage.BuriedPointMapEntry
	(*LinkMicAudienceKtvMessage_SongUniqueInfo)(nil), // 159: LinkMicAudienceKtvMessage.SongUniqueInfo
	nil,                                      // 160: KtvSongStruct.ExtEntry
	(*KtvSongStruct_AudioInfo)(nil),          // 161: KtvSongStruct.AudioInfo
	(*KtvSongStruct_OrderInfo)(nil),          // 162: KtvSongStruct.OrderInfo
	(*KtvSongStruct_ChallengeInfo)(nil),      // 163: KtvSongStruct.ChallengeInfo
	nil,                                      // 164: HotChatMessage.ExtraEntry
	(*NotifyMessage_Extra)(nil),              // 165: NotifyMessage.Extra
	(*NotifyMessage_Background)(nil),         // 166: NotifyMessage.Background
	(*NotifyMessage_Content)(nil),            // 167: NotifyMessage.Content
	(*NotifyMessage_ContentList)(nil),        // 168: NotifyMessage.ContentList
	nil,                                      // 169: NotifyMessage.Extra.ParamsEntry
	(*LuckyBoxMessage_ImgText)(nil),          // 170: LuckyBoxMessage.ImgText
	(*LuckyBoxMessage_BoxMeta)(nil),          // 171: LuckyBoxMessage.BoxMeta
	(*LuckyBoxMessage_Extra)(nil),            // 172: LuckyBoxMessage.Extra
	(*LuckyBoxMessage_BottomCommentMsg)(nil), // 173: LuckyBoxMessage.BottomCommentMsg
	(*LuckyBoxMessage_Dress)(nil),            // 174: LuckyBoxMessage.Dress
	nil,                                      // 175: LuckyBoxMessage.Extra.AllDescEntry
	nil,                                      // 176: LuckyBoxMessage.Extra.AllImageEntry
	nil,                                      // 177: LuckyBoxMessage.Dress.JumpSchemaToBoxEntry
	nil,                                      // 178: LuckyBoxMessage.Dress.JumpSchemaToDressEntry
	(*ScreenChatMessage_OfficialCommentConfig)(nil), // 179: ScreenChatMessage.OfficialCommentConfig
	nil,                                    // 180: NotifyEffectMessage.BuriedPointEntry
	(*NotifyEffectMessage_Background)(nil), // 181: NotifyEffectMessage.Background
	(*NotifyEffectMessage_DynamicConfig)(nil),      // 182: NotifyEffectMessage.DynamicConfig
	(*NotifyEffectMessage_BindingGiftMessage)(nil), // 183: NotifyEffectMessage.BindingGiftMessage
	(*NotifyEffectMessage_SceneConfig)(nil),        // 184: NotifyEffectMessage.SceneConfig
	(*TempStateAreaReachMessage_Resource)(nil),     // 185: TempStateAreaReachMessage.Resource
	(*GrowthTaskMessage_CurrentContribution)(nil),  // 186: GrowthTaskMessage.CurrentContribution
	nil, // 187: GrowthTaskMessage.CurrentContribution.DeltaInfoEntry
}
var file_douyin_proto_depIdxs = []int32{
	3,   // 0: Response.messagesList:type_name -> Message
	143, // 1: Response.routeParams:type_name -> Response.RouteParamsEntry
	48,  // 2: EmojiChatMessage.common:type_name -> Common
	49,  // 3: EmojiChatMessage.user:type_name -> User
	31,  // 4: EmojiChatMessage.emojiContent:type_name -> Text
	58,  // 5: EmojiChatMessage.backgroundImage:type_name -> Image
	27,  // 6: EmojiChatMessage.public_area_common:type_name -> PublicAreaCommon
	48,  // 7: ChatMessage.common:type_name -> Common
	49,  // 8: ChatMessage.user:type_name -> User
	58,  // 9: ChatMessage.backgroundImage:type_name -> Image
	58,  // 10: ChatMessage.backgroundImageV2:type_name -> Image
	27,  // 11: ChatMessage.publicAreaCommon:type_name -> PublicAreaCommon
	58,  // 12: ChatMessage.giftImage:type_name -> Image
	6,   // 13: ChatMessage.landscapeAreaCommon:type_name -> LandscapeAreaCommon
	31,  // 14: ChatMessage.rtfContent:type_name -> Text
	0,   // 15: LandscapeAreaCommon.commentTypeTagsList:type_name -> CommentTypeTag
	48,  // 16: RoomUserSeqMessage.common:type_name -> Common
	9,   // 17: RoomUserSeqMessage.ranksList:type_name -> RoomUserSeqMessageContributor
	9,   // 18: RoomUserSeqMessage.seatsList:type_name -> RoomUserSeqMessageContributor
	48,  // 19: CommonTextMessage.common:type_name -> Common
	49,  // 20: CommonTextMessage.user:type_name -> User
	49,  // 21: RoomUserSeqMessageContributor.user:type_name -> User
	48,  // 22: GiftMessage.common:type_name -> Common
	49,  // 23: GiftMessage.user:type_name -> User
	49,  // 24: GiftMessage.to_user:type_name -> User
	24,  // 25: GiftMessage.text_effect:type_name -> TextEffect
	23,  // 26: GiftMessage.priority:type_name -> GiftIMPriority
	22,  // 27: GiftMessage.gift:type_name -> GiftStruct
	27,  // 28: GiftMessage.public_area_common:type_name -> PublicAreaCommon
	31,  // 29: GiftMessage.tray_display_text:type_name -> Text
	19,  // 30: GiftMessage.tray_info:type_name -> GiftTrayInfo
	16,  // 31: GiftMessage.asset_effect_mix_info:type_name -> AssetEffectMixInfo
	17,  // 32: GiftMessage.anchor_gift:type_name -> AnchorGiftData
	15,  // 33: GiftMessage.send_together:type_name -> SendTogether
	14,  // 34: GiftMessage.extra_effect:type_name -> ExtraEffect
	13,  // 35: GiftMessage.room_hot_info:type_name -> RoomHotInfo
	11,  // 36: GiftMessage.series_gift_data:type_name -> SeriesPlayGift
	22,  // 37: SeriesPlayGift.gift_struct:type_name -> GiftStruct
	12,  // 38: SeriesPlayGift.series_tray_info:type_name -> SeriesTrayInfo
	15,  // 39: SeriesPlayGift.send_together:type_name -> SendTogether
	17,  // 40: SeriesPlayGift.anchor_gift:type_name -> AnchorGiftData
	16,  // 41: SeriesPlayGift.asset_effect_mix_info:type_name -> AssetEffectMixInfo
	58,  // 42: SeriesTrayInfo.static_img:type_name -> Image
	58,  // 43: SeriesTrayInfo.dynamic_img:type_name -> Image
	18,  // 44: AssetEffectMixInfo.effect_mix_image_infos:type_name -> EffectMixImageInfo
	58,  // 45: AnchorGiftData.anchor_diy_origin_img:type_name -> Image
	58,  // 46: EffectMixImageInfo.mix_image:type_name -> Image
	31,  // 47: GiftTrayInfo.tray_display_text:type_name -> Text
	58,  // 48: GiftTrayInfo.tray_base_img:type_name -> Image
	58,  // 49: GiftTrayInfo.tray_head_img:type_name -> Image
	58,  // 50: GiftTrayInfo.tray_right_img:type_name -> Image
	58,  // 51: GiftTrayInfo.tray_dynamic_img:type_name -> Image
	58,  // 52: GiftTrayInfo.tray_base_img_v2:type_name -> Image
	58,  // 53: GiftTrayInfo.tray_right_img_v2:type_name -> Image
	21,  // 54: GiftTrayInfo.tray_pre_effect:type_name -> TrayPreEffect
	20,  // 55: GiftTrayInfo.tray_post_effect:type_name -> TrayPostEffect
	58,  // 56: GiftTrayInfo.tray_base_webp_img:type_name -> Image
	58,  // 57: TrayPostEffect.post_effect_img:type_name -> Image
	144, // 58: TrayPostEffect.event_tracking:type_name -> TrayPostEffect.EventTrackingEntry
	58,  // 59: TrayPreEffect.pre_effect_img:type_name -> Image
	58,  // 60: TrayPreEffect.tray_ripple:type_name -> Image
	58,  // 61: GiftStruct.image:type_name -> Image
	58,  // 62: GiftStruct.giftLabelIcon:type_name -> Image
	58,  // 63: GiftStruct.icon:type_name -> Image
	25,  // 64: TextEffect.portrait:type_name -> TextEffectDetail
	25,  // 65: TextEffect.landscape:type_name -> TextEffectDetail
	31,  // 66: TextEffectDetail.text:type_name -> Text
	58,  // 67: TextEffectDetail.background:type_name -> Image
	48,  // 68: MemberMessage.common:type_name -> Common
	49,  // 69: MemberMessage.user:type_name -> User
	49,  // 70: MemberMessage.operator:type_name -> User
	30,  // 71: MemberMessage.effect_config:type_name -> EffectConfig
	30,  // 72: MemberMessage.enter_effect_config:type_name -> EffectConfig
	58,  // 73: MemberMessage.background_image:type_name -> Image
	58,  // 74: MemberMessage.background_image_v2:type_name -> Image
	31,  // 75: MemberMessage.anchor_display_text:type_name -> Text
	27,  // 76: MemberMessage.public_area_common:type_name -> PublicAreaCommon
	147, // 77: MemberMessage.pico_enter_effect_config:type_name -> MemberMessage.PicoEffectConfig
	145, // 78: MemberMessage.buried_point:type_name -> MemberMessage.BuriedPointEntry
	146, // 79: MemberMessage.alternative_effect_config:type_name -> MemberMessage.AlternativeEffectConfigEntry
	58,  // 80: PublicAreaCommon.user_label:type_name -> Image
	28,  // 81: PublicAreaCommon.suffix_text:type_name -> SuffixText
	29,  // 82: PublicAreaCommon.reply_resp:type_name -> ChatReplyRespInfo
	149, // 83: PublicAreaCommon.individual_strategy_result:type_name -> PublicAreaCommon.IndividualStrategyResultEntry
	150, // 84: PublicAreaCommon.tracking_params:type_name -> PublicAreaCommon.TrackingParamsEntry
	31,  // 85: SuffixText.text:type_name -> Text
	31,  // 86: ChatReplyRespInfo.reply_text:type_name -> Text
	58,  // 87: EffectConfig.icon:type_name -> Image
	31,  // 88: EffectConfig.text:type_name -> Text
	58,  // 89: EffectConfig.textIcon:type_name -> Image
	58,  // 90: EffectConfig.badge:type_name -> Image
	58,  // 91: EffectConfig.textIconOverlay:type_name -> Image
	58,  // 92: EffectConfig.animatedBadge:type_name -> Image
	58,  // 93: EffectConfig.dynamicImage:type_name -> Image
	151, // 94: EffectConfig.extraMap:type_name -> EffectConfig.ExtraMapEntry
	39,  // 95: Text.default_format:type_name -> TextFormat
	32,  // 96: Text.pieces:type_name -> TextPiece
	152, // 97: Text.schema_infos:type_name -> Text.SchemaInfosEntry
	39,  // 98: TextPiece.format:type_name -> TextFormat
	38,  // 99: TextPiece.uservalue:type_name -> TextPieceUser
	36,  // 100: TextPiece.giftvalue:type_name -> TextPieceGift
	35,  // 101: TextPiece.heartvalue:type_name -> TextPieceHeart
	34,  // 102: TextPiece.patternrefvalue:type_name -> TextPiecePatternRef
	33,  // 103: TextPiece.imagevalue:type_name -> TextPieceImage
	58,  // 104: TextPieceImage.image:type_name -> Image
	37,  // 105: TextPieceGift.nameRef:type_name -> PatternRef
	49,  // 106: TextPieceUser.user:type_name -> User
	48,  // 107: LikeMessage.common:type_name -> Common
	49,  // 108: LikeMessage.user:type_name -> User
	43,  // 109: LikeMessage.doubleLikeDetail:type_name -> DoubleLikeDetail
	44,  // 110: LikeMessage.displayControlInfo:type_name -> DisplayControlInfo
	42,  // 111: LikeMessage.picoDisplayInfo:type_name -> PicoDisplayInfo
	48,  // 112: SocialMessage.common:type_name -> Common
	49,  // 113: SocialMessage.user:type_name -> User
	27,  // 114: SocialMessage.publicAreaCommon:type_name -> PublicAreaCommon
	58,  // 115: PicoDisplayInfo.emojiIcon:type_name -> Image
	3,   // 116: EpisodeChatMessage.common:type_name -> Message
	49,  // 117: EpisodeChatMessage.user:type_name -> User
	58,  // 118: EpisodeChatMessage.giftImage:type_name -> Image
	48,  // 119: MatchAgainstScoreMessage.common:type_name -> Common
	47,  // 120: MatchAgainstScoreMessage.against:type_name -> Against
	58,  // 121: Against.leftLogo:type_name -> Image
	58,  // 122: Against.rightLogo:type_name -> Image
	31,  // 123: Common.display_text:type_name -> Text
	49,  // 124: Common.user:type_name -> User
	58,  // 125: User.AvatarThumb:type_name -> Image
	58,  // 126: User.AvatarMedium:type_name -> Image
	58,  // 127: User.AvatarLarge:type_name -> Image
	58,  // 128: User.BadgeImageList:type_name -> Image
	57,  // 129: User.FollowInfo:type_name -> FollowInfo
	50,  // 130: User.PayGrade:type_name -> PayGrade
	51,  // 131: User.FansClub:type_name -> FansClub
	58,  // 132: User.AvatarBorder:type_name -> Image
	58,  // 133: User.Medal:type_name -> Image
	58,  // 134: User.RealTimeIconsList:type_name -> Image
	58,  // 135: PayGrade.diamondIcon:type_name -> Image
	58,  // 136: PayGrade.icon:type_name -> Image
	58,  // 137: PayGrade.nextIcon:type_name -> Image
	56,  // 138: PayGrade.gradeIconList:type_name -> GradeIcon
	58,  // 139: PayGrade.imIcon:type_name -> Image
	58,  // 140: PayGrade.imIconWithLevel:type_name -> Image
	58,  // 141: PayGrade.liveIcon:type_name -> Image
	58,  // 142: PayGrade.newImIconWithLevel:type_name -> Image
	58,  // 143: PayGrade.newLiveIcon:type_name -> Image
	58,  // 144: PayGrade.background:type_name -> Image
	58,  // 145: PayGrade.backgroundBack:type_name -> Image
	54,  // 146: PayGrade.buffInfo:type_name -> GradeBuffInfo
	58,  // 147: PayGrade.profileDialogBg:type_name -> Image
	58,  // 148: PayGrade.profileDialogBgBack:type_name -> Image
	52,  // 149: FansClub.data:type_name -> FansClubData
	153, // 150: FansClub.preferData:type_name -> FansClub.PreferDataEntry
	53,  // 151: FansClubData.badge:type_name -> UserBadge
	154, // 152: UserBadge.icons:type_name -> UserBadge.IconsEntry
	58,  // 153: GradeIcon.icon:type_name -> Image
	155, // 154: Image.content:type_name -> Image.Content
	59,  // 155: Image.flex_setting_list:type_name -> NinePatchSetting
	59,  // 156: Image.text_setting_list:type_name -> NinePatchSetting
	66,  // 157: PushFrame.headersList:type_name -> HeadersList
	63,  // 158: SendMessageBody.ext:type_name -> ExtList
	156, // 159: Rsp.f:type_name -> Rsp.F
	62,  // 160: PreMessage.sendMessageBody:type_name -> SendMessageBody
	66,  // 161: PreMessage.headers:type_name -> HeadersList
	48,  // 162: LiveShoppingMessage.common:type_name -> Common
	48,  // 163: RoomStatsMessage.common:type_name -> Common
	48,  // 164: ProductChangeMessage.common:type_name -> Common
	69,  // 165: ProductChangeMessage.updateProductInfoList:type_name -> ProductInfo
	70,  // 166: ProductChangeMessage.updateCategoryInfoList:type_name -> CategoryInfo
	48,  // 167: ControlMessage.common:type_name -> Common
	48,  // 168: FansclubMessage.commonInfo:type_name -> Common
	49,  // 169: FansclubMessage.user:type_name -> User
	48,  // 170: RoomRankMessage.common:type_name -> Common
	157, // 171: RoomRankMessage.ranksList:type_name -> RoomRankMessage.RoomRank
	48,  // 172: RoomMessage.common:type_name -> Common
	1,   // 173: RoomMessage.roommessagetype:type_name -> RoomMsgTypeEnum
	158, // 174: RoomMessage.buriedPointMap:type_name -> RoomMessage.BuriedPointMapEntry
	48,  // 175: RanklistHourEntranceMessage.common:type_name -> Common
	77,  // 176: RanklistHourEntranceMessage.info:type_name -> RanklistHourEntrance
	78,  // 177: RanklistHourEntrance.global_infos:type_name -> RanklistHourEntrance_Info
	78,  // 178: RanklistHourEntrance.default_global_infos:type_name -> RanklistHourEntrance_Info
	78,  // 179: RanklistHourEntrance.vertical_infos:type_name -> RanklistHourEntrance_Info
	78,  // 180: RanklistHourEntrance.default_vertical_infos:type_name -> RanklistHourEntrance_Info
	79,  // 181: RanklistHourEntrance_Info.details:type_name -> RanklistHourEntrance_Detail
	80,  // 182: RanklistHourEntrance_Detail.pages:type_name -> RanklistHourEntrance_Page
	48,  // 183: InRoomBannerMessage.common:type_name -> Common
	48,  // 184: RoomDataSyncMessage.common:type_name -> Common
	48,  // 185: LuckyBoxTempStatusMessage.common:type_name -> Common
	48,  // 186: DecorationModifyMessage.common:type_name -> Common
	48,  // 187: DecorationUpdateMessage.common:type_name -> Common
	86,  // 188: DecorationUpdateMessage.detai:type_name -> DecotationDetail
	87,  // 189: DecotationDetail.text_decoration:type_name -> Decoration
	87,  // 190: DecotationDetail.image_decoration:type_name -> Decoration
	58,  // 191: Decoration.image:type_name -> Image
	88,  // 192: Decoration.reservation:type_name -> Reservation
	58,  // 193: Decoration.nine_patch_image:type_name -> Image
	89,  // 194: Decoration.text_font_config:type_name -> DecorationFontConfig
	48,  // 195: LinkMicAudienceKtvMessage.common:type_name -> Common
	91,  // 196: LinkMicAudienceKtvMessage.list_info:type_name -> ListInfo
	159, // 197: LinkMicAudienceKtvMessage.all_song_unique_list:type_name -> LinkMicAudienceKtvMessage.SongUniqueInfo
	92,  // 198: ListInfo.music:type_name -> KtvSongStruct
	161, // 199: KtvSongStruct.full_track:type_name -> KtvSongStruct.AudioInfo
	161, // 200: KtvSongStruct.accompaniment_track:type_name -> KtvSongStruct.AudioInfo
	162, // 201: KtvSongStruct.order_info:type_name -> KtvSongStruct.OrderInfo
	96,  // 202: KtvSongStruct.music_climax:type_name -> MusicInterval
	96,  // 203: KtvSongStruct.preludes:type_name -> MusicInterval
	96,  // 204: KtvSongStruct.interludes:type_name -> MusicInterval
	96,  // 205: KtvSongStruct.segments:type_name -> MusicInterval
	96,  // 206: KtvSongStruct.bridge_segments:type_name -> MusicInterval
	96,  // 207: KtvSongStruct.main_segments:type_name -> MusicInterval
	96,  // 208: KtvSongStruct.finale_segments:type_name -> MusicInterval
	97,  // 209: KtvSongStruct.chorus_info:type_name -> ChorusVideoInfo
	93,  // 210: KtvSongStruct.personal_song_info:type_name -> PersonalSongInfo
	95,  // 211: KtvSongStruct.want_listen_info:type_name -> WantListenInfo
	163, // 212: KtvSongStruct.challenge_info:type_name -> KtvSongStruct.ChallengeInfo
	160, // 213: KtvSongStruct.ext:type_name -> KtvSongStruct.ExtEntry
	58,  // 214: UserInfo.avatar:type_name -> Image
	98,  // 215: UserInfo.high_score_song_tag:type_name -> UserHighScoreSongTag
	58,  // 216: ChorusVideoInfo.image:type_name -> Image
	48,  // 217: RoomStreamAdaptationMessage.common:type_name -> Common
	48,  // 218: QuizAudienceStatusMessage.common:type_name -> Common
	101, // 219: QuizAudienceStatusMessage.quiz_list:type_name -> Quiz
	48,  // 220: HotChatMessage.common:type_name -> Common
	31,  // 221: HotChatMessage.rtf_content:type_name -> Text
	164, // 222: HotChatMessage.extra:type_name -> HotChatMessage.ExtraEntry
	48,  // 223: HotRoomMessage.common:type_name -> Common
	104, // 224: HotRoomMessage.info:type_name -> HotRoomInfo
	48,  // 225: AudioChatMessage.common:type_name -> Common
	49,  // 226: AudioChatMessage.user:type_name -> User
	27,  // 227: AudioChatMessage.public_area_common:type_name -> PublicAreaCommon
	31,  // 228: AudioChatMessage.rtf_content:type_name -> Text
	48,  // 229: NotifyMessage.common:type_name -> Common
	49,  // 230: NotifyMessage.user:type_name -> User
	165, // 231: NotifyMessage.extra:type_name -> NotifyMessage.Extra
	48,  // 232: LuckyBoxMessage.common:type_name -> Common
	58,  // 233: LuckyBoxMessage.background:type_name -> Image
	49,  // 234: LuckyBoxMessage.user:type_name -> User
	170, // 235: LuckyBoxMessage.description_list:type_name -> LuckyBoxMessage.ImgText
	58,  // 236: LuckyBoxMessage.lucky_icon:type_name -> Image
	171, // 237: LuckyBoxMessage.meta:type_name -> LuckyBoxMessage.BoxMeta
	172, // 238: LuckyBoxMessage.extra:type_name -> LuckyBoxMessage.Extra
	58,  // 239: LuckyBoxMessage.top_cover_image:type_name -> Image
	58,  // 240: LuckyBoxMessage.bottom_cover_image:type_name -> Image
	173, // 241: LuckyBoxMessage.bottom_comment_msg:type_name -> LuckyBoxMessage.BottomCommentMsg
	174, // 242: LuckyBoxMessage.dress:type_name -> LuckyBoxMessage.Dress
	27,  // 243: LuckyBoxMessage.public_area_common:type_name -> PublicAreaCommon
	48,  // 244: UpdateFanTicketMessage.common:type_name -> Common
	48,  // 245: ScreenChatMessage.common:type_name -> Common
	49,  // 246: ScreenChatMessage.user:type_name -> User
	110, // 247: ScreenChatMessage.effect:type_name -> Effect
	58,  // 248: ScreenChatMessage.background_image:type_name -> Image
	110, // 249: ScreenChatMessage.effect_v2:type_name -> Effect
	58,  // 250: ScreenChatMessage.background_image_v2:type_name -> Image
	27,  // 251: ScreenChatMessage.public_area_common:type_name -> PublicAreaCommon
	179, // 252: ScreenChatMessage.official_comment_config:type_name -> ScreenChatMessage.OfficialCommentConfig
	112, // 253: ScreenChatMessage.chat_identity_info:type_name -> ChatIdentity
	31,  // 254: ScreenChatMessage.rtf_content:type_name -> Text
	31,  // 255: ScreenChatMessage.rtf_content_v2:type_name -> Text
	111, // 256: Effect.icon:type_name -> FlexImageStruct
	58,  // 257: Effect.avatar_icon:type_name -> Image
	58,  // 258: ChatIdentity.identity_label:type_name -> Image
	48,  // 259: NotifyEffectMessage.common:type_name -> Common
	58,  // 260: NotifyEffectMessage.icons:type_name -> Image
	114, // 261: NotifyEffectMessage.text:type_name -> CombinedText
	181, // 262: NotifyEffectMessage.background:type_name -> NotifyEffectMessage.Background
	182, // 263: NotifyEffectMessage.dynamic_config:type_name -> NotifyEffectMessage.DynamicConfig
	114, // 264: NotifyEffectMessage.text_v2:type_name -> CombinedText
	184, // 265: NotifyEffectMessage.scene_config:type_name -> NotifyEffectMessage.SceneConfig
	180, // 266: NotifyEffectMessage.buried_point:type_name -> NotifyEffectMessage.BuriedPointEntry
	117, // 267: CombinedText.display_items:type_name -> DisplayItem
	116, // 268: CombinedText.schema_info:type_name -> SchemaInfo
	115, // 269: CombinedText.combo_info:type_name -> ComboInfo
	116, // 270: DisplayItem.schema_info:type_name -> SchemaInfo
	118, // 271: DisplayItem.images_item:type_name -> ImagesItem
	119, // 272: DisplayItem.text_item:type_name -> TextItem
	120, // 273: DisplayItem.format:type_name -> DisplayItemFormat
	58,  // 274: ImagesItem.images:type_name -> Image
	31,  // 275: TextItem.text:type_name -> Text
	48,  // 276: TempStateAreaReachMessage.common:type_name -> Common
	185, // 277: TempStateAreaReachMessage.resource:type_name -> TempStateAreaReachMessage.Resource
	123, // 278: GrowthTask.stage_list:type_name -> GrowthTaskStage
	127, // 279: GrowthTaskStage.condition_list:type_name -> GrowthTaskCondition
	124, // 280: GrowthTaskStage.reward_list:type_name -> GrowthTaskReward
	125, // 281: GrowthTaskReward.def:type_name -> GrowthTaskRewardDef
	126, // 282: GrowthTaskCondition.def:type_name -> GrowthTaskCondDef
	48,  // 283: GrowthTaskMessage.common:type_name -> Common
	122, // 284: GrowthTaskMessage.task:type_name -> GrowthTask
	186, // 285: GrowthTaskMessage.current_contribution:type_name -> GrowthTaskMessage.CurrentContribution
	129, // 286: GrowthTaskMessage.contributors:type_name -> GrowthTaskContributorRank
	49,  // 287: GrowthTaskContributorRank.user:type_name -> User
	48,  // 288: GameCPBaseMessage.common:type_name -> Common
	131, // 289: GameCPBaseMessage.show_info:type_name -> GameCPShowMessage
	31,  // 290: GameCPShowMessage.introduce_download_info:type_name -> Text
	31,  // 291: GameCPShowMessage.introduce_stop_message:type_name -> Text
	132, // 292: GameCPShowMessage.reserve_item:type_name -> ReserveItem
	133, // 293: GameCPShowMessage.mini_game_meta:type_name -> MiniGameMeta
	134, // 294: GameCPShowMessage.mini_play_meta:type_name -> MiniPlayMeta
	135, // 295: GameCPShowMessage.game_icon:type_name -> GameImageBundler
	137, // 296: GameCPShowMessage.cloud_game_meta:type_name -> CloudGameMeta
	138, // 297: GameCPShowMessage.atmosphere_content:type_name -> AtmosphereContent
	139, // 298: GameCPShowMessage.featured_content:type_name -> FeaturedContent
	141, // 299: GameCPShowMessage.tag:type_name -> IntroduceCardTag
	142, // 300: GameCPShowMessage.card_display_info:type_name -> IntroduceCardDisplayInfo
	136, // 301: GameImageBundler.origin_image:type_name -> GameImage
	136, // 302: GameImageBundler.thumb_image:type_name -> GameImage
	136, // 303: GameImageBundler.thumb_heif_image:type_name -> GameImage
	140, // 304: FeaturedContent.contents:type_name -> Content
	30,  // 305: MemberMessage.AlternativeEffectConfigEntry.value:type_name -> EffectConfig
	58,  // 306: MemberMessage.PicoEffectConfig.icon:type_name -> Image
	31,  // 307: MemberMessage.PicoEffectConfig.text:type_name -> Text
	58,  // 308: MemberMessage.PicoEffectConfig.text_icon:type_name -> Image
	58,  // 309: MemberMessage.PicoEffectConfig.badge:type_name -> Image
	148, // 310: MemberMessage.PicoEffectConfig.extra:type_name -> MemberMessage.PicoEffectConfig.ExtraEntry
	116, // 311: Text.SchemaInfosEntry.value:type_name -> SchemaInfo
	52,  // 312: FansClub.PreferDataEntry.value:type_name -> FansClubData
	58,  // 313: UserBadge.IconsEntry.value:type_name -> Image
	49,  // 314: RoomRankMessage.RoomRank.user:type_name -> User
	94,  // 315: KtvSongStruct.OrderInfo.top_user:type_name -> UserInfo
	166, // 316: NotifyMessage.Extra.background:type_name -> NotifyMessage.Background
	168, // 317: NotifyMessage.Extra.content_list:type_name -> NotifyMessage.ContentList
	169, // 318: NotifyMessage.Extra.params:type_name -> NotifyMessage.Extra.ParamsEntry
	167, // 319: NotifyMessage.ContentList.contents:type_name -> NotifyMessage.Content
	58,  // 320: LuckyBoxMessage.ImgText.image:type_name -> Image
	58,  // 321: LuckyBoxMessage.BoxMeta.ad_image:type_name -> Image
	175, // 322: LuckyBoxMessage.Extra.all_desc:type_name -> LuckyBoxMessage.Extra.AllDescEntry
	176, // 323: LuckyBoxMessage.Extra.all_image:type_name -> LuckyBoxMessage.Extra.AllImageEntry
	31,  // 324: LuckyBoxMessage.BottomCommentMsg.text:type_name -> Text
	58,  // 325: LuckyBoxMessage.BottomCommentMsg.background:type_name -> Image
	58,  // 326: LuckyBoxMessage.BottomCommentMsg.left_icon:type_name -> Image
	58,  // 327: LuckyBoxMessage.BottomCommentMsg.right_icon:type_name -> Image
	177, // 328: LuckyBoxMessage.Dress.jump_schema_to_box:type_name -> LuckyBoxMessage.Dress.JumpSchemaToBoxEntry
	178, // 329: LuckyBoxMessage.Dress.jump_schema_to_dress:type_name -> LuckyBoxMessage.Dress.JumpSchemaToDressEntry
	58,  // 330: LuckyBoxMessage.Extra.AllImageEntry.value:type_name -> Image
	58,  // 331: NotifyEffectMessage.Background.background_image:type_name -> Image
	58,  // 332: NotifyEffectMessage.Background.background_effect:type_name -> Image
	10,  // 333: NotifyEffectMessage.BindingGiftMessage.msg:type_name -> GiftMessage
	48,  // 334: NotifyEffectMessage.BindingGiftMessage.common:type_name -> Common
	31,  // 335: NotifyEffectMessage.SceneConfig.aggregate_text:type_name -> Text
	49,  // 336: GrowthTaskMessage.CurrentContribution.user:type_name -> User
	187, // 337: GrowthTaskMessage.CurrentContribution.delta_info:type_name -> GrowthTaskMessage.CurrentContribution.DeltaInfoEntry
	338, // [338:338] is the sub-list for method output_type
	338, // [338:338] is the sub-list for method input_type
	338, // [338:338] is the sub-list for extension type_name
	338, // [338:338] is the sub-list for extension extendee
	0,   // [0:338] is the sub-list for field type_name
}

func init() { file_douyin_proto_init() }
func file_douyin_proto_init() {
	if File_douyin_proto != nil {
		return
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_douyin_proto_rawDesc,
			NumEnums:      2,
			NumMessages:   186,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_douyin_proto_goTypes,
		DependencyIndexes: file_douyin_proto_depIdxs,
		EnumInfos:         file_douyin_proto_enumTypes,
		MessageInfos:      file_douyin_proto_msgTypes,
	}.Build()
	File_douyin_proto = out.File
	file_douyin_proto_rawDesc = nil
	file_douyin_proto_goTypes = nil
	file_douyin_proto_depIdxs = nil
}
