// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.23.0
// 	protoc        v3.17.3
// source: chat/v1/messages.proto

package chatv1

import (
	proto "github.com/golang/protobuf/proto"
	v11 "github.com/harmony-development/shibshib/gen/emote/v1"
	v1 "github.com/harmony-development/shibshib/gen/harmonytypes/v1"
	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)
)

// This is a compile-time assertion that a sufficiently up-to-date version
// of the legacy proto package is being used.
const _ = proto.ProtoPackageIsVersion4

// The action type. This is primarily used to change the look of the action to
// the user (example: Destructive actions will have a red background).
type Action_Type int32

const (
	// a normal action.
	Action_TYPE_NORMAL_UNSPECIFIED Action_Type = 0
	// a primary action.
	Action_TYPE_PRIMARY Action_Type = 1
	// A destructive / dangerous action.
	Action_TYPE_DESTRUCTIVE Action_Type = 2
)

// Enum value maps for Action_Type.
var (
	Action_Type_name = map[int32]string{
		0: "TYPE_NORMAL_UNSPECIFIED",
		1: "TYPE_PRIMARY",
		2: "TYPE_DESTRUCTIVE",
	}
	Action_Type_value = map[string]int32{
		"TYPE_NORMAL_UNSPECIFIED": 0,
		"TYPE_PRIMARY":            1,
		"TYPE_DESTRUCTIVE":        2,
	}
)

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

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

func (Action_Type) Descriptor() protoreflect.EnumDescriptor {
	return file_chat_v1_messages_proto_enumTypes[0].Descriptor()
}

func (Action_Type) Type() protoreflect.EnumType {
	return &file_chat_v1_messages_proto_enumTypes[0]
}

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

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

// Type representing how to present an embed field.
type Embed_EmbedField_Presentation int32

const (
	// Show the field as data.
	Embed_EmbedField_PRESENTATION_DATA_UNSPECIFIED Embed_EmbedField_Presentation = 0
	// Show the field as a captioned image.
	Embed_EmbedField_PRESENTATION_CAPTIONED_IMAGE Embed_EmbedField_Presentation = 1
	// Show the field as a row.
	Embed_EmbedField_PRESENTATION_ROW Embed_EmbedField_Presentation = 2
)

// Enum value maps for Embed_EmbedField_Presentation.
var (
	Embed_EmbedField_Presentation_name = map[int32]string{
		0: "PRESENTATION_DATA_UNSPECIFIED",
		1: "PRESENTATION_CAPTIONED_IMAGE",
		2: "PRESENTATION_ROW",
	}
	Embed_EmbedField_Presentation_value = map[string]int32{
		"PRESENTATION_DATA_UNSPECIFIED": 0,
		"PRESENTATION_CAPTIONED_IMAGE":  1,
		"PRESENTATION_ROW":              2,
	}
)

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

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

func (Embed_EmbedField_Presentation) Descriptor() protoreflect.EnumDescriptor {
	return file_chat_v1_messages_proto_enumTypes[1].Descriptor()
}

func (Embed_EmbedField_Presentation) Type() protoreflect.EnumType {
	return &file_chat_v1_messages_proto_enumTypes[1]
}

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

// Deprecated: Use Embed_EmbedField_Presentation.Descriptor instead.
func (Embed_EmbedField_Presentation) EnumDescriptor() ([]byte, []int) {
	return file_chat_v1_messages_proto_rawDescGZIP(), []int{3, 1, 0}
}

// The kind of colour modification to apply
type Format_Color_Kind int32

const (
	// Dimmed colour
	Format_Color_KIND_DIM_UNSPECIFIED Format_Color_Kind = 0
	// Brightened colour
	Format_Color_KIND_BRIGHT Format_Color_Kind = 1
	// Negative colour (usually red)
	Format_Color_KIND_NEGATIVE Format_Color_Kind = 2
	// Positive colour (usually green)
	Format_Color_KIND_POSITIVE Format_Color_Kind = 3
	// Informational colour (usually blue)
	Format_Color_KIND_INFO Format_Color_Kind = 4
	// Warning colour (usually yellow-orange)
	Format_Color_KIND_WARNING Format_Color_Kind = 5
)

// Enum value maps for Format_Color_Kind.
var (
	Format_Color_Kind_name = map[int32]string{
		0: "KIND_DIM_UNSPECIFIED",
		1: "KIND_BRIGHT",
		2: "KIND_NEGATIVE",
		3: "KIND_POSITIVE",
		4: "KIND_INFO",
		5: "KIND_WARNING",
	}
	Format_Color_Kind_value = map[string]int32{
		"KIND_DIM_UNSPECIFIED": 0,
		"KIND_BRIGHT":          1,
		"KIND_NEGATIVE":        2,
		"KIND_POSITIVE":        3,
		"KIND_INFO":            4,
		"KIND_WARNING":         5,
	}
)

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

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

func (Format_Color_Kind) Descriptor() protoreflect.EnumDescriptor {
	return file_chat_v1_messages_proto_enumTypes[2].Descriptor()
}

func (Format_Color_Kind) Type() protoreflect.EnumType {
	return &file_chat_v1_messages_proto_enumTypes[2]
}

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

// Deprecated: Use Format_Color_Kind.Descriptor instead.
func (Format_Color_Kind) EnumDescriptor() ([]byte, []int) {
	return file_chat_v1_messages_proto_rawDescGZIP(), []int{9, 12, 0}
}

// The direction relative to the `message_id` message to get messages from.
type GetChannelMessagesRequest_Direction int32

const (
	// Get messages before the anchor.
	GetChannelMessagesRequest_DIRECTION_BEFORE_UNSPECIFIED GetChannelMessagesRequest_Direction = 0
	// Get messages around the anchor, including the anchor.
	GetChannelMessagesRequest_DIRECTION_AROUND GetChannelMessagesRequest_Direction = 1
	// Get messages after the anchor.
	GetChannelMessagesRequest_DIRECTION_AFTER GetChannelMessagesRequest_Direction = 2
)

// Enum value maps for GetChannelMessagesRequest_Direction.
var (
	GetChannelMessagesRequest_Direction_name = map[int32]string{
		0: "DIRECTION_BEFORE_UNSPECIFIED",
		1: "DIRECTION_AROUND",
		2: "DIRECTION_AFTER",
	}
	GetChannelMessagesRequest_Direction_value = map[string]int32{
		"DIRECTION_BEFORE_UNSPECIFIED": 0,
		"DIRECTION_AROUND":             1,
		"DIRECTION_AFTER":              2,
	}
)

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

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

func (GetChannelMessagesRequest_Direction) Descriptor() protoreflect.EnumDescriptor {
	return file_chat_v1_messages_proto_enumTypes[3].Descriptor()
}

func (GetChannelMessagesRequest_Direction) Type() protoreflect.EnumType {
	return &file_chat_v1_messages_proto_enumTypes[3]
}

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

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

// Overrides provide a way to override the name and avatar of a message.
type Overrides struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// the overridden username.
	Username *string `protobuf:"bytes,1,opt,name=username,proto3,oneof" json:"username,omitempty"`
	// the overridden avatar.
	Avatar *string `protobuf:"bytes,2,opt,name=avatar,proto3,oneof" json:"avatar,omitempty"`
	// the reason for overriding username and avatar.
	//
	// Types that are assignable to Reason:
	//	*Overrides_UserDefined
	//	*Overrides_Webhook
	//	*Overrides_SystemPlurality
	//	*Overrides_SystemMessage
	//	*Overrides_Bridge
	Reason isOverrides_Reason `protobuf_oneof:"reason"`
}

func (x *Overrides) Reset() {
	*x = Overrides{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[0]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Overrides) ProtoMessage() {}

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

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

func (x *Overrides) GetUsername() string {
	if x != nil && x.Username != nil {
		return *x.Username
	}
	return ""
}

func (x *Overrides) GetAvatar() string {
	if x != nil && x.Avatar != nil {
		return *x.Avatar
	}
	return ""
}

func (m *Overrides) GetReason() isOverrides_Reason {
	if m != nil {
		return m.Reason
	}
	return nil
}

func (x *Overrides) GetUserDefined() string {
	if x, ok := x.GetReason().(*Overrides_UserDefined); ok {
		return x.UserDefined
	}
	return ""
}

func (x *Overrides) GetWebhook() *v1.Empty {
	if x, ok := x.GetReason().(*Overrides_Webhook); ok {
		return x.Webhook
	}
	return nil
}

func (x *Overrides) GetSystemPlurality() *v1.Empty {
	if x, ok := x.GetReason().(*Overrides_SystemPlurality); ok {
		return x.SystemPlurality
	}
	return nil
}

func (x *Overrides) GetSystemMessage() *v1.Empty {
	if x, ok := x.GetReason().(*Overrides_SystemMessage); ok {
		return x.SystemMessage
	}
	return nil
}

func (x *Overrides) GetBridge() *v1.Empty {
	if x, ok := x.GetReason().(*Overrides_Bridge); ok {
		return x.Bridge
	}
	return nil
}

type isOverrides_Reason interface {
	isOverrides_Reason()
}

type Overrides_UserDefined struct {
	// a custom reason in case the builtin ones don't fit
	UserDefined string `protobuf:"bytes,3,opt,name=user_defined,json=userDefined,proto3,oneof"`
}

type Overrides_Webhook struct {
	// the override occured because of a webhook
	Webhook *v1.Empty `protobuf:"bytes,4,opt,name=webhook,proto3,oneof"`
}

type Overrides_SystemPlurality struct {
	// plurality, not system as in computer
	SystemPlurality *v1.Empty `protobuf:"bytes,5,opt,name=system_plurality,json=systemPlurality,proto3,oneof"`
}

type Overrides_SystemMessage struct {
	// the override occured because it was made by the server
	//
	// Servers should reject messages sent by users with this override.
	SystemMessage *v1.Empty `protobuf:"bytes,6,opt,name=system_message,json=systemMessage,proto3,oneof"`
}

type Overrides_Bridge struct {
	// the override occured because of bridging
	Bridge *v1.Empty `protobuf:"bytes,7,opt,name=bridge,proto3,oneof"`
}

func (*Overrides_UserDefined) isOverrides_Reason() {}

func (*Overrides_Webhook) isOverrides_Reason() {}

func (*Overrides_SystemPlurality) isOverrides_Reason() {}

func (*Overrides_SystemMessage) isOverrides_Reason() {}

func (*Overrides_Bridge) isOverrides_Reason() {}

// The payload sent to the bot when an action is triggered.
type ActionPayload struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The payload data
	//
	// Types that are assignable to Payload:
	//	*ActionPayload_Button_
	//	*ActionPayload_Dropdown_
	//	*ActionPayload_Input_
	Payload isActionPayload_Payload `protobuf_oneof:"payload"`
}

func (x *ActionPayload) Reset() {
	*x = ActionPayload{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[1]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*ActionPayload) ProtoMessage() {}

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

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

func (m *ActionPayload) GetPayload() isActionPayload_Payload {
	if m != nil {
		return m.Payload
	}
	return nil
}

func (x *ActionPayload) GetButton() *ActionPayload_Button {
	if x, ok := x.GetPayload().(*ActionPayload_Button_); ok {
		return x.Button
	}
	return nil
}

func (x *ActionPayload) GetDropdown() *ActionPayload_Dropdown {
	if x, ok := x.GetPayload().(*ActionPayload_Dropdown_); ok {
		return x.Dropdown
	}
	return nil
}

func (x *ActionPayload) GetInput() *ActionPayload_Input {
	if x, ok := x.GetPayload().(*ActionPayload_Input_); ok {
		return x.Input
	}
	return nil
}

type isActionPayload_Payload interface {
	isActionPayload_Payload()
}

type ActionPayload_Button_ struct {
	// Payload for a button
	Button *ActionPayload_Button `protobuf:"bytes,1,opt,name=button,proto3,oneof"`
}

type ActionPayload_Dropdown_ struct {
	// Payload for a dropdown
	Dropdown *ActionPayload_Dropdown `protobuf:"bytes,2,opt,name=dropdown,proto3,oneof"`
}

type ActionPayload_Input_ struct {
	// Payload for a text input
	Input *ActionPayload_Input `protobuf:"bytes,3,opt,name=input,proto3,oneof"`
}

func (*ActionPayload_Button_) isActionPayload_Payload() {}

func (*ActionPayload_Dropdown_) isActionPayload_Payload() {}

func (*ActionPayload_Input_) isActionPayload_Payload() {}

// Actions are interactive elements that can exist within an embed.
type Action struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Type of the action.
	ActionType Action_Type `protobuf:"varint,1,opt,name=action_type,json=actionType,proto3,enum=protocol.chat.v1.Action_Type" json:"action_type,omitempty"`
	// The kind of the action.
	//
	// Types that are assignable to Kind:
	//	*Action_Button_
	//	*Action_Dropdown_
	//	*Action_Input_
	Kind isAction_Kind `protobuf_oneof:"kind"`
}

func (x *Action) Reset() {
	*x = Action{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[2]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Action) ProtoMessage() {}

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

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

func (x *Action) GetActionType() Action_Type {
	if x != nil {
		return x.ActionType
	}
	return Action_TYPE_NORMAL_UNSPECIFIED
}

func (m *Action) GetKind() isAction_Kind {
	if m != nil {
		return m.Kind
	}
	return nil
}

func (x *Action) GetButton() *Action_Button {
	if x, ok := x.GetKind().(*Action_Button_); ok {
		return x.Button
	}
	return nil
}

func (x *Action) GetDropdown() *Action_Dropdown {
	if x, ok := x.GetKind().(*Action_Dropdown_); ok {
		return x.Dropdown
	}
	return nil
}

func (x *Action) GetInput() *Action_Input {
	if x, ok := x.GetKind().(*Action_Input_); ok {
		return x.Input
	}
	return nil
}

type isAction_Kind interface {
	isAction_Kind()
}

type Action_Button_ struct {
	// Button action.
	Button *Action_Button `protobuf:"bytes,2,opt,name=button,proto3,oneof"`
}

type Action_Dropdown_ struct {
	// Dropdown action.
	Dropdown *Action_Dropdown `protobuf:"bytes,3,opt,name=dropdown,proto3,oneof"`
}

type Action_Input_ struct {
	// Input action.
	Input *Action_Input `protobuf:"bytes,4,opt,name=input,proto3,oneof"`
}

func (*Action_Button_) isAction_Kind() {}

func (*Action_Dropdown_) isAction_Kind() {}

func (*Action_Input_) isAction_Kind() {}

// Object representing a message embed.
type Embed struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Title of this embed.
	Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"`
	// Body text of this embed.
	Body *FormattedText `protobuf:"bytes,2,opt,name=body,proto3,oneof" json:"body,omitempty"`
	// Color of this embed.
	Color *int32 `protobuf:"varint,3,opt,name=color,proto3,oneof" json:"color,omitempty"`
	// Embed heading for the header.
	Header *Embed_EmbedHeading `protobuf:"bytes,4,opt,name=header,proto3,oneof" json:"header,omitempty"`
	// Embed heading for the footer.
	Footer *Embed_EmbedHeading `protobuf:"bytes,5,opt,name=footer,proto3,oneof" json:"footer,omitempty"`
	// Fields of this embed.
	Fields []*Embed_EmbedField `protobuf:"bytes,6,rep,name=fields,proto3" json:"fields,omitempty"`
}

