// Code generated by protoc-gen-go. DO NOT EDIT.
// source: pb2/test.proto

package pb2

import (
	proto "github.com/golang/protobuf/proto"
	protoapi "github.com/golang/protobuf/protoapi"
	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
	known "github.com/golang/protobuf/v2/types/known"
	reflect "reflect"
)

// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package

type Enum int32

const (
	Enum_ONE Enum = 1
	Enum_TWO Enum = 2
	Enum_TEN Enum = 10
)

func (e Enum) Type() protoreflect.EnumType {
	return xxx_File_pb2_test_proto_enumTypes[0]
}
func (e Enum) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(e)
}

var Enum_name = map[int32]string{
	1:  "ONE",
	2:  "TWO",
	10: "TEN",
}

var Enum_value = map[string]int32{
	"ONE": 1,
	"TWO": 2,
	"TEN": 10,
}

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

func (x Enum) String() string {
	return proto.EnumName(Enum_name, int32(x))
}

func (x *Enum) UnmarshalJSON(data []byte) error {
	value, err := proto.UnmarshalJSONEnum(Enum_value, data, "Enum")
	if err != nil {
		return err
	}
	*x = Enum(value)
	return nil
}

func (Enum) EnumDescriptor() ([]byte, []int) {
	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{0}
}

type Enums_NestedEnum int32

const (
	Enums_UNO  Enums_NestedEnum = 1
	Enums_DOS  Enums_NestedEnum = 2
	Enums_DIEZ Enums_NestedEnum = 10
)

func (e Enums_NestedEnum) Type() protoreflect.EnumType {
	return xxx_File_pb2_test_proto_enumTypes[1]
}
func (e Enums_NestedEnum) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(e)
}

var Enums_NestedEnum_name = map[int32]string{
	1:  "UNO",
	2:  "DOS",
	10: "DIEZ",
}

var Enums_NestedEnum_value = map[string]int32{
	"UNO":  1,
	"DOS":  2,
	"DIEZ": 10,
}

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

func (x Enums_NestedEnum) String() string {
	return proto.EnumName(Enums_NestedEnum_name, int32(x))
}

func (x *Enums_NestedEnum) UnmarshalJSON(data []byte) error {
	value, err := proto.UnmarshalJSONEnum(Enums_NestedEnum_value, data, "Enums_NestedEnum")
	if err != nil {
		return err
	}
	*x = Enums_NestedEnum(value)
	return nil
}

func (Enums_NestedEnum) EnumDescriptor() ([]byte, []int) {
	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{1, 0}
}

// Scalars contains optional scalar fields.
type Scalars struct {
	OptBool              *bool    `protobuf:"varint,1,opt,name=opt_bool,json=optBool" json:"opt_bool,omitempty"`
	OptInt32             *int32   `protobuf:"varint,2,opt,name=opt_int32,json=optInt32" json:"opt_int32,omitempty"`
	OptInt64             *int64   `protobuf:"varint,3,opt,name=opt_int64,json=optInt64" json:"opt_int64,omitempty"`
	OptUint32            *uint32  `protobuf:"varint,4,opt,name=opt_uint32,json=optUint32" json:"opt_uint32,omitempty"`
	OptUint64            *uint64  `protobuf:"varint,5,opt,name=opt_uint64,json=optUint64" json:"opt_uint64,omitempty"`
	OptSint32            *int32   `protobuf:"zigzag32,6,opt,name=opt_sint32,json=optSint32" json:"opt_sint32,omitempty"`
	OptSint64            *int64   `protobuf:"zigzag64,7,opt,name=opt_sint64,json=optSint64" json:"opt_sint64,omitempty"`
	OptFixed32           *uint32  `protobuf:"fixed32,8,opt,name=opt_fixed32,json=optFixed32" json:"opt_fixed32,omitempty"`
	OptFixed64           *uint64  `protobuf:"fixed64,9,opt,name=opt_fixed64,json=optFixed64" json:"opt_fixed64,omitempty"`
	OptSfixed32          *int32   `protobuf:"fixed32,10,opt,name=opt_sfixed32,json=optSfixed32" json:"opt_sfixed32,omitempty"`
	OptSfixed64          *int64   `protobuf:"fixed64,11,opt,name=opt_sfixed64,json=optSfixed64" json:"opt_sfixed64,omitempty"`
	OptFloat             *float32 `protobuf:"fixed32,20,opt,name=opt_float,json=optFloat" json:"opt_float,omitempty"`
	OptDouble            *float64 `protobuf:"fixed64,21,opt,name=opt_double,json=optDouble" json:"opt_double,omitempty"`
	OptBytes             []byte   `protobuf:"bytes,14,opt,name=opt_bytes,json=optBytes" json:"opt_bytes,omitempty"`
	OptString            *string  `protobuf:"bytes,13,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *Scalars) ProtoReflect() protoreflect.Message {
	return xxx_File_pb2_test_proto_messageTypes[0].MessageOf(m)
}
func (m *Scalars) Reset()         { *m = Scalars{} }
func (m *Scalars) String() string { return proto.CompactTextString(m) }
func (*Scalars) ProtoMessage()    {}
func (*Scalars) Descriptor() ([]byte, []int) {
	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{0}
}

func (m *Scalars) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Scalars.Unmarshal(m, b)
}
func (m *Scalars) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Scalars.Marshal(b, m, deterministic)
}
func (m *Scalars) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Scalars.Merge(m, src)
}
func (m *Scalars) XXX_Size() int {
	return xxx_messageInfo_Scalars.Size(m)
}
func (m *Scalars) XXX_DiscardUnknown() {
	xxx_messageInfo_Scalars.DiscardUnknown(m)
}

var xxx_messageInfo_Scalars proto.InternalMessageInfo

func (m *Scalars) GetOptBool() bool {
	if m != nil && m.OptBool != nil {
		return *m.OptBool
	}
	return false
}

func (m *Scalars) GetOptInt32() int32 {
	if m != nil && m.OptInt32 != nil {
		return *m.OptInt32
	}
	return 0
}

func (m *Scalars) GetOptInt64() int64 {
	if m != nil && m.OptInt64 != nil {
		return *m.OptInt64
	}
	return 0
}

func (m *Scalars) GetOptUint32() uint32 {
	if m != nil && m.OptUint32 != nil {
		return *m.OptUint32
	}
	return 0
}

func (m *Scalars) GetOptUint64() uint64 {
	if m != nil && m.OptUint64 != nil {
		return *m.OptUint64
	}
	return 0
}

func (m *Scalars) GetOptSint32() int32 {
	if m != nil && m.OptSint32 != nil {
		return *m.OptSint32
	}
	return 0
}

func (m *Scalars) GetOptSint64() int64 {
	if m != nil && m.OptSint64 != nil {
		return *m.OptSint64
	}
	return 0
}

func (m *Scalars) GetOptFixed32() uint32 {
	if m != nil && m.OptFixed32 != nil {
		return *m.OptFixed32
	}
	return 0
}

func (m *Scalars) GetOptFixed64() uint64 {
	if m != nil && m.OptFixed64 != nil {
		return *m.OptFixed64
	}
	return 0
}

func (m *Scalars) GetOptSfixed32() int32 {
	if m != nil && m.OptSfixed32 != nil {
		return *m.OptSfixed32
	}
	return 0
}

func (m *Scalars) GetOptSfixed64() int64 {
	if m != nil && m.OptSfixed64 != nil {
		return *m.OptSfixed64
	}
	return 0
}

func (m *Scalars) GetOptFloat() float32 {
	if m != nil && m.OptFloat != nil {
		return *m.OptFloat
	}
	return 0
}

func (m *Scalars) GetOptDouble() float64 {
	if m != nil && m.OptDouble != nil {
		return *m.OptDouble
	}
	return 0
}

func (m *Scalars) GetOptBytes() []byte {
	if m != nil {
		return m.OptBytes
	}
	return nil
}

func (m *Scalars) GetOptString() string {
	if m != nil && m.OptString != nil {
		return *m.OptString
	}
	return ""
}

// Message contains enum fields.
type Enums struct {
	OptEnum              *Enum              `protobuf:"varint,1,opt,name=opt_enum,json=optEnum,enum=pb2.Enum" json:"opt_enum,omitempty"`
	RptEnum              []Enum             `protobuf:"varint,2,rep,name=rpt_enum,json=rptEnum,enum=pb2.Enum" json:"rpt_enum,omitempty"`
	OptNestedEnum        *Enums_NestedEnum  `protobuf:"varint,3,opt,name=opt_nested_enum,json=optNestedEnum,enum=pb2.Enums_NestedEnum" json:"opt_nested_enum,omitempty"`
	RptNestedEnum        []Enums_NestedEnum `protobuf:"varint,4,rep,name=rpt_nested_enum,json=rptNestedEnum,enum=pb2.Enums_NestedEnum" json:"rpt_nested_enum,omitempty"`
	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
	XXX_unrecognized     []byte             `json:"-"`
	XXX_sizecache        int32              `json:"-"`
}

func (m *Enums) ProtoReflect() protoreflect.Message {
	return xxx_File_pb2_test_proto_messageTypes[1].MessageOf(m)
}
func (m *Enums) Reset()         { *m = Enums{} }
func (m *Enums) String() string { return proto.CompactTextString(m) }
func (*Enums) ProtoMessage()    {}
func (*Enums) Descriptor() ([]byte, []int) {
	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{1}
}

func (m *Enums) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Enums.Unmarshal(m, b)
}
func (m *Enums) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Enums.Marshal(b, m, deterministic)
}
func (m *Enums) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Enums.Merge(m, src)
}
func (m *Enums) XXX_Size() int {
	return xxx_messageInfo_Enums.Size(m)
}
func (m *Enums) XXX_DiscardUnknown() {
	xxx_messageInfo_Enums.DiscardUnknown(m)
}

var xxx_messageInfo_Enums proto.InternalMessageInfo

func (m *Enums) GetOptEnum() Enum {
	if m != nil && m.OptEnum != nil {
		return *m.OptEnum
	}
	return Enum_ONE
}

func (m *Enums) GetRptEnum() []Enum {
	if m != nil {
		return m.RptEnum
	}
	return nil
}

func (m *Enums) GetOptNestedEnum() Enums_NestedEnum {
	if m != nil && m.OptNestedEnum != nil {
		return *m.OptNestedEnum
	}
	return Enums_UNO
}

func (m *Enums) GetRptNestedEnum() []Enums_NestedEnum {
	if m != nil {
		return m.RptNestedEnum
	}
	return nil
}

// Message contains repeated fields.
type Repeats struct {
	RptBool              []bool    `protobuf:"varint,1,rep,name=rpt_bool,json=rptBool" json:"rpt_bool,omitempty"`
	RptInt32             []int32   `protobuf:"varint,2,rep,name=rpt_int32,json=rptInt32" json:"rpt_int32,omitempty"`
	RptInt64             []int64   `protobuf:"varint,3,rep,name=rpt_int64,json=rptInt64" json:"rpt_int64,omitempty"`
	RptUint32            []uint32  `protobuf:"varint,4,rep,name=rpt_uint32,json=rptUint32" json:"rpt_uint32,omitempty"`
	RptUint64            []uint64  `protobuf:"varint,5,rep,name=rpt_uint64,json=rptUint64" json:"rpt_uint64,omitempty"`
	RptFloat             []float32 `protobuf:"fixed32,6,rep,name=rpt_float,json=rptFloat" json:"rpt_float,omitempty"`
	RptDouble            []float64 `protobuf:"fixed64,7,rep,name=rpt_double,json=rptDouble" json:"rpt_double,omitempty"`
	RptString            []string  `protobuf:"bytes,8,rep,name=rpt_string,json=rptString" json:"rpt_string,omitempty"`
	RptBytes             [][]byte  `protobuf:"bytes,9,rep,name=rpt_bytes,json=rptBytes" json:"rpt_bytes,omitempty"`
	XXX_NoUnkeyedLiteral struct{}  `json:"-"`
	XXX_unrecognized     []byte    `json:"-"`
	XXX_sizecache        int32     `json:"-"`
}

func (m *Repeats) ProtoReflect() protoreflect.Message {
	return xxx_File_pb2_test_proto_messageTypes[2].MessageOf(m)
}
func (m *Repeats) Reset()         { *m = Repeats{} }
func (m *Repeats) String() string { return proto.CompactTextString(m) }
func (*Repeats) ProtoMessage()    {}
func (*Repeats) Descriptor() ([]byte, []int) {
	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{2}
}

func (m *Repeats) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Repeats.Unmarshal(m, b)
}
func (m *Repeats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Repeats.Marshal(b, m, deterministic)
}
func (m *Repeats) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Repeats.Merge(m, src)
}
func (m *Repeats) XXX_Size() int {
	return xxx_messageInfo_Repeats.Size(m)
}
func (m *Repeats) XXX_DiscardUnknown() {
	xxx_messageInfo_Repeats.DiscardUnknown(m)
}

var xxx_messageInfo_Repeats proto.InternalMessageInfo

func (m *Repeats) GetRptBool() []bool {
	if m != nil {
		return m.RptBool
	}
	return nil
}

func (m *Repeats) GetRptInt32() []int32 {
	if m != nil {
		return m.RptInt32
	}
	return nil
}

func (m *Repeats) GetRptInt64() []int64 {
	if m != nil {
		return m.RptInt64
	}
	return nil
}

func (m *Repeats) GetRptUint32() []uint32 {
	if m != nil {
		return m.RptUint32
	}
	return nil
}

func (m *Repeats) GetRptUint64() []uint64 {
	if m != nil {
		return m.RptUint64
	}
	return nil
}

func (m *Repeats) GetRptFloat() []float32 {
	if m != nil {
		return m.RptFloat
	}
	return nil
}

func (m *Repeats) GetRptDouble() []float64 {
	if m != nil {
		return m.RptDouble
	}
	return nil
}

func (m *Repeats) GetRptString() []string {
	if m != nil {
		return m.RptString
	}
	return nil
}

func (m *Repeats) GetRptBytes() [][]byte {
	if m != nil {
		return m.RptBytes
	}
	return nil
}

// Message type used as submessage.
type Nested struct {
	OptString            *string  `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
	OptNested            *Nested  `protobuf:"bytes,2,opt,name=opt_nested,json=optNested" json:"opt_nested,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *Nested) ProtoReflect() protoreflect.Message {
	return xxx_File_pb2_test_proto_messageTypes[3].MessageOf(m)
}
func (m *Nested) Reset()         { *m = Nested{} }
func (m *Nested) String() string { return proto.CompactTextString(m) }
func (*Nested) ProtoMessage()    {}
func (*Nested) Descriptor() ([]byte, []int) {
	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{3}
}

func (m *Nested) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Nested.Unmarshal(m, b)
}
func (m *Nested) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Nested.Marshal(b, m, deterministic)
}
func (m *Nested) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Nested.Merge(m, src)
}
func (m *Nested) XXX_Size() int {
	return xxx_messageInfo_Nested.Size(m)
}
func (m *Nested) XXX_DiscardUnknown() {
	xxx_messageInfo_Nested.DiscardUnknown(m)
}

var xxx_messageInfo_Nested proto.InternalMessageInfo

func (m *Nested) GetOptString() string {
	if m != nil && m.OptString != nil {
		return *m.OptString
	}
	return ""
}

func (m *Nested) GetOptNested() *Nested {
	if m != nil {
		return m.OptNested
	}
	return nil
}

// Message contains message and group fields.
type Nests struct {
	OptNested            *Nested           `protobuf:"bytes,1,opt,name=opt_nested,json=optNested" json:"opt_nested,omitempty"`
	Optgroup             *Nests_OptGroup   `protobuf:"group,2,opt,name=OptGroup,json=optgroup" json:"optgroup,omitempty"`
	RptNested            []*Nested         `protobuf:"bytes,4,rep,name=rpt_nested,json=rptNested" json:"rpt_nested,omitempty"`
	Rptgroup             []*Nests_RptGroup `protobuf:"group,5,rep,name=RptGroup,json=rptgroup" json:"rptgroup,omitempty"`
	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
	XXX_unrecognized     []byte            `json:"-"`
	XXX_sizecache        int32             `json:"-"`
}

func (m *Nests) ProtoReflect() protoreflect.Message {
	return xxx_File_pb2_test_proto_messageTypes[4].MessageOf(m)
}
func (m *Nests) Reset()         { *m = Nests{} }
func (m *Nests) String() string { return proto.CompactTextString(m) }
func (*Nests) ProtoMessage()    {}
func (*Nests) Descriptor() ([]byte, []int) {
	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{4}
}

func (m *Nests) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Nests.Unmarshal(m, b)
}
func (m *Nests) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Nests.Marshal(b, m, deterministic)
}
func (m *Nests) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Nests.Merge(m, src)
}
func (m *Nests) XXX_Size() int {
	return xxx_messageInfo_Nests.Size(m)
}
func (m *Nests) XXX_DiscardUnknown() {
	xxx_messageInfo_Nests.DiscardUnknown(m)
}

var xxx_messageInfo_Nests proto.InternalMessageInfo

func (m *Nests) GetOptNested() *Nested {
	if m != nil {
		return m.OptNested
	}
	return nil
}

func (m *Nests) GetOptgroup() *Nests_OptGroup {
	if m != nil {
		return m.Optgroup
	}
	return nil
}

func (m *Nests) GetRptNested() []*Nested {
	if m != nil {
		return m.RptNested
	}
	return nil
}

func (m *Nests) GetRptgroup() []*Nests_RptGroup {
	if m != nil {
		return m.Rptgroup
	}
	return nil
}

// Message contains required fields.
type Requireds struct {
	ReqBool              *bool    `protobuf:"varint,1,req,name=req_bool,json=reqBool" json:"req_bool,omitempty"`
	ReqSfixed64          *int64   `protobuf:"fixed64,2,req,name=req_sfixed64,json=reqSfixed64" json:"req_sfixed64,omitempty"`
	ReqDouble            *float64 `protobuf:"fixed64,3,req,name=req_double,json=reqDouble" json:"req_double,omitempty"`
	ReqString            *string  `protobuf:"bytes,4,req,name=req_string,json=reqString" json:"req_string,omitempty"`
	ReqEnum              *Enum    `protobuf:"varint,5,req,name=req_enum,json=reqEnum,enum=pb2.Enum" json:"req_enum,omitempty"`
	ReqNested            *Nested  `protobuf:"bytes,6,req,name=req_nested,json=reqNested" json:"req_nested,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *Requireds) ProtoReflect() protoreflect.Message {
	return xxx_File_pb2_test_proto_messageTypes[5].MessageOf(m)
}
func (m *Requireds) Reset()         { *m = Requireds{} }
func (m *Requireds) String() string { return proto.CompactTextString(m) }
func (*Requireds) ProtoMessage()    {}
func (*Requireds) Descriptor() ([]byte, []int) {
	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{5}
}

