// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.28.1
// 	protoc        v3.20.0
// source: api/mesh/v1alpha1/tag_route.proto

package v1alpha1

import (
	reflect "reflect"
	sync "sync"
)

import (
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"

	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
)

import (
	_ "github.com/apache/dubbo-kubernetes/api/mesh"
)

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

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

	Priority      int32  `protobuf:"varint,1,opt,name=priority,proto3" json:"priority,omitempty"`
	Enabled       bool   `protobuf:"varint,2,opt,name=enabled,proto3" json:"enabled,omitempty"`
	Runtime       bool   `protobuf:"varint,3,opt,name=runtime,proto3" json:"runtime,omitempty"`
	Key           string `protobuf:"bytes,4,opt,name=key,proto3" json:"key,omitempty"`
	ConfigVersion string `protobuf:"bytes,5,opt,name=configVersion,proto3" json:"configVersion,omitempty"`
	Force         bool   `protobuf:"varint,6,opt,name=force,proto3" json:"force,omitempty"`
	Tags          []*Tag `protobuf:"bytes,7,rep,name=tags,proto3" json:"tags,omitempty"`
}

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

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

func (*TagRoute) ProtoMessage() {}

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

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

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

func (x *TagRoute) GetEnabled() bool {
	if x != nil {
		return x.Enabled
	}
	return false
}

func (x *TagRoute) GetRuntime() bool {
	if x != nil {
		return x.Runtime
	}
	return false
}

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

func (x *TagRoute) GetConfigVersion() string {
	if x != nil {
		return x.ConfigVersion
	}
	return ""
}

func (x *TagRoute) GetForce() bool {
	if x != nil {
		return x.Force
	}
	return false
}