func (x *Embed) Reset() {
	*x = Embed{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[3]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Embed) ProtoMessage() {}

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

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

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

func (x *Embed) GetBody() *FormattedText {
	if x != nil {
		return x.Body
	}
	return nil
}

func (x *Embed) GetColor() int32 {
	if x != nil && x.Color != nil {
		return *x.Color
	}
	return 0
}

func (x *Embed) GetHeader() *Embed_EmbedHeading {
	if x != nil {
		return x.Header
	}
	return nil
}

func (x *Embed) GetFooter() *Embed_EmbedHeading {
	if x != nil {
		return x.Footer
	}
	return nil
}

func (x *Embed) GetFields() []*Embed_EmbedField {
	if x != nil {
		return x.Fields
	}
	return nil
}

//
// Minithumbnail is an extremely low-quality JPEG thumbnail.
//
// The resolution is usually no larger than 64x64.
type Minithumbnail struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The width of the minithumbnail
	Width uint32 `protobuf:"varint,1,opt,name=width,proto3" json:"width,omitempty"`
	// The height of the minithumbnail
	Height uint32 `protobuf:"varint,2,opt,name=height,proto3" json:"height,omitempty"`
	// The JPEG data of the minithumbnail
	Data []byte `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
}

func (x *Minithumbnail) Reset() {
	*x = Minithumbnail{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[4]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Minithumbnail) ProtoMessage() {}

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

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

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

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

func (x *Minithumbnail) GetData() []byte {
	if x != nil {
		return x.Data
	}
	return nil
}

//
// Photo contains data about a photo.
//
// Photo are always JPEG, and are
// constrained to the following rules:
//
// - width+height <= 10_000
// - width <= height*20
// - height <= width*20
//
// Photos are preferably no more than 10MB
// in size, and servers may compress as necessary.
type Photo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The HMC URL of the photo.
	Hmc string `protobuf:"bytes,1,opt,name=hmc,proto3" json:"hmc,omitempty"`
	// The filename of the photo.
	Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	// The size of the photo.
	FileSize uint32 `protobuf:"varint,3,opt,name=file_size,json=fileSize,proto3" json:"file_size,omitempty"`
	// The height of the photo, in pixels.
	Height uint32 `protobuf:"varint,4,opt,name=height,proto3" json:"height,omitempty"`
	// The width of the photo, in pixels.
	Width uint32 `protobuf:"varint,5,opt,name=width,proto3" json:"width,omitempty"`
	// The photo's caption.
	Caption *FormattedText `protobuf:"bytes,6,opt,name=caption,proto3" json:"caption,omitempty"`
	// A thumbnail representing the photo.
	Minithumbnail *Minithumbnail `protobuf:"bytes,7,opt,name=minithumbnail,proto3" json:"minithumbnail,omitempty"`
}

func (x *Photo) Reset() {
	*x = Photo{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[5]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Photo) ProtoMessage() {}

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

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

func (x *Photo) GetHmc() string {
	if x != nil {
		return x.Hmc
	}
	return ""
}

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

func (x *Photo) GetFileSize() uint32 {
	if x != nil {
		return x.FileSize
	}
	return 0
}

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

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

func (x *Photo) GetCaption() *FormattedText {
	if x != nil {
		return x.Caption
	}
	return nil
}

func (x *Photo) GetMinithumbnail() *Minithumbnail {
	if x != nil {
		return x.Minithumbnail
	}
	return nil
}

// Object representing a generic message attachment.
type Attachment struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// File ID of this attachment.
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// Filename of this attachment.
	Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	// Mimetype of this attachment.
	Mimetype string `protobuf:"bytes,3,opt,name=mimetype,proto3" json:"mimetype,omitempty"`
	// Size of this attachment.
	Size uint32 `protobuf:"varint,4,opt,name=size,proto3" json:"size,omitempty"`
	// Caption of this attachment.
	Caption *FormattedText `protobuf:"bytes,5,opt,name=caption,proto3,oneof" json:"caption,omitempty"`
}

func (x *Attachment) Reset() {
	*x = Attachment{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[6]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Attachment) ProtoMessage() {}

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

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

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

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

func (x *Attachment) GetMimetype() string {
	if x != nil {
		return x.Mimetype
	}
	return ""
}

func (x *Attachment) GetSize() uint32 {
	if x != nil {
		return x.Size
	}
	return 0
}

func (x *Attachment) GetCaption() *FormattedText {
	if x != nil {
		return x.Caption
	}
	return nil
}

// Object representing a message's content.
type Content struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Content data.
	//
	// Types that are assignable to Content:
	//	*Content_TextMessage
	//	*Content_EmbedMessage
	//	*Content_AttachmentMessage
	//	*Content_PhotoMessage
	//	*Content_InviteRejected_
	//	*Content_InviteAccepted_
	//	*Content_RoomUpgradedToGuild_
	Content isContent_Content `protobuf_oneof:"content"`
}

func (x *Content) Reset() {
	*x = Content{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[7]
		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_chat_v1_messages_proto_msgTypes[7]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

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

func (m *Content) GetContent() isContent_Content {
	if m != nil {
		return m.Content
	}
	return nil
}

func (x *Content) GetTextMessage() *Content_TextContent {
	if x, ok := x.GetContent().(*Content_TextMessage); ok {
		return x.TextMessage
	}
	return nil
}

func (x *Content) GetEmbedMessage() *Content_EmbedContent {
	if x, ok := x.GetContent().(*Content_EmbedMessage); ok {
		return x.EmbedMessage
	}
	return nil
}

func (x *Content) GetAttachmentMessage() *Content_AttachmentContent {
	if x, ok := x.GetContent().(*Content_AttachmentMessage); ok {
		return x.AttachmentMessage
	}
	return nil
}

func (x *Content) GetPhotoMessage() *Content_PhotoContent {
	if x, ok := x.GetContent().(*Content_PhotoMessage); ok {
		return x.PhotoMessage
	}
	return nil
}

func (x *Content) GetInviteRejected() *Content_InviteRejected {
	if x, ok := x.GetContent().(*Content_InviteRejected_); ok {
		return x.InviteRejected
	}
	return nil
}

func (x *Content) GetInviteAccepted() *Content_InviteAccepted {
	if x, ok := x.GetContent().(*Content_InviteAccepted_); ok {
		return x.InviteAccepted
	}
	return nil
}

func (x *Content) GetRoomUpgradedToGuild() *Content_RoomUpgradedToGuild {
	if x, ok := x.GetContent().(*Content_RoomUpgradedToGuild_); ok {
		return x.RoomUpgradedToGuild
	}
	return nil
}

type isContent_Content interface {
	isContent_Content()
}

type Content_TextMessage struct {
	// Text content.
	TextMessage *Content_TextContent `protobuf:"bytes,1,opt,name=text_message,json=textMessage,proto3,oneof"`
}

type Content_EmbedMessage struct {
	// Embed content.
	EmbedMessage *Content_EmbedContent `protobuf:"bytes,2,opt,name=embed_message,json=embedMessage,proto3,oneof"`
}

type Content_AttachmentMessage struct {
	// Attachment content.
	AttachmentMessage *Content_AttachmentContent `protobuf:"bytes,3,opt,name=attachment_message,json=attachmentMessage,proto3,oneof"`
}

type Content_PhotoMessage struct {
	// Photo content.
	PhotoMessage *Content_PhotoContent `protobuf:"bytes,4,opt,name=photo_message,json=photoMessage,proto3,oneof"`
}

type Content_InviteRejected_ struct {
	// A user rejected an invite.
	InviteRejected *Content_InviteRejected `protobuf:"bytes,5,opt,name=invite_rejected,json=inviteRejected,proto3,oneof"`
}

type Content_InviteAccepted_ struct {
	// A user accepted an invite.
	InviteAccepted *Content_InviteAccepted `protobuf:"bytes,6,opt,name=invite_accepted,json=inviteAccepted,proto3,oneof"`
}

type Content_RoomUpgradedToGuild_ struct {
	// A user upgraded a guild from "room" to "normal".
	RoomUpgradedToGuild *Content_RoomUpgradedToGuild `protobuf:"bytes,7,opt,name=room_upgraded_to_guild,json=roomUpgradedToGuild,proto3,oneof"`
}

func (*Content_TextMessage) isContent_Content() {}

func (*Content_EmbedMessage) isContent_Content() {}

func (*Content_AttachmentMessage) isContent_Content() {}

func (*Content_PhotoMessage) isContent_Content() {}

func (*Content_InviteRejected_) isContent_Content() {}

func (*Content_InviteAccepted_) isContent_Content() {}

func (*Content_RoomUpgradedToGuild_) isContent_Content() {}

// Object representing a reaction.
type Reaction struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Emote data for this reaction.
	//
	// Emote's image ID is used as an identifier for unique reactions.
	// Emotes with the same names should be "deduplicated" by a client, by suffixing
	// their names with `~1`, `~2` and so on.
	Emote *v11.Emote `protobuf:"bytes,1,opt,name=emote,proto3" json:"emote,omitempty"`
	// How many reactions this reaction has.
	Count uint32 `protobuf:"varint,2,opt,name=count,proto3" json:"count,omitempty"`
}

func (x *Reaction) Reset() {
	*x = Reaction{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[8]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Reaction) ProtoMessage() {}

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

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

func (x *Reaction) GetEmote() *v11.Emote {
	if x != nil {
		return x.Emote
	}
	return nil
}

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

// A format for text
type Format struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// where the format begins to apply to
	Start uint32 `protobuf:"varint,1,opt,name=start,proto3" json:"start,omitempty"`
	// how many characters the format is
	Length uint32 `protobuf:"varint,2,opt,name=length,proto3" json:"length,omitempty"`
	// the style if format to apply to this text
	//
	// Types that are assignable to Format:
	//	*Format_Bold_
	//	*Format_Italic_
	//	*Format_Underline_
	//	*Format_Monospace_
	//	*Format_Superscript_
	//	*Format_Subscript_
	//	*Format_CodeBlock_
	//	*Format_UserMention_
	//	*Format_RoleMention_
	//	*Format_ChannelMention_
	//	*Format_GuildMention_
	//	*Format_Emoji_
	//	*Format_Color_
	//	*Format_Localization_
	Format isFormat_Format `protobuf_oneof:"format"`
}

func (x *Format) Reset() {
	*x = Format{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[9]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Format) ProtoMessage() {}

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

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

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

func (x *Format) GetLength() uint32 {
	if x != nil {
		return x.Length
	}
	return 0
}

func (m *Format) GetFormat() isFormat_Format {
	if m != nil {
		return m.Format
	}
	return nil
}

func (x *Format) GetBold() *Format_Bold {
	if x, ok := x.GetFormat().(*Format_Bold_); ok {
		return x.Bold
	}
	return nil
}

func (x *Format) GetItalic() *Format_Italic {
	if x, ok := x.GetFormat().(*Format_Italic_); ok {
		return x.Italic
	}
	return nil
}

func (x *Format) GetUnderline() *Format_Underline {
	if x, ok := x.GetFormat().(*Format_Underline_); ok {
		return x.Underline
	}
	return nil
}

func (x *Format) GetMonospace() *Format_Monospace {
	if x, ok := x.GetFormat().(*Format_Monospace_); ok {
		return x.Monospace
	}
	return nil
}

func (x *Format) GetSuperscript() *Format_Superscript {
	if x, ok := x.GetFormat().(*Format_Superscript_); ok {
		return x.Superscript
	}
	return nil
}

func (x *Format) GetSubscript() *Format_Subscript {
	if x, ok := x.GetFormat().(*Format_Subscript_); ok {
		return x.Subscript
	}
	return nil
}

func (x *Format) GetCodeBlock() *Format_CodeBlock {
	if x, ok := x.GetFormat().(*Format_CodeBlock_); ok {
		return x.CodeBlock
	}
	return nil
}

func (x *Format) GetUserMention() *Format_UserMention {
	if x, ok := x.GetFormat().(*Format_UserMention_); ok {
		return x.UserMention
	}
	return nil
}

func (x *Format) GetRoleMention() *Format_RoleMention {
	if x, ok := x.GetFormat().(*Format_RoleMention_); ok {
		return x.RoleMention
	}
	return nil
}

func (x *Format) GetChannelMention() *Format_ChannelMention {
	if x, ok := x.GetFormat().(*Format_ChannelMention_); ok {
		return x.ChannelMention
	}
	return nil
}

func (x *Format) GetGuildMention() *Format_GuildMention {
	if x, ok := x.GetFormat().(*Format_GuildMention_); ok {
		return x.GuildMention
	}
	return nil
}

func (x *Format) GetEmoji() *Format_Emoji {
	if x, ok := x.GetFormat().(*Format_Emoji_); ok {
		return x.Emoji
	}
	return nil
}

func (x *Format) GetColor() *Format_Color {
	if x, ok := x.GetFormat().(*Format_Color_); ok {
		return x.Color
	}
	return nil
}

func (x *Format) GetLocalization() *Format_Localization {
	if x, ok := x.GetFormat().(*Format_Localization_); ok {
		return x.Localization
	}
	return nil
}

type isFormat_Format interface {
	isFormat_Format()
}

type Format_Bold_ struct {
	// a text format for bold text
	Bold *Format_Bold `protobuf:"bytes,3,opt,name=bold,proto3,oneof"`
}

type Format_Italic_ struct {
	// a text format for italic text
	Italic *Format_Italic `protobuf:"bytes,4,opt,name=italic,proto3,oneof"`
}

type Format_Underline_ struct {
	// a text format for underline text
	Underline *Format_Underline `protobuf:"bytes,5,opt,name=underline,proto3,oneof"`
}

type Format_Monospace_ struct {
	// a text format for monospace text
	Monospace *Format_Monospace `protobuf:"bytes,6,opt,name=monospace,proto3,oneof"`
}

type Format_Superscript_ struct {
	// a text format for superscript text
	Superscript *Format_Superscript `protobuf:"bytes,7,opt,name=superscript,proto3,oneof"`
}

type Format_Subscript_ struct {
	// a text format for subscript text
	Subscript *Format_Subscript `protobuf:"bytes,8,opt,name=subscript,proto3,oneof"`
}

type Format_CodeBlock_ struct {
	// a text format for a codeblock
	CodeBlock *Format_CodeBlock `protobuf:"bytes,9,opt,name=code_block,json=codeBlock,proto3,oneof"`
}

type Format_UserMention_ struct {
	// a text format for a user mention
	UserMention *Format_UserMention `protobuf:"bytes,10,opt,name=user_mention,json=userMention,proto3,oneof"`
}

type Format_RoleMention_ struct {
	// a text format for a role mention
	RoleMention *Format_RoleMention `protobuf:"bytes,11,opt,name=role_mention,json=roleMention,proto3,oneof"`
}

type Format_ChannelMention_ struct {
	// a text format for a channel mention
	ChannelMention *Format_ChannelMention `protobuf:"bytes,12,opt,name=channel_mention,json=channelMention,proto3,oneof"`
}

type Format_GuildMention_ struct {
	// a text format for a guild mention
	GuildMention *Format_GuildMention `protobuf:"bytes,13,opt,name=guild_mention,json=guildMention,proto3,oneof"`
}

type Format_Emoji_ struct {
	// a text format for an emoji
	Emoji *Format_Emoji `protobuf:"bytes,14,opt,name=emoji,proto3,oneof"`
}

type Format_Color_ struct {
	// a text format for coloured text
	Color *Format_Color `protobuf:"bytes,15,opt,name=color,proto3,oneof"`
}

type Format_Localization_ struct {
	// a text format for localization
	Localization *Format_Localization `protobuf:"bytes,16,opt,name=localization,proto3,oneof"`
}

func (*Format_Bold_) isFormat_Format() {}

func (*Format_Italic_) isFormat_Format() {}

func (*Format_Underline_) isFormat_Format() {}

func (*Format_Monospace_) isFormat_Format() {}

func (*Format_Superscript_) isFormat_Format() {}

func (*Format_Subscript_) isFormat_Format() {}

func (*Format_CodeBlock_) isFormat_Format() {}

func (*Format_UserMention_) isFormat_Format() {}

func (*Format_RoleMention_) isFormat_Format() {}

func (*Format_ChannelMention_) isFormat_Format() {}

func (*Format_GuildMention_) isFormat_Format() {}

func (*Format_Emoji_) isFormat_Format() {}

func (*Format_Color_) isFormat_Format() {}

func (*Format_Localization_) isFormat_Format() {}

// Formatted text
type FormattedText struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The textual content of a message
	Text string `protobuf:"bytes,1,opt,name=text,proto3" json:"text,omitempty"`
	// The formats for a message
	Format []*Format `protobuf:"bytes,2,rep,name=format,proto3" json:"format,omitempty"`
}

func (x *FormattedText) Reset() {
	*x = FormattedText{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[10]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*FormattedText) ProtoMessage() {}

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

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

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

func (x *FormattedText) GetFormat() []*Format {
	if x != nil {
		return x.Format
	}
	return nil
}

// Object representing a message without the ID part.
type Message struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Metadata of this message.
	Metadata *v1.Metadata `protobuf:"bytes,1,opt,name=metadata,proto3,oneof" json:"metadata,omitempty"`
	// Overrides of this message.
	Overrides *Overrides `protobuf:"bytes,2,opt,name=overrides,proto3" json:"overrides,omitempty"`
	// User ID of the user who sent this message.
	AuthorId uint64 `protobuf:"varint,3,opt,name=author_id,json=authorId,proto3" json:"author_id,omitempty"`
	// When this message was created, in miliseconds since unix epoch
	CreatedAt uint64 `protobuf:"varint,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
	// The most recent time this message was edited, in milliseconds since unix epoch
	EditedAt *uint64 `protobuf:"varint,5,opt,name=edited_at,json=editedAt,proto3,oneof" json:"edited_at,omitempty"`
	// The message this message is a reply to.
	InReplyTo *uint64 `protobuf:"varint,6,opt,name=in_reply_to,json=inReplyTo,proto3,oneof" json:"in_reply_to,omitempty"`
	// The content of the message.
	Content *Content `protobuf:"bytes,7,opt,name=content,proto3" json:"content,omitempty"`
	// The reactions of the message.
	Reactions []*Reaction `protobuf:"bytes,8,rep,name=reactions,proto3" json:"reactions,omitempty"`
}