func (m *Requireds) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Requireds.Unmarshal(m, b)
}
func (m *Requireds) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Requireds.Marshal(b, m, deterministic)
}
func (m *Requireds) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Requireds.Merge(m, src)
}
func (m *Requireds) XXX_Size() int {
	return xxx_messageInfo_Requireds.Size(m)
}
func (m *Requireds) XXX_DiscardUnknown() {
	xxx_messageInfo_Requireds.DiscardUnknown(m)
}

var xxx_messageInfo_Requireds proto.InternalMessageInfo

func (m *Requireds) GetReqBool() bool {
	if m != nil && m.ReqBool != nil {
		return *m.ReqBool
	}
	return false
}

func (m *Requireds) GetReqSfixed64() int64 {
	if m != nil && m.ReqSfixed64 != nil {
		return *m.ReqSfixed64
	}
	return 0
}

func (m *Requireds) GetReqDouble() float64 {
	if m != nil && m.ReqDouble != nil {
		return *m.ReqDouble
	}
	return 0
}

func (m *Requireds) GetReqString() string {
	if m != nil && m.ReqString != nil {
		return *m.ReqString
	}
	return ""
}

func (m *Requireds) GetReqEnum() Enum {
	if m != nil && m.ReqEnum != nil {
		return *m.ReqEnum
	}
	return Enum_ONE
}

func (m *Requireds) GetReqNested() *Nested {
	if m != nil {
		return m.ReqNested
	}
	return nil
}

// Message contains both required and optional fields.
type PartialRequired struct {
	ReqString            *string  `protobuf:"bytes,1,req,name=req_string,json=reqString" json:"req_string,omitempty"`
	OptString            *string  `protobuf:"bytes,2,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *PartialRequired) ProtoReflect() protoreflect.Message {
	return xxx_File_pb2_test_proto_messageTypes[6].MessageOf(m)
}
func (m *PartialRequired) Reset()         { *m = PartialRequired{} }
func (m *PartialRequired) String() string { return proto.CompactTextString(m) }
func (*PartialRequired) ProtoMessage()    {}
func (*PartialRequired) Descriptor() ([]byte, []int) {
	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{6}
}

func (m *PartialRequired) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_PartialRequired.Unmarshal(m, b)
}
func (m *PartialRequired) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_PartialRequired.Marshal(b, m, deterministic)
}
func (m *PartialRequired) XXX_Merge(src proto.Message) {
	xxx_messageInfo_PartialRequired.Merge(m, src)
}
func (m *PartialRequired) XXX_Size() int {
	return xxx_messageInfo_PartialRequired.Size(m)
}
func (m *PartialRequired) XXX_DiscardUnknown() {
	xxx_messageInfo_PartialRequired.DiscardUnknown(m)
}

var xxx_messageInfo_PartialRequired proto.InternalMessageInfo

func (m *PartialRequired) GetReqString() string {
	if m != nil && m.ReqString != nil {
		return *m.ReqString
	}
	return ""
}

func (m *PartialRequired) GetOptString() string {
	if m != nil && m.OptString != nil {
		return *m.OptString
	}
	return ""
}

type NestedWithRequired struct {
	ReqString            *string  `protobuf:"bytes,1,req,name=req_string,json=reqString" json:"req_string,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *NestedWithRequired) ProtoReflect() protoreflect.Message {
	return xxx_File_pb2_test_proto_messageTypes[7].MessageOf(m)
}
func (m *NestedWithRequired) Reset()         { *m = NestedWithRequired{} }
func (m *NestedWithRequired) String() string { return proto.CompactTextString(m) }
func (*NestedWithRequired) ProtoMessage()    {}
func (*NestedWithRequired) Descriptor() ([]byte, []int) {
	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{7}
}