func (x *TagRoute) GetTags() []*Tag {
	if x != nil {
		return x.Tags
	}
	return nil
}

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

	Name      string        `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	Addresses []string      `protobuf:"bytes,2,rep,name=addresses,proto3" json:"addresses,omitempty"`
	Match     []*ParamMatch `protobuf:"bytes,3,rep,name=match,proto3" json:"match,omitempty"`
}

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

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

func (*Tag) ProtoMessage() {}

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

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

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

func (x *Tag) GetAddresses() []string {
	if x != nil {
		return x.Addresses
	}
	return nil
}

func (x *Tag) GetMatch() []*ParamMatch {
	if x != nil {
		return x.Match
	}
	return nil
}

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

	Exact    string `protobuf:"bytes,1,opt,name=exact,proto3" json:"exact,omitempty"`
	Prefix   string `protobuf:"bytes,2,opt,name=prefix,proto3" json:"prefix,omitempty"`
	Regex    string `protobuf:"bytes,3,opt,name=regex,proto3" json:"regex,omitempty"`
	Noempty  string `protobuf:"bytes,4,opt,name=noempty,proto3" json:"noempty,omitempty"`
	Empty    string `protobuf:"bytes,5,opt,name=empty,proto3" json:"empty,omitempty"`
	Wildcard string `protobuf:"bytes,6,opt,name=wildcard,proto3" json:"wildcard,omitempty"`
}

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

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

func (*StringMatch) ProtoMessage() {}

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

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

func (x *StringMatch) GetExact() string {
	if x != nil {
		return x.Exact
	}
	return ""
}

func (x *StringMatch) GetPrefix() string {
	if x != nil {
		return x.Prefix
	}
	return ""
}

func (x *StringMatch) GetRegex() string {
	if x != nil {
		return x.Regex
	}
	return ""
}

func (x *StringMatch) GetNoempty() string {
	if x != nil {
		return x.Noempty
	}
	return ""
}

func (x *StringMatch) GetEmpty() string {
	if x != nil {
		return x.Empty
	}
	return ""
}

func (x *StringMatch) GetWildcard() string {
	if x != nil {
		return x.Wildcard
	}
	return ""
}

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

	Key   string       `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
	Value *StringMatch `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
}

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

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

func (*ParamMatch) ProtoMessage() {}

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

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

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

func (x *ParamMatch) GetValue() *StringMatch {
	if x != nil {
		return x.Value
	}
	return nil
}

var File_api_mesh_v1alpha1_tag_route_proto protoreflect.FileDescriptor

var file_api_mesh_v1alpha1_tag_route_proto_rawDesc = []byte{
	0x0a, 0x21, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x65, 0x73, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70,
	0x68, 0x61, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x12, 0x13, 0x64, 0x75, 0x62, 0x62, 0x6f, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x2e,
	0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x1a, 0x16, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x65,
	0x73, 0x68, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
	0x22, 0xc3, 0x02, 0x0a, 0x08, 0x54, 0x61, 0x67, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x1a, 0x0a,
	0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
	0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61,
	0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62,
	0x6c, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x10, 0x0a,
	0x03, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
	0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
	0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, 0x65,
	0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x06,
	0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x12, 0x2c, 0x0a, 0x04, 0x74,
	0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x64, 0x75, 0x62, 0x62,
	0x6f, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
	0x54, 0x61, 0x67, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x3a, 0x6b, 0xaa, 0x8c, 0x89, 0xa6, 0x01,
	0x12, 0x0a, 0x10, 0x54, 0x61, 0x67, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75,
	0x72, 0x63, 0x65, 0xaa, 0x8c, 0x89, 0xa6, 0x01, 0x0a, 0x12, 0x08, 0x54, 0x61, 0x67, 0x52, 0x6f,
	0x75, 0x74, 0x65, 0xaa, 0x8c, 0x89, 0xa6, 0x01, 0x06, 0x22, 0x04, 0x6d, 0x65, 0x73, 0x68, 0xaa,
	0x8c, 0x89, 0xa6, 0x01, 0x04, 0x52, 0x02, 0x10, 0x01, 0xaa, 0x8c, 0x89, 0xa6, 0x01, 0x0c, 0x3a,
	0x0a, 0x0a, 0x08, 0x74, 0x61, 0x67, 0x72, 0x6f, 0x75, 0x74, 0x65, 0xaa, 0x8c, 0x89, 0xa6, 0x01,
	0x0d, 0x3a, 0x0b, 0x12, 0x09, 0x74, 0x61, 0x67, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0xaa, 0x8c,
	0x89, 0xa6, 0x01, 0x02, 0x68, 0x01, 0x22, 0x6e, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x12, 0x12, 0x0a,
	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d,
	0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x02,
	0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12,
	0x35, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f,
	0x2e, 0x64, 0x75, 0x62, 0x62, 0x6f, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c,
	0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52,
	0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x9d, 0x01, 0x0a, 0x0b, 0x53, 0x74, 0x72, 0x69, 0x6e,
	0x67, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x78, 0x61, 0x63, 0x74, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x78, 0x61, 0x63, 0x74, 0x12, 0x16, 0x0a, 0x06,
	0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x72,
	0x65, 0x66, 0x69, 0x78, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x6f,
	0x65, 0x6d, 0x70, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x6f, 0x65,
	0x6d, 0x70, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x18, 0x05, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x69,
	0x6c, 0x64, 0x63, 0x61, 0x72, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x69,
	0x6c, 0x64, 0x63, 0x61, 0x72, 0x64, 0x22, 0x56, 0x0a, 0x0a, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x4d,
	0x61, 0x74, 0x63, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x36, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, 0x75, 0x62, 0x62, 0x6f, 0x2e, 0x6d, 0x65,
	0x73, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x69,
	0x6e, 0x67, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x36,
	0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x70, 0x61,
	0x63, 0x68, 0x65, 0x2f, 0x64, 0x75, 0x62, 0x62, 0x6f, 0x2d, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e,
	0x65, 0x74, 0x65, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x65, 0x73, 0x68, 0x2f, 0x76, 0x31,
	0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_api_mesh_v1alpha1_tag_route_proto_rawDescOnce sync.Once
	file_api_mesh_v1alpha1_tag_route_proto_rawDescData = file_api_mesh_v1alpha1_tag_route_proto_rawDesc
)

func file_api_mesh_v1alpha1_tag_route_proto_rawDescGZIP() []byte {
	file_api_mesh_v1alpha1_tag_route_proto_rawDescOnce.Do(func() {
		file_api_mesh_v1alpha1_tag_route_proto_rawDescData = protoimpl.X.CompressGZIP(file_api_mesh_v1alpha1_tag_route_proto_rawDescData)
	})
	return file_api_mesh_v1alpha1_tag_route_proto_rawDescData
}

var file_api_mesh_v1alpha1_tag_route_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
var file_api_mesh_v1alpha1_tag_route_proto_goTypes = []interface{}{
	(*TagRoute)(nil),    // 0: dubbo.mesh.v1alpha1.TagRoute
	(*Tag)(nil),         // 1: dubbo.mesh.v1alpha1.Tag
	(*StringMatch)(nil), // 2: dubbo.mesh.v1alpha1.StringMatch
	(*ParamMatch)(nil),  // 3: dubbo.mesh.v1alpha1.ParamMatch
}
var file_api_mesh_v1alpha1_tag_route_proto_depIdxs = []int32{
	1, // 0: dubbo.mesh.v1alpha1.TagRoute.tags:type_name -> dubbo.mesh.v1alpha1.Tag
	3, // 1: dubbo.mesh.v1alpha1.Tag.match:type_name -> dubbo.mesh.v1alpha1.ParamMatch
	2, // 2: dubbo.mesh.v1alpha1.ParamMatch.value:type_name -> dubbo.mesh.v1alpha1.StringMatch
	3, // [3:3] is the sub-list for method output_type
	3, // [3:3] is the sub-list for method input_type
	3, // [3:3] is the sub-list for extension type_name
	3, // [3:3] is the sub-list for extension extendee
	0, // [0:3] is the sub-list for field type_name
}

func init() { file_api_mesh_v1alpha1_tag_route_proto_init() }
func file_api_mesh_v1alpha1_tag_route_proto_init() {
	if File_api_mesh_v1alpha1_tag_route_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_api_mesh_v1alpha1_tag_route_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TagRoute); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_api_mesh_v1alpha1_tag_route_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Tag); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_api_mesh_v1alpha1_tag_route_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StringMatch); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_api_mesh_v1alpha1_tag_route_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ParamMatch); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_api_mesh_v1alpha1_tag_route_proto_rawDesc,
			NumEnums:      0,
			NumMessages:   4,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_api_mesh_v1alpha1_tag_route_proto_goTypes,
		DependencyIndexes: file_api_mesh_v1alpha1_tag_route_proto_depIdxs,
		MessageInfos:      file_api_mesh_v1alpha1_tag_route_proto_msgTypes,
	}.Build()
	File_api_mesh_v1alpha1_tag_route_proto = out.File
	file_api_mesh_v1alpha1_tag_route_proto_rawDesc = nil
	file_api_mesh_v1alpha1_tag_route_proto_goTypes = nil
	file_api_mesh_v1alpha1_tag_route_proto_depIdxs = nil
}