func (x *Message) Reset() {
	*x = Message{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[11]
		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_chat_v1_messages_proto_msgTypes[11]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

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

func (x *Message) GetMetadata() *v1.Metadata {
	if x != nil {
		return x.Metadata
	}
	return nil
}

func (x *Message) GetOverrides() *Overrides {
	if x != nil {
		return x.Overrides
	}
	return nil
}

func (x *Message) GetAuthorId() uint64 {
	if x != nil {
		return x.AuthorId
	}
	return 0
}

func (x *Message) GetCreatedAt() uint64 {
	if x != nil {
		return x.CreatedAt
	}
	return 0
}

func (x *Message) GetEditedAt() uint64 {
	if x != nil && x.EditedAt != nil {
		return *x.EditedAt
	}
	return 0
}

func (x *Message) GetInReplyTo() uint64 {
	if x != nil && x.InReplyTo != nil {
		return *x.InReplyTo
	}
	return 0
}

func (x *Message) GetContent() *Content {
	if x != nil {
		return x.Content
	}
	return nil
}

func (x *Message) GetReactions() []*Reaction {
	if x != nil {
		return x.Reactions
	}
	return nil
}

// Object representing a message with it's ID.
type MessageWithId struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// ID of the message.
	MessageId uint64 `protobuf:"varint,1,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"`
	// The message data.
	Message *Message `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
}

func (x *MessageWithId) Reset() {
	*x = MessageWithId{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[12]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*MessageWithId) ProtoMessage() {}

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

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

func (x *MessageWithId) GetMessageId() uint64 {
	if x != nil {
		return x.MessageId
	}
	return 0
}

func (x *MessageWithId) GetMessage() *Message {
	if x != nil {
		return x.Message
	}
	return nil
}

// Used in the `GetChannelMessages` endpoint.
type GetChannelMessagesRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Guild ID of the guild that has the channel.
	GuildId uint64 `protobuf:"varint,1,opt,name=guild_id,json=guildId,proto3" json:"guild_id,omitempty"`
	// Channel ID of the channel to get messages from.
	ChannelId uint64 `protobuf:"varint,2,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"`
	// The ID of the message that will be used as an "anchor" point to figure out
	// where to get the messages.
	// If not specified, the `direction` will be ignored and the newest messages
	// will be returned.
	MessageId *uint64 `protobuf:"varint,3,opt,name=message_id,json=messageId,proto3,oneof" json:"message_id,omitempty"`
	// On which direction to get the messages.
	//
	// - By default, it is "before", which means you will get messages before the
	// `message_id` message.
	// - If it is "around", you will get the messages around the `message_id`
	// message. This will include the `message_id` message itself, as the middle
	// item of the list returned.
	// - If it is "after", you will get the messages after the `message_id`
	// message.
	Direction *GetChannelMessagesRequest_Direction `protobuf:"varint,4,opt,name=direction,proto3,enum=protocol.chat.v1.GetChannelMessagesRequest_Direction,oneof" json:"direction,omitempty"`
	// How many messages to get.
	//
	// - If `0`, a recommended message count to return is 25. If the direction is
	// "around", the recommended value is 12.
	// - If the direction to get the messages is "around", this count will not be
	// the *total* count of messages to return, but instead the count of messages
	// to return *for each direction*, before and after.
	// - Servers should enforce their own maximum limit, and clamp this value to
	// the limit.
	Count *uint32 `protobuf:"varint,5,opt,name=count,proto3,oneof" json:"count,omitempty"`
}

func (x *GetChannelMessagesRequest) Reset() {
	*x = GetChannelMessagesRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[13]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*GetChannelMessagesRequest) ProtoMessage() {}

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

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

func (x *GetChannelMessagesRequest) GetGuildId() uint64 {
	if x != nil {
		return x.GuildId
	}
	return 0
}

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

func (x *GetChannelMessagesRequest) GetMessageId() uint64 {
	if x != nil && x.MessageId != nil {
		return *x.MessageId
	}
	return 0
}

func (x *GetChannelMessagesRequest) GetDirection() GetChannelMessagesRequest_Direction {
	if x != nil && x.Direction != nil {
		return *x.Direction
	}
	return GetChannelMessagesRequest_DIRECTION_BEFORE_UNSPECIFIED
}

func (x *GetChannelMessagesRequest) GetCount() uint32 {
	if x != nil && x.Count != nil {
		return *x.Count
	}
	return 0
}

// Used in the `GetChannelMessages` endpoint.
type GetChannelMessagesResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Has reached the top (first message) of the message history.
	ReachedTop bool `protobuf:"varint,1,opt,name=reached_top,json=reachedTop,proto3" json:"reached_top,omitempty"`
	// Has reached the bottom (last message) of the message history.
	ReachedBottom bool `protobuf:"varint,2,opt,name=reached_bottom,json=reachedBottom,proto3" json:"reached_bottom,omitempty"`
	// The messages requested.
	Messages []*MessageWithId `protobuf:"bytes,3,rep,name=messages,proto3" json:"messages,omitempty"`
}

func (x *GetChannelMessagesResponse) Reset() {
	*x = GetChannelMessagesResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[14]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*GetChannelMessagesResponse) ProtoMessage() {}

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

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

func (x *GetChannelMessagesResponse) GetReachedTop() bool {
	if x != nil {
		return x.ReachedTop
	}
	return false
}

func (x *GetChannelMessagesResponse) GetReachedBottom() bool {
	if x != nil {
		return x.ReachedBottom
	}
	return false
}

func (x *GetChannelMessagesResponse) GetMessages() []*MessageWithId {
	if x != nil {
		return x.Messages
	}
	return nil
}

// Used in the `GetMessage` endpoint.
type GetMessageRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Guild ID of the guild where the channel is.
	GuildId uint64 `protobuf:"varint,1,opt,name=guild_id,json=guildId,proto3" json:"guild_id,omitempty"`
	// Channel ID of the channel where the message is.
	ChannelId uint64 `protobuf:"varint,2,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"`
	// Message ID of the message you want to get.
	MessageId uint64 `protobuf:"varint,3,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"`
}

func (x *GetMessageRequest) Reset() {
	*x = GetMessageRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[15]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*GetMessageRequest) ProtoMessage() {}

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

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

func (x *GetMessageRequest) GetGuildId() uint64 {
	if x != nil {
		return x.GuildId
	}
	return 0
}

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

func (x *GetMessageRequest) GetMessageId() uint64 {
	if x != nil {
		return x.MessageId
	}
	return 0
}

// Used in the `GetMessage` endpoint.
type GetMessageResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The message requested.
	Message *Message `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"`
}

func (x *GetMessageResponse) Reset() {
	*x = GetMessageResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[16]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*GetMessageResponse) ProtoMessage() {}

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

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

func (x *GetMessageResponse) GetMessage() *Message {
	if x != nil {
		return x.Message
	}
	return nil
}

// Used in the `DeleteMessage` endpoint.
type DeleteMessageRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Guild ID of the guild where the channel is.
	GuildId uint64 `protobuf:"varint,1,opt,name=guild_id,json=guildId,proto3" json:"guild_id,omitempty"`
	// Channel ID of the channel where the message is.
	ChannelId uint64 `protobuf:"varint,2,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"`
	// Message ID of the message you want to delete.
	MessageId uint64 `protobuf:"varint,3,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"`
}

func (x *DeleteMessageRequest) Reset() {
	*x = DeleteMessageRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[17]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*DeleteMessageRequest) ProtoMessage() {}

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

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

func (x *DeleteMessageRequest) GetGuildId() uint64 {
	if x != nil {
		return x.GuildId
	}
	return 0
}

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

func (x *DeleteMessageRequest) GetMessageId() uint64 {
	if x != nil {
		return x.MessageId
	}
	return 0
}

// Used in the `DeleteMessage` endpoint.
type DeleteMessageResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *DeleteMessageResponse) Reset() {
	*x = DeleteMessageResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[18]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*DeleteMessageResponse) ProtoMessage() {}

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

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

// Used in the `TriggerAction` endpoint.
type TriggerActionRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Guild ID of the guild where the channel is.
	GuildId uint64 `protobuf:"varint,1,opt,name=guild_id,json=guildId,proto3" json:"guild_id,omitempty"`
	// Channel ID of the channel where the message is.
	ChannelId uint64 `protobuf:"varint,2,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"`
	// Message ID of the message you want to trigger an action in.
	MessageId uint64 `protobuf:"varint,3,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"`
	// Payload of action data.
	Payload *ActionPayload `protobuf:"bytes,4,opt,name=payload,proto3" json:"payload,omitempty"`
}

func (x *TriggerActionRequest) Reset() {
	*x = TriggerActionRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[19]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*TriggerActionRequest) ProtoMessage() {}

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

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

func (x *TriggerActionRequest) GetGuildId() uint64 {
	if x != nil {
		return x.GuildId
	}
	return 0
}

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

func (x *TriggerActionRequest) GetMessageId() uint64 {
	if x != nil {
		return x.MessageId
	}
	return 0
}

func (x *TriggerActionRequest) GetPayload() *ActionPayload {
	if x != nil {
		return x.Payload
	}
	return nil
}

// Used in the `TriggerAction` endpoint.
type TriggerActionResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *TriggerActionResponse) Reset() {
	*x = TriggerActionResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[20]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*TriggerActionResponse) ProtoMessage() {}

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

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

// Used in the `SendMessage` endpoint.
type SendMessageRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Guild ID of the guild where the channel is.
	GuildId uint64 `protobuf:"varint,1,opt,name=guild_id,json=guildId,proto3" json:"guild_id,omitempty"`
	// Channel ID of the channel you want to send a message in.
	ChannelId uint64 `protobuf:"varint,2,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"`
	// Content of the new message.
	Content *Content `protobuf:"bytes,3,opt,name=content,proto3" json:"content,omitempty"`
	// Echo ID of the new message. This can be used by clients to
	// determine whether a message is sent.
	EchoId *uint64 `protobuf:"varint,4,opt,name=echo_id,json=echoId,proto3,oneof" json:"echo_id,omitempty"`
	// The overrides of this new message.
	Overrides *Overrides `protobuf:"bytes,6,opt,name=overrides,proto3,oneof" json:"overrides,omitempty"`
	// The message this new message is a reply to.
	InReplyTo *uint64 `protobuf:"varint,7,opt,name=in_reply_to,json=inReplyTo,proto3,oneof" json:"in_reply_to,omitempty"`
	// The metadata of this new message.
	Metadata *v1.Metadata `protobuf:"bytes,5,opt,name=metadata,proto3,oneof" json:"metadata,omitempty"`
}

func (x *SendMessageRequest) Reset() {
	*x = SendMessageRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[21]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*SendMessageRequest) ProtoMessage() {}

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

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

func (x *SendMessageRequest) GetGuildId() uint64 {
	if x != nil {
		return x.GuildId
	}
	return 0
}

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

func (x *SendMessageRequest) GetContent() *Content {
	if x != nil {
		return x.Content
	}
	return nil
}

func (x *SendMessageRequest) GetEchoId() uint64 {
	if x != nil && x.EchoId != nil {
		return *x.EchoId
	}
	return 0
}

func (x *SendMessageRequest) GetOverrides() *Overrides {
	if x != nil {
		return x.Overrides
	}
	return nil
}

func (x *SendMessageRequest) GetInReplyTo() uint64 {
	if x != nil && x.InReplyTo != nil {
		return *x.InReplyTo
	}
	return 0
}

func (x *SendMessageRequest) GetMetadata() *v1.Metadata {
	if x != nil {
		return x.Metadata
	}
	return nil
}

// Used in the `SendMessage` endpoint.
type SendMessageResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Message ID of the message sent.
	MessageId uint64 `protobuf:"varint,1,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"`
}

func (x *SendMessageResponse) Reset() {
	*x = SendMessageResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[22]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*SendMessageResponse) ProtoMessage() {}

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

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

func (x *SendMessageResponse) GetMessageId() uint64 {
	if x != nil {
		return x.MessageId
	}
	return 0
}

// Used in the `UpdateMessageText` endpoint.
type UpdateMessageTextRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Guild ID of the guild where the channel is.
	GuildId uint64 `protobuf:"varint,1,opt,name=guild_id,json=guildId,proto3" json:"guild_id,omitempty"`
	// Channel ID of the channel where the message is.
	ChannelId uint64 `protobuf:"varint,2,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"`
	// Message ID of the message you want to edit the text of.
	MessageId uint64 `protobuf:"varint,3,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"`
	// New content for this message.
	NewContent *FormattedText `protobuf:"bytes,4,opt,name=new_content,json=newContent,proto3" json:"new_content,omitempty"`
}