func (m *NestedWithRequired) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_NestedWithRequired.Unmarshal(m, b)
}
func (m *NestedWithRequired) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_NestedWithRequired.Marshal(b, m, deterministic)
}
func (m *NestedWithRequired) XXX_Merge(src proto.Message) {
	xxx_messageInfo_NestedWithRequired.Merge(m, src)
}
func (m *NestedWithRequired) XXX_Size() int {
	return xxx_messageInfo_NestedWithRequired.Size(m)
}
func (m *NestedWithRequired) XXX_DiscardUnknown() {
	xxx_messageInfo_NestedWithRequired.DiscardUnknown(m)
}

var xxx_messageInfo_NestedWithRequired proto.InternalMessageInfo

func (m *NestedWithRequired) GetReqString() string {
	if m != nil && m.ReqString != nil {
		return *m.ReqString
	}
	return ""
}

type IndirectRequired struct {
	OptNested   *NestedWithRequired            `protobuf:"bytes,1,opt,name=opt_nested,json=optNested" json:"opt_nested,omitempty"`
	RptNested   []*NestedWithRequired          `protobuf:"bytes,2,rep,name=rpt_nested,json=rptNested" json:"rpt_nested,omitempty"`
	StrToNested map[string]*NestedWithRequired `protobuf:"bytes,3,rep,name=str_to_nested,json=strToNested" json:"str_to_nested,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	// Types that are valid to be assigned to Union:
	//	*IndirectRequired_OneofNested
	Union                isIndirectRequired_Union `protobuf_oneof:"union"`
	XXX_NoUnkeyedLiteral struct{}                 `json:"-"`
	XXX_unrecognized     []byte                   `json:"-"`
	XXX_sizecache        int32                    `json:"-"`
}

func (m *IndirectRequired) ProtoReflect() protoreflect.Message {
	return xxx_File_pb2_test_proto_messageTypes[8].MessageOf(m)
}
func (m *IndirectRequired) Reset()         { *m = IndirectRequired{} }
func (m *IndirectRequired) String() string { return proto.CompactTextString(m) }
func (*IndirectRequired) ProtoMessage()    {}
func (*IndirectRequired) Descriptor() ([]byte, []int) {
	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{8}
}

func (m *IndirectRequired) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_IndirectRequired.Unmarshal(m, b)
}
func (m *IndirectRequired) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_IndirectRequired.Marshal(b, m, deterministic)
}
func (m *IndirectRequired) XXX_Merge(src proto.Message) {
	xxx_messageInfo_IndirectRequired.Merge(m, src)
}
func (m *IndirectRequired) XXX_Size() int {
	return xxx_messageInfo_IndirectRequired.Size(m)
}
func (m *IndirectRequired) XXX_DiscardUnknown() {
	xxx_messageInfo_IndirectRequired.DiscardUnknown(m)
}

var xxx_messageInfo_IndirectRequired proto.InternalMessageInfo

func (m *IndirectRequired) GetOptNested() *NestedWithRequired {
	if m != nil {
		return m.OptNested
	}
	return nil
}

func (m *IndirectRequired) GetRptNested() []*NestedWithRequired {
	if m != nil {
		return m.RptNested
	}
	return nil
}

func (m *IndirectRequired) GetStrToNested() map[string]*NestedWithRequired {
	if m != nil {
		return m.StrToNested
	}
	return nil
}

type isIndirectRequired_Union interface {
	isIndirectRequired_Union()
}

type IndirectRequired_OneofNested struct {
	OneofNested *NestedWithRequired `protobuf:"bytes,4,opt,name=oneof_nested,json=oneofNested,oneof"`
}

func (*IndirectRequired_OneofNested) isIndirectRequired_Union() {}

func (m *IndirectRequired) GetUnion() isIndirectRequired_Union {
	if m != nil {
		return m.Union
	}
	return nil
}

func (m *IndirectRequired) GetOneofNested() *NestedWithRequired {
	if x, ok := m.GetUnion().(*IndirectRequired_OneofNested); ok {
		return x.OneofNested
	}
	return nil
}

// XXX_OneofWrappers is for the internal use of the proto package.
func (*IndirectRequired) XXX_OneofWrappers() []interface{} {
	return []interface{}{
		(*IndirectRequired_OneofNested)(nil),
	}
}

type Extensions struct {
	OptString                    *string  `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
	OptBool                      *bool    `protobuf:"varint,101,opt,name=opt_bool,json=optBool" json:"opt_bool,omitempty"`
	OptInt32                     *int32   `protobuf:"varint,2,opt,name=opt_int32,json=optInt32" json:"opt_int32,omitempty"`
	XXX_NoUnkeyedLiteral         struct{} `json:"-"`
	proto.XXX_InternalExtensions `json:"-"`
	XXX_unrecognized             []byte `json:"-"`
	XXX_sizecache                int32  `json:"-"`
}

func (m *Extensions) ProtoReflect() protoreflect.Message {
	return xxx_File_pb2_test_proto_messageTypes[9].MessageOf(m)
}
func (m *Extensions) Reset()         { *m = Extensions{} }
func (m *Extensions) String() string { return proto.CompactTextString(m) }
func (*Extensions) ProtoMessage()    {}
func (*Extensions) Descriptor() ([]byte, []int) {
	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{9}
}

var extRange_Extensions = []proto.ExtensionRange{
	{Start: 20, End: 100},
}

func (*Extensions) ExtensionRangeArray() []proto.ExtensionRange {
	return extRange_Extensions
}

func (m *Extensions) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Extensions.Unmarshal(m, b)
}
func (m *Extensions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Extensions.Marshal(b, m, deterministic)
}
func (m *Extensions) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Extensions.Merge(m, src)
}
func (m *Extensions) XXX_Size() int {
	return xxx_messageInfo_Extensions.Size(m)
}
func (m *Extensions) XXX_DiscardUnknown() {
	xxx_messageInfo_Extensions.DiscardUnknown(m)
}

var xxx_messageInfo_Extensions proto.InternalMessageInfo

func (m *Extensions) GetOptString() string {
	if m != nil && m.OptString != nil {
		return *m.OptString
	}
	return ""
}

func (m *Extensions) GetOptBool() bool {
	if m != nil && m.OptBool != nil {
		return *m.OptBool
	}
	return false
}

func (m *Extensions) GetOptInt32() int32 {
	if m != nil && m.OptInt32 != nil {
		return *m.OptInt32
	}
	return 0
}

type ExtensionsContainer struct {
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *ExtensionsContainer) ProtoReflect() protoreflect.Message {
	return xxx_File_pb2_test_proto_messageTypes[10].MessageOf(m)
}
func (m *ExtensionsContainer) Reset()         { *m = ExtensionsContainer{} }
func (m *ExtensionsContainer) String() string { return proto.CompactTextString(m) }
func (*ExtensionsContainer) ProtoMessage()    {}
func (*ExtensionsContainer) Descriptor() ([]byte, []int) {
	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{10}
}

func (m *ExtensionsContainer) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_ExtensionsContainer.Unmarshal(m, b)
}
func (m *ExtensionsContainer) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_ExtensionsContainer.Marshal(b, m, deterministic)
}
func (m *ExtensionsContainer) XXX_Merge(src proto.Message) {
	xxx_messageInfo_ExtensionsContainer.Merge(m, src)
}
func (m *ExtensionsContainer) XXX_Size() int {
	return xxx_messageInfo_ExtensionsContainer.Size(m)
}
func (m *ExtensionsContainer) XXX_DiscardUnknown() {
	xxx_messageInfo_ExtensionsContainer.DiscardUnknown(m)
}

var xxx_messageInfo_ExtensionsContainer proto.InternalMessageInfo

type MessageSet struct {
	XXX_NoUnkeyedLiteral         struct{} `json:"-"`
	proto.XXX_InternalExtensions `protobuf_messageset:"1" json:"-"`
	XXX_unrecognized             []byte `json:"-"`
	XXX_sizecache                int32  `json:"-"`
}

func (m *MessageSet) ProtoReflect() protoreflect.Message {
	return xxx_File_pb2_test_proto_messageTypes[11].MessageOf(m)
}
func (m *MessageSet) Reset()         { *m = MessageSet{} }
func (m *MessageSet) String() string { return proto.CompactTextString(m) }
func (*MessageSet) ProtoMessage()    {}
func (*MessageSet) Descriptor() ([]byte, []int) {
	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{11}
}

var extRange_MessageSet = []proto.ExtensionRange{
	{Start: 4, End: 2147483646},
}

func (*MessageSet) ExtensionRangeArray() []proto.ExtensionRange {
	return extRange_MessageSet
}

func (m *MessageSet) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_MessageSet.Unmarshal(m, b)
}
func (m *MessageSet) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_MessageSet.Marshal(b, m, deterministic)
}
func (m *MessageSet) XXX_Merge(src proto.Message) {
	xxx_messageInfo_MessageSet.Merge(m, src)
}
func (m *MessageSet) XXX_Size() int {
	return xxx_messageInfo_MessageSet.Size(m)
}
func (m *MessageSet) XXX_DiscardUnknown() {
	xxx_messageInfo_MessageSet.DiscardUnknown(m)
}

var xxx_messageInfo_MessageSet proto.InternalMessageInfo

type MessageSetExtension struct {
	OptString            *string  `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *MessageSetExtension) ProtoReflect() protoreflect.Message {
	return xxx_File_pb2_test_proto_messageTypes[12].MessageOf(m)
}
func (m *MessageSetExtension) Reset()         { *m = MessageSetExtension{} }
func (m *MessageSetExtension) String() string { return proto.CompactTextString(m) }
func (*MessageSetExtension) ProtoMessage()    {}
func (*MessageSetExtension) Descriptor() ([]byte, []int) {
	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{12}
}

func (m *MessageSetExtension) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_MessageSetExtension.Unmarshal(m, b)
}
func (m *MessageSetExtension) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_MessageSetExtension.Marshal(b, m, deterministic)
}
func (m *MessageSetExtension) XXX_Merge(src proto.Message) {
	xxx_messageInfo_MessageSetExtension.Merge(m, src)
}
func (m *MessageSetExtension) XXX_Size() int {
	return xxx_messageInfo_MessageSetExtension.Size(m)
}
func (m *MessageSetExtension) XXX_DiscardUnknown() {
	xxx_messageInfo_MessageSetExtension.DiscardUnknown(m)
}

var xxx_messageInfo_MessageSetExtension proto.InternalMessageInfo

func (m *MessageSetExtension) GetOptString() string {
	if m != nil && m.OptString != nil {
		return *m.OptString
	}
	return ""
}

type FakeMessageSet struct {
	XXX_NoUnkeyedLiteral         struct{} `json:"-"`
	proto.XXX_InternalExtensions `json:"-"`
	XXX_unrecognized             []byte `json:"-"`
	XXX_sizecache                int32  `json:"-"`
}

func (m *FakeMessageSet) ProtoReflect() protoreflect.Message {
	return xxx_File_pb2_test_proto_messageTypes[13].MessageOf(m)
}
func (m *FakeMessageSet) Reset()         { *m = FakeMessageSet{} }
func (m *FakeMessageSet) String() string { return proto.CompactTextString(m) }
func (*FakeMessageSet) ProtoMessage()    {}
func (*FakeMessageSet) Descriptor() ([]byte, []int) {
	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{13}
}

var extRange_FakeMessageSet = []proto.ExtensionRange{
	{Start: 4, End: 536870911},
}

func (*FakeMessageSet) ExtensionRangeArray() []proto.ExtensionRange {
	return extRange_FakeMessageSet
}

func (m *FakeMessageSet) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_FakeMessageSet.Unmarshal(m, b)
}
func (m *FakeMessageSet) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_FakeMessageSet.Marshal(b, m, deterministic)
}
func (m *FakeMessageSet) XXX_Merge(src proto.Message) {
	xxx_messageInfo_FakeMessageSet.Merge(m, src)
}
func (m *FakeMessageSet) XXX_Size() int {
	return xxx_messageInfo_FakeMessageSet.Size(m)
}
func (m *FakeMessageSet) XXX_DiscardUnknown() {
	xxx_messageInfo_FakeMessageSet.DiscardUnknown(m)
}

var xxx_messageInfo_FakeMessageSet proto.InternalMessageInfo

type FakeMessageSetExtension struct {
	OptString            *string  `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *FakeMessageSetExtension) ProtoReflect() protoreflect.Message {
	return xxx_File_pb2_test_proto_messageTypes[14].MessageOf(m)
}
func (m *FakeMessageSetExtension) Reset()         { *m = FakeMessageSetExtension{} }
func (m *FakeMessageSetExtension) String() string { return proto.CompactTextString(m) }
func (*FakeMessageSetExtension) ProtoMessage()    {}
func (*FakeMessageSetExtension) Descriptor() ([]byte, []int) {
	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{14}
}

func (m *FakeMessageSetExtension) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_FakeMessageSetExtension.Unmarshal(m, b)
}
func (m *FakeMessageSetExtension) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_FakeMessageSetExtension.Marshal(b, m, deterministic)
}
func (m *FakeMessageSetExtension) XXX_Merge(src proto.Message) {
	xxx_messageInfo_FakeMessageSetExtension.Merge(m, src)
}
func (m *FakeMessageSetExtension) XXX_Size() int {
	return xxx_messageInfo_FakeMessageSetExtension.Size(m)
}
func (m *FakeMessageSetExtension) XXX_DiscardUnknown() {
	xxx_messageInfo_FakeMessageSetExtension.DiscardUnknown(m)
}

var xxx_messageInfo_FakeMessageSetExtension proto.InternalMessageInfo

func (m *FakeMessageSetExtension) GetOptString() string {
	if m != nil && m.OptString != nil {
		return *m.OptString
	}
	return ""
}

// Message contains well-known type fields.
type KnownTypes struct {
	OptBool              *known.BoolValue   `protobuf:"bytes,1,opt,name=opt_bool,json=optBool" json:"opt_bool,omitempty"`
	OptInt32             *known.Int32Value  `protobuf:"bytes,2,opt,name=opt_int32,json=optInt32" json:"opt_int32,omitempty"`
	OptInt64             *known.Int64Value  `protobuf:"bytes,3,opt,name=opt_int64,json=optInt64" json:"opt_int64,omitempty"`
	OptUint32            *known.UInt32Value `protobuf:"bytes,4,opt,name=opt_uint32,json=optUint32" json:"opt_uint32,omitempty"`
	OptUint64            *known.UInt64Value `protobuf:"bytes,5,opt,name=opt_uint64,json=optUint64" json:"opt_uint64,omitempty"`
	OptFloat             *known.FloatValue  `protobuf:"bytes,6,opt,name=opt_float,json=optFloat" json:"opt_float,omitempty"`
	OptDouble            *known.DoubleValue `protobuf:"bytes,7,opt,name=opt_double,json=optDouble" json:"opt_double,omitempty"`
	OptString            *known.StringValue `protobuf:"bytes,8,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
	OptBytes             *known.BytesValue  `protobuf:"bytes,9,opt,name=opt_bytes,json=optBytes" json:"opt_bytes,omitempty"`
	OptDuration          *known.Duration    `protobuf:"bytes,20,opt,name=opt_duration,json=optDuration" json:"opt_duration,omitempty"`
	OptTimestamp         *known.Timestamp   `protobuf:"bytes,21,opt,name=opt_timestamp,json=optTimestamp" json:"opt_timestamp,omitempty"`
	OptStruct            *known.Struct      `protobuf:"bytes,25,opt,name=opt_struct,json=optStruct" json:"opt_struct,omitempty"`
	OptList              *known.ListValue   `protobuf:"bytes,26,opt,name=opt_list,json=optList" json:"opt_list,omitempty"`
	OptValue             *known.Value       `protobuf:"bytes,27,opt,name=opt_value,json=optValue" json:"opt_value,omitempty"`
	OptEmpty             *known.Empty       `protobuf:"bytes,30,opt,name=opt_empty,json=optEmpty" json:"opt_empty,omitempty"`
	OptAny               *known.Any         `protobuf:"bytes,32,opt,name=opt_any,json=optAny" json:"opt_any,omitempty"`
	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
	XXX_unrecognized     []byte             `json:"-"`
	XXX_sizecache        int32              `json:"-"`
}

func (m *KnownTypes) ProtoReflect() protoreflect.Message {
	return xxx_File_pb2_test_proto_messageTypes[15].MessageOf(m)
}
func (m *KnownTypes) Reset()         { *m = KnownTypes{} }
func (m *KnownTypes) String() string { return proto.CompactTextString(m) }
func (*KnownTypes) ProtoMessage()    {}
func (*KnownTypes) Descriptor() ([]byte, []int) {
	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{15}
}

func (m *KnownTypes) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_KnownTypes.Unmarshal(m, b)
}
func (m *KnownTypes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_KnownTypes.Marshal(b, m, deterministic)
}
func (m *KnownTypes) XXX_Merge(src proto.Message) {
	xxx_messageInfo_KnownTypes.Merge(m, src)
}
func (m *KnownTypes) XXX_Size() int {
	return xxx_messageInfo_KnownTypes.Size(m)
}
func (m *KnownTypes) XXX_DiscardUnknown() {
	xxx_messageInfo_KnownTypes.DiscardUnknown(m)
}

var xxx_messageInfo_KnownTypes proto.InternalMessageInfo

func (m *KnownTypes) GetOptBool() *known.BoolValue {
	if m != nil {
		return m.OptBool
	}
	return nil
}

func (m *KnownTypes) GetOptInt32() *known.Int32Value {
	if m != nil {
		return m.OptInt32
	}
	return nil
}

func (m *KnownTypes) GetOptInt64() *known.Int64Value {
	if m != nil {
		return m.OptInt64
	}
	return nil
}

func (m *KnownTypes) GetOptUint32() *known.UInt32Value {
	if m != nil {
		return m.OptUint32
	}
	return nil
}

func (m *KnownTypes) GetOptUint64() *known.UInt64Value {
	if m != nil {
		return m.OptUint64
	}
	return nil
}

func (m *KnownTypes) GetOptFloat() *known.FloatValue {
	if m != nil {
		return m.OptFloat
	}
	return nil
}

func (m *KnownTypes) GetOptDouble() *known.DoubleValue {
	if m != nil {
		return m.OptDouble
	}
	return nil
}

func (m *KnownTypes) GetOptString() *known.StringValue {
	if m != nil {
		return m.OptString
	}
	return nil
}

func (m *KnownTypes) GetOptBytes() *known.BytesValue {
	if m != nil {
		return m.OptBytes
	}
	return nil
}

func (m *KnownTypes) GetOptDuration() *known.Duration {
	if m != nil {
		return m.OptDuration
	}
	return nil
}

func (m *KnownTypes) GetOptTimestamp() *known.Timestamp {
	if m != nil {
		return m.OptTimestamp
	}
	return nil
}

func (m *KnownTypes) GetOptStruct() *known.Struct {
	if m != nil {
		return m.OptStruct
	}
	return nil
}

func (m *KnownTypes) GetOptList() *known.ListValue {
	if m != nil {
		return m.OptList
	}
	return nil
}

func (m *KnownTypes) GetOptValue() *known.Value {
	if m != nil {
		return m.OptValue
	}
	return nil
}

func (m *KnownTypes) GetOptEmpty() *known.Empty {
	if m != nil {
		return m.OptEmpty
	}
	return nil
}

func (m *KnownTypes) GetOptAny() *known.Any {
	if m != nil {
		return m.OptAny
	}
	return nil
}

type Nests_OptGroup struct {
	OptString            *string                        `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
	OptNested            *Nested                        `protobuf:"bytes,2,opt,name=opt_nested,json=optNested" json:"opt_nested,omitempty"`
	Optnestedgroup       *Nests_OptGroup_OptNestedGroup `protobuf:"group,3,opt,name=OptNestedGroup,json=optnestedgroup" json:"optnestedgroup,omitempty"`
	XXX_NoUnkeyedLiteral struct{}                       `json:"-"`
	XXX_unrecognized     []byte                         `json:"-"`
	XXX_sizecache        int32                          `json:"-"`
}

func (m *Nests_OptGroup) ProtoReflect() protoreflect.Message {
	return xxx_File_pb2_test_proto_messageTypes[16].MessageOf(m)
}
func (m *Nests_OptGroup) Reset()         { *m = Nests_OptGroup{} }
func (m *Nests_OptGroup) String() string { return proto.CompactTextString(m) }
func (*Nests_OptGroup) ProtoMessage()    {}
func (*Nests_OptGroup) Descriptor() ([]byte, []int) {
	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{4, 0}
}

func (m *Nests_OptGroup) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Nests_OptGroup.Unmarshal(m, b)
}
func (m *Nests_OptGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Nests_OptGroup.Marshal(b, m, deterministic)
}
func (m *Nests_OptGroup) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Nests_OptGroup.Merge(m, src)
}
func (m *Nests_OptGroup) XXX_Size() int {
	return xxx_messageInfo_Nests_OptGroup.Size(m)
}
func (m *Nests_OptGroup) XXX_DiscardUnknown() {
	xxx_messageInfo_Nests_OptGroup.DiscardUnknown(m)
}

var xxx_messageInfo_Nests_OptGroup proto.InternalMessageInfo

func (m *Nests_OptGroup) GetOptString() string {
	if m != nil && m.OptString != nil {
		return *m.OptString
	}
	return ""
}

func (m *Nests_OptGroup) GetOptNested() *Nested {
	if m != nil {
		return m.OptNested
	}
	return nil
}

func (m *Nests_OptGroup) GetOptnestedgroup() *Nests_OptGroup_OptNestedGroup {
	if m != nil {
		return m.Optnestedgroup
	}
	return nil
}