func (x *UpdateMessageTextRequest) Reset() {
	*x = UpdateMessageTextRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[23]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*UpdateMessageTextRequest) ProtoMessage() {}

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

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

func (x *UpdateMessageTextRequest) GetGuildId() uint64 {
	if x != nil {
		return x.GuildId
	}
	return 0
}

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

func (x *UpdateMessageTextRequest) GetMessageId() uint64 {
	if x != nil {
		return x.MessageId
	}
	return 0
}

func (x *UpdateMessageTextRequest) GetNewContent() *FormattedText {
	if x != nil {
		return x.NewContent
	}
	return nil
}

// Used in the `UpdateMessageText` endpoint.
type UpdateMessageTextResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *UpdateMessageTextResponse) Reset() {
	*x = UpdateMessageTextResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[24]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*UpdateMessageTextResponse) ProtoMessage() {}

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

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

// Used in the `PinMessage` endpoint.
type PinMessageRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Guild ID of the guild where the channel is.
	GuildId uint64 `protobuf:"varint,1,opt,name=guild_id,json=guildId,proto3" json:"guild_id,omitempty"`
	// Channel ID of the channel where the message is.
	ChannelId uint64 `protobuf:"varint,2,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"`
	// Message ID of the message we want to pin.
	MessageId uint64 `protobuf:"varint,3,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"`
}

func (x *PinMessageRequest) Reset() {
	*x = PinMessageRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[25]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*PinMessageRequest) ProtoMessage() {}

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

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

func (x *PinMessageRequest) GetGuildId() uint64 {
	if x != nil {
		return x.GuildId
	}
	return 0
}

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

func (x *PinMessageRequest) GetMessageId() uint64 {
	if x != nil {
		return x.MessageId
	}
	return 0
}

// Used in the `UnpinMessage` endpoint.
type PinMessageResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *PinMessageResponse) Reset() {
	*x = PinMessageResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[26]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*PinMessageResponse) ProtoMessage() {}

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

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

// Used in the `UnpinMessage` endpoint.
type UnpinMessageRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Guild ID of the guild where the channel is.
	GuildId uint64 `protobuf:"varint,1,opt,name=guild_id,json=guildId,proto3" json:"guild_id,omitempty"`
	// Channel ID of the channel where the message is.
	ChannelId uint64 `protobuf:"varint,2,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"`
	// Message ID of the message we want to unpin.
	MessageId uint64 `protobuf:"varint,3,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"`
}

func (x *UnpinMessageRequest) Reset() {
	*x = UnpinMessageRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[27]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*UnpinMessageRequest) ProtoMessage() {}

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

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

func (x *UnpinMessageRequest) GetGuildId() uint64 {
	if x != nil {
		return x.GuildId
	}
	return 0
}

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

func (x *UnpinMessageRequest) GetMessageId() uint64 {
	if x != nil {
		return x.MessageId
	}
	return 0
}

// Used in the `UnpinMessage` endpoint.
type UnpinMessageResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *UnpinMessageResponse) Reset() {
	*x = UnpinMessageResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[28]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*UnpinMessageResponse) ProtoMessage() {}

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

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

// Used in the `GetPinnedMessages` endpoint.
type GetPinnedMessagesRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Guild ID of the guild where the channel is.
	GuildId uint64 `protobuf:"varint,1,opt,name=guild_id,json=guildId,proto3" json:"guild_id,omitempty"`
	// Channel ID of the channel we want to get pins of.
	ChannelId uint64 `protobuf:"varint,2,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"`
}

func (x *GetPinnedMessagesRequest) Reset() {
	*x = GetPinnedMessagesRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[29]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*GetPinnedMessagesRequest) ProtoMessage() {}

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

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

func (x *GetPinnedMessagesRequest) GetGuildId() uint64 {
	if x != nil {
		return x.GuildId
	}
	return 0
}

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

// Used in the `GetPinnedMessages` endpoint.
type GetPinnedMessagesResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The IDs of the pinned messages.
	PinnedMessageIds []uint64 `protobuf:"varint,1,rep,packed,name=pinned_message_ids,json=pinnedMessageIds,proto3" json:"pinned_message_ids,omitempty"`
}

func (x *GetPinnedMessagesResponse) Reset() {
	*x = GetPinnedMessagesResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[30]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*GetPinnedMessagesResponse) ProtoMessage() {}

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

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

func (x *GetPinnedMessagesResponse) GetPinnedMessageIds() []uint64 {
	if x != nil {
		return x.PinnedMessageIds
	}
	return nil
}

// Used in `AddReaction` endpoint.
type AddReactionRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Guild ID of the guild where the channel is.
	GuildId uint64 `protobuf:"varint,1,opt,name=guild_id,json=guildId,proto3" json:"guild_id,omitempty"`
	// Channel ID of the channel where the message is.
	ChannelId uint64 `protobuf:"varint,2,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"`
	// Message ID of the message we want to add a reaction to.
	MessageId uint64 `protobuf:"varint,3,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"`
	// The emote we want to react with.
	Emote *v11.Emote `protobuf:"bytes,4,opt,name=emote,proto3" json:"emote,omitempty"`
}

func (x *AddReactionRequest) Reset() {
	*x = AddReactionRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[31]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*AddReactionRequest) ProtoMessage() {}

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

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

func (x *AddReactionRequest) GetGuildId() uint64 {
	if x != nil {
		return x.GuildId
	}
	return 0
}

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

func (x *AddReactionRequest) GetMessageId() uint64 {
	if x != nil {
		return x.MessageId
	}
	return 0
}

func (x *AddReactionRequest) GetEmote() *v11.Emote {
	if x != nil {
		return x.Emote
	}
	return nil
}

// Used in `AddReaction` endpoint.
type AddReactionResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *AddReactionResponse) Reset() {
	*x = AddReactionResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[32]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*AddReactionResponse) ProtoMessage() {}

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

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

// Used in `RemoveReaction` endpoint.
type RemoveReactionRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Guild ID of the guild where the channel is.
	GuildId uint64 `protobuf:"varint,1,opt,name=guild_id,json=guildId,proto3" json:"guild_id,omitempty"`
	// Channel ID of the channel where the message is.
	ChannelId uint64 `protobuf:"varint,2,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"`
	// Message ID of the message we want to remove a reaction.
	MessageId uint64 `protobuf:"varint,3,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"`
	// The emote we want to remove the react of.
	Emote *v11.Emote `protobuf:"bytes,4,opt,name=emote,proto3" json:"emote,omitempty"`
}

func (x *RemoveReactionRequest) Reset() {
	*x = RemoveReactionRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[33]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*RemoveReactionRequest) ProtoMessage() {}

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

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

func (x *RemoveReactionRequest) GetGuildId() uint64 {
	if x != nil {
		return x.GuildId
	}
	return 0
}

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

func (x *RemoveReactionRequest) GetMessageId() uint64 {
	if x != nil {
		return x.MessageId
	}
	return 0
}

func (x *RemoveReactionRequest) GetEmote() *v11.Emote {
	if x != nil {
		return x.Emote
	}
	return nil
}

// Used in `RemoveReaction` endpoint.
type RemoveReactionResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *RemoveReactionResponse) Reset() {
	*x = RemoveReactionResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[34]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*RemoveReactionResponse) ProtoMessage() {}

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

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

// The payload data for a button action
type ActionPayload_Button struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The data from the Button action
	Data []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
}

func (x *ActionPayload_Button) Reset() {
	*x = ActionPayload_Button{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[35]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*ActionPayload_Button) ProtoMessage() {}

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

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

func (x *ActionPayload_Button) GetData() []byte {
	if x != nil {
		return x.Data
	}
	return nil
}

// The payload for a dropdown action
type ActionPayload_Dropdown struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The user choice from the dropdown.
	Choice []byte `protobuf:"bytes,1,opt,name=choice,proto3" json:"choice,omitempty"`
}

func (x *ActionPayload_Dropdown) Reset() {
	*x = ActionPayload_Dropdown{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[36]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*ActionPayload_Dropdown) ProtoMessage() {}

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

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

func (x *ActionPayload_Dropdown) GetChoice() []byte {
	if x != nil {
		return x.Choice
	}
	return nil
}

// The payload for a text input action
type ActionPayload_Input struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The user input.
	Input string `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"`
	// The bot-provided data
	Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
}

func (x *ActionPayload_Input) Reset() {
	*x = ActionPayload_Input{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[37]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*ActionPayload_Input) ProtoMessage() {}

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

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

func (x *ActionPayload_Input) GetInput() string {
	if x != nil {
		return x.Input
	}
	return ""
}

func (x *ActionPayload_Input) GetData() []byte {
	if x != nil {
		return x.Data
	}
	return nil
}

// A button that users can click on to trigger an action.
type Action_Button struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The text to show on the button.
	Text string `protobuf:"bytes,1,opt,name=text,proto3" json:"text,omitempty"`
	// Action data, which should be used in the call to perform the action.
	Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
	// An external URL that the button links to.
	// This makes it so that tapping this button will open said URL instead
	// of triggering the action.
	Url *string `protobuf:"bytes,3,opt,name=url,proto3,oneof" json:"url,omitempty"`
}

func (x *Action_Button) Reset() {
	*x = Action_Button{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[38]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Action_Button) ProtoMessage() {}

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

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

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

func (x *Action_Button) GetData() []byte {
	if x != nil {
		return x.Data
	}
	return nil
}

func (x *Action_Button) GetUrl() string {
	if x != nil && x.Url != nil {
		return *x.Url
	}
	return ""
}

// A dropdown menu that users can click on to trigger an action.
type Action_Dropdown struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The text describing the dropdown.
	Label string `protobuf:"bytes,1,opt,name=label,proto3" json:"label,omitempty"`
	// The options in the dropdown.
	Entries []*Action_Dropdown_Entry `protobuf:"bytes,2,rep,name=entries,proto3" json:"entries,omitempty"`
}

func (x *Action_Dropdown) Reset() {
	*x = Action_Dropdown{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[39]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Action_Dropdown) ProtoMessage() {}

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

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

func (x *Action_Dropdown) GetLabel() string {
	if x != nil {
		return x.Label
	}
	return ""
}

func (x *Action_Dropdown) GetEntries() []*Action_Dropdown_Entry {
	if x != nil {
		return x.Entries
	}
	return nil
}

// A text input that users can type in to trigger an action.
type Action_Input struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The label describing the input.
	Label string `protobuf:"bytes,1,opt,name=label,proto3" json:"label,omitempty"`
	// Whether this text input should be a multiline one or not.
	Multiline bool `protobuf:"varint,2,opt,name=multiline,proto3" json:"multiline,omitempty"`
	// Contextual data allowing the bot to discern what the user input is for
	Data []byte `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
}

func (x *Action_Input) Reset() {
	*x = Action_Input{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[40]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Action_Input) ProtoMessage() {}

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

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

func (x *Action_Input) GetLabel() string {
	if x != nil {
		return x.Label
	}
	return ""
}

func (x *Action_Input) GetMultiline() bool {
	if x != nil {
		return x.Multiline
	}
	return false
}

func (x *Action_Input) GetData() []byte {
	if x != nil {
		return x.Data
	}
	return nil
}

// An entry in the dropdown
type Action_Dropdown_Entry struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The dropdown's UI label.
	Label string `protobuf:"bytes,1,opt,name=label,proto3" json:"label,omitempty"`
	// The dropdown's associated data.
	Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
}

func (x *Action_Dropdown_Entry) Reset() {
	*x = Action_Dropdown_Entry{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[41]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Action_Dropdown_Entry) ProtoMessage() {}

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

// Deprecated: Use Action_Dropdown_Entry.ProtoReflect.Descriptor instead.
func (*Action_Dropdown_Entry) Descriptor() ([]byte, []int) {
	return file_chat_v1_messages_proto_rawDescGZIP(), []int{2, 1, 0}
}

func (x *Action_Dropdown_Entry) GetLabel() string {
	if x != nil {
		return x.Label
	}
	return ""
}

func (x *Action_Dropdown_Entry) GetData() []byte {
	if x != nil {
		return x.Data
	}
	return nil
}

// Object representing an embed heading.
type Embed_EmbedHeading struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Text of the heading.
	Text string `protobuf:"bytes,1,opt,name=text,proto3" json:"text,omitempty"`
	// Subtext of the heading.
	Subtext *string `protobuf:"bytes,2,opt,name=subtext,proto3,oneof" json:"subtext,omitempty"`
	// URL of the heading.
	Url *string `protobuf:"bytes,3,opt,name=url,proto3,oneof" json:"url,omitempty"`
	// Icon of the heading.
	Icon *string `protobuf:"bytes,4,opt,name=icon,proto3,oneof" json:"icon,omitempty"`
}

func (x *Embed_EmbedHeading) Reset() {
	*x = Embed_EmbedHeading{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[42]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Embed_EmbedHeading) ProtoMessage() {}

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

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

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

func (x *Embed_EmbedHeading) GetSubtext() string {
	if x != nil && x.Subtext != nil {
		return *x.Subtext
	}
	return ""
}

func (x *Embed_EmbedHeading) GetUrl() string {
	if x != nil && x.Url != nil {
		return *x.Url
	}
	return ""
}

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

// Object representing an embed field.
type Embed_EmbedField struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Title of this field.
	Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"`
	// Subtitle of this field.
	Subtitle *string `protobuf:"bytes,2,opt,name=subtitle,proto3,oneof" json:"subtitle,omitempty"`
	// Body text of this field (eg. a description).
	Body *FormattedText `protobuf:"bytes,3,opt,name=body,proto3,oneof" json:"body,omitempty"`
	// Image URL of this field.
	ImageUrl *string `protobuf:"bytes,4,opt,name=image_url,json=imageUrl,proto3,oneof" json:"image_url,omitempty"`
	// How to present this field.
	Presentation Embed_EmbedField_Presentation `protobuf:"varint,5,opt,name=presentation,proto3,enum=protocol.chat.v1.Embed_EmbedField_Presentation" json:"presentation,omitempty"`
	// Actions of this field.
	Actions []*Action `protobuf:"bytes,6,rep,name=actions,proto3" json:"actions,omitempty"`
}

func (x *Embed_EmbedField) Reset() {
	*x = Embed_EmbedField{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[43]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Embed_EmbedField) ProtoMessage() {}

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

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

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

func (x *Embed_EmbedField) GetSubtitle() string {
	if x != nil && x.Subtitle != nil {
		return *x.Subtitle
	}
	return ""
}

func (x *Embed_EmbedField) GetBody() *FormattedText {
	if x != nil {
		return x.Body
	}
	return nil
}

func (x *Embed_EmbedField) GetImageUrl() string {
	if x != nil && x.ImageUrl != nil {
		return *x.ImageUrl
	}
	return ""
}

func (x *Embed_EmbedField) GetPresentation() Embed_EmbedField_Presentation {
	if x != nil {
		return x.Presentation
	}
	return Embed_EmbedField_PRESENTATION_DATA_UNSPECIFIED
}

func (x *Embed_EmbedField) GetActions() []*Action {
	if x != nil {
		return x.Actions
	}
	return nil
}

// Object representing text content.
type Content_TextContent struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Text content.
	Content *FormattedText `protobuf:"bytes,1,opt,name=content,proto3" json:"content,omitempty"`
}