type Nests_RptGroup struct {
	RptString            []string `protobuf:"bytes,1,rep,name=rpt_string,json=rptString" json:"rpt_string,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *Nests_RptGroup) ProtoReflect() protoreflect.Message {
	return xxx_File_pb2_test_proto_messageTypes[17].MessageOf(m)
}
func (m *Nests_RptGroup) Reset()         { *m = Nests_RptGroup{} }
func (m *Nests_RptGroup) String() string { return proto.CompactTextString(m) }
func (*Nests_RptGroup) ProtoMessage()    {}
func (*Nests_RptGroup) Descriptor() ([]byte, []int) {
	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{4, 1}
}

func (m *Nests_RptGroup) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Nests_RptGroup.Unmarshal(m, b)
}
func (m *Nests_RptGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Nests_RptGroup.Marshal(b, m, deterministic)
}
func (m *Nests_RptGroup) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Nests_RptGroup.Merge(m, src)
}
func (m *Nests_RptGroup) XXX_Size() int {
	return xxx_messageInfo_Nests_RptGroup.Size(m)
}
func (m *Nests_RptGroup) XXX_DiscardUnknown() {
	xxx_messageInfo_Nests_RptGroup.DiscardUnknown(m)
}

var xxx_messageInfo_Nests_RptGroup proto.InternalMessageInfo

func (m *Nests_RptGroup) GetRptString() []string {
	if m != nil {
		return m.RptString
	}
	return nil
}

type Nests_OptGroup_OptNestedGroup struct {
	OptFixed32           *uint32  `protobuf:"fixed32,1,opt,name=opt_fixed32,json=optFixed32" json:"opt_fixed32,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *Nests_OptGroup_OptNestedGroup) ProtoReflect() protoreflect.Message {
	return xxx_File_pb2_test_proto_messageTypes[18].MessageOf(m)
}
func (m *Nests_OptGroup_OptNestedGroup) Reset()         { *m = Nests_OptGroup_OptNestedGroup{} }
func (m *Nests_OptGroup_OptNestedGroup) String() string { return proto.CompactTextString(m) }
func (*Nests_OptGroup_OptNestedGroup) ProtoMessage()    {}
func (*Nests_OptGroup_OptNestedGroup) Descriptor() ([]byte, []int) {
	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{4, 0, 0}
}

func (m *Nests_OptGroup_OptNestedGroup) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Nests_OptGroup_OptNestedGroup.Unmarshal(m, b)
}
func (m *Nests_OptGroup_OptNestedGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Nests_OptGroup_OptNestedGroup.Marshal(b, m, deterministic)
}
func (m *Nests_OptGroup_OptNestedGroup) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Nests_OptGroup_OptNestedGroup.Merge(m, src)
}
func (m *Nests_OptGroup_OptNestedGroup) XXX_Size() int {
	return xxx_messageInfo_Nests_OptGroup_OptNestedGroup.Size(m)
}
func (m *Nests_OptGroup_OptNestedGroup) XXX_DiscardUnknown() {
	xxx_messageInfo_Nests_OptGroup_OptNestedGroup.DiscardUnknown(m)
}

var xxx_messageInfo_Nests_OptGroup_OptNestedGroup proto.InternalMessageInfo

func (m *Nests_OptGroup_OptNestedGroup) GetOptFixed32() uint32 {
	if m != nil && m.OptFixed32 != nil {
		return *m.OptFixed32
	}
	return 0
}

var E_OptExtBool = &proto.ExtensionDesc{
	ExtendedType:  (*Extensions)(nil),
	ExtensionType: (*bool)(nil),
	Field:         21,
	Name:          "pb2.opt_ext_bool",
	Tag:           "varint,21,opt,name=opt_ext_bool",
	Filename:      "pb2/test.proto",
}

var E_OptExtString = &proto.ExtensionDesc{
	ExtendedType:  (*Extensions)(nil),
	ExtensionType: (*string)(nil),
	Field:         22,
	Name:          "pb2.opt_ext_string",
	Tag:           "bytes,22,opt,name=opt_ext_string",
	Filename:      "pb2/test.proto",
}

var E_OptExtEnum = &proto.ExtensionDesc{
	ExtendedType:  (*Extensions)(nil),
	ExtensionType: (*Enum)(nil),
	Field:         23,
	Name:          "pb2.opt_ext_enum",
	Tag:           "varint,23,opt,name=opt_ext_enum,enum=pb2.Enum",
	Filename:      "pb2/test.proto",
}

var E_OptExtNested = &proto.ExtensionDesc{
	ExtendedType:  (*Extensions)(nil),
	ExtensionType: (*Nested)(nil),
	Field:         24,
	Name:          "pb2.opt_ext_nested",
	Tag:           "bytes,24,opt,name=opt_ext_nested",
	Filename:      "pb2/test.proto",
}

var E_RptExtFixed32 = &proto.ExtensionDesc{
	ExtendedType:  (*Extensions)(nil),
	ExtensionType: ([]uint32)(nil),
	Field:         31,
	Name:          "pb2.rpt_ext_fixed32",
	Tag:           "fixed32,31,rep,name=rpt_ext_fixed32",
	Filename:      "pb2/test.proto",
}

var E_RptExtEnum = &proto.ExtensionDesc{
	ExtendedType:  (*Extensions)(nil),
	ExtensionType: ([]Enum)(nil),
	Field:         32,
	Name:          "pb2.rpt_ext_enum",
	Tag:           "varint,32,rep,name=rpt_ext_enum,enum=pb2.Enum",
	Filename:      "pb2/test.proto",
}

var E_RptExtNested = &proto.ExtensionDesc{
	ExtendedType:  (*Extensions)(nil),
	ExtensionType: ([]*Nested)(nil),
	Field:         33,
	Name:          "pb2.rpt_ext_nested",
	Tag:           "bytes,33,rep,name=rpt_ext_nested",
	Filename:      "pb2/test.proto",
}

var E_MessageSetExtension = &proto.ExtensionDesc{
	ExtendedType:  (*MessageSet)(nil),
	ExtensionType: (*FakeMessageSetExtension)(nil),
	Field:         50,
	Name:          "pb2.",
	Tag:           "bytes,50,opt,name=message_set_extension",
	Filename:      "pb2/test.proto",
}

var E_ExtensionsContainer_OptExtBool = &proto.ExtensionDesc{
	ExtendedType:  (*Extensions)(nil),
	ExtensionType: (*bool)(nil),
	Field:         51,
	Name:          "pb2.ExtensionsContainer.opt_ext_bool",
	Tag:           "varint,51,opt,name=opt_ext_bool",
	Filename:      "pb2/test.proto",
}

var E_ExtensionsContainer_OptExtString = &proto.ExtensionDesc{
	ExtendedType:  (*Extensions)(nil),
	ExtensionType: (*string)(nil),
	Field:         52,
	Name:          "pb2.ExtensionsContainer.opt_ext_string",
	Tag:           "bytes,52,opt,name=opt_ext_string",
	Filename:      "pb2/test.proto",
}

var E_ExtensionsContainer_OptExtEnum = &proto.ExtensionDesc{
	ExtendedType:  (*Extensions)(nil),
	ExtensionType: (*Enum)(nil),
	Field:         53,
	Name:          "pb2.ExtensionsContainer.opt_ext_enum",
	Tag:           "varint,53,opt,name=opt_ext_enum,enum=pb2.Enum",
	Filename:      "pb2/test.proto",
}

var E_ExtensionsContainer_OptExtNested = &proto.ExtensionDesc{
	ExtendedType:  (*Extensions)(nil),
	ExtensionType: (*Nested)(nil),
	Field:         54,
	Name:          "pb2.ExtensionsContainer.opt_ext_nested",
	Tag:           "bytes,54,opt,name=opt_ext_nested",
	Filename:      "pb2/test.proto",
}

var E_ExtensionsContainer_RptExtString = &proto.ExtensionDesc{
	ExtendedType:  (*Extensions)(nil),
	ExtensionType: ([]string)(nil),
	Field:         61,
	Name:          "pb2.ExtensionsContainer.rpt_ext_string",
	Tag:           "bytes,61,rep,name=rpt_ext_string",
	Filename:      "pb2/test.proto",
}

var E_ExtensionsContainer_RptExtEnum = &proto.ExtensionDesc{
	ExtendedType:  (*Extensions)(nil),
	ExtensionType: ([]Enum)(nil),
	Field:         62,
	Name:          "pb2.ExtensionsContainer.rpt_ext_enum",
	Tag:           "varint,62,rep,name=rpt_ext_enum,enum=pb2.Enum",
	Filename:      "pb2/test.proto",
}

var E_ExtensionsContainer_RptExtNested = &proto.ExtensionDesc{
	ExtendedType:  (*Extensions)(nil),
	ExtensionType: ([]*Nested)(nil),
	Field:         63,
	Name:          "pb2.ExtensionsContainer.rpt_ext_nested",
	Tag:           "bytes,63,rep,name=rpt_ext_nested",
	Filename:      "pb2/test.proto",
}

var E_MessageSetExtension_MessageSetExtension = &proto.ExtensionDesc{
	ExtendedType:  (*MessageSet)(nil),
	ExtensionType: (*MessageSetExtension)(nil),
	Field:         10,
	Name:          "pb2.MessageSetExtension",
	Tag:           "bytes,10,opt,name=message_set_extension",
	Filename:      "pb2/test.proto",
}

var E_MessageSetExtension_NotMessageSetExtension = &proto.ExtensionDesc{
	ExtendedType:  (*MessageSet)(nil),
	ExtensionType: (*MessageSetExtension)(nil),
	Field:         20,
	Name:          "pb2.MessageSetExtension.not_message_set_extension",
	Tag:           "bytes,20,opt,name=not_message_set_extension",
	Filename:      "pb2/test.proto",
}

var E_MessageSetExtension_ExtNested = &proto.ExtensionDesc{
	ExtendedType:  (*MessageSet)(nil),
	ExtensionType: (*Nested)(nil),
	Field:         30,
	Name:          "pb2.MessageSetExtension.ext_nested",
	Tag:           "bytes,30,opt,name=ext_nested",
	Filename:      "pb2/test.proto",
}

var E_FakeMessageSetExtension_MessageSetExtension = &proto.ExtensionDesc{
	ExtendedType:  (*FakeMessageSet)(nil),
	ExtensionType: (*FakeMessageSetExtension)(nil),
	Field:         10,
	Name:          "pb2.FakeMessageSetExtension.message_set_extension",
	Tag:           "bytes,10,opt,name=message_set_extension",
	Filename:      "pb2/test.proto",
}

func init() {
	proto.RegisterFile("pb2/test.proto", xxx_File_pb2_test_proto_rawdesc_gzipped)
	proto.RegisterEnum("pb2.Enum", Enum_name, Enum_value)
	proto.RegisterEnum("pb2.Enums_NestedEnum", Enums_NestedEnum_name, Enums_NestedEnum_value)
	proto.RegisterType((*Scalars)(nil), "pb2.Scalars")
	proto.RegisterType((*Enums)(nil), "pb2.Enums")
	proto.RegisterType((*Repeats)(nil), "pb2.Repeats")
	proto.RegisterType((*Nested)(nil), "pb2.Nested")
	proto.RegisterType((*Nests)(nil), "pb2.Nests")
	proto.RegisterType((*Requireds)(nil), "pb2.Requireds")
	proto.RegisterType((*PartialRequired)(nil), "pb2.PartialRequired")
	proto.RegisterType((*NestedWithRequired)(nil), "pb2.NestedWithRequired")
	proto.RegisterType((*IndirectRequired)(nil), "pb2.IndirectRequired")
	proto.RegisterMapType((map[string]*NestedWithRequired)(nil), "pb2.IndirectRequired.StrToNestedEntry")
	proto.RegisterType((*Extensions)(nil), "pb2.Extensions")
	proto.RegisterType((*ExtensionsContainer)(nil), "pb2.ExtensionsContainer")
	proto.RegisterType((*MessageSet)(nil), "pb2.MessageSet")
	proto.RegisterType((*MessageSetExtension)(nil), "pb2.MessageSetExtension")
	proto.RegisterType((*FakeMessageSet)(nil), "pb2.FakeMessageSet")
	proto.RegisterType((*FakeMessageSetExtension)(nil), "pb2.FakeMessageSetExtension")
	proto.RegisterType((*KnownTypes)(nil), "pb2.KnownTypes")
	proto.RegisterType((*Nests_OptGroup)(nil), "pb2.Nests.OptGroup")
	proto.RegisterType((*Nests_RptGroup)(nil), "pb2.Nests.RptGroup")
	proto.RegisterType((*Nests_OptGroup_OptNestedGroup)(nil), "pb2.Nests.OptGroup.OptNestedGroup")
	proto.RegisterExtension(E_OptExtBool)
	proto.RegisterExtension(E_OptExtString)
	proto.RegisterExtension(E_OptExtEnum)
	proto.RegisterExtension(E_OptExtNested)
	proto.RegisterExtension(E_RptExtFixed32)
	proto.RegisterExtension(E_RptExtEnum)
	proto.RegisterExtension(E_RptExtNested)
	proto.RegisterExtension(E_MessageSetExtension)
	proto.RegisterExtension(E_ExtensionsContainer_OptExtBool)
	proto.RegisterExtension(E_ExtensionsContainer_OptExtString)
	proto.RegisterExtension(E_ExtensionsContainer_OptExtEnum)
	proto.RegisterExtension(E_ExtensionsContainer_OptExtNested)
	proto.RegisterExtension(E_ExtensionsContainer_RptExtString)
	proto.RegisterExtension(E_ExtensionsContainer_RptExtEnum)
	proto.RegisterExtension(E_ExtensionsContainer_RptExtNested)
	proto.RegisterExtension(E_MessageSetExtension_MessageSetExtension)
	proto.RegisterExtension(E_MessageSetExtension_NotMessageSetExtension)
	proto.RegisterExtension(E_MessageSetExtension_ExtNested)
	proto.RegisterExtension(E_FakeMessageSetExtension_MessageSetExtension)
}