func (x *Content_TextContent) Reset() {
	*x = Content_TextContent{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[44]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Content_TextContent) ProtoMessage() {}

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

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

func (x *Content_TextContent) GetContent() *FormattedText {
	if x != nil {
		return x.Content
	}
	return nil
}

// Object representing embed content.
type Content_EmbedContent struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Embed content.
	Embeds []*Embed `protobuf:"bytes,1,rep,name=embeds,proto3" json:"embeds,omitempty"`
}

func (x *Content_EmbedContent) Reset() {
	*x = Content_EmbedContent{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[45]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Content_EmbedContent) ProtoMessage() {}

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

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

func (x *Content_EmbedContent) GetEmbeds() []*Embed {
	if x != nil {
		return x.Embeds
	}
	return nil
}

// Object representing attachment content.
type Content_AttachmentContent struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// A list of attachments.
	Files []*Attachment `protobuf:"bytes,1,rep,name=files,proto3" json:"files,omitempty"`
}

func (x *Content_AttachmentContent) Reset() {
	*x = Content_AttachmentContent{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[46]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Content_AttachmentContent) ProtoMessage() {}

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

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

func (x *Content_AttachmentContent) GetFiles() []*Attachment {
	if x != nil {
		return x.Files
	}
	return nil
}

// Object representing photo content.
type Content_PhotoContent struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// A list of photos.
	Photos []*Photo `protobuf:"bytes,1,rep,name=photos,proto3" json:"photos,omitempty"`
}

func (x *Content_PhotoContent) Reset() {
	*x = Content_PhotoContent{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[47]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Content_PhotoContent) ProtoMessage() {}

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

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

func (x *Content_PhotoContent) GetPhotos() []*Photo {
	if x != nil {
		return x.Photos
	}
	return nil
}

// Represents a user rejecting an invite.
//
// This can only be used by servers themselves. Servers should reject
// messages with this content if they are sent by a user.
type Content_InviteRejected struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// User ID of the invitee.
	InviteeId uint64 `protobuf:"varint,1,opt,name=invitee_id,json=inviteeId,proto3" json:"invitee_id,omitempty"`
	// User ID of the inviter.
	InviterId uint64 `protobuf:"varint,2,opt,name=inviter_id,json=inviterId,proto3" json:"inviter_id,omitempty"`
}

func (x *Content_InviteRejected) Reset() {
	*x = Content_InviteRejected{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[48]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Content_InviteRejected) ProtoMessage() {}

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

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

func (x *Content_InviteRejected) GetInviteeId() uint64 {
	if x != nil {
		return x.InviteeId
	}
	return 0
}

func (x *Content_InviteRejected) GetInviterId() uint64 {
	if x != nil {
		return x.InviterId
	}
	return 0
}

// Represents a user accepting an invite.
//
// This can only be used by servers themselves. Servers should reject
// messages with this content if they are sent by a user.
type Content_InviteAccepted struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// User ID of the invitee.
	InviteeId uint64 `protobuf:"varint,1,opt,name=invitee_id,json=inviteeId,proto3" json:"invitee_id,omitempty"`
	// User ID of the inviter.
	InviterId uint64 `protobuf:"varint,2,opt,name=inviter_id,json=inviterId,proto3" json:"inviter_id,omitempty"`
}

func (x *Content_InviteAccepted) Reset() {
	*x = Content_InviteAccepted{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[49]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Content_InviteAccepted) ProtoMessage() {}

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

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

func (x *Content_InviteAccepted) GetInviteeId() uint64 {
	if x != nil {
		return x.InviteeId
	}
	return 0
}

func (x *Content_InviteAccepted) GetInviterId() uint64 {
	if x != nil {
		return x.InviterId
	}
	return 0
}

// Represents a guild upgrade from "room" to "normal".
//
// This can only be used by servers themselves. Servers should reject
// messages with this content if they are sent by a user.
type Content_RoomUpgradedToGuild struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// User ID of the user that upgraded the guild.
	UpgradedBy uint64 `protobuf:"varint,1,opt,name=upgraded_by,json=upgradedBy,proto3" json:"upgraded_by,omitempty"`
}

func (x *Content_RoomUpgradedToGuild) Reset() {
	*x = Content_RoomUpgradedToGuild{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[50]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Content_RoomUpgradedToGuild) ProtoMessage() {}

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

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

func (x *Content_RoomUpgradedToGuild) GetUpgradedBy() uint64 {
	if x != nil {
		return x.UpgradedBy
	}
	return 0
}

// Bold text
type Format_Bold struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *Format_Bold) Reset() {
	*x = Format_Bold{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[51]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Format_Bold) ProtoMessage() {}

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

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

// Italic text
type Format_Italic struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *Format_Italic) Reset() {
	*x = Format_Italic{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[52]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Format_Italic) ProtoMessage() {}

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

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

// Underlined text
type Format_Underline struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *Format_Underline) Reset() {
	*x = Format_Underline{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[53]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Format_Underline) ProtoMessage() {}

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

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

// Monospace text
type Format_Monospace struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *Format_Monospace) Reset() {
	*x = Format_Monospace{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[54]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Format_Monospace) ProtoMessage() {}

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

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

// Superscript text
type Format_Superscript struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *Format_Superscript) Reset() {
	*x = Format_Superscript{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[55]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Format_Superscript) ProtoMessage() {}

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

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

// Subscript text
type Format_Subscript struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *Format_Subscript) Reset() {
	*x = Format_Subscript{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[56]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Format_Subscript) ProtoMessage() {}

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

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

// A larger codeblock, with a programming language specified
// Clients should ideally not bound the width of codeblock messages,
// possibly scrolling the codeblock horizontally separately from the
// rest of the message
type Format_CodeBlock struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// programming language of the code block
	Language string `protobuf:"bytes,1,opt,name=language,proto3" json:"language,omitempty"`
}