var xxx_File_pb2_test_proto_rawdesc = []byte{
	// 5126 bytes of the wire-encoded FileDescriptorProto
	0x0a, 0x0e, 0x70, 0x62, 0x32, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
	0x12, 0x03, 0x70, 0x62, 0x32, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
	0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
	0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64,
	0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73,
	0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d,
	0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72,
	0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xda, 0x03, 0x0a,
	0x07, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x70, 0x74, 0x5f,
	0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x42,
	0x6f, 0x6f, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x49, 0x6e, 0x74, 0x33, 0x32,
	0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x03, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x1d, 0x0a,
	0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x04, 0x20, 0x01, 0x28,
	0x0d, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x1d, 0x0a, 0x0a,
	0x6f, 0x70, 0x74, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04,
	0x52, 0x09, 0x6f, 0x70, 0x74, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x1d, 0x0a, 0x0a, 0x6f,
	0x70, 0x74, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x06, 0x20, 0x01, 0x28, 0x11, 0x52,
	0x09, 0x6f, 0x70, 0x74, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70,
	0x74, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x07, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09,
	0x6f, 0x70, 0x74, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x70, 0x74,
	0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x08, 0x20, 0x01, 0x28, 0x07, 0x52, 0x0a,
	0x6f, 0x70, 0x74, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x70,
	0x74, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x09, 0x20, 0x01, 0x28, 0x06, 0x52,
	0x0a, 0x6f, 0x70, 0x74, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x21, 0x0a, 0x0c, 0x6f,
	0x70, 0x74, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x0a, 0x20, 0x01, 0x28,
	0x0f, 0x52, 0x0b, 0x6f, 0x70, 0x74, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x21,
	0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x0b,
	0x20, 0x01, 0x28, 0x10, 0x52, 0x0b, 0x6f, 0x70, 0x74, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36,
	0x34, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x14,
	0x20, 0x01, 0x28, 0x02, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x1d,
	0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x15, 0x20, 0x01,
	0x28, 0x01, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x1b, 0x0a,
	0x09, 0x6f, 0x70, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0c,
	0x52, 0x08, 0x6f, 0x70, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70,
	0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
	0x6f, 0x70, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x22, 0xfb, 0x01, 0x0a, 0x05, 0x45, 0x6e,
	0x75, 0x6d, 0x73, 0x12, 0x24, 0x0a, 0x08, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x09, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x6e, 0x75, 0x6d,
	0x52, 0x07, 0x6f, 0x70, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x24, 0x0a, 0x08, 0x72, 0x70, 0x74,
	0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x09, 0x2e, 0x70, 0x62,
	0x32, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x07, 0x72, 0x70, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x12,
	0x3d, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e,
	0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45,
	0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52,
	0x0d, 0x6f, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x3d,
	0x0a, 0x0f, 0x72, 0x70, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75,
	0x6d, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x6e,
	0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0d,
	0x72, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x22, 0x28, 0x0a,
	0x0a, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x07, 0x0a, 0x03, 0x55,
	0x4e, 0x4f, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x44, 0x4f, 0x53, 0x10, 0x02, 0x12, 0x08, 0x0a,
	0x04, 0x44, 0x49, 0x45, 0x5a, 0x10, 0x0a, 0x22, 0x94, 0x02, 0x0a, 0x07, 0x52, 0x65, 0x70, 0x65,
	0x61, 0x74, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x70, 0x74, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18,
	0x01, 0x20, 0x03, 0x28, 0x08, 0x52, 0x07, 0x72, 0x70, 0x74, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x1b,
	0x0a, 0x09, 0x72, 0x70, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x02, 0x20, 0x03, 0x28,
	0x05, 0x52, 0x08, 0x72, 0x70, 0x74, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x1b, 0x0a, 0x09, 0x72,
	0x70, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, 0x52, 0x08,
	0x72, 0x70, 0x74, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x70, 0x74, 0x5f,
	0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x09, 0x72, 0x70,
	0x74, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x70, 0x74, 0x5f, 0x75,
	0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x05, 0x20, 0x03, 0x28, 0x04, 0x52, 0x09, 0x72, 0x70, 0x74,
	0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x70, 0x74, 0x5f, 0x66, 0x6c,
	0x6f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x03, 0x28, 0x02, 0x52, 0x08, 0x72, 0x70, 0x74, 0x46, 0x6c,
	0x6f, 0x61, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x70, 0x74, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c,
	0x65, 0x18, 0x07, 0x20, 0x03, 0x28, 0x01, 0x52, 0x09, 0x72, 0x70, 0x74, 0x44, 0x6f, 0x75, 0x62,
	0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67,
	0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x72, 0x70, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e,
	0x67, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x70, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x09,
	0x20, 0x03, 0x28, 0x0c, 0x52, 0x08, 0x72, 0x70, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0x53,
	0x0a, 0x06, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f,
	0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x70,
	0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x2a, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x6e,
	0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62,
	0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x4e, 0x65, 0x73,
	0x74, 0x65, 0x64, 0x22, 0xd3, 0x03, 0x0a, 0x05, 0x4e, 0x65, 0x73, 0x74, 0x73, 0x12, 0x2a, 0x0a,
	0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x09,
	0x6f, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x2f, 0x0a, 0x08, 0x6f, 0x70, 0x74,
	0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0a, 0x32, 0x13, 0x2e, 0x70, 0x62,
	0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x4f, 0x70, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70,
	0x52, 0x08, 0x6f, 0x70, 0x74, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x2a, 0x0a, 0x0a, 0x72, 0x70,
	0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b,
	0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x09, 0x72, 0x70, 0x74,
	0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x2f, 0x0a, 0x08, 0x72, 0x70, 0x74, 0x67, 0x72, 0x6f,
	0x75, 0x70, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0a, 0x32, 0x13, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e,
	0x65, 0x73, 0x74, 0x73, 0x2e, 0x52, 0x70, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x08, 0x72,
	0x70, 0x74, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x1a, 0xd4, 0x01, 0x0a, 0x08, 0x4f, 0x70, 0x74, 0x47,
	0x72, 0x6f, 0x75, 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69,
	0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x74, 0x72,
	0x69, 0x6e, 0x67, 0x12, 0x2a, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65,
	0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65,
	0x73, 0x74, 0x65, 0x64, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12,
	0x4a, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x67, 0x72, 0x6f, 0x75,
	0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0a, 0x32, 0x22, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65,
	0x73, 0x74, 0x73, 0x2e, 0x4f, 0x70, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x4f, 0x70, 0x74,
	0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0e, 0x6f, 0x70, 0x74,
	0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x1a, 0x31, 0x0a, 0x0e, 0x4f,
	0x70, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1f, 0x0a,
	0x0b, 0x6f, 0x70, 0x74, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x07, 0x52, 0x0a, 0x6f, 0x70, 0x74, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x1a, 0x29,
	0x0a, 0x08, 0x52, 0x70, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x70,
	0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09,
	0x72, 0x70, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x0e, 0x72, 0x65, 0x73, 0x65, 0x72,
	0x76, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x22, 0xd9, 0x01, 0x0a, 0x09, 0x52, 0x65,
	0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x5f, 0x62,
	0x6f, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x02, 0x28, 0x08, 0x52, 0x07, 0x72, 0x65, 0x71, 0x42, 0x6f,
	0x6f, 0x6c, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x71, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64,
	0x36, 0x34, 0x18, 0x02, 0x20, 0x02, 0x28, 0x10, 0x52, 0x0b, 0x72, 0x65, 0x71, 0x53, 0x66, 0x69,
	0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x5f, 0x64, 0x6f, 0x75,
	0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x02, 0x28, 0x01, 0x52, 0x09, 0x72, 0x65, 0x71, 0x44, 0x6f,
	0x75, 0x62, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x5f, 0x73, 0x74, 0x72, 0x69,
	0x6e, 0x67, 0x18, 0x04, 0x20, 0x02, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x53, 0x74, 0x72,
	0x69, 0x6e, 0x67, 0x12, 0x24, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18,
	0x05, 0x20, 0x02, 0x28, 0x0e, 0x32, 0x09, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x6e, 0x75, 0x6d,
	0x52, 0x07, 0x72, 0x65, 0x71, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x2a, 0x0a, 0x0a, 0x72, 0x65, 0x71,
	0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x06, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x0b, 0x2e,
	0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x09, 0x72, 0x65, 0x71, 0x4e,
	0x65, 0x73, 0x74, 0x65, 0x64, 0x22, 0x4f, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c,
	0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x5f,
	0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65,
	0x71, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73,
	0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x70, 0x74,
	0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x22, 0x33, 0x0a, 0x12, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
	0x57, 0x69, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a,
	0x72, 0x65, 0x71, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09,
	0x52, 0x09, 0x72, 0x65, 0x71, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x22, 0xee, 0x02, 0x0a, 0x10,
	0x49, 0x6e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64,
	0x12, 0x36, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65,
	0x64, 0x57, 0x69, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x52, 0x09, 0x6f,
	0x70, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x36, 0x0a, 0x0a, 0x72, 0x70, 0x74, 0x5f,
	0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70,
	0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x57, 0x69, 0x74, 0x68, 0x52, 0x65, 0x71,
	0x75, 0x69, 0x72, 0x65, 0x64, 0x52, 0x09, 0x72, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
	0x12, 0x4a, 0x0a, 0x0d, 0x73, 0x74, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65,
	0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x49, 0x6e,
	0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x2e, 0x53,
	0x74, 0x72, 0x54, 0x6f, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
	0x0b, 0x73, 0x74, 0x72, 0x54, 0x6f, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x3c, 0x0a, 0x0c,
	0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x57,
	0x69, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0b, 0x6f,
	0x6e, 0x65, 0x6f, 0x66, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x1a, 0x57, 0x0a, 0x10, 0x53, 0x74,
	0x72, 0x54, 0x6f, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
	0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,
	0x12, 0x2d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x17, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x57, 0x69, 0x74, 0x68,
	0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
	0x02, 0x38, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x22, 0x69, 0x0a, 0x0a,
	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70,
	0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
	0x6f, 0x70, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x70, 0x74,
	0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x65, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6f, 0x70, 0x74,
	0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x33,
	0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x49, 0x6e, 0x74, 0x33,
	0x32, 0x2a, 0x04, 0x08, 0x14, 0x10, 0x65, 0x22, 0xba, 0x03, 0x0a, 0x13, 0x45, 0x78, 0x74, 0x65,
	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x32,
	0x31, 0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x12,
	0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73,
	0x18, 0x33, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x42, 0x6f,
	0x6f, 0x6c, 0x32, 0x35, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x73, 0x74,
	0x72, 0x69, 0x6e, 0x67, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e,
	0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x34, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x70, 0x74,
	0x45, 0x78, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x32, 0x3c, 0x0a, 0x0c, 0x6f, 0x70, 0x74,
	0x5f, 0x65, 0x78, 0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e,
	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x35, 0x20, 0x01, 0x28, 0x0e,
	0x32, 0x09, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0a, 0x6f, 0x70, 0x74,
	0x45, 0x78, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x32, 0x42, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x5f, 0x65,
	0x78, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e,
	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x36, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x0b, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x0c, 0x6f,
	0x70, 0x74, 0x45, 0x78, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x32, 0x35, 0x0a, 0x0e, 0x72,
	0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x0f, 0x2e,
	0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x3d,
	0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x70, 0x74, 0x45, 0x78, 0x74, 0x53, 0x74, 0x72, 0x69,
	0x6e, 0x67, 0x32, 0x3c, 0x0a, 0x0c, 0x72, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x65, 0x6e,
	0x75, 0x6d, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
	0x6f, 0x6e, 0x73, 0x18, 0x3e, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x09, 0x2e, 0x70, 0x62, 0x32, 0x2e,
	0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0a, 0x72, 0x70, 0x74, 0x45, 0x78, 0x74, 0x45, 0x6e, 0x75, 0x6d,
	0x32, 0x42, 0x0a, 0x0e, 0x72, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74,
	0x65, 0x64, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
	0x6f, 0x6e, 0x73, 0x18, 0x3f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x32, 0x2e,
	0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x0c, 0x72, 0x70, 0x74, 0x45, 0x78, 0x74, 0x4e, 0x65,
	0x73, 0x74, 0x65, 0x64, 0x22, 0x1a, 0x0a, 0x0a, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53,
	0x65, 0x74, 0x2a, 0x08, 0x08, 0x04, 0x10, 0xff, 0xff, 0xff, 0xff, 0x07, 0x3a, 0x02, 0x08, 0x01,
	0x22, 0xb6, 0x02, 0x0a, 0x13, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45,
	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f,
	0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x70,
	0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x32, 0x5d, 0x0a, 0x15, 0x6d, 0x65, 0x73, 0x73, 0x61,
	0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
	0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65,
	0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4d, 0x65,
	0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
	0x6e, 0x52, 0x13, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74,
	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x32, 0x64, 0x0a, 0x19, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x65,
	0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73,
	0x69, 0x6f, 0x6e, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
	0x65, 0x53, 0x65, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x62, 0x32,
	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e,
	0x73, 0x69, 0x6f, 0x6e, 0x52, 0x16, 0x6e, 0x6f, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
	0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x32, 0x3b, 0x0a, 0x0a,
	0x65, 0x78, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32,
	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x18, 0x1e, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x09,
	0x65, 0x78, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x22, 0x1a, 0x0a, 0x0e, 0x46, 0x61, 0x6b,
	0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x2a, 0x08, 0x08, 0x04, 0x10,
	0x80, 0x80, 0x80, 0x80, 0x02, 0x22, 0x9f, 0x01, 0x0a, 0x17, 0x46, 0x61, 0x6b, 0x65, 0x4d, 0x65,
	0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
	0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67,
	0x32, 0x65, 0x0a, 0x15, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f,
	0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x13, 0x2e, 0x70, 0x62, 0x32, 0x2e,
	0x46, 0x61, 0x6b, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x18, 0x0a,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x46, 0x61, 0x6b, 0x65, 0x4d,
	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
	0x6f, 0x6e, 0x52, 0x13, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78,
	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xa6, 0x07, 0x0a, 0x0a, 0x4b, 0x6e, 0x6f, 0x77,
	0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x08, 0x6f, 0x70, 0x74, 0x5f, 0x62, 0x6f,
	0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56,
	0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x38, 0x0a,
	0x09, 0x6f, 0x70, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
	0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6f,
	0x70, 0x74, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x38, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x69,
	0x6e, 0x74, 0x36, 0x34, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74,
	0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x49, 0x6e, 0x74, 0x36,
	0x34, 0x12, 0x3b, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61,
	0x6c, 0x75, 0x65, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x3b,
	0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x05, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65,
	0x52, 0x09, 0x6f, 0x70, 0x74, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x38, 0x0a, 0x09, 0x6f,
	0x70, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
	0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6f, 0x70, 0x74,
	0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x3b, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x64, 0x6f, 0x75,
	0x62, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x6f, 0x75, 0x62,
	0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x44, 0x6f, 0x75, 0x62,
	0x6c, 0x65, 0x12, 0x3b, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67,
	0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56,
	0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12,
	0x38, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x79, 0x74, 0x65, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52,
	0x08, 0x6f, 0x70, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3c, 0x0a, 0x0c, 0x6f, 0x70, 0x74,
	0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
	0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x6f, 0x70, 0x74, 0x44,
	0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x0d, 0x6f, 0x70, 0x74, 0x5f, 0x74,
	0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
	0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x54,
	0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x36, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f,
	0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53,
	0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74,
	0x12, 0x35, 0x0a, 0x08, 0x6f, 0x70, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x1a, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07,
	0x6f, 0x70, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x33, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x76,
	0x61, 0x6c, 0x75, 0x65, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c,
	0x75, 0x65, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x33, 0x0a, 0x09,
	0x6f, 0x70, 0x74, 0x5f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
	0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x45, 0x6d, 0x70, 0x74,
	0x79, 0x12, 0x2d, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x5f, 0x61, 0x6e, 0x79, 0x18, 0x20, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x06, 0x6f, 0x70, 0x74, 0x41, 0x6e, 0x79,
	0x2a, 0x21, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x07, 0x0a, 0x03, 0x4f, 0x4e, 0x45, 0x10,
	0x01, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x57, 0x4f, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x45,
	0x4e, 0x10, 0x0a, 0x3a, 0x31, 0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x62,
	0x6f, 0x6f, 0x6c, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6f, 0x70, 0x74, 0x45,
	0x78, 0x74, 0x42, 0x6f, 0x6f, 0x6c, 0x3a, 0x35, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78,
	0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45,
	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x0c, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x3a, 0x3c, 0x0a,
	0x0c, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x2e,
	0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x17,
	0x20, 0x01, 0x28, 0x0e, 0x32, 0x09, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52,
	0x0a, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x42, 0x0a, 0x0e, 0x6f,
	0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x0f, 0x2e,
	0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x18,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65,
	0x64, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x3a,
	0x37, 0x0a, 0x0f, 0x72, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64,
	0x33, 0x32, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
	0x6f, 0x6e, 0x73, 0x18, 0x1f, 0x20, 0x03, 0x28, 0x07, 0x52, 0x0d, 0x72, 0x70, 0x74, 0x45, 0x78,
	0x74, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x3a, 0x3c, 0x0a, 0x0c, 0x72, 0x70, 0x74, 0x5f,
	0x65, 0x78, 0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45,
	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x20, 0x20, 0x03, 0x28, 0x0e, 0x32,
	0x09, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0a, 0x72, 0x70, 0x74, 0x45,
	0x78, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x42, 0x0a, 0x0e, 0x72, 0x70, 0x74, 0x5f, 0x65, 0x78,
	0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45,
	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x21, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x0b, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x0c, 0x72, 0x70,
	0x74, 0x45, 0x78, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x3a, 0x61, 0x0a, 0x15, 0x6d, 0x65,
	0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73,
	0x69, 0x6f, 0x6e, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
	0x65, 0x53, 0x65, 0x74, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x62, 0x32,
	0x2e, 0x46, 0x61, 0x6b, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45,
	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
	0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x37, 0x5a,
	0x35, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6c, 0x61,
	0x6e, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x76, 0x32, 0x2f, 0x65,
	0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74,
	0x6f, 0x73, 0x2f, 0x70, 0x62, 0x32,
}

var xxx_File_pb2_test_proto_rawdesc_gzipped = protoapi.CompressGZIP(xxx_File_pb2_test_proto_rawdesc)

const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)

var File_pb2_test_proto protoreflect.FileDescriptor

var xxx_File_pb2_test_proto_enumTypes = make([]protoreflect.EnumType, 2)
var xxx_File_pb2_test_proto_messageTypes = make([]protoimpl.MessageType, 20)
var xxx_File_pb2_test_proto_goTypes = []interface{}{
	(Enum)(0),                             // 0: pb2.Enum
	(Enums_NestedEnum)(0),                 // 1: pb2.Enums.NestedEnum
	(*Scalars)(nil),                       // 2: pb2.Scalars
	(*Enums)(nil),                         // 3: pb2.Enums
	(*Repeats)(nil),                       // 4: pb2.Repeats
	(*Nested)(nil),                        // 5: pb2.Nested
	(*Nests)(nil),                         // 6: pb2.Nests
	(*Requireds)(nil),                     // 7: pb2.Requireds
	(*PartialRequired)(nil),               // 8: pb2.PartialRequired
	(*NestedWithRequired)(nil),            // 9: pb2.NestedWithRequired
	(*IndirectRequired)(nil),              // 10: pb2.IndirectRequired
	(*Extensions)(nil),                    // 11: pb2.Extensions
	(*ExtensionsContainer)(nil),           // 12: pb2.ExtensionsContainer
	(*MessageSet)(nil),                    // 13: pb2.MessageSet
	(*MessageSetExtension)(nil),           // 14: pb2.MessageSetExtension
	(*FakeMessageSet)(nil),                // 15: pb2.FakeMessageSet
	(*FakeMessageSetExtension)(nil),       // 16: pb2.FakeMessageSetExtension
	(*KnownTypes)(nil),                    // 17: pb2.KnownTypes
	(*Nests_OptGroup)(nil),                // 18: pb2.Nests.OptGroup
	(*Nests_RptGroup)(nil),                // 19: pb2.Nests.RptGroup
	(*Nests_OptGroup_OptNestedGroup)(nil), // 20: pb2.Nests.OptGroup.OptNestedGroup
	nil,                                   // 21: pb2.IndirectRequired.StrToNestedEntry
	(*known.BoolValue)(nil),               // 22: google.protobuf.BoolValue
	(*known.Int32Value)(nil),              // 23: google.protobuf.Int32Value
	(*known.Int64Value)(nil),              // 24: google.protobuf.Int64Value
	(*known.UInt32Value)(nil),             // 25: google.protobuf.UInt32Value
	(*known.UInt64Value)(nil),             // 26: google.protobuf.UInt64Value
	(*known.FloatValue)(nil),              // 27: google.protobuf.FloatValue
	(*known.DoubleValue)(nil),             // 28: google.protobuf.DoubleValue
	(*known.StringValue)(nil),             // 29: google.protobuf.StringValue
	(*known.BytesValue)(nil),              // 30: google.protobuf.BytesValue
	(*known.Duration)(nil),                // 31: google.protobuf.Duration
	(*known.Timestamp)(nil),               // 32: google.protobuf.Timestamp
	(*known.Struct)(nil),                  // 33: google.protobuf.Struct
	(*known.ListValue)(nil),               // 34: google.protobuf.ListValue
	(*known.Value)(nil),                   // 35: google.protobuf.Value
	(*known.Empty)(nil),                   // 36: google.protobuf.Empty
	(*known.Any)(nil),                     // 37: google.protobuf.Any
}
var xxx_File_pb2_test_proto_depIdxs = []int32{
	11, // pb2.opt_ext_bool:extendee -> pb2.Extensions
	11, // pb2.opt_ext_string:extendee -> pb2.Extensions
	11, // pb2.opt_ext_enum:extendee -> pb2.Extensions
	11, // pb2.opt_ext_nested:extendee -> pb2.Extensions
	11, // pb2.rpt_ext_fixed32:extendee -> pb2.Extensions
	11, // pb2.rpt_ext_enum:extendee -> pb2.Extensions
	11, // pb2.rpt_ext_nested:extendee -> pb2.Extensions
	13, // pb2.message_set_extension:extendee -> pb2.MessageSet
	11, // pb2.ExtensionsContainer.opt_ext_bool:extendee -> pb2.Extensions
	11, // pb2.ExtensionsContainer.opt_ext_string:extendee -> pb2.Extensions
	11, // pb2.ExtensionsContainer.opt_ext_enum:extendee -> pb2.Extensions
	11, // pb2.ExtensionsContainer.opt_ext_nested:extendee -> pb2.Extensions
	11, // pb2.ExtensionsContainer.rpt_ext_string:extendee -> pb2.Extensions
	11, // pb2.ExtensionsContainer.rpt_ext_enum:extendee -> pb2.Extensions
	11, // pb2.ExtensionsContainer.rpt_ext_nested:extendee -> pb2.Extensions
	13, // pb2.MessageSetExtension.message_set_extension:extendee -> pb2.MessageSet
	13, // pb2.MessageSetExtension.not_message_set_extension:extendee -> pb2.MessageSet
	13, // pb2.MessageSetExtension.ext_nested:extendee -> pb2.MessageSet
	15, // pb2.FakeMessageSetExtension.message_set_extension:extendee -> pb2.FakeMessageSet
	0,  // pb2.Enums.opt_enum:type_name -> pb2.Enum
	0,  // pb2.Enums.rpt_enum:type_name -> pb2.Enum
	1,  // pb2.Enums.opt_nested_enum:type_name -> pb2.Enums.NestedEnum
	1,  // pb2.Enums.rpt_nested_enum:type_name -> pb2.Enums.NestedEnum
	5,  // pb2.Nested.opt_nested:type_name -> pb2.Nested
	5,  // pb2.Nests.opt_nested:type_name -> pb2.Nested
	18, // pb2.Nests.optgroup:type_name -> pb2.Nests.OptGroup
	5,  // pb2.Nests.rpt_nested:type_name -> pb2.Nested
	19, // pb2.Nests.rptgroup:type_name -> pb2.Nests.RptGroup
	0,  // pb2.Requireds.req_enum:type_name -> pb2.Enum
	5,  // pb2.Requireds.req_nested:type_name -> pb2.Nested
	9,  // pb2.IndirectRequired.opt_nested:type_name -> pb2.NestedWithRequired
	9,  // pb2.IndirectRequired.rpt_nested:type_name -> pb2.NestedWithRequired
	21, // pb2.IndirectRequired.str_to_nested:type_name -> pb2.IndirectRequired.StrToNestedEntry
	9,  // pb2.IndirectRequired.oneof_nested:type_name -> pb2.NestedWithRequired
	22, // pb2.KnownTypes.opt_bool:type_name -> google.protobuf.BoolValue
	23, // pb2.KnownTypes.opt_int32:type_name -> google.protobuf.Int32Value
	24, // pb2.KnownTypes.opt_int64:type_name -> google.protobuf.Int64Value
	25, // pb2.KnownTypes.opt_uint32:type_name -> google.protobuf.UInt32Value
	26, // pb2.KnownTypes.opt_uint64:type_name -> google.protobuf.UInt64Value
	27, // pb2.KnownTypes.opt_float:type_name -> google.protobuf.FloatValue
	28, // pb2.KnownTypes.opt_double:type_name -> google.protobuf.DoubleValue
	29, // pb2.KnownTypes.opt_string:type_name -> google.protobuf.StringValue
	30, // pb2.KnownTypes.opt_bytes:type_name -> google.protobuf.BytesValue
	31, // pb2.KnownTypes.opt_duration:type_name -> google.protobuf.Duration
	32, // pb2.KnownTypes.opt_timestamp:type_name -> google.protobuf.Timestamp
	33, // pb2.KnownTypes.opt_struct:type_name -> google.protobuf.Struct
	34, // pb2.KnownTypes.opt_list:type_name -> google.protobuf.ListValue
	35, // pb2.KnownTypes.opt_value:type_name -> google.protobuf.Value
	36, // pb2.KnownTypes.opt_empty:type_name -> google.protobuf.Empty
	37, // pb2.KnownTypes.opt_any:type_name -> google.protobuf.Any
	5,  // pb2.Nests.OptGroup.opt_nested:type_name -> pb2.Nested
	20, // pb2.Nests.OptGroup.optnestedgroup:type_name -> pb2.Nests.OptGroup.OptNestedGroup
	9,  // pb2.IndirectRequired.StrToNestedEntry.value:type_name -> pb2.NestedWithRequired
	0,  // pb2.opt_ext_enum:type_name -> pb2.Enum
	5,  // pb2.opt_ext_nested:type_name -> pb2.Nested
	0,  // pb2.rpt_ext_enum:type_name -> pb2.Enum
	5,  // pb2.rpt_ext_nested:type_name -> pb2.Nested
	16, // pb2.message_set_extension:type_name -> pb2.FakeMessageSetExtension
	0,  // pb2.ExtensionsContainer.opt_ext_enum:type_name -> pb2.Enum
	5,  // pb2.ExtensionsContainer.opt_ext_nested:type_name -> pb2.Nested
	0,  // pb2.ExtensionsContainer.rpt_ext_enum:type_name -> pb2.Enum
	5,  // pb2.ExtensionsContainer.rpt_ext_nested:type_name -> pb2.Nested
	14, // pb2.MessageSetExtension.message_set_extension:type_name -> pb2.MessageSetExtension
	14, // pb2.MessageSetExtension.not_message_set_extension:type_name -> pb2.MessageSetExtension
	5,  // pb2.MessageSetExtension.ext_nested:type_name -> pb2.Nested
	16, // pb2.FakeMessageSetExtension.message_set_extension:type_name -> pb2.FakeMessageSetExtension
}

func init() { xxx_File_pb2_test_proto_init() }
func xxx_File_pb2_test_proto_init() {
	if File_pb2_test_proto != nil {
		return
	}
	messageTypes := make([]protoreflect.MessageType, 20)
	extensionTypes := make([]protoreflect.ExtensionType, 19)
	File_pb2_test_proto = protoimpl.FileBuilder{
		RawDescriptor:        xxx_File_pb2_test_proto_rawdesc,
		GoTypes:              xxx_File_pb2_test_proto_goTypes,
		DependencyIndexes:    xxx_File_pb2_test_proto_depIdxs,
		EnumOutputTypes:      xxx_File_pb2_test_proto_enumTypes,
		MessageOutputTypes:   messageTypes,
		ExtensionOutputTypes: extensionTypes,
	}.Init()
	messageGoTypes := xxx_File_pb2_test_proto_goTypes[2:][:20]
	for i, mt := range messageTypes {
		xxx_File_pb2_test_proto_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
		xxx_File_pb2_test_proto_messageTypes[i].PBType = mt
	}
	E_OptExtBool.Type = extensionTypes[0]
	E_OptExtString.Type = extensionTypes[1]
	E_OptExtEnum.Type = extensionTypes[2]
	E_OptExtNested.Type = extensionTypes[3]
	E_RptExtFixed32.Type = extensionTypes[4]
	E_RptExtEnum.Type = extensionTypes[5]
	E_RptExtNested.Type = extensionTypes[6]
	E_MessageSetExtension.Type = extensionTypes[7]
	E_ExtensionsContainer_OptExtBool.Type = extensionTypes[8]
	E_ExtensionsContainer_OptExtString.Type = extensionTypes[9]
	E_ExtensionsContainer_OptExtEnum.Type = extensionTypes[10]
	E_ExtensionsContainer_OptExtNested.Type = extensionTypes[11]
	E_ExtensionsContainer_RptExtString.Type = extensionTypes[12]
	E_ExtensionsContainer_RptExtEnum.Type = extensionTypes[13]
	E_ExtensionsContainer_RptExtNested.Type = extensionTypes[14]
	E_MessageSetExtension_MessageSetExtension.Type = extensionTypes[15]
	E_MessageSetExtension_NotMessageSetExtension.Type = extensionTypes[16]
	E_MessageSetExtension_ExtNested.Type = extensionTypes[17]
	E_FakeMessageSetExtension_MessageSetExtension.Type = extensionTypes[18]
	xxx_File_pb2_test_proto_goTypes = nil
	xxx_File_pb2_test_proto_depIdxs = nil
}