func (x *Format_CodeBlock) Reset() {
	*x = Format_CodeBlock{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[57]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Format_CodeBlock) ProtoMessage() {}

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

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

func (x *Format_CodeBlock) GetLanguage() string {
	if x != nil {
		return x.Language
	}
	return ""
}

// Mention of a user (on the current homeserver)
type Format_UserMention struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// user_id of the user being mentioned
	UserId uint64 `protobuf:"varint,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
}

func (x *Format_UserMention) Reset() {
	*x = Format_UserMention{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[58]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Format_UserMention) ProtoMessage() {}

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

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

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

// Mention of a role (on the current guild)
type Format_RoleMention struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// the role being mentioned
	RoleId uint64 `protobuf:"varint,1,opt,name=role_id,json=roleId,proto3" json:"role_id,omitempty"`
}

func (x *Format_RoleMention) Reset() {
	*x = Format_RoleMention{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[59]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Format_RoleMention) ProtoMessage() {}

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

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

func (x *Format_RoleMention) GetRoleId() uint64 {
	if x != nil {
		return x.RoleId
	}
	return 0
}

// Mention of a channel (on the current guild)
type Format_ChannelMention struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// the channel being mentioned
	ChannelId uint64 `protobuf:"varint,1,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"`
}

func (x *Format_ChannelMention) Reset() {
	*x = Format_ChannelMention{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[60]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Format_ChannelMention) ProtoMessage() {}

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

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

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

// Mention of a guild
type Format_GuildMention struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// the guild being mentioned
	GuildId uint64 `protobuf:"varint,1,opt,name=guild_id,json=guildId,proto3" json:"guild_id,omitempty"`
	// which homeserver it belongs to
	Homeserver string `protobuf:"bytes,2,opt,name=homeserver,proto3" json:"homeserver,omitempty"`
}

func (x *Format_GuildMention) Reset() {
	*x = Format_GuildMention{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[61]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Format_GuildMention) ProtoMessage() {}

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

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

func (x *Format_GuildMention) GetGuildId() uint64 {
	if x != nil {
		return x.GuildId
	}
	return 0
}

func (x *Format_GuildMention) GetHomeserver() string {
	if x != nil {
		return x.Homeserver
	}
	return ""
}

// An emoji
type Format_Emoji struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The HMC URL of the emoji
	ImageHmc string `protobuf:"bytes,1,opt,name=image_hmc,json=imageHmc,proto3" json:"image_hmc,omitempty"`
	// The ID of the emoji pack the emoji is from
	PackId uint64 `protobuf:"varint,2,opt,name=pack_id,json=packId,proto3" json:"pack_id,omitempty"`
}

func (x *Format_Emoji) Reset() {
	*x = Format_Emoji{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[62]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Format_Emoji) ProtoMessage() {}

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

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

func (x *Format_Emoji) GetImageHmc() string {
	if x != nil {
		return x.ImageHmc
	}
	return ""
}

func (x *Format_Emoji) GetPackId() uint64 {
	if x != nil {
		return x.PackId
	}
	return 0
}

// Colour modification
type Format_Color struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The kind of colour modification to apply
	Kind Format_Color_Kind `protobuf:"varint,1,opt,name=kind,proto3,enum=protocol.chat.v1.Format_Color_Kind" json:"kind,omitempty"`
}

func (x *Format_Color) Reset() {
	*x = Format_Color{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[63]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Format_Color) ProtoMessage() {}

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

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

func (x *Format_Color) GetKind() Format_Color_Kind {
	if x != nil {
		return x.Kind
	}
	return Format_Color_KIND_DIM_UNSPECIFIED
}

// Replace a part of the text with the text matching the i18n code.
// If i18n code was not found, keep the original text.
type Format_Localization struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// i18n code for the text.
	I18NCode string `protobuf:"bytes,1,opt,name=i18n_code,json=i18nCode,proto3" json:"i18n_code,omitempty"`
}

func (x *Format_Localization) Reset() {
	*x = Format_Localization{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chat_v1_messages_proto_msgTypes[64]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Format_Localization) ProtoMessage() {}

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

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

func (x *Format_Localization) GetI18NCode() string {
	if x != nil {
		return x.I18NCode
	}
	return ""
}

var File_chat_v1_messages_proto protoreflect.FileDescriptor

var file_chat_v1_messages_proto_rawDesc = []byte{
	0x0a, 0x16, 0x63, 0x68, 0x61, 0x74, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
	0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x10, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63,
	0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x1a, 0x1b, 0x68, 0x61, 0x72, 0x6d,
	0x6f, 0x6e, 0x79, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x79, 0x70, 0x65,
	0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2f, 0x76,
	0x31, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa0, 0x03,
	0x0a, 0x09, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x08, 0x75,
	0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52,
	0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06,
	0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x06,
	0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x0c, 0x75, 0x73, 0x65,
	0x72, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48,
	0x00, 0x52, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x12, 0x3b,
	0x0a, 0x07, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x68, 0x61, 0x72, 0x6d, 0x6f,
	0x6e, 0x79, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79,
	0x48, 0x00, 0x52, 0x07, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x12, 0x4c, 0x0a, 0x10, 0x73,
	0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x70, 0x6c, 0x75, 0x72, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18,
	0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c,
	0x2e, 0x68, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x76, 0x31,
	0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x48, 0x00, 0x52, 0x0f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d,
	0x50, 0x6c, 0x75, 0x72, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x48, 0x0a, 0x0e, 0x73, 0x79, 0x73,
	0x74, 0x65, 0x6d, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x68, 0x61, 0x72,
	0x6d, 0x6f, 0x6e, 0x79, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6d, 0x70,
	0x74, 0x79, 0x48, 0x00, 0x52, 0x0d, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4d, 0x65, 0x73, 0x73,
	0x61, 0x67, 0x65, 0x12, 0x39, 0x0a, 0x06, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x18, 0x07, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x68,
	0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45,
	0x6d, 0x70, 0x74, 0x79, 0x48, 0x00, 0x52, 0x06, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x42, 0x08,
	0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x75, 0x73, 0x65,
	0x72, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72,
	0x22, 0xd8, 0x02, 0x0a, 0x0d, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f,
	0x61, 0x64, 0x12, 0x40, 0x0a, 0x06, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x26, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68,
	0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c,
	0x6f, 0x61, 0x64, 0x2e, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x06, 0x62, 0x75,
	0x74, 0x74, 0x6f, 0x6e, 0x12, 0x46, 0x0a, 0x08, 0x64, 0x72, 0x6f, 0x70, 0x64, 0x6f, 0x77, 0x6e,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f,
	0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e,
	0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x2e, 0x44, 0x72, 0x6f, 0x70, 0x64, 0x6f, 0x77, 0x6e,
	0x48, 0x00, 0x52, 0x08, 0x64, 0x72, 0x6f, 0x70, 0x64, 0x6f, 0x77, 0x6e, 0x12, 0x3d, 0x0a, 0x05,
	0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41,
	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x2e, 0x49, 0x6e, 0x70,
	0x75, 0x74, 0x48, 0x00, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x1a, 0x1c, 0x0a, 0x06, 0x42,
	0x75, 0x74, 0x74, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x22, 0x0a, 0x08, 0x44, 0x72, 0x6f,
	0x70, 0x64, 0x6f, 0x77, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x1a, 0x31, 0x0a,
	0x05, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x12, 0x0a, 0x04,
	0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61,
	0x42, 0x09, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x8c, 0x05, 0x0a, 0x06,
	0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e,
	0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41,
	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x61, 0x63, 0x74, 0x69,
	0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, 0x06, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f,
	0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e,
	0x2e, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x06, 0x62, 0x75, 0x74, 0x74, 0x6f,
	0x6e, 0x12, 0x3f, 0x0a, 0x08, 0x64, 0x72, 0x6f, 0x70, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63,
	0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x72,
	0x6f, 0x70, 0x64, 0x6f, 0x77, 0x6e, 0x48, 0x00, 0x52, 0x08, 0x64, 0x72, 0x6f, 0x70, 0x64, 0x6f,
	0x77, 0x6e, 0x12, 0x36, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61,
	0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x6e, 0x70, 0x75,
	0x74, 0x48, 0x00, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x1a, 0x4f, 0x0a, 0x06, 0x42, 0x75,
	0x74, 0x74, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x15, 0x0a, 0x03,
	0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x75, 0x72, 0x6c,
	0x88, 0x01, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x75, 0x72, 0x6c, 0x1a, 0x96, 0x01, 0x0a, 0x08,
	0x44, 0x72, 0x6f, 0x70, 0x64, 0x6f, 0x77, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65,
	0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x41,
	0x0a, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x27, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e,
	0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x72, 0x6f, 0x70, 0x64, 0x6f,
	0x77, 0x6e, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65,
	0x73, 0x1a, 0x31, 0x0a, 0x05, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61,
	0x62, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c,
	0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04,
	0x64, 0x61, 0x74, 0x61, 0x1a, 0x4f, 0x0a, 0x05, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x14, 0x0a,
	0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61,
	0x62, 0x65, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x6c, 0x69, 0x6e, 0x65,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x6c, 0x69, 0x6e,
	0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52,
	0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x4b, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a,
	0x17, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x5f, 0x55, 0x4e, 0x53,
	0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x59,
	0x50, 0x45, 0x5f, 0x50, 0x52, 0x49, 0x4d, 0x41, 0x52, 0x59, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10,
	0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x55, 0x43, 0x54, 0x49, 0x56, 0x45,
	0x10, 0x02, 0x42, 0x06, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0xa8, 0x07, 0x0a, 0x05, 0x45,
	0x6d, 0x62, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x38, 0x0a, 0x04, 0x62, 0x6f,
	0x64, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
	0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x6d,
	0x61, 0x74, 0x74, 0x65, 0x64, 0x54, 0x65, 0x78, 0x74, 0x48, 0x00, 0x52, 0x04, 0x62, 0x6f, 0x64,
	0x79, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12,
	0x41, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x24, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e,
	0x76, 0x31, 0x2e, 0x45, 0x6d, 0x62, 0x65, 0x64, 0x2e, 0x45, 0x6d, 0x62, 0x65, 0x64, 0x48, 0x65,
	0x61, 0x64, 0x69, 0x6e, 0x67, 0x48, 0x02, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x88,
	0x01, 0x01, 0x12, 0x41, 0x0a, 0x06, 0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68,
	0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6d, 0x62, 0x65, 0x64, 0x2e, 0x45, 0x6d, 0x62, 0x65,
	0x64, 0x48, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x48, 0x03, 0x52, 0x06, 0x66, 0x6f, 0x6f, 0x74,
	0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18,
	0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c,
	0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6d, 0x62, 0x65, 0x64, 0x2e, 0x45,
	0x6d, 0x62, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64,
	0x73, 0x1a, 0x8e, 0x01, 0x0a, 0x0c, 0x45, 0x6d, 0x62, 0x65, 0x64, 0x48, 0x65, 0x61, 0x64, 0x69,
	0x6e, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x1d, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x74, 0x65, 0x78,
	0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x73, 0x75, 0x62, 0x74, 0x65,
	0x78, 0x74, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x09, 0x48, 0x01, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04,
	0x69, 0x63, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x04, 0x69, 0x63,
	0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x73, 0x75, 0x62, 0x74, 0x65, 0x78,
	0x74, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x75, 0x72, 0x6c, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x69, 0x63,
	0x6f, 0x6e, 0x1a, 0xb7, 0x03, 0x0a, 0x0a, 0x45, 0x6d, 0x62, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c,
	0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1f, 0x0a, 0x08, 0x73, 0x75, 0x62, 0x74, 0x69,
	0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x73, 0x75, 0x62,
	0x74, 0x69, 0x74, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f,
	0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74,
	0x74, 0x65, 0x64, 0x54, 0x65, 0x78, 0x74, 0x48, 0x01, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x88,
	0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72,
	0x6c, 0x88, 0x01, 0x01, 0x12, 0x53, 0x0a, 0x0c, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x70, 0x72, 0x6f,
	0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6d,
	0x62, 0x65, 0x64, 0x2e, 0x45, 0x6d, 0x62, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x2e, 0x50,
	0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x70, 0x72, 0x65,
	0x73, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x07, 0x61, 0x63, 0x74,
	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f,
	0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63,
	0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x69, 0x0a,
	0x0c, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a,
	0x1d, 0x50, 0x52, 0x45, 0x53, 0x45, 0x4e, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x41,
	0x54, 0x41, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00,
	0x12, 0x20, 0x0a, 0x1c, 0x50, 0x52, 0x45, 0x53, 0x45, 0x4e, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e,
	0x5f, 0x43, 0x41, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x45, 0x44, 0x5f, 0x49, 0x4d, 0x41, 0x47, 0x45,
	0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x52, 0x45, 0x53, 0x45, 0x4e, 0x54, 0x41, 0x54, 0x49,
	0x4f, 0x4e, 0x5f, 0x52, 0x4f, 0x57, 0x10, 0x02, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x73, 0x75, 0x62,
	0x74, 0x69, 0x74, 0x6c, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x62, 0x6f, 0x64, 0x79, 0x42, 0x0c,
	0x0a, 0x0a, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x42, 0x07, 0x0a, 0x05,
	0x5f, 0x62, 0x6f, 0x64, 0x79, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x42,
	0x09, 0x0a, 0x07, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x66,
	0x6f, 0x6f, 0x74, 0x65, 0x72, 0x22, 0x51, 0x0a, 0x0d, 0x4d, 0x69, 0x6e, 0x69, 0x74, 0x68, 0x75,
	0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x16, 0x0a, 0x06,
	0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x68, 0x65,
	0x69, 0x67, 0x68, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xfa, 0x01, 0x0a, 0x05, 0x50, 0x68, 0x6f,
	0x74, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x68, 0x6d, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x03, 0x68, 0x6d, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65,
	0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x66, 0x69, 0x6c,
	0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x14, 0x0a,
	0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x77, 0x69,
	0x64, 0x74, 0x68, 0x12, 0x39, 0x0a, 0x07, 0x63, 0x61, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e,
	0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65,
	0x64, 0x54, 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, 0x61, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x45,
	0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x69, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x18,
	0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c,
	0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x69, 0x6e, 0x69, 0x74, 0x68, 0x75,
	0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x52, 0x0d, 0x6d, 0x69, 0x6e, 0x69, 0x74, 0x68, 0x75, 0x6d,
	0x62, 0x6e, 0x61, 0x69, 0x6c, 0x22, 0xac, 0x01, 0x0a, 0x0a, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68,
	0x6d, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x69, 0x6d, 0x65,
	0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x69, 0x6d, 0x65,
	0x74, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01,
	0x28, 0x0d, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x3e, 0x0a, 0x07, 0x63, 0x61, 0x70, 0x74,
	0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
	0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72,
	0x6d, 0x61, 0x74, 0x74, 0x65, 0x64, 0x54, 0x65, 0x78, 0x74, 0x48, 0x00, 0x52, 0x07, 0x63, 0x61,
	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x63, 0x61, 0x70,
	0x74, 0x69, 0x6f, 0x6e, 0x22, 0xd9, 0x08, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74,
	0x12, 0x4a, 0x0a, 0x0c, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f,
	0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e,
	0x74, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52,
	0x0b, 0x74, 0x65, 0x78, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x4d, 0x0a, 0x0d,
	0x65, 0x6d, 0x62, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63,
	0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x45,
	0x6d, 0x62, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0c, 0x65,
	0x6d, 0x62, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x5c, 0x0a, 0x12, 0x61,
	0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
	0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63,
	0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65,
	0x6e, 0x74, 0x2e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e,
	0x74, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x11, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65,
	0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x4d, 0x0a, 0x0d, 0x70, 0x68, 0x6f,
	0x74, 0x6f, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x26, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74,
	0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x68, 0x6f, 0x74,
	0x6f, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0c, 0x70, 0x68, 0x6f, 0x74,
	0x6f, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x53, 0x0a, 0x0f, 0x69, 0x6e, 0x76, 0x69,
	0x74, 0x65, 0x5f, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x28, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61,
	0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x49, 0x6e, 0x76,
	0x69, 0x74, 0x65, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0e, 0x69,
	0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x12, 0x53, 0x0a,
	0x0f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64,
	0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f,
	0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e,
	0x74, 0x2e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64,
	0x48, 0x00, 0x52, 0x0e, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74,
	0x65, 0x64, 0x12, 0x64, 0x0a, 0x16, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x75, 0x70, 0x67, 0x72, 0x61,
	0x64, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x5f, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x18, 0x07, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68,
	0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x52, 0x6f,
	0x6f, 0x6d, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x64, 0x54, 0x6f, 0x47, 0x75, 0x69, 0x6c,
	0x64, 0x48, 0x00, 0x52, 0x13, 0x72, 0x6f, 0x6f, 0x6d, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65,
	0x64, 0x54, 0x6f, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x1a, 0x48, 0x0a, 0x0b, 0x54, 0x65, 0x78, 0x74,
	0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65,
	0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
	0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x6d,
	0x61, 0x74, 0x74, 0x65, 0x64, 0x54, 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65,
	0x6e, 0x74, 0x1a, 0x3f, 0x0a, 0x0c, 0x45, 0x6d, 0x62, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65,
	0x6e, 0x74, 0x12, 0x2f, 0x0a, 0x06, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68,
	0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6d, 0x62, 0x65, 0x64, 0x52, 0x06, 0x65, 0x6d, 0x62,
	0x65, 0x64, 0x73, 0x1a, 0x47, 0x0a, 0x11, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e,
	0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x05, 0x66, 0x69, 0x6c, 0x65,
	0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63,
	0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x61, 0x63,
	0x68, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x1a, 0x3f, 0x0a, 0x0c,
	0x50, 0x68, 0x6f, 0x74, 0x6f, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x2f, 0x0a, 0x06,
	0x70, 0x68, 0x6f, 0x74, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e,
	0x50, 0x68, 0x6f, 0x74, 0x6f, 0x52, 0x06, 0x70, 0x68, 0x6f, 0x74, 0x6f, 0x73, 0x1a, 0x4e, 0x0a,
	0x0e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x12,
	0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x04, 0x52, 0x09, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x65, 0x49, 0x64, 0x12, 0x1d,
	0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x04, 0x52, 0x09, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x72, 0x49, 0x64, 0x1a, 0x4e, 0x0a,
	0x0e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x12,
	0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x04, 0x52, 0x09, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x65, 0x49, 0x64, 0x12, 0x1d,
	0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x04, 0x52, 0x09, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x72, 0x49, 0x64, 0x1a, 0x36, 0x0a,
	0x13, 0x52, 0x6f, 0x6f, 0x6d, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x64, 0x54, 0x6f, 0x47,
	0x75, 0x69, 0x6c, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x64,
	0x5f, 0x62, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x75, 0x70, 0x67, 0x72, 0x61,
	0x64, 0x65, 0x64, 0x42, 0x79, 0x42, 0x09, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74,
	0x22, 0x50, 0x0a, 0x08, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x05,
	0x65, 0x6d, 0x6f, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e,
	0x45, 0x6d, 0x6f, 0x74, 0x65, 0x52, 0x05, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05,
	0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75,
	0x6e, 0x74, 0x22, 0xe6, 0x0c, 0x0a, 0x06, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x14, 0x0a,
	0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74,
	0x61, 0x72, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0d, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x33, 0x0a, 0x04, 0x62,
	0x6f, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x72, 0x6f, 0x74,
	0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72,
	0x6d, 0x61, 0x74, 0x2e, 0x42, 0x6f, 0x6c, 0x64, 0x48, 0x00, 0x52, 0x04, 0x62, 0x6f, 0x6c, 0x64,
	0x12, 0x39, 0x0a, 0x06, 0x69, 0x74, 0x61, 0x6c, 0x69, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74,
	0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x2e, 0x49, 0x74, 0x61, 0x6c, 0x69,
	0x63, 0x48, 0x00, 0x52, 0x06, 0x69, 0x74, 0x61, 0x6c, 0x69, 0x63, 0x12, 0x42, 0x0a, 0x09, 0x75,
	0x6e, 0x64, 0x65, 0x72, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22,
	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76,
	0x31, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x2e, 0x55, 0x6e, 0x64, 0x65, 0x72, 0x6c, 0x69,
	0x6e, 0x65, 0x48, 0x00, 0x52, 0x09, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x6c, 0x69, 0x6e, 0x65, 0x12,
	0x42, 0x0a, 0x09, 0x6d, 0x6f, 0x6e, 0x6f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68,
	0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x2e, 0x4d, 0x6f, 0x6e,
	0x6f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x48, 0x00, 0x52, 0x09, 0x6d, 0x6f, 0x6e, 0x6f, 0x73, 0x70,
	0x61, 0x63, 0x65, 0x12, 0x48, 0x0a, 0x0b, 0x73, 0x75, 0x70, 0x65, 0x72, 0x73, 0x63, 0x72, 0x69,
	0x70, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
	0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x6d,
	0x61, 0x74, 0x2e, 0x53, 0x75, 0x70, 0x65, 0x72, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x48, 0x00,
	0x52, 0x0b, 0x73, 0x75, 0x70, 0x65, 0x72, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x12, 0x42, 0x0a,
	0x09, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74,
	0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63,
	0x72, 0x69, 0x70, 0x74, 0x48, 0x00, 0x52, 0x09, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70,
	0x74, 0x12, 0x43, 0x0a, 0x0a, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18,
	0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c,
	0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x2e,
	0x43, 0x6f, 0x64, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x00, 0x52, 0x09, 0x63, 0x6f, 0x64,
	0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x49, 0x0a, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d,
	0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e,
	0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x6e, 0x74, 0x69,
	0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x6e, 0x74, 0x69, 0x6f,
	0x6e, 0x12, 0x49, 0x0a, 0x0c, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x6e, 0x74, 0x69, 0x6f,
	0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63,
	0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61,
	0x74, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x4d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52,
	0x0b, 0x72, 0x6f, 0x6c, 0x65, 0x4d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x52, 0x0a, 0x0f,
	0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x18,
	0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c,
	0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x2e,
	0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00,
	0x52, 0x0e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e,
	0x12, 0x4c, 0x0a, 0x0d, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6d, 0x65, 0x6e, 0x74, 0x69, 0x6f,
	0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63,
	0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61,
	0x74, 0x2e, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00,
	0x52, 0x0c, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36,
	0x0a, 0x05, 0x65, 0x6d, 0x6f, 0x6a, 0x69, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31,
	0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x2e, 0x45, 0x6d, 0x6f, 0x6a, 0x69, 0x48, 0x00, 0x52,
	0x05, 0x65, 0x6d, 0x6f, 0x6a, 0x69, 0x12, 0x36, 0x0a, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18,
	0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c,
	0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x2e,
	0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x4b,
	0x0a, 0x0c, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x10,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e,
	0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x2e, 0x4c,
	0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0c, 0x6c,
	0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x06, 0x0a, 0x04, 0x42,
	0x6f, 0x6c, 0x64, 0x1a, 0x08, 0x0a, 0x06, 0x49, 0x74, 0x61, 0x6c, 0x69, 0x63, 0x1a, 0x0b, 0x0a,
	0x09, 0x55, 0x6e, 0x64, 0x65, 0x72, 0x6c, 0x69, 0x6e, 0x65, 0x1a, 0x0b, 0x0a, 0x09, 0x4d, 0x6f,
	0x6e, 0x6f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x1a, 0x0d, 0x0a, 0x0b, 0x53, 0x75, 0x70, 0x65, 0x72,
	0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x1a, 0x0b, 0x0a, 0x09, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72,
	0x69, 0x70, 0x74, 0x1a, 0x27, 0x0a, 0x09, 0x43, 0x6f, 0x64, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b,
	0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x1a, 0x26, 0x0a, 0x0b,
	0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x75,
	0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x75, 0x73,
	0x65, 0x72, 0x49, 0x64, 0x1a, 0x26, 0x0a, 0x0b, 0x52, 0x6f, 0x6c, 0x65, 0x4d, 0x65, 0x6e, 0x74,
	0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x72, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x1a, 0x2f, 0x0a, 0x0e,
	0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d,
	0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x04, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x1a, 0x49, 0x0a,
	0x0c, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a,
	0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52,
	0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x68, 0x6f, 0x6d, 0x65,
	0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x68, 0x6f,
	0x6d, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x1a, 0x3d, 0x0a, 0x05, 0x45, 0x6d, 0x6f, 0x6a,
	0x69, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x68, 0x6d, 0x63, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x48, 0x6d, 0x63, 0x12, 0x17,
	0x0a, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52,
	0x06, 0x70, 0x61, 0x63, 0x6b, 0x49, 0x64, 0x1a, 0xba, 0x01, 0x0a, 0x05, 0x43, 0x6f, 0x6c, 0x6f,
	0x72, 0x12, 0x37, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32,
	0x23, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e,
	0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x2e, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e,
	0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0x78, 0x0a, 0x04, 0x4b, 0x69,
	0x6e, 0x64, 0x12, 0x18, 0x0a, 0x14, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x44, 0x49, 0x4d, 0x5f, 0x55,
	0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b,
	0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x42, 0x52, 0x49, 0x47, 0x48, 0x54, 0x10, 0x01, 0x12, 0x11, 0x0a,
	0x0d, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4e, 0x45, 0x47, 0x41, 0x54, 0x49, 0x56, 0x45, 0x10, 0x02,
	0x12, 0x11, 0x0a, 0x0d, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x56,
	0x45, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x49, 0x4e, 0x46, 0x4f,
	0x10, 0x04, 0x12, 0x10, 0x0a, 0x0c, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x57, 0x41, 0x52, 0x4e, 0x49,
	0x4e, 0x47, 0x10, 0x05, 0x1a, 0x2b, 0x0a, 0x0c, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x31, 0x38, 0x6e, 0x5f, 0x63, 0x6f, 0x64,
	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x31, 0x38, 0x6e, 0x43, 0x6f, 0x64,
	0x65, 0x42, 0x08, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x55, 0x0a, 0x0d, 0x46,
	0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x64, 0x54, 0x65, 0x78, 0x74, 0x12, 0x12, 0x0a, 0x04,
	0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74,
	0x12, 0x30, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74,
	0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d,
	0x61, 0x74, 0x22, 0xa6, 0x03, 0x0a, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x43,
	0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x68, 0x61, 0x72, 0x6d,
	0x6f, 0x6e, 0x79, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61,
	0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
	0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x09, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f,
	0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69,
	0x64, 0x65, 0x73, 0x52, 0x09, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x12, 0x1b,
	0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x04, 0x52, 0x08, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63,
	0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52,
	0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x65, 0x64,
	0x69, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52,
	0x08, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x41, 0x74, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x0b,
	0x69, 0x6e, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x5f, 0x74, 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28,
	0x04, 0x48, 0x02, 0x52, 0x09, 0x69, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x54, 0x6f, 0x88, 0x01,
	0x01, 0x12, 0x33, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68,
	0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x63,
	0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x38, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x63, 0x74, 0x69,
	0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74,
	0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61,
	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x72, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73,
	0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x0c, 0x0a,
	0x0a, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f,
	0x69, 0x6e, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x5f, 0x74, 0x6f, 0x22, 0x63, 0x0a, 0x0d, 0x4d,
	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x57, 0x69, 0x74, 0x68, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a,
	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04,
	0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x07, 0x6d,
	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e,
	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
	0x22, 0xef, 0x02, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4d,
	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19,
	0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04,
	0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61,
	0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63,
	0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73,
	0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x09,
	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x58, 0x0a, 0x09,
	0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32,
	0x35, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e,
	0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x65, 0x73,
	0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x69, 0x72,
	0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x01, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74,
	0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18,
	0x05, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01,
	0x01, 0x22, 0x58, 0x0a, 0x09, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20,
	0x0a, 0x1c, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x45, 0x46, 0x4f,
	0x52, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00,
	0x12, 0x14, 0x0a, 0x10, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x52,
	0x4f, 0x55, 0x4e, 0x44, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54,
	0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x46, 0x54, 0x45, 0x52, 0x10, 0x02, 0x42, 0x0d, 0x0a, 0x0b, 0x5f,
	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x64,
	0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75,
	0x6e, 0x74, 0x22, 0xa1, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65,
	0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
	0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x61, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x70,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x72, 0x65, 0x61, 0x63, 0x68, 0x65, 0x64, 0x54,
	0x6f, 0x70, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x61, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x62, 0x6f,
	0x74, 0x74, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x72, 0x65, 0x61, 0x63,
	0x68, 0x65, 0x64, 0x42, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x73,
	0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d,
	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x57, 0x69, 0x74, 0x68, 0x49, 0x64, 0x52, 0x08, 0x6d, 0x65,
	0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x22, 0x6c, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x73,
	0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67,
	0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67,
	0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65,
	0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e,
	0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
	0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61,
	0x67, 0x65, 0x49, 0x64, 0x22, 0x49, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61,
	0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x07, 0x6d, 0x65,
	0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d,
	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22,
	0x6f, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64,
	0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64,
	0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49,
	0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64,
	0x22, 0x17, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
	0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xaa, 0x01, 0x0a, 0x14, 0x54, 0x72,
	0x69, 0x67, 0x67, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x1d, 0x0a,
	0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x04, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a,
	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04,
	0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x07, 0x70,
	0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e,
	0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x07, 0x70,
	0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x17, 0x0a, 0x15, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65,
	0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
	0x82, 0x03, 0x0a, 0x12, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f,
	0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49,
	0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64,
	0x12, 0x33, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61,
	0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x63, 0x6f,
	0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x07, 0x65, 0x63, 0x68, 0x6f, 0x5f, 0x69, 0x64,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x06, 0x65, 0x63, 0x68, 0x6f, 0x49, 0x64,
	0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x09, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73,
	0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f,
	0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69,
	0x64, 0x65, 0x73, 0x48, 0x01, 0x52, 0x09, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73,
	0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x0b, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x5f,
	0x74, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x48, 0x02, 0x52, 0x09, 0x69, 0x6e, 0x52, 0x65,
	0x70, 0x6c, 0x79, 0x54, 0x6f, 0x88, 0x01, 0x01, 0x12, 0x43, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61,
	0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f,
	0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x68, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x74, 0x79, 0x70,
	0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x03,
	0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a,
	0x08, 0x5f, 0x65, 0x63, 0x68, 0x6f, 0x5f, 0x69, 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6f, 0x76,
	0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x69, 0x6e, 0x5f, 0x72,
	0x65, 0x70, 0x6c, 0x79, 0x5f, 0x74, 0x6f, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6d, 0x65, 0x74, 0x61,
	0x64, 0x61, 0x74, 0x61, 0x22, 0x34, 0x0a, 0x13, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73,
	0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6d,
	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52,
	0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x22, 0xb5, 0x01, 0x0a, 0x18, 0x55,
	0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x65, 0x78, 0x74,
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64,
	0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64,
	0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49,
	0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64,
	0x12, 0x40, 0x0a, 0x0b, 0x6e, 0x65, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c,
	0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74,
	0x65, 0x64, 0x54, 0x65, 0x78, 0x74, 0x52, 0x0a, 0x6e, 0x65, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x65,
	0x6e, 0x74, 0x22, 0x1b, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73,
	0x61, 0x67, 0x65, 0x54, 0x65, 0x78, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
	0x6c, 0x0a, 0x11, 0x50, 0x69, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12,
	0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x1d,
	0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x04, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x22, 0x14, 0x0a,
	0x12, 0x50, 0x69, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
	0x6e, 0x73, 0x65, 0x22, 0x6e, 0x0a, 0x13, 0x55, 0x6e, 0x70, 0x69, 0x6e, 0x4d, 0x65, 0x73, 0x73,
	0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75,
	0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75,
	0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
	0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e,
	0x65, 0x6c, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f,
	0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
	0x65, 0x49, 0x64, 0x22, 0x16, 0x0a, 0x14, 0x55, 0x6e, 0x70, 0x69, 0x6e, 0x4d, 0x65, 0x73, 0x73,
	0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x54, 0x0a, 0x18, 0x47,
	0x65, 0x74, 0x50, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73,
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64,
	0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64,
	0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49,
	0x64, 0x22, 0x49, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x50, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x4d, 0x65,
	0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c,
	0x0a, 0x12, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
	0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x10, 0x70, 0x69, 0x6e, 0x6e,
	0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x73, 0x22, 0x9d, 0x01, 0x0a,
	0x12, 0x41, 0x64, 0x64, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x1d,
	0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x04, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x1d, 0x0a,
	0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x04, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x05,
	0x65, 0x6d, 0x6f, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e,
	0x45, 0x6d, 0x6f, 0x74, 0x65, 0x52, 0x05, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x22, 0x15, 0x0a, 0x13,
	0x41, 0x64, 0x64, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f,
	0x6e, 0x73, 0x65, 0x22, 0xa0, 0x01, 0x0a, 0x15, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65,
	0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a,
	0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52,
	0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e,
	0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x68,
	0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61,
	0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x6d, 0x65, 0x73,
	0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x05, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c,
	0x2e, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6d, 0x6f, 0x74, 0x65, 0x52,
	0x05, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x22, 0x18, 0x0a, 0x16, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65,
	0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
	0x42, 0xc3, 0x01, 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f,
	0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x42, 0x0d, 0x4d, 0x65, 0x73, 0x73, 0x61,
	0x67, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3a, 0x67, 0x69, 0x74, 0x68,
	0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x68, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x2d, 0x64,
	0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x73, 0x68, 0x69, 0x62, 0x73,
	0x68, 0x69, 0x62, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x63, 0x68, 0x61, 0x74, 0x2f, 0x76, 0x31, 0x3b,
	0x63, 0x68, 0x61, 0x74, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x50, 0x43, 0x58, 0xaa, 0x02, 0x10, 0x50,
	0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x56, 0x31, 0xca,
	0x02, 0x10, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5c, 0x43, 0x68, 0x61, 0x74, 0x5c,
	0x56, 0x31, 0xe2, 0x02, 0x1c, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5c, 0x43, 0x68,
	0x61, 0x74, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
	0x61, 0xea, 0x02, 0x12, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x3a, 0x3a, 0x43, 0x68,
	0x61, 0x74, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_chat_v1_messages_proto_rawDescOnce sync.Once
	file_chat_v1_messages_proto_rawDescData = file_chat_v1_messages_proto_rawDesc
)

func file_chat_v1_messages_proto_rawDescGZIP() []byte {
	file_chat_v1_messages_proto_rawDescOnce.Do(func() {
		file_chat_v1_messages_proto_rawDescData = protoimpl.X.CompressGZIP(file_chat_v1_messages_proto_rawDescData)
	})
	return file_chat_v1_messages_proto_rawDescData
}

var file_chat_v1_messages_proto_enumTypes = make([]protoimpl.EnumInfo, 4)
var file_chat_v1_messages_proto_msgTypes = make([]protoimpl.MessageInfo, 65)
var file_chat_v1_messages_proto_goTypes = []interface{}{
	(Action_Type)(0),                         // 0: protocol.chat.v1.Action.Type
	(Embed_EmbedField_Presentation)(0),       // 1: protocol.chat.v1.Embed.EmbedField.Presentation
	(Format_Color_Kind)(0),                   // 2: protocol.chat.v1.Format.Color.Kind
	(GetChannelMessagesRequest_Direction)(0), // 3: protocol.chat.v1.GetChannelMessagesRequest.Direction
	(*Overrides)(nil),                        // 4: protocol.chat.v1.Overrides
	(*ActionPayload)(nil),                    // 5: protocol.chat.v1.ActionPayload
	(*Action)(nil),                           // 6: protocol.chat.v1.Action
	(*Embed)(nil),                            // 7: protocol.chat.v1.Embed
	(*Minithumbnail)(nil),                    // 8: protocol.chat.v1.Minithumbnail
	(*Photo)(nil),                            // 9: protocol.chat.v1.Photo
	(*Attachment)(nil),                       // 10: protocol.chat.v1.Attachment
	(*Content)(nil),                          // 11: protocol.chat.v1.Content
	(*Reaction)(nil),                         // 12: protocol.chat.v1.Reaction
	(*Format)(nil),                           // 13: protocol.chat.v1.Format
	(*FormattedText)(nil),                    // 14: protocol.chat.v1.FormattedText
	(*Message)(nil),                          // 15: protocol.chat.v1.Message
	(*MessageWithId)(nil),                    // 16: protocol.chat.v1.MessageWithId
	(*GetChannelMessagesRequest)(nil),        // 17: protocol.chat.v1.GetChannelMessagesRequest
	(*GetChannelMessagesResponse)(nil),       // 18: protocol.chat.v1.GetChannelMessagesResponse
	(*GetMessageRequest)(nil),                // 19: protocol.chat.v1.GetMessageRequest
	(*GetMessageResponse)(nil),               // 20: protocol.chat.v1.GetMessageResponse
	(*DeleteMessageRequest)(nil),             // 21: protocol.chat.v1.DeleteMessageRequest
	(*DeleteMessageResponse)(nil),            // 22: protocol.chat.v1.DeleteMessageResponse
	(*TriggerActionRequest)(nil),             // 23: protocol.chat.v1.TriggerActionRequest
	(*TriggerActionResponse)(nil),            // 24: protocol.chat.v1.TriggerActionResponse
	(*SendMessageRequest)(nil),               // 25: protocol.chat.v1.SendMessageRequest
	(*SendMessageResponse)(nil),              // 26: protocol.chat.v1.SendMessageResponse
	(*UpdateMessageTextRequest)(nil),         // 27: protocol.chat.v1.UpdateMessageTextRequest
	(*UpdateMessageTextResponse)(nil),        // 28: protocol.chat.v1.UpdateMessageTextResponse
	(*PinMessageRequest)(nil),                // 29: protocol.chat.v1.PinMessageRequest
	(*PinMessageResponse)(nil),               // 30: protocol.chat.v1.PinMessageResponse
	(*UnpinMessageRequest)(nil),              // 31: protocol.chat.v1.UnpinMessageRequest
	(*UnpinMessageResponse)(nil),             // 32: protocol.chat.v1.UnpinMessageResponse
	(*GetPinnedMessagesRequest)(nil),         // 33: protocol.chat.v1.GetPinnedMessagesRequest
	(*GetPinnedMessagesResponse)(nil),        // 34: protocol.chat.v1.GetPinnedMessagesResponse
	(*AddReactionRequest)(nil),               // 35: protocol.chat.v1.AddReactionRequest
	(*AddReactionResponse)(nil),              // 36: protocol.chat.v1.AddReactionResponse
	(*RemoveReactionRequest)(nil),            // 37: protocol.chat.v1.RemoveReactionRequest
	(*RemoveReactionResponse)(nil),           // 38: protocol.chat.v1.RemoveReactionResponse
	(*ActionPayload_Button)(nil),             // 39: protocol.chat.v1.ActionPayload.Button
	(*ActionPayload_Dropdown)(nil),           // 40: protocol.chat.v1.ActionPayload.Dropdown
	(*ActionPayload_Input)(nil),              // 41: protocol.chat.v1.ActionPayload.Input
	(*Action_Button)(nil),                    // 42: protocol.chat.v1.Action.Button
	(*Action_Dropdown)(nil),                  // 43: protocol.chat.v1.Action.Dropdown
	(*Action_Input)(nil),                     // 44: protocol.chat.v1.Action.Input
	(*Action_Dropdown_Entry)(nil),            // 45: protocol.chat.v1.Action.Dropdown.Entry
	(*Embed_EmbedHeading)(nil),               // 46: protocol.chat.v1.Embed.EmbedHeading
	(*Embed_EmbedField)(nil),                 // 47: protocol.chat.v1.Embed.EmbedField
	(*Content_TextContent)(nil),              // 48: protocol.chat.v1.Content.TextContent
	(*Content_EmbedContent)(nil),             // 49: protocol.chat.v1.Content.EmbedContent
	(*Content_AttachmentContent)(nil),        // 50: protocol.chat.v1.Content.AttachmentContent
	(*Content_PhotoContent)(nil),             // 51: protocol.chat.v1.Content.PhotoContent
	(*Content_InviteRejected)(nil),           // 52: protocol.chat.v1.Content.InviteRejected
	(*Content_InviteAccepted)(nil),           // 53: protocol.chat.v1.Content.InviteAccepted
	(*Content_RoomUpgradedToGuild)(nil),      // 54: protocol.chat.v1.Content.RoomUpgradedToGuild
	(*Format_Bold)(nil),                      // 55: protocol.chat.v1.Format.Bold
	(*Format_Italic)(nil),                    // 56: protocol.chat.v1.Format.Italic
	(*Format_Underline)(nil),                 // 57: protocol.chat.v1.Format.Underline
	(*Format_Monospace)(nil),                 // 58: protocol.chat.v1.Format.Monospace
	(*Format_Superscript)(nil),               // 59: protocol.chat.v1.Format.Superscript
	(*Format_Subscript)(nil),                 // 60: protocol.chat.v1.Format.Subscript
	(*Format_CodeBlock)(nil),                 // 61: protocol.chat.v1.Format.CodeBlock
	(*Format_UserMention)(nil),               // 62: protocol.chat.v1.Format.UserMention
	(*Format_RoleMention)(nil),               // 63: protocol.chat.v1.Format.RoleMention
	(*Format_ChannelMention)(nil),            // 64: protocol.chat.v1.Format.ChannelMention
	(*Format_GuildMention)(nil),              // 65: protocol.chat.v1.Format.GuildMention
	(*Format_Emoji)(nil),                     // 66: protocol.chat.v1.Format.Emoji
	(*Format_Color)(nil),                     // 67: protocol.chat.v1.Format.Color
	(*Format_Localization)(nil),              // 68: protocol.chat.v1.Format.Localization
	(*v1.Empty)(nil),                         // 69: protocol.harmonytypes.v1.Empty
	(*v11.Emote)(nil),                        // 70: protocol.emote.v1.Emote
	(*v1.Metadata)(nil),                      // 71: protocol.harmonytypes.v1.Metadata
}
var file_chat_v1_messages_proto_depIdxs = []int32{
	69, // 0: protocol.chat.v1.Overrides.webhook:type_name -> protocol.harmonytypes.v1.Empty
	69, // 1: protocol.chat.v1.Overrides.system_plurality:type_name -> protocol.harmonytypes.v1.Empty
	69, // 2: protocol.chat.v1.Overrides.system_message:type_name -> protocol.harmonytypes.v1.Empty
	69, // 3: protocol.chat.v1.Overrides.bridge:type_name -> protocol.harmonytypes.v1.Empty
	39, // 4: protocol.chat.v1.ActionPayload.button:type_name -> protocol.chat.v1.ActionPayload.Button
	40, // 5: protocol.chat.v1.ActionPayload.dropdown:type_name -> protocol.chat.v1.ActionPayload.Dropdown
	41, // 6: protocol.chat.v1.ActionPayload.input:type_name -> protocol.chat.v1.ActionPayload.Input
	0,  // 7: protocol.chat.v1.Action.action_type:type_name -> protocol.chat.v1.Action.Type
	42, // 8: protocol.chat.v1.Action.button:type_name -> protocol.chat.v1.Action.Button
	43, // 9: protocol.chat.v1.Action.dropdown:type_name -> protocol.chat.v1.Action.Dropdown
	44, // 10: protocol.chat.v1.Action.input:type_name -> protocol.chat.v1.Action.Input
	14, // 11: protocol.chat.v1.Embed.body:type_name -> protocol.chat.v1.FormattedText
	46, // 12: protocol.chat.v1.Embed.header:type_name -> protocol.chat.v1.Embed.EmbedHeading
	46, // 13: protocol.chat.v1.Embed.footer:type_name -> protocol.chat.v1.Embed.EmbedHeading
	47, // 14: protocol.chat.v1.Embed.fields:type_name -> protocol.chat.v1.Embed.EmbedField
	14, // 15: protocol.chat.v1.Photo.caption:type_name -> protocol.chat.v1.FormattedText
	8,  // 16: protocol.chat.v1.Photo.minithumbnail:type_name -> protocol.chat.v1.Minithumbnail
	14, // 17: protocol.chat.v1.Attachment.caption:type_name -> protocol.chat.v1.FormattedText
	48, // 18: protocol.chat.v1.Content.text_message:type_name -> protocol.chat.v1.Content.TextContent
	49, // 19: protocol.chat.v1.Content.embed_message:type_name -> protocol.chat.v1.Content.EmbedContent
	50, // 20: protocol.chat.v1.Content.attachment_message:type_name -> protocol.chat.v1.Content.AttachmentContent
	51, // 21: protocol.chat.v1.Content.photo_message:type_name -> protocol.chat.v1.Content.PhotoContent
	52, // 22: protocol.chat.v1.Content.invite_rejected:type_name -> protocol.chat.v1.Content.InviteRejected
	53, // 23: protocol.chat.v1.Content.invite_accepted:type_name -> protocol.chat.v1.Content.InviteAccepted
	54, // 24: protocol.chat.v1.Content.room_upgraded_to_guild:type_name -> protocol.chat.v1.Content.RoomUpgradedToGuild
	70, // 25: protocol.chat.v1.Reaction.emote:type_name -> protocol.emote.v1.Emote
	55, // 26: protocol.chat.v1.Format.bold:type_name -> protocol.chat.v1.Format.Bold
	56, // 27: protocol.chat.v1.Format.italic:type_name -> protocol.chat.v1.Format.Italic
	57, // 28: protocol.chat.v1.Format.underline:type_name -> protocol.chat.v1.Format.Underline
	58, // 29: protocol.chat.v1.Format.monospace:type_name -> protocol.chat.v1.Format.Monospace
	59, // 30: protocol.chat.v1.Format.superscript:type_name -> protocol.chat.v1.Format.Superscript
	60, // 31: protocol.chat.v1.Format.subscript:type_name -> protocol.chat.v1.Format.Subscript
	61, // 32: protocol.chat.v1.Format.code_block:type_name -> protocol.chat.v1.Format.CodeBlock
	62, // 33: protocol.chat.v1.Format.user_mention:type_name -> protocol.chat.v1.Format.UserMention
	63, // 34: protocol.chat.v1.Format.role_mention:type_name -> protocol.chat.v1.Format.RoleMention
	64, // 35: protocol.chat.v1.Format.channel_mention:type_name -> protocol.chat.v1.Format.ChannelMention
	65, // 36: protocol.chat.v1.Format.guild_mention:type_name -> protocol.chat.v1.Format.GuildMention
	66, // 37: protocol.chat.v1.Format.emoji:type_name -> protocol.chat.v1.Format.Emoji
	67, // 38: protocol.chat.v1.Format.color:type_name -> protocol.chat.v1.Format.Color
	68, // 39: protocol.chat.v1.Format.localization:type_name -> protocol.chat.v1.Format.Localization
	13, // 40: protocol.chat.v1.FormattedText.format:type_name -> protocol.chat.v1.Format
	71, // 41: protocol.chat.v1.Message.metadata:type_name -> protocol.harmonytypes.v1.Metadata
	4,  // 42: protocol.chat.v1.Message.overrides:type_name -> protocol.chat.v1.Overrides
	11, // 43: protocol.chat.v1.Message.content:type_name -> protocol.chat.v1.Content
	12, // 44: protocol.chat.v1.Message.reactions:type_name -> protocol.chat.v1.Reaction
	15, // 45: protocol.chat.v1.MessageWithId.message:type_name -> protocol.chat.v1.Message
	3,  // 46: protocol.chat.v1.GetChannelMessagesRequest.direction:type_name -> protocol.chat.v1.GetChannelMessagesRequest.Direction
	16, // 47: protocol.chat.v1.GetChannelMessagesResponse.messages:type_name -> protocol.chat.v1.MessageWithId
	15, // 48: protocol.chat.v1.GetMessageResponse.message:type_name -> protocol.chat.v1.Message
	5,  // 49: protocol.chat.v1.TriggerActionRequest.payload:type_name -> protocol.chat.v1.ActionPayload
	11, // 50: protocol.chat.v1.SendMessageRequest.content:type_name -> protocol.chat.v1.Content
	4,  // 51: protocol.chat.v1.SendMessageRequest.overrides:type_name -> protocol.chat.v1.Overrides
	71, // 52: protocol.chat.v1.SendMessageRequest.metadata:type_name -> protocol.harmonytypes.v1.Metadata
	14, // 53: protocol.chat.v1.UpdateMessageTextRequest.new_content:type_name -> protocol.chat.v1.FormattedText
	70, // 54: protocol.chat.v1.AddReactionRequest.emote:type_name -> protocol.emote.v1.Emote
	70, // 55: protocol.chat.v1.RemoveReactionRequest.emote:type_name -> protocol.emote.v1.Emote
	45, // 56: protocol.chat.v1.Action.Dropdown.entries:type_name -> protocol.chat.v1.Action.Dropdown.Entry
	14, // 57: protocol.chat.v1.Embed.EmbedField.body:type_name -> protocol.chat.v1.FormattedText
	1,  // 58: protocol.chat.v1.Embed.EmbedField.presentation:type_name -> protocol.chat.v1.Embed.EmbedField.Presentation
	6,  // 59: protocol.chat.v1.Embed.EmbedField.actions:type_name -> protocol.chat.v1.Action
	14, // 60: protocol.chat.v1.Content.TextContent.content:type_name -> protocol.chat.v1.FormattedText
	7,  // 61: protocol.chat.v1.Content.EmbedContent.embeds:type_name -> protocol.chat.v1.Embed
	10, // 62: protocol.chat.v1.Content.AttachmentContent.files:type_name -> protocol.chat.v1.Attachment
	9,  // 63: protocol.chat.v1.Content.PhotoContent.photos:type_name -> protocol.chat.v1.Photo
	2,  // 64: protocol.chat.v1.Format.Color.kind:type_name -> protocol.chat.v1.Format.Color.Kind
	65, // [65:65] is the sub-list for method output_type
	65, // [65:65] is the sub-list for method input_type
	65, // [65:65] is the sub-list for extension type_name
	65, // [65:65] is the sub-list for extension extendee
	0,  // [0:65] is the sub-list for field type_name
}

func init() { file_chat_v1_messages_proto_init() }
func file_chat_v1_messages_proto_init() {
	if File_chat_v1_messages_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_chat_v1_messages_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Overrides); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ActionPayload); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Action); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Embed); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Minithumbnail); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Photo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Attachment); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Content); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Reaction); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Format); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*FormattedText); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Message); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MessageWithId); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetChannelMessagesRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetChannelMessagesResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetMessageRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetMessageResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeleteMessageRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeleteMessageResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TriggerActionRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TriggerActionResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SendMessageRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SendMessageResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UpdateMessageTextRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UpdateMessageTextResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PinMessageRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PinMessageResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UnpinMessageRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UnpinMessageResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetPinnedMessagesRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetPinnedMessagesResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AddReactionRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AddReactionResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RemoveReactionRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RemoveReactionResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ActionPayload_Button); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ActionPayload_Dropdown); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ActionPayload_Input); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Action_Button); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Action_Dropdown); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Action_Input); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Action_Dropdown_Entry); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Embed_EmbedHeading); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Embed_EmbedField); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Content_TextContent); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Content_EmbedContent); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Content_AttachmentContent); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Content_PhotoContent); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Content_InviteRejected); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Content_InviteAccepted); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Content_RoomUpgradedToGuild); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Format_Bold); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Format_Italic); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Format_Underline); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Format_Monospace); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Format_Superscript); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Format_Subscript); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Format_CodeBlock); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Format_UserMention); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Format_RoleMention); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Format_ChannelMention); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Format_GuildMention); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Format_Emoji); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Format_Color); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chat_v1_messages_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Format_Localization); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	file_chat_v1_messages_proto_msgTypes[0].OneofWrappers = []interface{}{
		(*Overrides_UserDefined)(nil),
		(*Overrides_Webhook)(nil),
		(*Overrides_SystemPlurality)(nil),
		(*Overrides_SystemMessage)(nil),
		(*Overrides_Bridge)(nil),
	}
	file_chat_v1_messages_proto_msgTypes[1].OneofWrappers = []interface{}{
		(*ActionPayload_Button_)(nil),
		(*ActionPayload_Dropdown_)(nil),
		(*ActionPayload_Input_)(nil),
	}
	file_chat_v1_messages_proto_msgTypes[2].OneofWrappers = []interface{}{
		(*Action_Button_)(nil),
		(*Action_Dropdown_)(nil),
		(*Action_Input_)(nil),
	}
	file_chat_v1_messages_proto_msgTypes[3].OneofWrappers = []interface{}{}
	file_chat_v1_messages_proto_msgTypes[6].OneofWrappers = []interface{}{}
	file_chat_v1_messages_proto_msgTypes[7].OneofWrappers = []interface{}{
		(*Content_TextMessage)(nil),
		(*Content_EmbedMessage)(nil),
		(*Content_AttachmentMessage)(nil),
		(*Content_PhotoMessage)(nil),
		(*Content_InviteRejected_)(nil),
		(*Content_InviteAccepted_)(nil),
		(*Content_RoomUpgradedToGuild_)(nil),
	}
	file_chat_v1_messages_proto_msgTypes[9].OneofWrappers = []interface{}{
		(*Format_Bold_)(nil),
		(*Format_Italic_)(nil),
		(*Format_Underline_)(nil),
		(*Format_Monospace_)(nil),
		(*Format_Superscript_)(nil),
		(*Format_Subscript_)(nil),
		(*Format_CodeBlock_)(nil),
		(*Format_UserMention_)(nil),
		(*Format_RoleMention_)(nil),
		(*Format_ChannelMention_)(nil),
		(*Format_GuildMention_)(nil),
		(*Format_Emoji_)(nil),
		(*Format_Color_)(nil),
		(*Format_Localization_)(nil),
	}
	file_chat_v1_messages_proto_msgTypes[11].OneofWrappers = []interface{}{}
	file_chat_v1_messages_proto_msgTypes[13].OneofWrappers = []interface{}{}
	file_chat_v1_messages_proto_msgTypes[21].OneofWrappers = []interface{}{}
	file_chat_v1_messages_proto_msgTypes[38].OneofWrappers = []interface{}{}
	file_chat_v1_messages_proto_msgTypes[42].OneofWrappers = []interface{}{}
	file_chat_v1_messages_proto_msgTypes[43].OneofWrappers = []interface{}{}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_chat_v1_messages_proto_rawDesc,
			NumEnums:      4,
			NumMessages:   65,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_chat_v1_messages_proto_goTypes,
		DependencyIndexes: file_chat_v1_messages_proto_depIdxs,
		EnumInfos:         file_chat_v1_messages_proto_enumTypes,
		MessageInfos:      file_chat_v1_messages_proto_msgTypes,
	}.Build()
	File_chat_v1_messages_proto = out.File
	file_chat_v1_messages_proto_rawDesc = nil
	file_chat_v1_messages_proto_goTypes = nil
	file_chat_v1_messages_proto_depIdxs = nil
}