gitee.com/zhaochuninhefei/gmgo@v0.0.31-0.20240209061119-069254a02979/go-control-plane/envoy/api/v2/route/route_components.pb.go (about)

     1  // Code generated by protoc-gen-go. DO NOT EDIT.
     2  // versions:
     3  // 	protoc-gen-go v1.25.0
     4  // 	protoc        v3.16.0
     5  // source: envoy/api/v2/route/route_components.proto
     6  
     7  package envoy_api_v2_route
     8  
     9  import (
    10  	_ "github.com/cncf/xds/go/udpa/annotations"
    11  	_ "gitee.com/zhaochuninhefei/gmgo/go-control-plane/envoy/annotations"
    12  	core "gitee.com/zhaochuninhefei/gmgo/go-control-plane/envoy/api/v2/core"
    13  	_type "gitee.com/zhaochuninhefei/gmgo/go-control-plane/envoy/type"
    14  	matcher "gitee.com/zhaochuninhefei/gmgo/go-control-plane/envoy/type/matcher"
    15  	v2 "gitee.com/zhaochuninhefei/gmgo/go-control-plane/envoy/type/tracing/v2"
    16  	_ "github.com/envoyproxy/protoc-gen-validate/validate"
    17  	proto "github.com/golang/protobuf/proto"
    18  	any "github.com/golang/protobuf/ptypes/any"
    19  	duration "github.com/golang/protobuf/ptypes/duration"
    20  	_struct "github.com/golang/protobuf/ptypes/struct"
    21  	wrappers "github.com/golang/protobuf/ptypes/wrappers"
    22  	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
    23  	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
    24  	reflect "reflect"
    25  	sync "sync"
    26  )
    27  
    28  const (
    29  	// Verify that this generated code is sufficiently up-to-date.
    30  	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
    31  	// Verify that runtime/protoimpl is sufficiently up-to-date.
    32  	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
    33  )
    34  
    35  // This is a compile-time assertion that a sufficiently up-to-date version
    36  // of the legacy proto package is being used.
    37  const _ = proto.ProtoPackageIsVersion4
    38  
    39  type VirtualHost_TlsRequirementType int32
    40  
    41  const (
    42  	// No TLS requirement for the virtual host.
    43  	VirtualHost_NONE VirtualHost_TlsRequirementType = 0
    44  	// External requests must use TLS. If a request is external and it is not
    45  	// using TLS, a 301 redirect will be sent telling the client to use HTTPS.
    46  	VirtualHost_EXTERNAL_ONLY VirtualHost_TlsRequirementType = 1
    47  	// All requests must use TLS. If a request is not using TLS, a 301 redirect
    48  	// will be sent telling the client to use HTTPS.
    49  	VirtualHost_ALL VirtualHost_TlsRequirementType = 2
    50  )
    51  
    52  // Enum value maps for VirtualHost_TlsRequirementType.
    53  var (
    54  	VirtualHost_TlsRequirementType_name = map[int32]string{
    55  		0: "NONE",
    56  		1: "EXTERNAL_ONLY",
    57  		2: "ALL",
    58  	}
    59  	VirtualHost_TlsRequirementType_value = map[string]int32{
    60  		"NONE":          0,
    61  		"EXTERNAL_ONLY": 1,
    62  		"ALL":           2,
    63  	}
    64  )
    65  
    66  func (x VirtualHost_TlsRequirementType) Enum() *VirtualHost_TlsRequirementType {
    67  	p := new(VirtualHost_TlsRequirementType)
    68  	*p = x
    69  	return p
    70  }
    71  
    72  func (x VirtualHost_TlsRequirementType) String() string {
    73  	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
    74  }
    75  
    76  func (VirtualHost_TlsRequirementType) Descriptor() protoreflect.EnumDescriptor {
    77  	return file_envoy_api_v2_route_route_components_proto_enumTypes[0].Descriptor()
    78  }
    79  
    80  func (VirtualHost_TlsRequirementType) Type() protoreflect.EnumType {
    81  	return &file_envoy_api_v2_route_route_components_proto_enumTypes[0]
    82  }
    83  
    84  func (x VirtualHost_TlsRequirementType) Number() protoreflect.EnumNumber {
    85  	return protoreflect.EnumNumber(x)
    86  }
    87  
    88  // Deprecated: Use VirtualHost_TlsRequirementType.Descriptor instead.
    89  func (VirtualHost_TlsRequirementType) EnumDescriptor() ([]byte, []int) {
    90  	return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{0, 0}
    91  }
    92  
    93  type RouteAction_ClusterNotFoundResponseCode int32
    94  
    95  const (
    96  	// HTTP status code - 503 Service Unavailable.
    97  	RouteAction_SERVICE_UNAVAILABLE RouteAction_ClusterNotFoundResponseCode = 0
    98  	// HTTP status code - 404 Not Found.
    99  	RouteAction_NOT_FOUND RouteAction_ClusterNotFoundResponseCode = 1
   100  )
   101  
   102  // Enum value maps for RouteAction_ClusterNotFoundResponseCode.
   103  var (
   104  	RouteAction_ClusterNotFoundResponseCode_name = map[int32]string{
   105  		0: "SERVICE_UNAVAILABLE",
   106  		1: "NOT_FOUND",
   107  	}
   108  	RouteAction_ClusterNotFoundResponseCode_value = map[string]int32{
   109  		"SERVICE_UNAVAILABLE": 0,
   110  		"NOT_FOUND":           1,
   111  	}
   112  )
   113  
   114  func (x RouteAction_ClusterNotFoundResponseCode) Enum() *RouteAction_ClusterNotFoundResponseCode {
   115  	p := new(RouteAction_ClusterNotFoundResponseCode)
   116  	*p = x
   117  	return p
   118  }
   119  
   120  func (x RouteAction_ClusterNotFoundResponseCode) String() string {
   121  	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
   122  }
   123  
   124  func (RouteAction_ClusterNotFoundResponseCode) Descriptor() protoreflect.EnumDescriptor {
   125  	return file_envoy_api_v2_route_route_components_proto_enumTypes[1].Descriptor()
   126  }
   127  
   128  func (RouteAction_ClusterNotFoundResponseCode) Type() protoreflect.EnumType {
   129  	return &file_envoy_api_v2_route_route_components_proto_enumTypes[1]
   130  }
   131  
   132  func (x RouteAction_ClusterNotFoundResponseCode) Number() protoreflect.EnumNumber {
   133  	return protoreflect.EnumNumber(x)
   134  }
   135  
   136  // Deprecated: Use RouteAction_ClusterNotFoundResponseCode.Descriptor instead.
   137  func (RouteAction_ClusterNotFoundResponseCode) EnumDescriptor() ([]byte, []int) {
   138  	return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{6, 0}
   139  }
   140  
   141  // Configures :ref:`internal redirect <arch_overview_internal_redirects>` behavior.
   142  type RouteAction_InternalRedirectAction int32
   143  
   144  const (
   145  	RouteAction_PASS_THROUGH_INTERNAL_REDIRECT RouteAction_InternalRedirectAction = 0
   146  	RouteAction_HANDLE_INTERNAL_REDIRECT       RouteAction_InternalRedirectAction = 1
   147  )
   148  
   149  // Enum value maps for RouteAction_InternalRedirectAction.
   150  var (
   151  	RouteAction_InternalRedirectAction_name = map[int32]string{
   152  		0: "PASS_THROUGH_INTERNAL_REDIRECT",
   153  		1: "HANDLE_INTERNAL_REDIRECT",
   154  	}
   155  	RouteAction_InternalRedirectAction_value = map[string]int32{
   156  		"PASS_THROUGH_INTERNAL_REDIRECT": 0,
   157  		"HANDLE_INTERNAL_REDIRECT":       1,
   158  	}
   159  )
   160  
   161  func (x RouteAction_InternalRedirectAction) Enum() *RouteAction_InternalRedirectAction {
   162  	p := new(RouteAction_InternalRedirectAction)
   163  	*p = x
   164  	return p
   165  }
   166  
   167  func (x RouteAction_InternalRedirectAction) String() string {
   168  	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
   169  }
   170  
   171  func (RouteAction_InternalRedirectAction) Descriptor() protoreflect.EnumDescriptor {
   172  	return file_envoy_api_v2_route_route_components_proto_enumTypes[2].Descriptor()
   173  }
   174  
   175  func (RouteAction_InternalRedirectAction) Type() protoreflect.EnumType {
   176  	return &file_envoy_api_v2_route_route_components_proto_enumTypes[2]
   177  }
   178  
   179  func (x RouteAction_InternalRedirectAction) Number() protoreflect.EnumNumber {
   180  	return protoreflect.EnumNumber(x)
   181  }
   182  
   183  // Deprecated: Use RouteAction_InternalRedirectAction.Descriptor instead.
   184  func (RouteAction_InternalRedirectAction) EnumDescriptor() ([]byte, []int) {
   185  	return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{6, 1}
   186  }
   187  
   188  type RedirectAction_RedirectResponseCode int32
   189  
   190  const (
   191  	// Moved Permanently HTTP Status Code - 301.
   192  	RedirectAction_MOVED_PERMANENTLY RedirectAction_RedirectResponseCode = 0
   193  	// Found HTTP Status Code - 302.
   194  	RedirectAction_FOUND RedirectAction_RedirectResponseCode = 1
   195  	// See Other HTTP Status Code - 303.
   196  	RedirectAction_SEE_OTHER RedirectAction_RedirectResponseCode = 2
   197  	// Temporary Redirect HTTP Status Code - 307.
   198  	RedirectAction_TEMPORARY_REDIRECT RedirectAction_RedirectResponseCode = 3
   199  	// Permanent Redirect HTTP Status Code - 308.
   200  	RedirectAction_PERMANENT_REDIRECT RedirectAction_RedirectResponseCode = 4
   201  )
   202  
   203  // Enum value maps for RedirectAction_RedirectResponseCode.
   204  var (
   205  	RedirectAction_RedirectResponseCode_name = map[int32]string{
   206  		0: "MOVED_PERMANENTLY",
   207  		1: "FOUND",
   208  		2: "SEE_OTHER",
   209  		3: "TEMPORARY_REDIRECT",
   210  		4: "PERMANENT_REDIRECT",
   211  	}
   212  	RedirectAction_RedirectResponseCode_value = map[string]int32{
   213  		"MOVED_PERMANENTLY":  0,
   214  		"FOUND":              1,
   215  		"SEE_OTHER":          2,
   216  		"TEMPORARY_REDIRECT": 3,
   217  		"PERMANENT_REDIRECT": 4,
   218  	}
   219  )
   220  
   221  func (x RedirectAction_RedirectResponseCode) Enum() *RedirectAction_RedirectResponseCode {
   222  	p := new(RedirectAction_RedirectResponseCode)
   223  	*p = x
   224  	return p
   225  }
   226  
   227  func (x RedirectAction_RedirectResponseCode) String() string {
   228  	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
   229  }
   230  
   231  func (RedirectAction_RedirectResponseCode) Descriptor() protoreflect.EnumDescriptor {
   232  	return file_envoy_api_v2_route_route_components_proto_enumTypes[3].Descriptor()
   233  }
   234  
   235  func (RedirectAction_RedirectResponseCode) Type() protoreflect.EnumType {
   236  	return &file_envoy_api_v2_route_route_components_proto_enumTypes[3]
   237  }
   238  
   239  func (x RedirectAction_RedirectResponseCode) Number() protoreflect.EnumNumber {
   240  	return protoreflect.EnumNumber(x)
   241  }
   242  
   243  // Deprecated: Use RedirectAction_RedirectResponseCode.Descriptor instead.
   244  func (RedirectAction_RedirectResponseCode) EnumDescriptor() ([]byte, []int) {
   245  	return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{9, 0}
   246  }
   247  
   248  // The top level element in the routing configuration is a virtual host. Each virtual host has
   249  // a logical name as well as a set of domains that get routed to it based on the incoming request's
   250  // host header. This allows a single listener to service multiple top level domain path trees. Once
   251  // a virtual host is selected based on the domain, the routes are processed in order to see which
   252  // upstream cluster to route to or whether to perform a redirect.
   253  // [#next-free-field: 21]
   254  type VirtualHost struct {
   255  	state         protoimpl.MessageState
   256  	sizeCache     protoimpl.SizeCache
   257  	unknownFields protoimpl.UnknownFields
   258  
   259  	// The logical name of the virtual host. This is used when emitting certain
   260  	// statistics but is not relevant for routing.
   261  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
   262  	// A list of domains (host/authority header) that will be matched to this
   263  	// virtual host. Wildcard hosts are supported in the suffix or prefix form.
   264  	//
   265  	// Domain search order:
   266  	//  1. Exact domain names: ``www.foo.com``.
   267  	//  2. Suffix domain wildcards: ``*.foo.com`` or ``*-bar.foo.com``.
   268  	//  3. Prefix domain wildcards: ``foo.*`` or ``foo-*``.
   269  	//  4. Special wildcard ``*`` matching any domain.
   270  	//
   271  	// .. note::
   272  	//
   273  	//   The wildcard will not match the empty string.
   274  	//   e.g. ``*-bar.foo.com`` will match ``baz-bar.foo.com`` but not ``-bar.foo.com``.
   275  	//   The longest wildcards match first.
   276  	//   Only a single virtual host in the entire route configuration can match on ``*``. A domain
   277  	//   must be unique across all virtual hosts or the config will fail to load.
   278  	//
   279  	// Domains cannot contain control characters. This is validated by the well_known_regex HTTP_HEADER_VALUE.
   280  	Domains []string `protobuf:"bytes,2,rep,name=domains,proto3" json:"domains,omitempty"`
   281  	// The list of routes that will be matched, in order, for incoming requests.
   282  	// The first route that matches will be used.
   283  	Routes []*Route `protobuf:"bytes,3,rep,name=routes,proto3" json:"routes,omitempty"`
   284  	// Specifies the type of TLS enforcement the virtual host expects. If this option is not
   285  	// specified, there is no TLS requirement for the virtual host.
   286  	RequireTls VirtualHost_TlsRequirementType `protobuf:"varint,4,opt,name=require_tls,json=requireTls,proto3,enum=envoy.api.v2.route.VirtualHost_TlsRequirementType" json:"require_tls,omitempty"`
   287  	// A list of virtual clusters defined for this virtual host. Virtual clusters
   288  	// are used for additional statistics gathering.
   289  	VirtualClusters []*VirtualCluster `protobuf:"bytes,5,rep,name=virtual_clusters,json=virtualClusters,proto3" json:"virtual_clusters,omitempty"`
   290  	// Specifies a set of rate limit configurations that will be applied to the
   291  	// virtual host.
   292  	RateLimits []*RateLimit `protobuf:"bytes,6,rep,name=rate_limits,json=rateLimits,proto3" json:"rate_limits,omitempty"`
   293  	// Specifies a list of HTTP headers that should be added to each request
   294  	// handled by this virtual host. Headers specified at this level are applied
   295  	// after headers from enclosed :ref:`envoy_api_msg_route.Route` and before headers from the
   296  	// enclosing :ref:`envoy_api_msg_RouteConfiguration`. For more information, including
   297  	// details on header value syntax, see the documentation on :ref:`custom request headers
   298  	// <config_http_conn_man_headers_custom_request_headers>`.
   299  	RequestHeadersToAdd []*core.HeaderValueOption `protobuf:"bytes,7,rep,name=request_headers_to_add,json=requestHeadersToAdd,proto3" json:"request_headers_to_add,omitempty"`
   300  	// Specifies a list of HTTP headers that should be removed from each request
   301  	// handled by this virtual host.
   302  	RequestHeadersToRemove []string `protobuf:"bytes,13,rep,name=request_headers_to_remove,json=requestHeadersToRemove,proto3" json:"request_headers_to_remove,omitempty"`
   303  	// Specifies a list of HTTP headers that should be added to each response
   304  	// handled by this virtual host. Headers specified at this level are applied
   305  	// after headers from enclosed :ref:`envoy_api_msg_route.Route` and before headers from the
   306  	// enclosing :ref:`envoy_api_msg_RouteConfiguration`. For more information, including
   307  	// details on header value syntax, see the documentation on :ref:`custom request headers
   308  	// <config_http_conn_man_headers_custom_request_headers>`.
   309  	ResponseHeadersToAdd []*core.HeaderValueOption `protobuf:"bytes,10,rep,name=response_headers_to_add,json=responseHeadersToAdd,proto3" json:"response_headers_to_add,omitempty"`
   310  	// Specifies a list of HTTP headers that should be removed from each response
   311  	// handled by this virtual host.
   312  	ResponseHeadersToRemove []string `protobuf:"bytes,11,rep,name=response_headers_to_remove,json=responseHeadersToRemove,proto3" json:"response_headers_to_remove,omitempty"`
   313  	// Indicates that the virtual host has a CORS policy.
   314  	Cors *CorsPolicy `protobuf:"bytes,8,opt,name=cors,proto3" json:"cors,omitempty"`
   315  	// The per_filter_config field can be used to provide virtual host-specific
   316  	// configurations for filters. The key should match the filter name, such as
   317  	// *envoy.filters.http.buffer* for the HTTP buffer filter. Use of this field is filter
   318  	// specific; see the :ref:`HTTP filter documentation <config_http_filters>`
   319  	// for if and how it is utilized.
   320  	//
   321  	// Deprecated: Do not use.
   322  	PerFilterConfig map[string]*_struct.Struct `protobuf:"bytes,12,rep,name=per_filter_config,json=perFilterConfig,proto3" json:"per_filter_config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
   323  	// The per_filter_config field can be used to provide virtual host-specific
   324  	// configurations for filters. The key should match the filter name, such as
   325  	// *envoy.filters.http.buffer* for the HTTP buffer filter. Use of this field is filter
   326  	// specific; see the :ref:`HTTP filter documentation <config_http_filters>`
   327  	// for if and how it is utilized.
   328  	TypedPerFilterConfig map[string]*any.Any `protobuf:"bytes,15,rep,name=typed_per_filter_config,json=typedPerFilterConfig,proto3" json:"typed_per_filter_config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
   329  	// Decides whether the :ref:`x-envoy-attempt-count
   330  	// <config_http_filters_router_x-envoy-attempt-count>` header should be included
   331  	// in the upstream request. Setting this option will cause it to override any existing header
   332  	// value, so in the case of two Envoys on the request path with this option enabled, the upstream
   333  	// will see the attempt count as perceived by the second Envoy. Defaults to false.
   334  	// This header is unaffected by the
   335  	// :ref:`suppress_envoy_headers
   336  	// <envoy_api_field_config.filter.http.router.v2.Router.suppress_envoy_headers>` flag.
   337  	//
   338  	// [#next-major-version: rename to include_attempt_count_in_request.]
   339  	IncludeRequestAttemptCount bool `protobuf:"varint,14,opt,name=include_request_attempt_count,json=includeRequestAttemptCount,proto3" json:"include_request_attempt_count,omitempty"`
   340  	// Decides whether the :ref:`x-envoy-attempt-count
   341  	// <config_http_filters_router_x-envoy-attempt-count>` header should be included
   342  	// in the downstream response. Setting this option will cause the router to override any existing header
   343  	// value, so in the case of two Envoys on the request path with this option enabled, the downstream
   344  	// will see the attempt count as perceived by the Envoy closest upstream from itself. Defaults to false.
   345  	// This header is unaffected by the
   346  	// :ref:`suppress_envoy_headers
   347  	// <envoy_api_field_config.filter.http.router.v2.Router.suppress_envoy_headers>` flag.
   348  	IncludeAttemptCountInResponse bool `protobuf:"varint,19,opt,name=include_attempt_count_in_response,json=includeAttemptCountInResponse,proto3" json:"include_attempt_count_in_response,omitempty"`
   349  	// Indicates the retry policy for all routes in this virtual host. Note that setting a
   350  	// route level entry will take precedence over this config and it'll be treated
   351  	// independently (e.g.: values are not inherited).
   352  	RetryPolicy *RetryPolicy `protobuf:"bytes,16,opt,name=retry_policy,json=retryPolicy,proto3" json:"retry_policy,omitempty"`
   353  	// [#not-implemented-hide:]
   354  	// Specifies the configuration for retry policy extension. Note that setting a route level entry
   355  	// will take precedence over this config and it'll be treated independently (e.g.: values are not
   356  	// inherited). :ref:`Retry policy <envoy_api_field_route.VirtualHost.retry_policy>` should not be
   357  	// set if this field is used.
   358  	RetryPolicyTypedConfig *any.Any `protobuf:"bytes,20,opt,name=retry_policy_typed_config,json=retryPolicyTypedConfig,proto3" json:"retry_policy_typed_config,omitempty"`
   359  	// Indicates the hedge policy for all routes in this virtual host. Note that setting a
   360  	// route level entry will take precedence over this config and it'll be treated
   361  	// independently (e.g.: values are not inherited).
   362  	HedgePolicy *HedgePolicy `protobuf:"bytes,17,opt,name=hedge_policy,json=hedgePolicy,proto3" json:"hedge_policy,omitempty"`
   363  	// The maximum bytes which will be buffered for retries and shadowing.
   364  	// If set and a route-specific limit is not set, the bytes actually buffered will be the minimum
   365  	// value of this and the listener per_connection_buffer_limit_bytes.
   366  	PerRequestBufferLimitBytes *wrappers.UInt32Value `protobuf:"bytes,18,opt,name=per_request_buffer_limit_bytes,json=perRequestBufferLimitBytes,proto3" json:"per_request_buffer_limit_bytes,omitempty"`
   367  }
   368  
   369  func (x *VirtualHost) Reset() {
   370  	*x = VirtualHost{}
   371  	if protoimpl.UnsafeEnabled {
   372  		mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[0]
   373  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   374  		ms.StoreMessageInfo(mi)
   375  	}
   376  }
   377  
   378  func (x *VirtualHost) String() string {
   379  	return protoimpl.X.MessageStringOf(x)
   380  }
   381  
   382  func (*VirtualHost) ProtoMessage() {}
   383  
   384  func (x *VirtualHost) ProtoReflect() protoreflect.Message {
   385  	mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[0]
   386  	if protoimpl.UnsafeEnabled && x != nil {
   387  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   388  		if ms.LoadMessageInfo() == nil {
   389  			ms.StoreMessageInfo(mi)
   390  		}
   391  		return ms
   392  	}
   393  	return mi.MessageOf(x)
   394  }
   395  
   396  // Deprecated: Use VirtualHost.ProtoReflect.Descriptor instead.
   397  func (*VirtualHost) Descriptor() ([]byte, []int) {
   398  	return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{0}
   399  }
   400  
   401  func (x *VirtualHost) GetName() string {
   402  	if x != nil {
   403  		return x.Name
   404  	}
   405  	return ""
   406  }
   407  
   408  func (x *VirtualHost) GetDomains() []string {
   409  	if x != nil {
   410  		return x.Domains
   411  	}
   412  	return nil
   413  }
   414  
   415  func (x *VirtualHost) GetRoutes() []*Route {
   416  	if x != nil {
   417  		return x.Routes
   418  	}
   419  	return nil
   420  }
   421  
   422  func (x *VirtualHost) GetRequireTls() VirtualHost_TlsRequirementType {
   423  	if x != nil {
   424  		return x.RequireTls
   425  	}
   426  	return VirtualHost_NONE
   427  }
   428  
   429  func (x *VirtualHost) GetVirtualClusters() []*VirtualCluster {
   430  	if x != nil {
   431  		return x.VirtualClusters
   432  	}
   433  	return nil
   434  }
   435  
   436  func (x *VirtualHost) GetRateLimits() []*RateLimit {
   437  	if x != nil {
   438  		return x.RateLimits
   439  	}
   440  	return nil
   441  }
   442  
   443  func (x *VirtualHost) GetRequestHeadersToAdd() []*core.HeaderValueOption {
   444  	if x != nil {
   445  		return x.RequestHeadersToAdd
   446  	}
   447  	return nil
   448  }
   449  
   450  func (x *VirtualHost) GetRequestHeadersToRemove() []string {
   451  	if x != nil {
   452  		return x.RequestHeadersToRemove
   453  	}
   454  	return nil
   455  }
   456  
   457  func (x *VirtualHost) GetResponseHeadersToAdd() []*core.HeaderValueOption {
   458  	if x != nil {
   459  		return x.ResponseHeadersToAdd
   460  	}
   461  	return nil
   462  }
   463  
   464  func (x *VirtualHost) GetResponseHeadersToRemove() []string {
   465  	if x != nil {
   466  		return x.ResponseHeadersToRemove
   467  	}
   468  	return nil
   469  }
   470  
   471  func (x *VirtualHost) GetCors() *CorsPolicy {
   472  	if x != nil {
   473  		return x.Cors
   474  	}
   475  	return nil
   476  }
   477  
   478  // Deprecated: Do not use.
   479  func (x *VirtualHost) GetPerFilterConfig() map[string]*_struct.Struct {
   480  	if x != nil {
   481  		return x.PerFilterConfig
   482  	}
   483  	return nil
   484  }
   485  
   486  func (x *VirtualHost) GetTypedPerFilterConfig() map[string]*any.Any {
   487  	if x != nil {
   488  		return x.TypedPerFilterConfig
   489  	}
   490  	return nil
   491  }
   492  
   493  func (x *VirtualHost) GetIncludeRequestAttemptCount() bool {
   494  	if x != nil {
   495  		return x.IncludeRequestAttemptCount
   496  	}
   497  	return false
   498  }
   499  
   500  func (x *VirtualHost) GetIncludeAttemptCountInResponse() bool {
   501  	if x != nil {
   502  		return x.IncludeAttemptCountInResponse
   503  	}
   504  	return false
   505  }
   506  
   507  func (x *VirtualHost) GetRetryPolicy() *RetryPolicy {
   508  	if x != nil {
   509  		return x.RetryPolicy
   510  	}
   511  	return nil
   512  }
   513  
   514  func (x *VirtualHost) GetRetryPolicyTypedConfig() *any.Any {
   515  	if x != nil {
   516  		return x.RetryPolicyTypedConfig
   517  	}
   518  	return nil
   519  }
   520  
   521  func (x *VirtualHost) GetHedgePolicy() *HedgePolicy {
   522  	if x != nil {
   523  		return x.HedgePolicy
   524  	}
   525  	return nil
   526  }
   527  
   528  func (x *VirtualHost) GetPerRequestBufferLimitBytes() *wrappers.UInt32Value {
   529  	if x != nil {
   530  		return x.PerRequestBufferLimitBytes
   531  	}
   532  	return nil
   533  }
   534  
   535  // A filter-defined action type.
   536  type FilterAction struct {
   537  	state         protoimpl.MessageState
   538  	sizeCache     protoimpl.SizeCache
   539  	unknownFields protoimpl.UnknownFields
   540  
   541  	Action *any.Any `protobuf:"bytes,1,opt,name=action,proto3" json:"action,omitempty"`
   542  }
   543  
   544  func (x *FilterAction) Reset() {
   545  	*x = FilterAction{}
   546  	if protoimpl.UnsafeEnabled {
   547  		mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[1]
   548  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   549  		ms.StoreMessageInfo(mi)
   550  	}
   551  }
   552  
   553  func (x *FilterAction) String() string {
   554  	return protoimpl.X.MessageStringOf(x)
   555  }
   556  
   557  func (*FilterAction) ProtoMessage() {}
   558  
   559  func (x *FilterAction) ProtoReflect() protoreflect.Message {
   560  	mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[1]
   561  	if protoimpl.UnsafeEnabled && x != nil {
   562  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   563  		if ms.LoadMessageInfo() == nil {
   564  			ms.StoreMessageInfo(mi)
   565  		}
   566  		return ms
   567  	}
   568  	return mi.MessageOf(x)
   569  }
   570  
   571  // Deprecated: Use FilterAction.ProtoReflect.Descriptor instead.
   572  func (*FilterAction) Descriptor() ([]byte, []int) {
   573  	return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{1}
   574  }
   575  
   576  func (x *FilterAction) GetAction() *any.Any {
   577  	if x != nil {
   578  		return x.Action
   579  	}
   580  	return nil
   581  }
   582  
   583  // A route is both a specification of how to match a request as well as an indication of what to do
   584  // next (e.g., redirect, forward, rewrite, etc.).
   585  //
   586  // .. attention::
   587  //
   588  //   Envoy supports routing on HTTP method via :ref:`header matching
   589  //   <envoy_api_msg_route.HeaderMatcher>`.
   590  // [#next-free-field: 18]
   591  type Route struct {
   592  	state         protoimpl.MessageState
   593  	sizeCache     protoimpl.SizeCache
   594  	unknownFields protoimpl.UnknownFields
   595  
   596  	// Name for the route.
   597  	Name string `protobuf:"bytes,14,opt,name=name,proto3" json:"name,omitempty"`
   598  	// Route matching parameters.
   599  	Match *RouteMatch `protobuf:"bytes,1,opt,name=match,proto3" json:"match,omitempty"`
   600  	// Types that are assignable to Action:
   601  	//	*Route_Route
   602  	//	*Route_Redirect
   603  	//	*Route_DirectResponse
   604  	//	*Route_FilterAction
   605  	Action isRoute_Action `protobuf_oneof:"action"`
   606  	// The Metadata field can be used to provide additional information
   607  	// about the route. It can be used for configuration, stats, and logging.
   608  	// The metadata should go under the filter namespace that will need it.
   609  	// For instance, if the metadata is intended for the Router filter,
   610  	// the filter name should be specified as *envoy.filters.http.router*.
   611  	Metadata *core.Metadata `protobuf:"bytes,4,opt,name=metadata,proto3" json:"metadata,omitempty"`
   612  	// Decorator for the matched route.
   613  	Decorator *Decorator `protobuf:"bytes,5,opt,name=decorator,proto3" json:"decorator,omitempty"`
   614  	// The per_filter_config field can be used to provide route-specific
   615  	// configurations for filters. The key should match the filter name, such as
   616  	// *envoy.filters.http.buffer* for the HTTP buffer filter. Use of this field is filter
   617  	// specific; see the :ref:`HTTP filter documentation <config_http_filters>` for
   618  	// if and how it is utilized.
   619  	//
   620  	// Deprecated: Do not use.
   621  	PerFilterConfig map[string]*_struct.Struct `protobuf:"bytes,8,rep,name=per_filter_config,json=perFilterConfig,proto3" json:"per_filter_config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
   622  	// The typed_per_filter_config field can be used to provide route-specific
   623  	// configurations for filters. The key should match the filter name, such as
   624  	// *envoy.filters.http.buffer* for the HTTP buffer filter. Use of this field is filter
   625  	// specific; see the :ref:`HTTP filter documentation <config_http_filters>` for
   626  	// if and how it is utilized.
   627  	TypedPerFilterConfig map[string]*any.Any `protobuf:"bytes,13,rep,name=typed_per_filter_config,json=typedPerFilterConfig,proto3" json:"typed_per_filter_config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
   628  	// Specifies a set of headers that will be added to requests matching this
   629  	// route. Headers specified at this level are applied before headers from the
   630  	// enclosing :ref:`envoy_api_msg_route.VirtualHost` and
   631  	// :ref:`envoy_api_msg_RouteConfiguration`. For more information, including details on
   632  	// header value syntax, see the documentation on :ref:`custom request headers
   633  	// <config_http_conn_man_headers_custom_request_headers>`.
   634  	RequestHeadersToAdd []*core.HeaderValueOption `protobuf:"bytes,9,rep,name=request_headers_to_add,json=requestHeadersToAdd,proto3" json:"request_headers_to_add,omitempty"`
   635  	// Specifies a list of HTTP headers that should be removed from each request
   636  	// matching this route.
   637  	RequestHeadersToRemove []string `protobuf:"bytes,12,rep,name=request_headers_to_remove,json=requestHeadersToRemove,proto3" json:"request_headers_to_remove,omitempty"`
   638  	// Specifies a set of headers that will be added to responses to requests
   639  	// matching this route. Headers specified at this level are applied before
   640  	// headers from the enclosing :ref:`envoy_api_msg_route.VirtualHost` and
   641  	// :ref:`envoy_api_msg_RouteConfiguration`. For more information, including
   642  	// details on header value syntax, see the documentation on
   643  	// :ref:`custom request headers <config_http_conn_man_headers_custom_request_headers>`.
   644  	ResponseHeadersToAdd []*core.HeaderValueOption `protobuf:"bytes,10,rep,name=response_headers_to_add,json=responseHeadersToAdd,proto3" json:"response_headers_to_add,omitempty"`
   645  	// Specifies a list of HTTP headers that should be removed from each response
   646  	// to requests matching this route.
   647  	ResponseHeadersToRemove []string `protobuf:"bytes,11,rep,name=response_headers_to_remove,json=responseHeadersToRemove,proto3" json:"response_headers_to_remove,omitempty"`
   648  	// Presence of the object defines whether the connection manager's tracing configuration
   649  	// is overridden by this route specific instance.
   650  	Tracing *Tracing `protobuf:"bytes,15,opt,name=tracing,proto3" json:"tracing,omitempty"`
   651  	// The maximum bytes which will be buffered for retries and shadowing.
   652  	// If set, the bytes actually buffered will be the minimum value of this and the
   653  	// listener per_connection_buffer_limit_bytes.
   654  	PerRequestBufferLimitBytes *wrappers.UInt32Value `protobuf:"bytes,16,opt,name=per_request_buffer_limit_bytes,json=perRequestBufferLimitBytes,proto3" json:"per_request_buffer_limit_bytes,omitempty"`
   655  }
   656  
   657  func (x *Route) Reset() {
   658  	*x = Route{}
   659  	if protoimpl.UnsafeEnabled {
   660  		mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[2]
   661  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   662  		ms.StoreMessageInfo(mi)
   663  	}
   664  }
   665  
   666  func (x *Route) String() string {
   667  	return protoimpl.X.MessageStringOf(x)
   668  }
   669  
   670  func (*Route) ProtoMessage() {}
   671  
   672  func (x *Route) ProtoReflect() protoreflect.Message {
   673  	mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[2]
   674  	if protoimpl.UnsafeEnabled && x != nil {
   675  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   676  		if ms.LoadMessageInfo() == nil {
   677  			ms.StoreMessageInfo(mi)
   678  		}
   679  		return ms
   680  	}
   681  	return mi.MessageOf(x)
   682  }
   683  
   684  // Deprecated: Use Route.ProtoReflect.Descriptor instead.
   685  func (*Route) Descriptor() ([]byte, []int) {
   686  	return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{2}
   687  }
   688  
   689  func (x *Route) GetName() string {
   690  	if x != nil {
   691  		return x.Name
   692  	}
   693  	return ""
   694  }
   695  
   696  func (x *Route) GetMatch() *RouteMatch {
   697  	if x != nil {
   698  		return x.Match
   699  	}
   700  	return nil
   701  }
   702  
   703  func (m *Route) GetAction() isRoute_Action {
   704  	if m != nil {
   705  		return m.Action
   706  	}
   707  	return nil
   708  }
   709  
   710  func (x *Route) GetRoute() *RouteAction {
   711  	if x, ok := x.GetAction().(*Route_Route); ok {
   712  		return x.Route
   713  	}
   714  	return nil
   715  }
   716  
   717  func (x *Route) GetRedirect() *RedirectAction {
   718  	if x, ok := x.GetAction().(*Route_Redirect); ok {
   719  		return x.Redirect
   720  	}
   721  	return nil
   722  }
   723  
   724  func (x *Route) GetDirectResponse() *DirectResponseAction {
   725  	if x, ok := x.GetAction().(*Route_DirectResponse); ok {
   726  		return x.DirectResponse
   727  	}
   728  	return nil
   729  }
   730  
   731  func (x *Route) GetFilterAction() *FilterAction {
   732  	if x, ok := x.GetAction().(*Route_FilterAction); ok {
   733  		return x.FilterAction
   734  	}
   735  	return nil
   736  }
   737  
   738  func (x *Route) GetMetadata() *core.Metadata {
   739  	if x != nil {
   740  		return x.Metadata
   741  	}
   742  	return nil
   743  }
   744  
   745  func (x *Route) GetDecorator() *Decorator {
   746  	if x != nil {
   747  		return x.Decorator
   748  	}
   749  	return nil
   750  }
   751  
   752  // Deprecated: Do not use.
   753  func (x *Route) GetPerFilterConfig() map[string]*_struct.Struct {
   754  	if x != nil {
   755  		return x.PerFilterConfig
   756  	}
   757  	return nil
   758  }
   759  
   760  func (x *Route) GetTypedPerFilterConfig() map[string]*any.Any {
   761  	if x != nil {
   762  		return x.TypedPerFilterConfig
   763  	}
   764  	return nil
   765  }
   766  
   767  func (x *Route) GetRequestHeadersToAdd() []*core.HeaderValueOption {
   768  	if x != nil {
   769  		return x.RequestHeadersToAdd
   770  	}
   771  	return nil
   772  }
   773  
   774  func (x *Route) GetRequestHeadersToRemove() []string {
   775  	if x != nil {
   776  		return x.RequestHeadersToRemove
   777  	}
   778  	return nil
   779  }
   780  
   781  func (x *Route) GetResponseHeadersToAdd() []*core.HeaderValueOption {
   782  	if x != nil {
   783  		return x.ResponseHeadersToAdd
   784  	}
   785  	return nil
   786  }
   787  
   788  func (x *Route) GetResponseHeadersToRemove() []string {
   789  	if x != nil {
   790  		return x.ResponseHeadersToRemove
   791  	}
   792  	return nil
   793  }
   794  
   795  func (x *Route) GetTracing() *Tracing {
   796  	if x != nil {
   797  		return x.Tracing
   798  	}
   799  	return nil
   800  }
   801  
   802  func (x *Route) GetPerRequestBufferLimitBytes() *wrappers.UInt32Value {
   803  	if x != nil {
   804  		return x.PerRequestBufferLimitBytes
   805  	}
   806  	return nil
   807  }
   808  
   809  type isRoute_Action interface {
   810  	isRoute_Action()
   811  }
   812  
   813  type Route_Route struct {
   814  	// Route request to some upstream cluster.
   815  	Route *RouteAction `protobuf:"bytes,2,opt,name=route,proto3,oneof"`
   816  }
   817  
   818  type Route_Redirect struct {
   819  	// Return a redirect.
   820  	Redirect *RedirectAction `protobuf:"bytes,3,opt,name=redirect,proto3,oneof"`
   821  }
   822  
   823  type Route_DirectResponse struct {
   824  	// Return an arbitrary HTTP response directly, without proxying.
   825  	DirectResponse *DirectResponseAction `protobuf:"bytes,7,opt,name=direct_response,json=directResponse,proto3,oneof"`
   826  }
   827  
   828  type Route_FilterAction struct {
   829  	// [#not-implemented-hide:]
   830  	// If true, a filter will define the action (e.g., it could dynamically generate the
   831  	// RouteAction).
   832  	FilterAction *FilterAction `protobuf:"bytes,17,opt,name=filter_action,json=filterAction,proto3,oneof"`
   833  }
   834  
   835  func (*Route_Route) isRoute_Action() {}
   836  
   837  func (*Route_Redirect) isRoute_Action() {}
   838  
   839  func (*Route_DirectResponse) isRoute_Action() {}
   840  
   841  func (*Route_FilterAction) isRoute_Action() {}
   842  
   843  // Compared to the :ref:`cluster <envoy_api_field_route.RouteAction.cluster>` field that specifies a
   844  // single upstream cluster as the target of a request, the :ref:`weighted_clusters
   845  // <envoy_api_field_route.RouteAction.weighted_clusters>` option allows for specification of
   846  // multiple upstream clusters along with weights that indicate the percentage of
   847  // traffic to be forwarded to each cluster. The router selects an upstream cluster based on the
   848  // weights.
   849  type WeightedCluster struct {
   850  	state         protoimpl.MessageState
   851  	sizeCache     protoimpl.SizeCache
   852  	unknownFields protoimpl.UnknownFields
   853  
   854  	// Specifies one or more upstream clusters associated with the route.
   855  	Clusters []*WeightedCluster_ClusterWeight `protobuf:"bytes,1,rep,name=clusters,proto3" json:"clusters,omitempty"`
   856  	// Specifies the total weight across all clusters. The sum of all cluster weights must equal this
   857  	// value, which must be greater than 0. Defaults to 100.
   858  	TotalWeight *wrappers.UInt32Value `protobuf:"bytes,3,opt,name=total_weight,json=totalWeight,proto3" json:"total_weight,omitempty"`
   859  	// Specifies the runtime key prefix that should be used to construct the
   860  	// runtime keys associated with each cluster. When the *runtime_key_prefix* is
   861  	// specified, the router will look for weights associated with each upstream
   862  	// cluster under the key *runtime_key_prefix* + "." + *cluster[i].name* where
   863  	// *cluster[i]* denotes an entry in the clusters array field. If the runtime
   864  	// key for the cluster does not exist, the value specified in the
   865  	// configuration file will be used as the default weight. See the :ref:`runtime documentation
   866  	// <operations_runtime>` for how key names map to the underlying implementation.
   867  	RuntimeKeyPrefix string `protobuf:"bytes,2,opt,name=runtime_key_prefix,json=runtimeKeyPrefix,proto3" json:"runtime_key_prefix,omitempty"`
   868  }
   869  
   870  func (x *WeightedCluster) Reset() {
   871  	*x = WeightedCluster{}
   872  	if protoimpl.UnsafeEnabled {
   873  		mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[3]
   874  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   875  		ms.StoreMessageInfo(mi)
   876  	}
   877  }
   878  
   879  func (x *WeightedCluster) String() string {
   880  	return protoimpl.X.MessageStringOf(x)
   881  }
   882  
   883  func (*WeightedCluster) ProtoMessage() {}
   884  
   885  func (x *WeightedCluster) ProtoReflect() protoreflect.Message {
   886  	mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[3]
   887  	if protoimpl.UnsafeEnabled && x != nil {
   888  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   889  		if ms.LoadMessageInfo() == nil {
   890  			ms.StoreMessageInfo(mi)
   891  		}
   892  		return ms
   893  	}
   894  	return mi.MessageOf(x)
   895  }
   896  
   897  // Deprecated: Use WeightedCluster.ProtoReflect.Descriptor instead.
   898  func (*WeightedCluster) Descriptor() ([]byte, []int) {
   899  	return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{3}
   900  }
   901  
   902  func (x *WeightedCluster) GetClusters() []*WeightedCluster_ClusterWeight {
   903  	if x != nil {
   904  		return x.Clusters
   905  	}
   906  	return nil
   907  }
   908  
   909  func (x *WeightedCluster) GetTotalWeight() *wrappers.UInt32Value {
   910  	if x != nil {
   911  		return x.TotalWeight
   912  	}
   913  	return nil
   914  }
   915  
   916  func (x *WeightedCluster) GetRuntimeKeyPrefix() string {
   917  	if x != nil {
   918  		return x.RuntimeKeyPrefix
   919  	}
   920  	return ""
   921  }
   922  
   923  // [#next-free-field: 12]
   924  type RouteMatch struct {
   925  	state         protoimpl.MessageState
   926  	sizeCache     protoimpl.SizeCache
   927  	unknownFields protoimpl.UnknownFields
   928  
   929  	// Types that are assignable to PathSpecifier:
   930  	//	*RouteMatch_Prefix
   931  	//	*RouteMatch_Path
   932  	//	*RouteMatch_Regex
   933  	//	*RouteMatch_SafeRegex
   934  	PathSpecifier isRouteMatch_PathSpecifier `protobuf_oneof:"path_specifier"`
   935  	// Indicates that prefix/path matching should be case sensitive. The default
   936  	// is true.
   937  	CaseSensitive *wrappers.BoolValue `protobuf:"bytes,4,opt,name=case_sensitive,json=caseSensitive,proto3" json:"case_sensitive,omitempty"`
   938  	// Indicates that the route should additionally match on a runtime key. Every time the route
   939  	// is considered for a match, it must also fall under the percentage of matches indicated by
   940  	// this field. For some fraction N/D, a random number in the range [0,D) is selected. If the
   941  	// number is <= the value of the numerator N, or if the key is not present, the default
   942  	// value, the router continues to evaluate the remaining match criteria. A runtime_fraction
   943  	// route configuration can be used to roll out route changes in a gradual manner without full
   944  	// code/config deploys. Refer to the :ref:`traffic shifting
   945  	// <config_http_conn_man_route_table_traffic_splitting_shift>` docs for additional documentation.
   946  	//
   947  	// .. note::
   948  	//
   949  	//    Parsing this field is implemented such that the runtime key's data may be represented
   950  	//    as a FractionalPercent proto represented as JSON/YAML and may also be represented as an
   951  	//    integer with the assumption that the value is an integral percentage out of 100. For
   952  	//    instance, a runtime key lookup returning the value "42" would parse as a FractionalPercent
   953  	//    whose numerator is 42 and denominator is HUNDRED. This preserves legacy semantics.
   954  	RuntimeFraction *core.RuntimeFractionalPercent `protobuf:"bytes,9,opt,name=runtime_fraction,json=runtimeFraction,proto3" json:"runtime_fraction,omitempty"`
   955  	// Specifies a set of headers that the route should match on. The router will
   956  	// check the request’s headers against all the specified headers in the route
   957  	// config. A match will happen if all the headers in the route are present in
   958  	// the request with the same values (or based on presence if the value field
   959  	// is not in the config).
   960  	Headers []*HeaderMatcher `protobuf:"bytes,6,rep,name=headers,proto3" json:"headers,omitempty"`
   961  	// Specifies a set of URL query parameters on which the route should
   962  	// match. The router will check the query string from the *path* header
   963  	// against all the specified query parameters. If the number of specified
   964  	// query parameters is nonzero, they all must match the *path* header's
   965  	// query string for a match to occur.
   966  	QueryParameters []*QueryParameterMatcher `protobuf:"bytes,7,rep,name=query_parameters,json=queryParameters,proto3" json:"query_parameters,omitempty"`
   967  	// If specified, only gRPC requests will be matched. The router will check
   968  	// that the content-type header has a application/grpc or one of the various
   969  	// application/grpc+ values.
   970  	Grpc *RouteMatch_GrpcRouteMatchOptions `protobuf:"bytes,8,opt,name=grpc,proto3" json:"grpc,omitempty"`
   971  	// If specified, the client tls context will be matched against the defined
   972  	// match options.
   973  	//
   974  	// [#next-major-version: unify with RBAC]
   975  	TlsContext *RouteMatch_TlsContextMatchOptions `protobuf:"bytes,11,opt,name=tls_context,json=tlsContext,proto3" json:"tls_context,omitempty"`
   976  }
   977  
   978  func (x *RouteMatch) Reset() {
   979  	*x = RouteMatch{}
   980  	if protoimpl.UnsafeEnabled {
   981  		mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[4]
   982  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   983  		ms.StoreMessageInfo(mi)
   984  	}
   985  }
   986  
   987  func (x *RouteMatch) String() string {
   988  	return protoimpl.X.MessageStringOf(x)
   989  }
   990  
   991  func (*RouteMatch) ProtoMessage() {}
   992  
   993  func (x *RouteMatch) ProtoReflect() protoreflect.Message {
   994  	mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[4]
   995  	if protoimpl.UnsafeEnabled && x != nil {
   996  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   997  		if ms.LoadMessageInfo() == nil {
   998  			ms.StoreMessageInfo(mi)
   999  		}
  1000  		return ms
  1001  	}
  1002  	return mi.MessageOf(x)
  1003  }
  1004  
  1005  // Deprecated: Use RouteMatch.ProtoReflect.Descriptor instead.
  1006  func (*RouteMatch) Descriptor() ([]byte, []int) {
  1007  	return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{4}
  1008  }
  1009  
  1010  func (m *RouteMatch) GetPathSpecifier() isRouteMatch_PathSpecifier {
  1011  	if m != nil {
  1012  		return m.PathSpecifier
  1013  	}
  1014  	return nil
  1015  }
  1016  
  1017  func (x *RouteMatch) GetPrefix() string {
  1018  	if x, ok := x.GetPathSpecifier().(*RouteMatch_Prefix); ok {
  1019  		return x.Prefix
  1020  	}
  1021  	return ""
  1022  }
  1023  
  1024  func (x *RouteMatch) GetPath() string {
  1025  	if x, ok := x.GetPathSpecifier().(*RouteMatch_Path); ok {
  1026  		return x.Path
  1027  	}
  1028  	return ""
  1029  }
  1030  
  1031  // Deprecated: Do not use.
  1032  func (x *RouteMatch) GetRegex() string {
  1033  	if x, ok := x.GetPathSpecifier().(*RouteMatch_Regex); ok {
  1034  		return x.Regex
  1035  	}
  1036  	return ""
  1037  }
  1038  
  1039  func (x *RouteMatch) GetSafeRegex() *matcher.RegexMatcher {
  1040  	if x, ok := x.GetPathSpecifier().(*RouteMatch_SafeRegex); ok {
  1041  		return x.SafeRegex
  1042  	}
  1043  	return nil
  1044  }
  1045  
  1046  func (x *RouteMatch) GetCaseSensitive() *wrappers.BoolValue {
  1047  	if x != nil {
  1048  		return x.CaseSensitive
  1049  	}
  1050  	return nil
  1051  }
  1052  
  1053  func (x *RouteMatch) GetRuntimeFraction() *core.RuntimeFractionalPercent {
  1054  	if x != nil {
  1055  		return x.RuntimeFraction
  1056  	}
  1057  	return nil
  1058  }
  1059  
  1060  func (x *RouteMatch) GetHeaders() []*HeaderMatcher {
  1061  	if x != nil {
  1062  		return x.Headers
  1063  	}
  1064  	return nil
  1065  }
  1066  
  1067  func (x *RouteMatch) GetQueryParameters() []*QueryParameterMatcher {
  1068  	if x != nil {
  1069  		return x.QueryParameters
  1070  	}
  1071  	return nil
  1072  }
  1073  
  1074  func (x *RouteMatch) GetGrpc() *RouteMatch_GrpcRouteMatchOptions {
  1075  	if x != nil {
  1076  		return x.Grpc
  1077  	}
  1078  	return nil
  1079  }
  1080  
  1081  func (x *RouteMatch) GetTlsContext() *RouteMatch_TlsContextMatchOptions {
  1082  	if x != nil {
  1083  		return x.TlsContext
  1084  	}
  1085  	return nil
  1086  }
  1087  
  1088  type isRouteMatch_PathSpecifier interface {
  1089  	isRouteMatch_PathSpecifier()
  1090  }
  1091  
  1092  type RouteMatch_Prefix struct {
  1093  	// If specified, the route is a prefix rule meaning that the prefix must
  1094  	// match the beginning of the *:path* header.
  1095  	Prefix string `protobuf:"bytes,1,opt,name=prefix,proto3,oneof"`
  1096  }
  1097  
  1098  type RouteMatch_Path struct {
  1099  	// If specified, the route is an exact path rule meaning that the path must
  1100  	// exactly match the *:path* header once the query string is removed.
  1101  	Path string `protobuf:"bytes,2,opt,name=path,proto3,oneof"`
  1102  }
  1103  
  1104  type RouteMatch_Regex struct {
  1105  	// If specified, the route is a regular expression rule meaning that the
  1106  	// regex must match the *:path* header once the query string is removed. The entire path
  1107  	// (without the query string) must match the regex. The rule will not match if only a
  1108  	// subsequence of the *:path* header matches the regex. The regex grammar is defined `here
  1109  	// <https://en.cppreference.com/w/cpp/regex/ecmascript>`_.
  1110  	//
  1111  	// Examples:
  1112  	//
  1113  	// * The regex ``/b[io]t`` matches the path */bit*
  1114  	// * The regex ``/b[io]t`` matches the path */bot*
  1115  	// * The regex ``/b[io]t`` does not match the path */bite*
  1116  	// * The regex ``/b[io]t`` does not match the path */bit/bot*
  1117  	//
  1118  	// .. attention::
  1119  	//   This field has been deprecated in favor of `safe_regex` as it is not safe for use with
  1120  	//   untrusted input in all cases.
  1121  	//
  1122  	// Deprecated: Do not use.
  1123  	Regex string `protobuf:"bytes,3,opt,name=regex,proto3,oneof"`
  1124  }
  1125  
  1126  type RouteMatch_SafeRegex struct {
  1127  	// If specified, the route is a regular expression rule meaning that the
  1128  	// regex must match the *:path* header once the query string is removed. The entire path
  1129  	// (without the query string) must match the regex. The rule will not match if only a
  1130  	// subsequence of the *:path* header matches the regex.
  1131  	//
  1132  	// [#next-major-version: In the v3 API we should redo how path specification works such
  1133  	// that we utilize StringMatcher, and additionally have consistent options around whether we
  1134  	// strip query strings, do a case sensitive match, etc. In the interim it will be too disruptive
  1135  	// to deprecate the existing options. We should even consider whether we want to do away with
  1136  	// path_specifier entirely and just rely on a set of header matchers which can already match
  1137  	// on :path, etc. The issue with that is it is unclear how to generically deal with query string
  1138  	// stripping. This needs more thought.]
  1139  	SafeRegex *matcher.RegexMatcher `protobuf:"bytes,10,opt,name=safe_regex,json=safeRegex,proto3,oneof"`
  1140  }
  1141  
  1142  func (*RouteMatch_Prefix) isRouteMatch_PathSpecifier() {}
  1143  
  1144  func (*RouteMatch_Path) isRouteMatch_PathSpecifier() {}
  1145  
  1146  func (*RouteMatch_Regex) isRouteMatch_PathSpecifier() {}
  1147  
  1148  func (*RouteMatch_SafeRegex) isRouteMatch_PathSpecifier() {}
  1149  
  1150  // [#next-free-field: 12]
  1151  type CorsPolicy struct {
  1152  	state         protoimpl.MessageState
  1153  	sizeCache     protoimpl.SizeCache
  1154  	unknownFields protoimpl.UnknownFields
  1155  
  1156  	// Specifies the origins that will be allowed to do CORS requests.
  1157  	//
  1158  	// An origin is allowed if either allow_origin or allow_origin_regex match.
  1159  	//
  1160  	// .. attention::
  1161  	//  This field has been deprecated in favor of `allow_origin_string_match`.
  1162  	//
  1163  	// Deprecated: Do not use.
  1164  	AllowOrigin []string `protobuf:"bytes,1,rep,name=allow_origin,json=allowOrigin,proto3" json:"allow_origin,omitempty"`
  1165  	// Specifies regex patterns that match allowed origins.
  1166  	//
  1167  	// An origin is allowed if either allow_origin or allow_origin_regex match.
  1168  	//
  1169  	// .. attention::
  1170  	//   This field has been deprecated in favor of `allow_origin_string_match` as it is not safe for
  1171  	//   use with untrusted input in all cases.
  1172  	//
  1173  	// Deprecated: Do not use.
  1174  	AllowOriginRegex []string `protobuf:"bytes,8,rep,name=allow_origin_regex,json=allowOriginRegex,proto3" json:"allow_origin_regex,omitempty"`
  1175  	// Specifies string patterns that match allowed origins. An origin is allowed if any of the
  1176  	// string matchers match.
  1177  	AllowOriginStringMatch []*matcher.StringMatcher `protobuf:"bytes,11,rep,name=allow_origin_string_match,json=allowOriginStringMatch,proto3" json:"allow_origin_string_match,omitempty"`
  1178  	// Specifies the content for the *access-control-allow-methods* header.
  1179  	AllowMethods string `protobuf:"bytes,2,opt,name=allow_methods,json=allowMethods,proto3" json:"allow_methods,omitempty"`
  1180  	// Specifies the content for the *access-control-allow-headers* header.
  1181  	AllowHeaders string `protobuf:"bytes,3,opt,name=allow_headers,json=allowHeaders,proto3" json:"allow_headers,omitempty"`
  1182  	// Specifies the content for the *access-control-expose-headers* header.
  1183  	ExposeHeaders string `protobuf:"bytes,4,opt,name=expose_headers,json=exposeHeaders,proto3" json:"expose_headers,omitempty"`
  1184  	// Specifies the content for the *access-control-max-age* header.
  1185  	MaxAge string `protobuf:"bytes,5,opt,name=max_age,json=maxAge,proto3" json:"max_age,omitempty"`
  1186  	// Specifies whether the resource allows credentials.
  1187  	AllowCredentials *wrappers.BoolValue `protobuf:"bytes,6,opt,name=allow_credentials,json=allowCredentials,proto3" json:"allow_credentials,omitempty"`
  1188  	// Types that are assignable to EnabledSpecifier:
  1189  	//	*CorsPolicy_Enabled
  1190  	//	*CorsPolicy_FilterEnabled
  1191  	EnabledSpecifier isCorsPolicy_EnabledSpecifier `protobuf_oneof:"enabled_specifier"`
  1192  	// Specifies the % of requests for which the CORS policies will be evaluated and tracked, but not
  1193  	// enforced.
  1194  	//
  1195  	// This field is intended to be used when ``filter_enabled`` and ``enabled`` are off. One of those
  1196  	// fields have to explicitly disable the filter in order for this setting to take effect.
  1197  	//
  1198  	// If :ref:`runtime_key <envoy_api_field_core.RuntimeFractionalPercent.runtime_key>` is specified,
  1199  	// Envoy will lookup the runtime key to get the percentage of requests for which it will evaluate
  1200  	// and track the request's *Origin* to determine if it's valid but will not enforce any policies.
  1201  	ShadowEnabled *core.RuntimeFractionalPercent `protobuf:"bytes,10,opt,name=shadow_enabled,json=shadowEnabled,proto3" json:"shadow_enabled,omitempty"`
  1202  }
  1203  
  1204  func (x *CorsPolicy) Reset() {
  1205  	*x = CorsPolicy{}
  1206  	if protoimpl.UnsafeEnabled {
  1207  		mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[5]
  1208  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1209  		ms.StoreMessageInfo(mi)
  1210  	}
  1211  }
  1212  
  1213  func (x *CorsPolicy) String() string {
  1214  	return protoimpl.X.MessageStringOf(x)
  1215  }
  1216  
  1217  func (*CorsPolicy) ProtoMessage() {}
  1218  
  1219  func (x *CorsPolicy) ProtoReflect() protoreflect.Message {
  1220  	mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[5]
  1221  	if protoimpl.UnsafeEnabled && x != nil {
  1222  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1223  		if ms.LoadMessageInfo() == nil {
  1224  			ms.StoreMessageInfo(mi)
  1225  		}
  1226  		return ms
  1227  	}
  1228  	return mi.MessageOf(x)
  1229  }
  1230  
  1231  // Deprecated: Use CorsPolicy.ProtoReflect.Descriptor instead.
  1232  func (*CorsPolicy) Descriptor() ([]byte, []int) {
  1233  	return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{5}
  1234  }
  1235  
  1236  // Deprecated: Do not use.
  1237  func (x *CorsPolicy) GetAllowOrigin() []string {
  1238  	if x != nil {
  1239  		return x.AllowOrigin
  1240  	}
  1241  	return nil
  1242  }
  1243  
  1244  // Deprecated: Do not use.
  1245  func (x *CorsPolicy) GetAllowOriginRegex() []string {
  1246  	if x != nil {
  1247  		return x.AllowOriginRegex
  1248  	}
  1249  	return nil
  1250  }
  1251  
  1252  func (x *CorsPolicy) GetAllowOriginStringMatch() []*matcher.StringMatcher {
  1253  	if x != nil {
  1254  		return x.AllowOriginStringMatch
  1255  	}
  1256  	return nil
  1257  }
  1258  
  1259  func (x *CorsPolicy) GetAllowMethods() string {
  1260  	if x != nil {
  1261  		return x.AllowMethods
  1262  	}
  1263  	return ""
  1264  }
  1265  
  1266  func (x *CorsPolicy) GetAllowHeaders() string {
  1267  	if x != nil {
  1268  		return x.AllowHeaders
  1269  	}
  1270  	return ""
  1271  }
  1272  
  1273  func (x *CorsPolicy) GetExposeHeaders() string {
  1274  	if x != nil {
  1275  		return x.ExposeHeaders
  1276  	}
  1277  	return ""
  1278  }
  1279  
  1280  func (x *CorsPolicy) GetMaxAge() string {
  1281  	if x != nil {
  1282  		return x.MaxAge
  1283  	}
  1284  	return ""
  1285  }
  1286  
  1287  func (x *CorsPolicy) GetAllowCredentials() *wrappers.BoolValue {
  1288  	if x != nil {
  1289  		return x.AllowCredentials
  1290  	}
  1291  	return nil
  1292  }
  1293  
  1294  func (m *CorsPolicy) GetEnabledSpecifier() isCorsPolicy_EnabledSpecifier {
  1295  	if m != nil {
  1296  		return m.EnabledSpecifier
  1297  	}
  1298  	return nil
  1299  }
  1300  
  1301  // Deprecated: Do not use.
  1302  func (x *CorsPolicy) GetEnabled() *wrappers.BoolValue {
  1303  	if x, ok := x.GetEnabledSpecifier().(*CorsPolicy_Enabled); ok {
  1304  		return x.Enabled
  1305  	}
  1306  	return nil
  1307  }
  1308  
  1309  func (x *CorsPolicy) GetFilterEnabled() *core.RuntimeFractionalPercent {
  1310  	if x, ok := x.GetEnabledSpecifier().(*CorsPolicy_FilterEnabled); ok {
  1311  		return x.FilterEnabled
  1312  	}
  1313  	return nil
  1314  }
  1315  
  1316  func (x *CorsPolicy) GetShadowEnabled() *core.RuntimeFractionalPercent {
  1317  	if x != nil {
  1318  		return x.ShadowEnabled
  1319  	}
  1320  	return nil
  1321  }
  1322  
  1323  type isCorsPolicy_EnabledSpecifier interface {
  1324  	isCorsPolicy_EnabledSpecifier()
  1325  }
  1326  
  1327  type CorsPolicy_Enabled struct {
  1328  	// Specifies if the CORS filter is enabled. Defaults to true. Only effective on route.
  1329  	//
  1330  	// .. attention::
  1331  	//
  1332  	//   **This field is deprecated**. Set the
  1333  	//   :ref:`filter_enabled<envoy_api_field_route.CorsPolicy.filter_enabled>` field instead.
  1334  	//
  1335  	// Deprecated: Do not use.
  1336  	Enabled *wrappers.BoolValue `protobuf:"bytes,7,opt,name=enabled,proto3,oneof"`
  1337  }
  1338  
  1339  type CorsPolicy_FilterEnabled struct {
  1340  	// Specifies the % of requests for which the CORS filter is enabled.
  1341  	//
  1342  	// If neither ``enabled``, ``filter_enabled``, nor ``shadow_enabled`` are specified, the CORS
  1343  	// filter will be enabled for 100% of the requests.
  1344  	//
  1345  	// If :ref:`runtime_key <envoy_api_field_core.RuntimeFractionalPercent.runtime_key>` is
  1346  	// specified, Envoy will lookup the runtime key to get the percentage of requests to filter.
  1347  	FilterEnabled *core.RuntimeFractionalPercent `protobuf:"bytes,9,opt,name=filter_enabled,json=filterEnabled,proto3,oneof"`
  1348  }
  1349  
  1350  func (*CorsPolicy_Enabled) isCorsPolicy_EnabledSpecifier() {}
  1351  
  1352  func (*CorsPolicy_FilterEnabled) isCorsPolicy_EnabledSpecifier() {}
  1353  
  1354  // [#next-free-field: 34]
  1355  type RouteAction struct {
  1356  	state         protoimpl.MessageState
  1357  	sizeCache     protoimpl.SizeCache
  1358  	unknownFields protoimpl.UnknownFields
  1359  
  1360  	// Types that are assignable to ClusterSpecifier:
  1361  	//	*RouteAction_Cluster
  1362  	//	*RouteAction_ClusterHeader
  1363  	//	*RouteAction_WeightedClusters
  1364  	ClusterSpecifier isRouteAction_ClusterSpecifier `protobuf_oneof:"cluster_specifier"`
  1365  	// The HTTP status code to use when configured cluster is not found.
  1366  	// The default response code is 503 Service Unavailable.
  1367  	ClusterNotFoundResponseCode RouteAction_ClusterNotFoundResponseCode `protobuf:"varint,20,opt,name=cluster_not_found_response_code,json=clusterNotFoundResponseCode,proto3,enum=envoy.api.v2.route.RouteAction_ClusterNotFoundResponseCode" json:"cluster_not_found_response_code,omitempty"`
  1368  	// Optional endpoint metadata match criteria used by the subset load balancer. Only endpoints
  1369  	// in the upstream cluster with metadata matching what's set in this field will be considered
  1370  	// for load balancing. If using :ref:`weighted_clusters
  1371  	// <envoy_api_field_route.RouteAction.weighted_clusters>`, metadata will be merged, with values
  1372  	// provided there taking precedence. The filter name should be specified as *envoy.lb*.
  1373  	MetadataMatch *core.Metadata `protobuf:"bytes,4,opt,name=metadata_match,json=metadataMatch,proto3" json:"metadata_match,omitempty"`
  1374  	// Indicates that during forwarding, the matched prefix (or path) should be
  1375  	// swapped with this value. This option allows application URLs to be rooted
  1376  	// at a different path from those exposed at the reverse proxy layer. The router filter will
  1377  	// place the original path before rewrite into the :ref:`x-envoy-original-path
  1378  	// <config_http_filters_router_x-envoy-original-path>` header.
  1379  	//
  1380  	// Only one of *prefix_rewrite* or
  1381  	// :ref:`regex_rewrite <envoy_api_field_route.RouteAction.regex_rewrite>`
  1382  	// may be specified.
  1383  	//
  1384  	// .. attention::
  1385  	//
  1386  	//   Pay careful attention to the use of trailing slashes in the
  1387  	//   :ref:`route's match <envoy_api_field_route.Route.match>` prefix value.
  1388  	//   Stripping a prefix from a path requires multiple Routes to handle all cases. For example,
  1389  	//   rewriting */prefix* to */* and */prefix/etc* to */etc* cannot be done in a single
  1390  	//   :ref:`Route <envoy_api_msg_route.Route>`, as shown by the below config entries:
  1391  	//
  1392  	//   .. code-block:: yaml
  1393  	//
  1394  	//     - match:
  1395  	//         prefix: "/prefix/"
  1396  	//       route:
  1397  	//         prefix_rewrite: "/"
  1398  	//     - match:
  1399  	//         prefix: "/prefix"
  1400  	//       route:
  1401  	//         prefix_rewrite: "/"
  1402  	//
  1403  	//   Having above entries in the config, requests to */prefix* will be stripped to */*, while
  1404  	//   requests to */prefix/etc* will be stripped to */etc*.
  1405  	PrefixRewrite string `protobuf:"bytes,5,opt,name=prefix_rewrite,json=prefixRewrite,proto3" json:"prefix_rewrite,omitempty"`
  1406  	// Indicates that during forwarding, portions of the path that match the
  1407  	// pattern should be rewritten, even allowing the substitution of capture
  1408  	// groups from the pattern into the new path as specified by the rewrite
  1409  	// substitution string. This is useful to allow application paths to be
  1410  	// rewritten in a way that is aware of segments with variable content like
  1411  	// identifiers. The router filter will place the original path as it was
  1412  	// before the rewrite into the :ref:`x-envoy-original-path
  1413  	// <config_http_filters_router_x-envoy-original-path>` header.
  1414  	//
  1415  	// Only one of :ref:`prefix_rewrite <envoy_api_field_route.RouteAction.prefix_rewrite>`
  1416  	// or *regex_rewrite* may be specified.
  1417  	//
  1418  	// Examples using Google's `RE2 <https://github.com/google/re2>`_ engine:
  1419  	//
  1420  	// * The path pattern ``^/service/([^/]+)(/.*)$`` paired with a substitution
  1421  	//   string of ``\2/instance/\1`` would transform ``/service/foo/v1/api``
  1422  	//   into ``/v1/api/instance/foo``.
  1423  	//
  1424  	// * The pattern ``one`` paired with a substitution string of ``two`` would
  1425  	//   transform ``/xxx/one/yyy/one/zzz`` into ``/xxx/two/yyy/two/zzz``.
  1426  	//
  1427  	// * The pattern ``^(.*?)one(.*)$`` paired with a substitution string of
  1428  	//   ``\1two\2`` would replace only the first occurrence of ``one``,
  1429  	//   transforming path ``/xxx/one/yyy/one/zzz`` into ``/xxx/two/yyy/one/zzz``.
  1430  	//
  1431  	// * The pattern ``(?i)/xxx/`` paired with a substitution string of ``/yyy/``
  1432  	//   would do a case-insensitive match and transform path ``/aaa/XxX/bbb`` to
  1433  	//   ``/aaa/yyy/bbb``.
  1434  	RegexRewrite *matcher.RegexMatchAndSubstitute `protobuf:"bytes,32,opt,name=regex_rewrite,json=regexRewrite,proto3" json:"regex_rewrite,omitempty"`
  1435  	// Types that are assignable to HostRewriteSpecifier:
  1436  	//	*RouteAction_HostRewrite
  1437  	//	*RouteAction_AutoHostRewrite
  1438  	//	*RouteAction_AutoHostRewriteHeader
  1439  	HostRewriteSpecifier isRouteAction_HostRewriteSpecifier `protobuf_oneof:"host_rewrite_specifier"`
  1440  	// Specifies the upstream timeout for the route. If not specified, the default is 15s. This
  1441  	// spans between the point at which the entire downstream request (i.e. end-of-stream) has been
  1442  	// processed and when the upstream response has been completely processed. A value of 0 will
  1443  	// disable the route's timeout.
  1444  	//
  1445  	// .. note::
  1446  	//
  1447  	//   This timeout includes all retries. See also
  1448  	//   :ref:`config_http_filters_router_x-envoy-upstream-rq-timeout-ms`,
  1449  	//   :ref:`config_http_filters_router_x-envoy-upstream-rq-per-try-timeout-ms`, and the
  1450  	//   :ref:`retry overview <arch_overview_http_routing_retry>`.
  1451  	Timeout *duration.Duration `protobuf:"bytes,8,opt,name=timeout,proto3" json:"timeout,omitempty"`
  1452  	// Specifies the idle timeout for the route. If not specified, there is no per-route idle timeout,
  1453  	// although the connection manager wide :ref:`stream_idle_timeout
  1454  	// <envoy_api_field_config.filter.network.http_connection_manager.v2.HttpConnectionManager.stream_idle_timeout>`
  1455  	// will still apply. A value of 0 will completely disable the route's idle timeout, even if a
  1456  	// connection manager stream idle timeout is configured.
  1457  	//
  1458  	// The idle timeout is distinct to :ref:`timeout
  1459  	// <envoy_api_field_route.RouteAction.timeout>`, which provides an upper bound
  1460  	// on the upstream response time; :ref:`idle_timeout
  1461  	// <envoy_api_field_route.RouteAction.idle_timeout>` instead bounds the amount
  1462  	// of time the request's stream may be idle.
  1463  	//
  1464  	// After header decoding, the idle timeout will apply on downstream and
  1465  	// upstream request events. Each time an encode/decode event for headers or
  1466  	// data is processed for the stream, the timer will be reset. If the timeout
  1467  	// fires, the stream is terminated with a 408 Request Timeout error code if no
  1468  	// upstream response header has been received, otherwise a stream reset
  1469  	// occurs.
  1470  	IdleTimeout *duration.Duration `protobuf:"bytes,24,opt,name=idle_timeout,json=idleTimeout,proto3" json:"idle_timeout,omitempty"`
  1471  	// Indicates that the route has a retry policy. Note that if this is set,
  1472  	// it'll take precedence over the virtual host level retry policy entirely
  1473  	// (e.g.: policies are not merged, most internal one becomes the enforced policy).
  1474  	RetryPolicy *RetryPolicy `protobuf:"bytes,9,opt,name=retry_policy,json=retryPolicy,proto3" json:"retry_policy,omitempty"`
  1475  	// [#not-implemented-hide:]
  1476  	// Specifies the configuration for retry policy extension. Note that if this is set, it'll take
  1477  	// precedence over the virtual host level retry policy entirely (e.g.: policies are not merged,
  1478  	// most internal one becomes the enforced policy). :ref:`Retry policy <envoy_api_field_route.VirtualHost.retry_policy>`
  1479  	// should not be set if this field is used.
  1480  	RetryPolicyTypedConfig *any.Any `protobuf:"bytes,33,opt,name=retry_policy_typed_config,json=retryPolicyTypedConfig,proto3" json:"retry_policy_typed_config,omitempty"`
  1481  	// Indicates that the route has a request mirroring policy.
  1482  	//
  1483  	// .. attention::
  1484  	//   This field has been deprecated in favor of `request_mirror_policies` which supports one or
  1485  	//   more mirroring policies.
  1486  	//
  1487  	// Deprecated: Do not use.
  1488  	RequestMirrorPolicy *RouteAction_RequestMirrorPolicy `protobuf:"bytes,10,opt,name=request_mirror_policy,json=requestMirrorPolicy,proto3" json:"request_mirror_policy,omitempty"`
  1489  	// Indicates that the route has request mirroring policies.
  1490  	RequestMirrorPolicies []*RouteAction_RequestMirrorPolicy `protobuf:"bytes,30,rep,name=request_mirror_policies,json=requestMirrorPolicies,proto3" json:"request_mirror_policies,omitempty"`
  1491  	// Optionally specifies the :ref:`routing priority <arch_overview_http_routing_priority>`.
  1492  	Priority core.RoutingPriority `protobuf:"varint,11,opt,name=priority,proto3,enum=envoy.api.v2.core.RoutingPriority" json:"priority,omitempty"`
  1493  	// Specifies a set of rate limit configurations that could be applied to the
  1494  	// route.
  1495  	RateLimits []*RateLimit `protobuf:"bytes,13,rep,name=rate_limits,json=rateLimits,proto3" json:"rate_limits,omitempty"`
  1496  	// Specifies if the rate limit filter should include the virtual host rate
  1497  	// limits. By default, if the route configured rate limits, the virtual host
  1498  	// :ref:`rate_limits <envoy_api_field_route.VirtualHost.rate_limits>` are not applied to the
  1499  	// request.
  1500  	IncludeVhRateLimits *wrappers.BoolValue `protobuf:"bytes,14,opt,name=include_vh_rate_limits,json=includeVhRateLimits,proto3" json:"include_vh_rate_limits,omitempty"`
  1501  	// Specifies a list of hash policies to use for ring hash load balancing. Each
  1502  	// hash policy is evaluated individually and the combined result is used to
  1503  	// route the request. The method of combination is deterministic such that
  1504  	// identical lists of hash policies will produce the same hash. Since a hash
  1505  	// policy examines specific parts of a request, it can fail to produce a hash
  1506  	// (i.e. if the hashed header is not present). If (and only if) all configured
  1507  	// hash policies fail to generate a hash, no hash will be produced for
  1508  	// the route. In this case, the behavior is the same as if no hash policies
  1509  	// were specified (i.e. the ring hash load balancer will choose a random
  1510  	// backend). If a hash policy has the "terminal" attribute set to true, and
  1511  	// there is already a hash generated, the hash is returned immediately,
  1512  	// ignoring the rest of the hash policy list.
  1513  	HashPolicy []*RouteAction_HashPolicy `protobuf:"bytes,15,rep,name=hash_policy,json=hashPolicy,proto3" json:"hash_policy,omitempty"`
  1514  	// Indicates that the route has a CORS policy.
  1515  	Cors *CorsPolicy `protobuf:"bytes,17,opt,name=cors,proto3" json:"cors,omitempty"`
  1516  	// If present, and the request is a gRPC request, use the
  1517  	// `grpc-timeout header <https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md>`_,
  1518  	// or its default value (infinity) instead of
  1519  	// :ref:`timeout <envoy_api_field_route.RouteAction.timeout>`, but limit the applied timeout
  1520  	// to the maximum value specified here. If configured as 0, the maximum allowed timeout for
  1521  	// gRPC requests is infinity. If not configured at all, the `grpc-timeout` header is not used
  1522  	// and gRPC requests time out like any other requests using
  1523  	// :ref:`timeout <envoy_api_field_route.RouteAction.timeout>` or its default.
  1524  	// This can be used to prevent unexpected upstream request timeouts due to potentially long
  1525  	// time gaps between gRPC request and response in gRPC streaming mode.
  1526  	//
  1527  	// .. note::
  1528  	//
  1529  	//    If a timeout is specified using :ref:`config_http_filters_router_x-envoy-upstream-rq-timeout-ms`, it takes
  1530  	//    precedence over `grpc-timeout header <https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md>`_, when
  1531  	//    both are present. See also
  1532  	//    :ref:`config_http_filters_router_x-envoy-upstream-rq-timeout-ms`,
  1533  	//    :ref:`config_http_filters_router_x-envoy-upstream-rq-per-try-timeout-ms`, and the
  1534  	//    :ref:`retry overview <arch_overview_http_routing_retry>`.
  1535  	MaxGrpcTimeout *duration.Duration `protobuf:"bytes,23,opt,name=max_grpc_timeout,json=maxGrpcTimeout,proto3" json:"max_grpc_timeout,omitempty"`
  1536  	// If present, Envoy will adjust the timeout provided by the `grpc-timeout` header by subtracting
  1537  	// the provided duration from the header. This is useful in allowing Envoy to set its global
  1538  	// timeout to be less than that of the deadline imposed by the calling client, which makes it more
  1539  	// likely that Envoy will handle the timeout instead of having the call canceled by the client.
  1540  	// The offset will only be applied if the provided grpc_timeout is greater than the offset. This
  1541  	// ensures that the offset will only ever decrease the timeout and never set it to 0 (meaning
  1542  	// infinity).
  1543  	GrpcTimeoutOffset      *duration.Duration                 `protobuf:"bytes,28,opt,name=grpc_timeout_offset,json=grpcTimeoutOffset,proto3" json:"grpc_timeout_offset,omitempty"`
  1544  	UpgradeConfigs         []*RouteAction_UpgradeConfig       `protobuf:"bytes,25,rep,name=upgrade_configs,json=upgradeConfigs,proto3" json:"upgrade_configs,omitempty"`
  1545  	InternalRedirectAction RouteAction_InternalRedirectAction `protobuf:"varint,26,opt,name=internal_redirect_action,json=internalRedirectAction,proto3,enum=envoy.api.v2.route.RouteAction_InternalRedirectAction" json:"internal_redirect_action,omitempty"`
  1546  	// An internal redirect is handled, iff the number of previous internal redirects that a
  1547  	// downstream request has encountered is lower than this value, and
  1548  	// :ref:`internal_redirect_action <envoy_api_field_route.RouteAction.internal_redirect_action>`
  1549  	// is set to :ref:`HANDLE_INTERNAL_REDIRECT
  1550  	// <envoy_api_enum_value_route.RouteAction.InternalRedirectAction.HANDLE_INTERNAL_REDIRECT>`
  1551  	// In the case where a downstream request is bounced among multiple routes by internal redirect,
  1552  	// the first route that hits this threshold, or has
  1553  	// :ref:`internal_redirect_action <envoy_api_field_route.RouteAction.internal_redirect_action>`
  1554  	// set to
  1555  	// :ref:`PASS_THROUGH_INTERNAL_REDIRECT
  1556  	// <envoy_api_enum_value_route.RouteAction.InternalRedirectAction.PASS_THROUGH_INTERNAL_REDIRECT>`
  1557  	// will pass the redirect back to downstream.
  1558  	//
  1559  	// If not specified, at most one redirect will be followed.
  1560  	MaxInternalRedirects *wrappers.UInt32Value `protobuf:"bytes,31,opt,name=max_internal_redirects,json=maxInternalRedirects,proto3" json:"max_internal_redirects,omitempty"`
  1561  	// Indicates that the route has a hedge policy. Note that if this is set,
  1562  	// it'll take precedence over the virtual host level hedge policy entirely
  1563  	// (e.g.: policies are not merged, most internal one becomes the enforced policy).
  1564  	HedgePolicy *HedgePolicy `protobuf:"bytes,27,opt,name=hedge_policy,json=hedgePolicy,proto3" json:"hedge_policy,omitempty"`
  1565  }
  1566  
  1567  func (x *RouteAction) Reset() {
  1568  	*x = RouteAction{}
  1569  	if protoimpl.UnsafeEnabled {
  1570  		mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[6]
  1571  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1572  		ms.StoreMessageInfo(mi)
  1573  	}
  1574  }
  1575  
  1576  func (x *RouteAction) String() string {
  1577  	return protoimpl.X.MessageStringOf(x)
  1578  }
  1579  
  1580  func (*RouteAction) ProtoMessage() {}
  1581  
  1582  func (x *RouteAction) ProtoReflect() protoreflect.Message {
  1583  	mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[6]
  1584  	if protoimpl.UnsafeEnabled && x != nil {
  1585  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1586  		if ms.LoadMessageInfo() == nil {
  1587  			ms.StoreMessageInfo(mi)
  1588  		}
  1589  		return ms
  1590  	}
  1591  	return mi.MessageOf(x)
  1592  }
  1593  
  1594  // Deprecated: Use RouteAction.ProtoReflect.Descriptor instead.
  1595  func (*RouteAction) Descriptor() ([]byte, []int) {
  1596  	return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{6}
  1597  }
  1598  
  1599  func (m *RouteAction) GetClusterSpecifier() isRouteAction_ClusterSpecifier {
  1600  	if m != nil {
  1601  		return m.ClusterSpecifier
  1602  	}
  1603  	return nil
  1604  }
  1605  
  1606  func (x *RouteAction) GetCluster() string {
  1607  	if x, ok := x.GetClusterSpecifier().(*RouteAction_Cluster); ok {
  1608  		return x.Cluster
  1609  	}
  1610  	return ""
  1611  }
  1612  
  1613  func (x *RouteAction) GetClusterHeader() string {
  1614  	if x, ok := x.GetClusterSpecifier().(*RouteAction_ClusterHeader); ok {
  1615  		return x.ClusterHeader
  1616  	}
  1617  	return ""
  1618  }
  1619  
  1620  func (x *RouteAction) GetWeightedClusters() *WeightedCluster {
  1621  	if x, ok := x.GetClusterSpecifier().(*RouteAction_WeightedClusters); ok {
  1622  		return x.WeightedClusters
  1623  	}
  1624  	return nil
  1625  }
  1626  
  1627  func (x *RouteAction) GetClusterNotFoundResponseCode() RouteAction_ClusterNotFoundResponseCode {
  1628  	if x != nil {
  1629  		return x.ClusterNotFoundResponseCode
  1630  	}
  1631  	return RouteAction_SERVICE_UNAVAILABLE
  1632  }
  1633  
  1634  func (x *RouteAction) GetMetadataMatch() *core.Metadata {
  1635  	if x != nil {
  1636  		return x.MetadataMatch
  1637  	}
  1638  	return nil
  1639  }
  1640  
  1641  func (x *RouteAction) GetPrefixRewrite() string {
  1642  	if x != nil {
  1643  		return x.PrefixRewrite
  1644  	}
  1645  	return ""
  1646  }
  1647  
  1648  func (x *RouteAction) GetRegexRewrite() *matcher.RegexMatchAndSubstitute {
  1649  	if x != nil {
  1650  		return x.RegexRewrite
  1651  	}
  1652  	return nil
  1653  }
  1654  
  1655  func (m *RouteAction) GetHostRewriteSpecifier() isRouteAction_HostRewriteSpecifier {
  1656  	if m != nil {
  1657  		return m.HostRewriteSpecifier
  1658  	}
  1659  	return nil
  1660  }
  1661  
  1662  func (x *RouteAction) GetHostRewrite() string {
  1663  	if x, ok := x.GetHostRewriteSpecifier().(*RouteAction_HostRewrite); ok {
  1664  		return x.HostRewrite
  1665  	}
  1666  	return ""
  1667  }
  1668  
  1669  func (x *RouteAction) GetAutoHostRewrite() *wrappers.BoolValue {
  1670  	if x, ok := x.GetHostRewriteSpecifier().(*RouteAction_AutoHostRewrite); ok {
  1671  		return x.AutoHostRewrite
  1672  	}
  1673  	return nil
  1674  }
  1675  
  1676  func (x *RouteAction) GetAutoHostRewriteHeader() string {
  1677  	if x, ok := x.GetHostRewriteSpecifier().(*RouteAction_AutoHostRewriteHeader); ok {
  1678  		return x.AutoHostRewriteHeader
  1679  	}
  1680  	return ""
  1681  }
  1682  
  1683  func (x *RouteAction) GetTimeout() *duration.Duration {
  1684  	if x != nil {
  1685  		return x.Timeout
  1686  	}
  1687  	return nil
  1688  }
  1689  
  1690  func (x *RouteAction) GetIdleTimeout() *duration.Duration {
  1691  	if x != nil {
  1692  		return x.IdleTimeout
  1693  	}
  1694  	return nil
  1695  }
  1696  
  1697  func (x *RouteAction) GetRetryPolicy() *RetryPolicy {
  1698  	if x != nil {
  1699  		return x.RetryPolicy
  1700  	}
  1701  	return nil
  1702  }
  1703  
  1704  func (x *RouteAction) GetRetryPolicyTypedConfig() *any.Any {
  1705  	if x != nil {
  1706  		return x.RetryPolicyTypedConfig
  1707  	}
  1708  	return nil
  1709  }
  1710  
  1711  // Deprecated: Do not use.
  1712  func (x *RouteAction) GetRequestMirrorPolicy() *RouteAction_RequestMirrorPolicy {
  1713  	if x != nil {
  1714  		return x.RequestMirrorPolicy
  1715  	}
  1716  	return nil
  1717  }
  1718  
  1719  func (x *RouteAction) GetRequestMirrorPolicies() []*RouteAction_RequestMirrorPolicy {
  1720  	if x != nil {
  1721  		return x.RequestMirrorPolicies
  1722  	}
  1723  	return nil
  1724  }
  1725  
  1726  func (x *RouteAction) GetPriority() core.RoutingPriority {
  1727  	if x != nil {
  1728  		return x.Priority
  1729  	}
  1730  	return core.RoutingPriority_DEFAULT
  1731  }
  1732  
  1733  func (x *RouteAction) GetRateLimits() []*RateLimit {
  1734  	if x != nil {
  1735  		return x.RateLimits
  1736  	}
  1737  	return nil
  1738  }
  1739  
  1740  func (x *RouteAction) GetIncludeVhRateLimits() *wrappers.BoolValue {
  1741  	if x != nil {
  1742  		return x.IncludeVhRateLimits
  1743  	}
  1744  	return nil
  1745  }
  1746  
  1747  func (x *RouteAction) GetHashPolicy() []*RouteAction_HashPolicy {
  1748  	if x != nil {
  1749  		return x.HashPolicy
  1750  	}
  1751  	return nil
  1752  }
  1753  
  1754  func (x *RouteAction) GetCors() *CorsPolicy {
  1755  	if x != nil {
  1756  		return x.Cors
  1757  	}
  1758  	return nil
  1759  }
  1760  
  1761  func (x *RouteAction) GetMaxGrpcTimeout() *duration.Duration {
  1762  	if x != nil {
  1763  		return x.MaxGrpcTimeout
  1764  	}
  1765  	return nil
  1766  }
  1767  
  1768  func (x *RouteAction) GetGrpcTimeoutOffset() *duration.Duration {
  1769  	if x != nil {
  1770  		return x.GrpcTimeoutOffset
  1771  	}
  1772  	return nil
  1773  }
  1774  
  1775  func (x *RouteAction) GetUpgradeConfigs() []*RouteAction_UpgradeConfig {
  1776  	if x != nil {
  1777  		return x.UpgradeConfigs
  1778  	}
  1779  	return nil
  1780  }
  1781  
  1782  func (x *RouteAction) GetInternalRedirectAction() RouteAction_InternalRedirectAction {
  1783  	if x != nil {
  1784  		return x.InternalRedirectAction
  1785  	}
  1786  	return RouteAction_PASS_THROUGH_INTERNAL_REDIRECT
  1787  }
  1788  
  1789  func (x *RouteAction) GetMaxInternalRedirects() *wrappers.UInt32Value {
  1790  	if x != nil {
  1791  		return x.MaxInternalRedirects
  1792  	}
  1793  	return nil
  1794  }
  1795  
  1796  func (x *RouteAction) GetHedgePolicy() *HedgePolicy {
  1797  	if x != nil {
  1798  		return x.HedgePolicy
  1799  	}
  1800  	return nil
  1801  }
  1802  
  1803  type isRouteAction_ClusterSpecifier interface {
  1804  	isRouteAction_ClusterSpecifier()
  1805  }
  1806  
  1807  type RouteAction_Cluster struct {
  1808  	// Indicates the upstream cluster to which the request should be routed
  1809  	// to.
  1810  	Cluster string `protobuf:"bytes,1,opt,name=cluster,proto3,oneof"`
  1811  }
  1812  
  1813  type RouteAction_ClusterHeader struct {
  1814  	// Envoy will determine the cluster to route to by reading the value of the
  1815  	// HTTP header named by cluster_header from the request headers. If the
  1816  	// header is not found or the referenced cluster does not exist, Envoy will
  1817  	// return a 404 response.
  1818  	//
  1819  	// .. attention::
  1820  	//
  1821  	//   Internally, Envoy always uses the HTTP/2 *:authority* header to represent the HTTP/1
  1822  	//   *Host* header. Thus, if attempting to match on *Host*, match on *:authority* instead.
  1823  	//
  1824  	// .. note::
  1825  	//
  1826  	//   If the header appears multiple times only the first value is used.
  1827  	ClusterHeader string `protobuf:"bytes,2,opt,name=cluster_header,json=clusterHeader,proto3,oneof"`
  1828  }
  1829  
  1830  type RouteAction_WeightedClusters struct {
  1831  	// Multiple upstream clusters can be specified for a given route. The
  1832  	// request is routed to one of the upstream clusters based on weights
  1833  	// assigned to each cluster. See
  1834  	// :ref:`traffic splitting <config_http_conn_man_route_table_traffic_splitting_split>`
  1835  	// for additional documentation.
  1836  	WeightedClusters *WeightedCluster `protobuf:"bytes,3,opt,name=weighted_clusters,json=weightedClusters,proto3,oneof"`
  1837  }
  1838  
  1839  func (*RouteAction_Cluster) isRouteAction_ClusterSpecifier() {}
  1840  
  1841  func (*RouteAction_ClusterHeader) isRouteAction_ClusterSpecifier() {}
  1842  
  1843  func (*RouteAction_WeightedClusters) isRouteAction_ClusterSpecifier() {}
  1844  
  1845  type isRouteAction_HostRewriteSpecifier interface {
  1846  	isRouteAction_HostRewriteSpecifier()
  1847  }
  1848  
  1849  type RouteAction_HostRewrite struct {
  1850  	// Indicates that during forwarding, the host header will be swapped with
  1851  	// this value.
  1852  	HostRewrite string `protobuf:"bytes,6,opt,name=host_rewrite,json=hostRewrite,proto3,oneof"`
  1853  }
  1854  
  1855  type RouteAction_AutoHostRewrite struct {
  1856  	// Indicates that during forwarding, the host header will be swapped with
  1857  	// the hostname of the upstream host chosen by the cluster manager. This
  1858  	// option is applicable only when the destination cluster for a route is of
  1859  	// type *strict_dns* or *logical_dns*. Setting this to true with other cluster
  1860  	// types has no effect.
  1861  	AutoHostRewrite *wrappers.BoolValue `protobuf:"bytes,7,opt,name=auto_host_rewrite,json=autoHostRewrite,proto3,oneof"`
  1862  }
  1863  
  1864  type RouteAction_AutoHostRewriteHeader struct {
  1865  	// Indicates that during forwarding, the host header will be swapped with the content of given
  1866  	// downstream or :ref:`custom <config_http_conn_man_headers_custom_request_headers>` header.
  1867  	// If header value is empty, host header is left intact.
  1868  	//
  1869  	// .. attention::
  1870  	//
  1871  	//   Pay attention to the potential security implications of using this option. Provided header
  1872  	//   must come from trusted source.
  1873  	//
  1874  	// .. note::
  1875  	//
  1876  	//   If the header appears multiple times only the first value is used.
  1877  	AutoHostRewriteHeader string `protobuf:"bytes,29,opt,name=auto_host_rewrite_header,json=autoHostRewriteHeader,proto3,oneof"`
  1878  }
  1879  
  1880  func (*RouteAction_HostRewrite) isRouteAction_HostRewriteSpecifier() {}
  1881  
  1882  func (*RouteAction_AutoHostRewrite) isRouteAction_HostRewriteSpecifier() {}
  1883  
  1884  func (*RouteAction_AutoHostRewriteHeader) isRouteAction_HostRewriteSpecifier() {}
  1885  
  1886  // HTTP retry :ref:`architecture overview <arch_overview_http_routing_retry>`.
  1887  // [#next-free-field: 11]
  1888  type RetryPolicy struct {
  1889  	state         protoimpl.MessageState
  1890  	sizeCache     protoimpl.SizeCache
  1891  	unknownFields protoimpl.UnknownFields
  1892  
  1893  	// Specifies the conditions under which retry takes place. These are the same
  1894  	// conditions documented for :ref:`config_http_filters_router_x-envoy-retry-on` and
  1895  	// :ref:`config_http_filters_router_x-envoy-retry-grpc-on`.
  1896  	RetryOn string `protobuf:"bytes,1,opt,name=retry_on,json=retryOn,proto3" json:"retry_on,omitempty"`
  1897  	// Specifies the allowed number of retries. This parameter is optional and
  1898  	// defaults to 1. These are the same conditions documented for
  1899  	// :ref:`config_http_filters_router_x-envoy-max-retries`.
  1900  	NumRetries *wrappers.UInt32Value `protobuf:"bytes,2,opt,name=num_retries,json=numRetries,proto3" json:"num_retries,omitempty"`
  1901  	// Specifies a non-zero upstream timeout per retry attempt. This parameter is optional. The
  1902  	// same conditions documented for
  1903  	// :ref:`config_http_filters_router_x-envoy-upstream-rq-per-try-timeout-ms` apply.
  1904  	//
  1905  	// .. note::
  1906  	//
  1907  	//   If left unspecified, Envoy will use the global
  1908  	//   :ref:`route timeout <envoy_api_field_route.RouteAction.timeout>` for the request.
  1909  	//   Consequently, when using a :ref:`5xx <config_http_filters_router_x-envoy-retry-on>` based
  1910  	//   retry policy, a request that times out will not be retried as the total timeout budget
  1911  	//   would have been exhausted.
  1912  	PerTryTimeout *duration.Duration `protobuf:"bytes,3,opt,name=per_try_timeout,json=perTryTimeout,proto3" json:"per_try_timeout,omitempty"`
  1913  	// Specifies an implementation of a RetryPriority which is used to determine the
  1914  	// distribution of load across priorities used for retries. Refer to
  1915  	// :ref:`retry plugin configuration <arch_overview_http_retry_plugins>` for more details.
  1916  	RetryPriority *RetryPolicy_RetryPriority `protobuf:"bytes,4,opt,name=retry_priority,json=retryPriority,proto3" json:"retry_priority,omitempty"`
  1917  	// Specifies a collection of RetryHostPredicates that will be consulted when selecting a host
  1918  	// for retries. If any of the predicates reject the host, host selection will be reattempted.
  1919  	// Refer to :ref:`retry plugin configuration <arch_overview_http_retry_plugins>` for more
  1920  	// details.
  1921  	RetryHostPredicate []*RetryPolicy_RetryHostPredicate `protobuf:"bytes,5,rep,name=retry_host_predicate,json=retryHostPredicate,proto3" json:"retry_host_predicate,omitempty"`
  1922  	// The maximum number of times host selection will be reattempted before giving up, at which
  1923  	// point the host that was last selected will be routed to. If unspecified, this will default to
  1924  	// retrying once.
  1925  	HostSelectionRetryMaxAttempts int64 `protobuf:"varint,6,opt,name=host_selection_retry_max_attempts,json=hostSelectionRetryMaxAttempts,proto3" json:"host_selection_retry_max_attempts,omitempty"`
  1926  	// HTTP status codes that should trigger a retry in addition to those specified by retry_on.
  1927  	RetriableStatusCodes []uint32 `protobuf:"varint,7,rep,packed,name=retriable_status_codes,json=retriableStatusCodes,proto3" json:"retriable_status_codes,omitempty"`
  1928  	// Specifies parameters that control retry back off. This parameter is optional, in which case the
  1929  	// default base interval is 25 milliseconds or, if set, the current value of the
  1930  	// `upstream.base_retry_backoff_ms` runtime parameter. The default maximum interval is 10 times
  1931  	// the base interval. The documentation for :ref:`config_http_filters_router_x-envoy-max-retries`
  1932  	// describes Envoy's back-off algorithm.
  1933  	RetryBackOff *RetryPolicy_RetryBackOff `protobuf:"bytes,8,opt,name=retry_back_off,json=retryBackOff,proto3" json:"retry_back_off,omitempty"`
  1934  	// HTTP response headers that trigger a retry if present in the response. A retry will be
  1935  	// triggered if any of the header matches match the upstream response headers.
  1936  	// The field is only consulted if 'retriable-headers' retry policy is active.
  1937  	RetriableHeaders []*HeaderMatcher `protobuf:"bytes,9,rep,name=retriable_headers,json=retriableHeaders,proto3" json:"retriable_headers,omitempty"`
  1938  	// HTTP headers which must be present in the request for retries to be attempted.
  1939  	RetriableRequestHeaders []*HeaderMatcher `protobuf:"bytes,10,rep,name=retriable_request_headers,json=retriableRequestHeaders,proto3" json:"retriable_request_headers,omitempty"`
  1940  }
  1941  
  1942  func (x *RetryPolicy) Reset() {
  1943  	*x = RetryPolicy{}
  1944  	if protoimpl.UnsafeEnabled {
  1945  		mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[7]
  1946  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1947  		ms.StoreMessageInfo(mi)
  1948  	}
  1949  }
  1950  
  1951  func (x *RetryPolicy) String() string {
  1952  	return protoimpl.X.MessageStringOf(x)
  1953  }
  1954  
  1955  func (*RetryPolicy) ProtoMessage() {}
  1956  
  1957  func (x *RetryPolicy) ProtoReflect() protoreflect.Message {
  1958  	mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[7]
  1959  	if protoimpl.UnsafeEnabled && x != nil {
  1960  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1961  		if ms.LoadMessageInfo() == nil {
  1962  			ms.StoreMessageInfo(mi)
  1963  		}
  1964  		return ms
  1965  	}
  1966  	return mi.MessageOf(x)
  1967  }
  1968  
  1969  // Deprecated: Use RetryPolicy.ProtoReflect.Descriptor instead.
  1970  func (*RetryPolicy) Descriptor() ([]byte, []int) {
  1971  	return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{7}
  1972  }
  1973  
  1974  func (x *RetryPolicy) GetRetryOn() string {
  1975  	if x != nil {
  1976  		return x.RetryOn
  1977  	}
  1978  	return ""
  1979  }
  1980  
  1981  func (x *RetryPolicy) GetNumRetries() *wrappers.UInt32Value {
  1982  	if x != nil {
  1983  		return x.NumRetries
  1984  	}
  1985  	return nil
  1986  }
  1987  
  1988  func (x *RetryPolicy) GetPerTryTimeout() *duration.Duration {
  1989  	if x != nil {
  1990  		return x.PerTryTimeout
  1991  	}
  1992  	return nil
  1993  }
  1994  
  1995  func (x *RetryPolicy) GetRetryPriority() *RetryPolicy_RetryPriority {
  1996  	if x != nil {
  1997  		return x.RetryPriority
  1998  	}
  1999  	return nil
  2000  }
  2001  
  2002  func (x *RetryPolicy) GetRetryHostPredicate() []*RetryPolicy_RetryHostPredicate {
  2003  	if x != nil {
  2004  		return x.RetryHostPredicate
  2005  	}
  2006  	return nil
  2007  }
  2008  
  2009  func (x *RetryPolicy) GetHostSelectionRetryMaxAttempts() int64 {
  2010  	if x != nil {
  2011  		return x.HostSelectionRetryMaxAttempts
  2012  	}
  2013  	return 0
  2014  }
  2015  
  2016  func (x *RetryPolicy) GetRetriableStatusCodes() []uint32 {
  2017  	if x != nil {
  2018  		return x.RetriableStatusCodes
  2019  	}
  2020  	return nil
  2021  }
  2022  
  2023  func (x *RetryPolicy) GetRetryBackOff() *RetryPolicy_RetryBackOff {
  2024  	if x != nil {
  2025  		return x.RetryBackOff
  2026  	}
  2027  	return nil
  2028  }
  2029  
  2030  func (x *RetryPolicy) GetRetriableHeaders() []*HeaderMatcher {
  2031  	if x != nil {
  2032  		return x.RetriableHeaders
  2033  	}
  2034  	return nil
  2035  }
  2036  
  2037  func (x *RetryPolicy) GetRetriableRequestHeaders() []*HeaderMatcher {
  2038  	if x != nil {
  2039  		return x.RetriableRequestHeaders
  2040  	}
  2041  	return nil
  2042  }
  2043  
  2044  // HTTP request hedging :ref:`architecture overview <arch_overview_http_routing_hedging>`.
  2045  type HedgePolicy struct {
  2046  	state         protoimpl.MessageState
  2047  	sizeCache     protoimpl.SizeCache
  2048  	unknownFields protoimpl.UnknownFields
  2049  
  2050  	// Specifies the number of initial requests that should be sent upstream.
  2051  	// Must be at least 1.
  2052  	// Defaults to 1.
  2053  	// [#not-implemented-hide:]
  2054  	InitialRequests *wrappers.UInt32Value `protobuf:"bytes,1,opt,name=initial_requests,json=initialRequests,proto3" json:"initial_requests,omitempty"`
  2055  	// Specifies a probability that an additional upstream request should be sent
  2056  	// on top of what is specified by initial_requests.
  2057  	// Defaults to 0.
  2058  	// [#not-implemented-hide:]
  2059  	AdditionalRequestChance *_type.FractionalPercent `protobuf:"bytes,2,opt,name=additional_request_chance,json=additionalRequestChance,proto3" json:"additional_request_chance,omitempty"`
  2060  	// Indicates that a hedged request should be sent when the per-try timeout is hit.
  2061  	// This means that a retry will be issued without resetting the original request, leaving multiple upstream requests in flight.
  2062  	// The first request to complete successfully will be the one returned to the caller.
  2063  	//
  2064  	// * At any time, a successful response (i.e. not triggering any of the retry-on conditions) would be returned to the client.
  2065  	// * Before per-try timeout, an error response (per retry-on conditions) would be retried immediately or returned ot the client
  2066  	//   if there are no more retries left.
  2067  	// * After per-try timeout, an error response would be discarded, as a retry in the form of a hedged request is already in progress.
  2068  	//
  2069  	// Note: For this to have effect, you must have a :ref:`RetryPolicy <envoy_api_msg_route.RetryPolicy>` that retries at least
  2070  	// one error code and specifies a maximum number of retries.
  2071  	//
  2072  	// Defaults to false.
  2073  	HedgeOnPerTryTimeout bool `protobuf:"varint,3,opt,name=hedge_on_per_try_timeout,json=hedgeOnPerTryTimeout,proto3" json:"hedge_on_per_try_timeout,omitempty"`
  2074  }
  2075  
  2076  func (x *HedgePolicy) Reset() {
  2077  	*x = HedgePolicy{}
  2078  	if protoimpl.UnsafeEnabled {
  2079  		mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[8]
  2080  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2081  		ms.StoreMessageInfo(mi)
  2082  	}
  2083  }
  2084  
  2085  func (x *HedgePolicy) String() string {
  2086  	return protoimpl.X.MessageStringOf(x)
  2087  }
  2088  
  2089  func (*HedgePolicy) ProtoMessage() {}
  2090  
  2091  func (x *HedgePolicy) ProtoReflect() protoreflect.Message {
  2092  	mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[8]
  2093  	if protoimpl.UnsafeEnabled && x != nil {
  2094  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2095  		if ms.LoadMessageInfo() == nil {
  2096  			ms.StoreMessageInfo(mi)
  2097  		}
  2098  		return ms
  2099  	}
  2100  	return mi.MessageOf(x)
  2101  }
  2102  
  2103  // Deprecated: Use HedgePolicy.ProtoReflect.Descriptor instead.
  2104  func (*HedgePolicy) Descriptor() ([]byte, []int) {
  2105  	return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{8}
  2106  }
  2107  
  2108  func (x *HedgePolicy) GetInitialRequests() *wrappers.UInt32Value {
  2109  	if x != nil {
  2110  		return x.InitialRequests
  2111  	}
  2112  	return nil
  2113  }
  2114  
  2115  func (x *HedgePolicy) GetAdditionalRequestChance() *_type.FractionalPercent {
  2116  	if x != nil {
  2117  		return x.AdditionalRequestChance
  2118  	}
  2119  	return nil
  2120  }
  2121  
  2122  func (x *HedgePolicy) GetHedgeOnPerTryTimeout() bool {
  2123  	if x != nil {
  2124  		return x.HedgeOnPerTryTimeout
  2125  	}
  2126  	return false
  2127  }
  2128  
  2129  // [#next-free-field: 9]
  2130  type RedirectAction struct {
  2131  	state         protoimpl.MessageState
  2132  	sizeCache     protoimpl.SizeCache
  2133  	unknownFields protoimpl.UnknownFields
  2134  
  2135  	// When the scheme redirection take place, the following rules apply:
  2136  	//  1. If the source URI scheme is `http` and the port is explicitly
  2137  	//     set to `:80`, the port will be removed after the redirection
  2138  	//  2. If the source URI scheme is `https` and the port is explicitly
  2139  	//     set to `:443`, the port will be removed after the redirection
  2140  	//
  2141  	// Types that are assignable to SchemeRewriteSpecifier:
  2142  	//	*RedirectAction_HttpsRedirect
  2143  	//	*RedirectAction_SchemeRedirect
  2144  	SchemeRewriteSpecifier isRedirectAction_SchemeRewriteSpecifier `protobuf_oneof:"scheme_rewrite_specifier"`
  2145  	// The host portion of the URL will be swapped with this value.
  2146  	HostRedirect string `protobuf:"bytes,1,opt,name=host_redirect,json=hostRedirect,proto3" json:"host_redirect,omitempty"`
  2147  	// The port value of the URL will be swapped with this value.
  2148  	PortRedirect uint32 `protobuf:"varint,8,opt,name=port_redirect,json=portRedirect,proto3" json:"port_redirect,omitempty"`
  2149  	// Types that are assignable to PathRewriteSpecifier:
  2150  	//	*RedirectAction_PathRedirect
  2151  	//	*RedirectAction_PrefixRewrite
  2152  	PathRewriteSpecifier isRedirectAction_PathRewriteSpecifier `protobuf_oneof:"path_rewrite_specifier"`
  2153  	// The HTTP status code to use in the redirect response. The default response
  2154  	// code is MOVED_PERMANENTLY (301).
  2155  	ResponseCode RedirectAction_RedirectResponseCode `protobuf:"varint,3,opt,name=response_code,json=responseCode,proto3,enum=envoy.api.v2.route.RedirectAction_RedirectResponseCode" json:"response_code,omitempty"`
  2156  	// Indicates that during redirection, the query portion of the URL will
  2157  	// be removed. Default value is false.
  2158  	StripQuery bool `protobuf:"varint,6,opt,name=strip_query,json=stripQuery,proto3" json:"strip_query,omitempty"`
  2159  }
  2160  
  2161  func (x *RedirectAction) Reset() {
  2162  	*x = RedirectAction{}
  2163  	if protoimpl.UnsafeEnabled {
  2164  		mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[9]
  2165  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2166  		ms.StoreMessageInfo(mi)
  2167  	}
  2168  }
  2169  
  2170  func (x *RedirectAction) String() string {
  2171  	return protoimpl.X.MessageStringOf(x)
  2172  }
  2173  
  2174  func (*RedirectAction) ProtoMessage() {}
  2175  
  2176  func (x *RedirectAction) ProtoReflect() protoreflect.Message {
  2177  	mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[9]
  2178  	if protoimpl.UnsafeEnabled && x != nil {
  2179  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2180  		if ms.LoadMessageInfo() == nil {
  2181  			ms.StoreMessageInfo(mi)
  2182  		}
  2183  		return ms
  2184  	}
  2185  	return mi.MessageOf(x)
  2186  }
  2187  
  2188  // Deprecated: Use RedirectAction.ProtoReflect.Descriptor instead.
  2189  func (*RedirectAction) Descriptor() ([]byte, []int) {
  2190  	return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{9}
  2191  }
  2192  
  2193  func (m *RedirectAction) GetSchemeRewriteSpecifier() isRedirectAction_SchemeRewriteSpecifier {
  2194  	if m != nil {
  2195  		return m.SchemeRewriteSpecifier
  2196  	}
  2197  	return nil
  2198  }
  2199  
  2200  func (x *RedirectAction) GetHttpsRedirect() bool {
  2201  	if x, ok := x.GetSchemeRewriteSpecifier().(*RedirectAction_HttpsRedirect); ok {
  2202  		return x.HttpsRedirect
  2203  	}
  2204  	return false
  2205  }
  2206  
  2207  func (x *RedirectAction) GetSchemeRedirect() string {
  2208  	if x, ok := x.GetSchemeRewriteSpecifier().(*RedirectAction_SchemeRedirect); ok {
  2209  		return x.SchemeRedirect
  2210  	}
  2211  	return ""
  2212  }
  2213  
  2214  func (x *RedirectAction) GetHostRedirect() string {
  2215  	if x != nil {
  2216  		return x.HostRedirect
  2217  	}
  2218  	return ""
  2219  }
  2220  
  2221  func (x *RedirectAction) GetPortRedirect() uint32 {
  2222  	if x != nil {
  2223  		return x.PortRedirect
  2224  	}
  2225  	return 0
  2226  }
  2227  
  2228  func (m *RedirectAction) GetPathRewriteSpecifier() isRedirectAction_PathRewriteSpecifier {
  2229  	if m != nil {
  2230  		return m.PathRewriteSpecifier
  2231  	}
  2232  	return nil
  2233  }
  2234  
  2235  func (x *RedirectAction) GetPathRedirect() string {
  2236  	if x, ok := x.GetPathRewriteSpecifier().(*RedirectAction_PathRedirect); ok {
  2237  		return x.PathRedirect
  2238  	}
  2239  	return ""
  2240  }
  2241  
  2242  func (x *RedirectAction) GetPrefixRewrite() string {
  2243  	if x, ok := x.GetPathRewriteSpecifier().(*RedirectAction_PrefixRewrite); ok {
  2244  		return x.PrefixRewrite
  2245  	}
  2246  	return ""
  2247  }
  2248  
  2249  func (x *RedirectAction) GetResponseCode() RedirectAction_RedirectResponseCode {
  2250  	if x != nil {
  2251  		return x.ResponseCode
  2252  	}
  2253  	return RedirectAction_MOVED_PERMANENTLY
  2254  }
  2255  
  2256  func (x *RedirectAction) GetStripQuery() bool {
  2257  	if x != nil {
  2258  		return x.StripQuery
  2259  	}
  2260  	return false
  2261  }
  2262  
  2263  type isRedirectAction_SchemeRewriteSpecifier interface {
  2264  	isRedirectAction_SchemeRewriteSpecifier()
  2265  }
  2266  
  2267  type RedirectAction_HttpsRedirect struct {
  2268  	// The scheme portion of the URL will be swapped with "https".
  2269  	HttpsRedirect bool `protobuf:"varint,4,opt,name=https_redirect,json=httpsRedirect,proto3,oneof"`
  2270  }
  2271  
  2272  type RedirectAction_SchemeRedirect struct {
  2273  	// The scheme portion of the URL will be swapped with this value.
  2274  	SchemeRedirect string `protobuf:"bytes,7,opt,name=scheme_redirect,json=schemeRedirect,proto3,oneof"`
  2275  }
  2276  
  2277  func (*RedirectAction_HttpsRedirect) isRedirectAction_SchemeRewriteSpecifier() {}
  2278  
  2279  func (*RedirectAction_SchemeRedirect) isRedirectAction_SchemeRewriteSpecifier() {}
  2280  
  2281  type isRedirectAction_PathRewriteSpecifier interface {
  2282  	isRedirectAction_PathRewriteSpecifier()
  2283  }
  2284  
  2285  type RedirectAction_PathRedirect struct {
  2286  	// The path portion of the URL will be swapped with this value.
  2287  	// Please note that query string in path_redirect will override the
  2288  	// request's query string and will not be stripped.
  2289  	//
  2290  	// For example, let's say we have the following routes:
  2291  	//
  2292  	// - match: { path: "/old-path-1" }
  2293  	//   redirect: { path_redirect: "/new-path-1" }
  2294  	// - match: { path: "/old-path-2" }
  2295  	//   redirect: { path_redirect: "/new-path-2", strip-query: "true" }
  2296  	// - match: { path: "/old-path-3" }
  2297  	//   redirect: { path_redirect: "/new-path-3?foo=1", strip_query: "true" }
  2298  	//
  2299  	// 1. if request uri is "/old-path-1?bar=1", users will be redirected to "/new-path-1?bar=1"
  2300  	// 2. if request uri is "/old-path-2?bar=1", users will be redirected to "/new-path-2"
  2301  	// 3. if request uri is "/old-path-3?bar=1", users will be redirected to "/new-path-3?foo=1"
  2302  	PathRedirect string `protobuf:"bytes,2,opt,name=path_redirect,json=pathRedirect,proto3,oneof"`
  2303  }
  2304  
  2305  type RedirectAction_PrefixRewrite struct {
  2306  	// Indicates that during redirection, the matched prefix (or path)
  2307  	// should be swapped with this value. This option allows redirect URLs be dynamically created
  2308  	// based on the request.
  2309  	//
  2310  	// .. attention::
  2311  	//
  2312  	//   Pay attention to the use of trailing slashes as mentioned in
  2313  	//   :ref:`RouteAction's prefix_rewrite <envoy_api_field_route.RouteAction.prefix_rewrite>`.
  2314  	PrefixRewrite string `protobuf:"bytes,5,opt,name=prefix_rewrite,json=prefixRewrite,proto3,oneof"`
  2315  }
  2316  
  2317  func (*RedirectAction_PathRedirect) isRedirectAction_PathRewriteSpecifier() {}
  2318  
  2319  func (*RedirectAction_PrefixRewrite) isRedirectAction_PathRewriteSpecifier() {}
  2320  
  2321  type DirectResponseAction struct {
  2322  	state         protoimpl.MessageState
  2323  	sizeCache     protoimpl.SizeCache
  2324  	unknownFields protoimpl.UnknownFields
  2325  
  2326  	// Specifies the HTTP response status to be returned.
  2327  	Status uint32 `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"`
  2328  	// Specifies the content of the response body. If this setting is omitted,
  2329  	// no body is included in the generated response.
  2330  	//
  2331  	// .. note::
  2332  	//
  2333  	//   Headers can be specified using *response_headers_to_add* in the enclosing
  2334  	//   :ref:`envoy_api_msg_route.Route`, :ref:`envoy_api_msg_RouteConfiguration` or
  2335  	//   :ref:`envoy_api_msg_route.VirtualHost`.
  2336  	Body *core.DataSource `protobuf:"bytes,2,opt,name=body,proto3" json:"body,omitempty"`
  2337  }
  2338  
  2339  func (x *DirectResponseAction) Reset() {
  2340  	*x = DirectResponseAction{}
  2341  	if protoimpl.UnsafeEnabled {
  2342  		mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[10]
  2343  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2344  		ms.StoreMessageInfo(mi)
  2345  	}
  2346  }
  2347  
  2348  func (x *DirectResponseAction) String() string {
  2349  	return protoimpl.X.MessageStringOf(x)
  2350  }
  2351  
  2352  func (*DirectResponseAction) ProtoMessage() {}
  2353  
  2354  func (x *DirectResponseAction) ProtoReflect() protoreflect.Message {
  2355  	mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[10]
  2356  	if protoimpl.UnsafeEnabled && x != nil {
  2357  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2358  		if ms.LoadMessageInfo() == nil {
  2359  			ms.StoreMessageInfo(mi)
  2360  		}
  2361  		return ms
  2362  	}
  2363  	return mi.MessageOf(x)
  2364  }
  2365  
  2366  // Deprecated: Use DirectResponseAction.ProtoReflect.Descriptor instead.
  2367  func (*DirectResponseAction) Descriptor() ([]byte, []int) {
  2368  	return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{10}
  2369  }
  2370  
  2371  func (x *DirectResponseAction) GetStatus() uint32 {
  2372  	if x != nil {
  2373  		return x.Status
  2374  	}
  2375  	return 0
  2376  }
  2377  
  2378  func (x *DirectResponseAction) GetBody() *core.DataSource {
  2379  	if x != nil {
  2380  		return x.Body
  2381  	}
  2382  	return nil
  2383  }
  2384  
  2385  type Decorator struct {
  2386  	state         protoimpl.MessageState
  2387  	sizeCache     protoimpl.SizeCache
  2388  	unknownFields protoimpl.UnknownFields
  2389  
  2390  	// The operation name associated with the request matched to this route. If tracing is
  2391  	// enabled, this information will be used as the span name reported for this request.
  2392  	//
  2393  	// .. note::
  2394  	//
  2395  	//   For ingress (inbound) requests, or egress (outbound) responses, this value may be overridden
  2396  	//   by the :ref:`x-envoy-decorator-operation
  2397  	//   <config_http_filters_router_x-envoy-decorator-operation>` header.
  2398  	Operation string `protobuf:"bytes,1,opt,name=operation,proto3" json:"operation,omitempty"`
  2399  	// Whether the decorated details should be propagated to the other party. The default is true.
  2400  	Propagate *wrappers.BoolValue `protobuf:"bytes,2,opt,name=propagate,proto3" json:"propagate,omitempty"`
  2401  }
  2402  
  2403  func (x *Decorator) Reset() {
  2404  	*x = Decorator{}
  2405  	if protoimpl.UnsafeEnabled {
  2406  		mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[11]
  2407  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2408  		ms.StoreMessageInfo(mi)
  2409  	}
  2410  }
  2411  
  2412  func (x *Decorator) String() string {
  2413  	return protoimpl.X.MessageStringOf(x)
  2414  }
  2415  
  2416  func (*Decorator) ProtoMessage() {}
  2417  
  2418  func (x *Decorator) ProtoReflect() protoreflect.Message {
  2419  	mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[11]
  2420  	if protoimpl.UnsafeEnabled && x != nil {
  2421  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2422  		if ms.LoadMessageInfo() == nil {
  2423  			ms.StoreMessageInfo(mi)
  2424  		}
  2425  		return ms
  2426  	}
  2427  	return mi.MessageOf(x)
  2428  }
  2429  
  2430  // Deprecated: Use Decorator.ProtoReflect.Descriptor instead.
  2431  func (*Decorator) Descriptor() ([]byte, []int) {
  2432  	return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{11}
  2433  }
  2434  
  2435  func (x *Decorator) GetOperation() string {
  2436  	if x != nil {
  2437  		return x.Operation
  2438  	}
  2439  	return ""
  2440  }
  2441  
  2442  func (x *Decorator) GetPropagate() *wrappers.BoolValue {
  2443  	if x != nil {
  2444  		return x.Propagate
  2445  	}
  2446  	return nil
  2447  }
  2448  
  2449  type Tracing struct {
  2450  	state         protoimpl.MessageState
  2451  	sizeCache     protoimpl.SizeCache
  2452  	unknownFields protoimpl.UnknownFields
  2453  
  2454  	// Target percentage of requests managed by this HTTP connection manager that will be force
  2455  	// traced if the :ref:`x-client-trace-id <config_http_conn_man_headers_x-client-trace-id>`
  2456  	// header is set. This field is a direct analog for the runtime variable
  2457  	// 'tracing.client_sampling' in the :ref:`HTTP Connection Manager
  2458  	// <config_http_conn_man_runtime>`.
  2459  	// Default: 100%
  2460  	ClientSampling *_type.FractionalPercent `protobuf:"bytes,1,opt,name=client_sampling,json=clientSampling,proto3" json:"client_sampling,omitempty"`
  2461  	// Target percentage of requests managed by this HTTP connection manager that will be randomly
  2462  	// selected for trace generation, if not requested by the client or not forced. This field is
  2463  	// a direct analog for the runtime variable 'tracing.random_sampling' in the
  2464  	// :ref:`HTTP Connection Manager <config_http_conn_man_runtime>`.
  2465  	// Default: 100%
  2466  	RandomSampling *_type.FractionalPercent `protobuf:"bytes,2,opt,name=random_sampling,json=randomSampling,proto3" json:"random_sampling,omitempty"`
  2467  	// Target percentage of requests managed by this HTTP connection manager that will be traced
  2468  	// after all other sampling checks have been applied (client-directed, force tracing, random
  2469  	// sampling). This field functions as an upper limit on the total configured sampling rate. For
  2470  	// instance, setting client_sampling to 100% but overall_sampling to 1% will result in only 1%
  2471  	// of client requests with the appropriate headers to be force traced. This field is a direct
  2472  	// analog for the runtime variable 'tracing.global_enabled' in the
  2473  	// :ref:`HTTP Connection Manager <config_http_conn_man_runtime>`.
  2474  	// Default: 100%
  2475  	OverallSampling *_type.FractionalPercent `protobuf:"bytes,3,opt,name=overall_sampling,json=overallSampling,proto3" json:"overall_sampling,omitempty"`
  2476  	// A list of custom tags with unique tag name to create tags for the active span.
  2477  	// It will take effect after merging with the :ref:`corresponding configuration
  2478  	// <envoy_api_field_config.filter.network.http_connection_manager.v2.HttpConnectionManager.Tracing.custom_tags>`
  2479  	// configured in the HTTP connection manager. If two tags with the same name are configured
  2480  	// each in the HTTP connection manager and the route level, the one configured here takes
  2481  	// priority.
  2482  	CustomTags []*v2.CustomTag `protobuf:"bytes,4,rep,name=custom_tags,json=customTags,proto3" json:"custom_tags,omitempty"`
  2483  }
  2484  
  2485  func (x *Tracing) Reset() {
  2486  	*x = Tracing{}
  2487  	if protoimpl.UnsafeEnabled {
  2488  		mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[12]
  2489  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2490  		ms.StoreMessageInfo(mi)
  2491  	}
  2492  }
  2493  
  2494  func (x *Tracing) String() string {
  2495  	return protoimpl.X.MessageStringOf(x)
  2496  }
  2497  
  2498  func (*Tracing) ProtoMessage() {}
  2499  
  2500  func (x *Tracing) ProtoReflect() protoreflect.Message {
  2501  	mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[12]
  2502  	if protoimpl.UnsafeEnabled && x != nil {
  2503  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2504  		if ms.LoadMessageInfo() == nil {
  2505  			ms.StoreMessageInfo(mi)
  2506  		}
  2507  		return ms
  2508  	}
  2509  	return mi.MessageOf(x)
  2510  }
  2511  
  2512  // Deprecated: Use Tracing.ProtoReflect.Descriptor instead.
  2513  func (*Tracing) Descriptor() ([]byte, []int) {
  2514  	return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{12}
  2515  }
  2516  
  2517  func (x *Tracing) GetClientSampling() *_type.FractionalPercent {
  2518  	if x != nil {
  2519  		return x.ClientSampling
  2520  	}
  2521  	return nil
  2522  }
  2523  
  2524  func (x *Tracing) GetRandomSampling() *_type.FractionalPercent {
  2525  	if x != nil {
  2526  		return x.RandomSampling
  2527  	}
  2528  	return nil
  2529  }
  2530  
  2531  func (x *Tracing) GetOverallSampling() *_type.FractionalPercent {
  2532  	if x != nil {
  2533  		return x.OverallSampling
  2534  	}
  2535  	return nil
  2536  }
  2537  
  2538  func (x *Tracing) GetCustomTags() []*v2.CustomTag {
  2539  	if x != nil {
  2540  		return x.CustomTags
  2541  	}
  2542  	return nil
  2543  }
  2544  
  2545  // A virtual cluster is a way of specifying a regex matching rule against
  2546  // certain important endpoints such that statistics are generated explicitly for
  2547  // the matched requests. The reason this is useful is that when doing
  2548  // prefix/path matching Envoy does not always know what the application
  2549  // considers to be an endpoint. Thus, it’s impossible for Envoy to generically
  2550  // emit per endpoint statistics. However, often systems have highly critical
  2551  // endpoints that they wish to get “perfect” statistics on. Virtual cluster
  2552  // statistics are perfect in the sense that they are emitted on the downstream
  2553  // side such that they include network level failures.
  2554  //
  2555  // Documentation for :ref:`virtual cluster statistics <config_http_filters_router_vcluster_stats>`.
  2556  //
  2557  // .. note::
  2558  //
  2559  //    Virtual clusters are a useful tool, but we do not recommend setting up a virtual cluster for
  2560  //    every application endpoint. This is both not easily maintainable and as well the matching and
  2561  //    statistics output are not free.
  2562  type VirtualCluster struct {
  2563  	state         protoimpl.MessageState
  2564  	sizeCache     protoimpl.SizeCache
  2565  	unknownFields protoimpl.UnknownFields
  2566  
  2567  	// Specifies a regex pattern to use for matching requests. The entire path of the request
  2568  	// must match the regex. The regex grammar used is defined `here
  2569  	// <https://en.cppreference.com/w/cpp/regex/ecmascript>`_.
  2570  	//
  2571  	// Examples:
  2572  	//
  2573  	// * The regex ``/rides/\d+`` matches the path */rides/0*
  2574  	// * The regex ``/rides/\d+`` matches the path */rides/123*
  2575  	// * The regex ``/rides/\d+`` does not match the path */rides/123/456*
  2576  	//
  2577  	// .. attention::
  2578  	//   This field has been deprecated in favor of `headers` as it is not safe for use with
  2579  	//   untrusted input in all cases.
  2580  	//
  2581  	// Deprecated: Do not use.
  2582  	Pattern string `protobuf:"bytes,1,opt,name=pattern,proto3" json:"pattern,omitempty"`
  2583  	// Specifies a list of header matchers to use for matching requests. Each specified header must
  2584  	// match. The pseudo-headers `:path` and `:method` can be used to match the request path and
  2585  	// method, respectively.
  2586  	Headers []*HeaderMatcher `protobuf:"bytes,4,rep,name=headers,proto3" json:"headers,omitempty"`
  2587  	// Specifies the name of the virtual cluster. The virtual cluster name as well
  2588  	// as the virtual host name are used when emitting statistics. The statistics are emitted by the
  2589  	// router filter and are documented :ref:`here <config_http_filters_router_stats>`.
  2590  	Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
  2591  	// Optionally specifies the HTTP method to match on. For example GET, PUT,
  2592  	// etc.
  2593  	//
  2594  	// .. attention::
  2595  	//   This field has been deprecated in favor of `headers`.
  2596  	//
  2597  	// Deprecated: Do not use.
  2598  	Method core.RequestMethod `protobuf:"varint,3,opt,name=method,proto3,enum=envoy.api.v2.core.RequestMethod" json:"method,omitempty"`
  2599  }
  2600  
  2601  func (x *VirtualCluster) Reset() {
  2602  	*x = VirtualCluster{}
  2603  	if protoimpl.UnsafeEnabled {
  2604  		mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[13]
  2605  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2606  		ms.StoreMessageInfo(mi)
  2607  	}
  2608  }
  2609  
  2610  func (x *VirtualCluster) String() string {
  2611  	return protoimpl.X.MessageStringOf(x)
  2612  }
  2613  
  2614  func (*VirtualCluster) ProtoMessage() {}
  2615  
  2616  func (x *VirtualCluster) ProtoReflect() protoreflect.Message {
  2617  	mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[13]
  2618  	if protoimpl.UnsafeEnabled && x != nil {
  2619  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2620  		if ms.LoadMessageInfo() == nil {
  2621  			ms.StoreMessageInfo(mi)
  2622  		}
  2623  		return ms
  2624  	}
  2625  	return mi.MessageOf(x)
  2626  }
  2627  
  2628  // Deprecated: Use VirtualCluster.ProtoReflect.Descriptor instead.
  2629  func (*VirtualCluster) Descriptor() ([]byte, []int) {
  2630  	return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{13}
  2631  }
  2632  
  2633  // Deprecated: Do not use.
  2634  func (x *VirtualCluster) GetPattern() string {
  2635  	if x != nil {
  2636  		return x.Pattern
  2637  	}
  2638  	return ""
  2639  }
  2640  
  2641  func (x *VirtualCluster) GetHeaders() []*HeaderMatcher {
  2642  	if x != nil {
  2643  		return x.Headers
  2644  	}
  2645  	return nil
  2646  }
  2647  
  2648  func (x *VirtualCluster) GetName() string {
  2649  	if x != nil {
  2650  		return x.Name
  2651  	}
  2652  	return ""
  2653  }
  2654  
  2655  // Deprecated: Do not use.
  2656  func (x *VirtualCluster) GetMethod() core.RequestMethod {
  2657  	if x != nil {
  2658  		return x.Method
  2659  	}
  2660  	return core.RequestMethod_METHOD_UNSPECIFIED
  2661  }
  2662  
  2663  // Global rate limiting :ref:`architecture overview <arch_overview_global_rate_limit>`.
  2664  type RateLimit struct {
  2665  	state         protoimpl.MessageState
  2666  	sizeCache     protoimpl.SizeCache
  2667  	unknownFields protoimpl.UnknownFields
  2668  
  2669  	// Refers to the stage set in the filter. The rate limit configuration only
  2670  	// applies to filters with the same stage number. The default stage number is
  2671  	// 0.
  2672  	//
  2673  	// .. note::
  2674  	//
  2675  	//   The filter supports a range of 0 - 10 inclusively for stage numbers.
  2676  	Stage *wrappers.UInt32Value `protobuf:"bytes,1,opt,name=stage,proto3" json:"stage,omitempty"`
  2677  	// The key to be set in runtime to disable this rate limit configuration.
  2678  	DisableKey string `protobuf:"bytes,2,opt,name=disable_key,json=disableKey,proto3" json:"disable_key,omitempty"`
  2679  	// A list of actions that are to be applied for this rate limit configuration.
  2680  	// Order matters as the actions are processed sequentially and the descriptor
  2681  	// is composed by appending descriptor entries in that sequence. If an action
  2682  	// cannot append a descriptor entry, no descriptor is generated for the
  2683  	// configuration. See :ref:`composing actions
  2684  	// <config_http_filters_rate_limit_composing_actions>` for additional documentation.
  2685  	Actions []*RateLimit_Action `protobuf:"bytes,3,rep,name=actions,proto3" json:"actions,omitempty"`
  2686  }
  2687  
  2688  func (x *RateLimit) Reset() {
  2689  	*x = RateLimit{}
  2690  	if protoimpl.UnsafeEnabled {
  2691  		mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[14]
  2692  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2693  		ms.StoreMessageInfo(mi)
  2694  	}
  2695  }
  2696  
  2697  func (x *RateLimit) String() string {
  2698  	return protoimpl.X.MessageStringOf(x)
  2699  }
  2700  
  2701  func (*RateLimit) ProtoMessage() {}
  2702  
  2703  func (x *RateLimit) ProtoReflect() protoreflect.Message {
  2704  	mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[14]
  2705  	if protoimpl.UnsafeEnabled && x != nil {
  2706  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2707  		if ms.LoadMessageInfo() == nil {
  2708  			ms.StoreMessageInfo(mi)
  2709  		}
  2710  		return ms
  2711  	}
  2712  	return mi.MessageOf(x)
  2713  }
  2714  
  2715  // Deprecated: Use RateLimit.ProtoReflect.Descriptor instead.
  2716  func (*RateLimit) Descriptor() ([]byte, []int) {
  2717  	return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{14}
  2718  }
  2719  
  2720  func (x *RateLimit) GetStage() *wrappers.UInt32Value {
  2721  	if x != nil {
  2722  		return x.Stage
  2723  	}
  2724  	return nil
  2725  }
  2726  
  2727  func (x *RateLimit) GetDisableKey() string {
  2728  	if x != nil {
  2729  		return x.DisableKey
  2730  	}
  2731  	return ""
  2732  }
  2733  
  2734  func (x *RateLimit) GetActions() []*RateLimit_Action {
  2735  	if x != nil {
  2736  		return x.Actions
  2737  	}
  2738  	return nil
  2739  }
  2740  
  2741  // .. attention::
  2742  //
  2743  //   Internally, Envoy always uses the HTTP/2 *:authority* header to represent the HTTP/1 *Host*
  2744  //   header. Thus, if attempting to match on *Host*, match on *:authority* instead.
  2745  //
  2746  // .. attention::
  2747  //
  2748  //   To route on HTTP method, use the special HTTP/2 *:method* header. This works for both
  2749  //   HTTP/1 and HTTP/2 as Envoy normalizes headers. E.g.,
  2750  //
  2751  //   .. code-block:: json
  2752  //
  2753  //     {
  2754  //       "name": ":method",
  2755  //       "exact_match": "POST"
  2756  //     }
  2757  //
  2758  // .. attention::
  2759  //   In the absence of any header match specifier, match will default to :ref:`present_match
  2760  //   <envoy_api_field_route.HeaderMatcher.present_match>`. i.e, a request that has the :ref:`name
  2761  //   <envoy_api_field_route.HeaderMatcher.name>` header will match, regardless of the header's
  2762  //   value.
  2763  //
  2764  //  [#next-major-version: HeaderMatcher should be refactored to use StringMatcher.]
  2765  // [#next-free-field: 12]
  2766  type HeaderMatcher struct {
  2767  	state         protoimpl.MessageState
  2768  	sizeCache     protoimpl.SizeCache
  2769  	unknownFields protoimpl.UnknownFields
  2770  
  2771  	// Specifies the name of the header in the request.
  2772  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
  2773  	// Specifies how the header match will be performed to route the request.
  2774  	//
  2775  	// Types that are assignable to HeaderMatchSpecifier:
  2776  	//	*HeaderMatcher_ExactMatch
  2777  	//	*HeaderMatcher_RegexMatch
  2778  	//	*HeaderMatcher_SafeRegexMatch
  2779  	//	*HeaderMatcher_RangeMatch
  2780  	//	*HeaderMatcher_PresentMatch
  2781  	//	*HeaderMatcher_PrefixMatch
  2782  	//	*HeaderMatcher_SuffixMatch
  2783  	HeaderMatchSpecifier isHeaderMatcher_HeaderMatchSpecifier `protobuf_oneof:"header_match_specifier"`
  2784  	// If specified, the match result will be inverted before checking. Defaults to false.
  2785  	//
  2786  	// Examples:
  2787  	//
  2788  	// * The regex ``\d{3}`` does not match the value *1234*, so it will match when inverted.
  2789  	// * The range [-10,0) will match the value -1, so it will not match when inverted.
  2790  	InvertMatch bool `protobuf:"varint,8,opt,name=invert_match,json=invertMatch,proto3" json:"invert_match,omitempty"`
  2791  }
  2792  
  2793  func (x *HeaderMatcher) Reset() {
  2794  	*x = HeaderMatcher{}
  2795  	if protoimpl.UnsafeEnabled {
  2796  		mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[15]
  2797  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2798  		ms.StoreMessageInfo(mi)
  2799  	}
  2800  }
  2801  
  2802  func (x *HeaderMatcher) String() string {
  2803  	return protoimpl.X.MessageStringOf(x)
  2804  }
  2805  
  2806  func (*HeaderMatcher) ProtoMessage() {}
  2807  
  2808  func (x *HeaderMatcher) ProtoReflect() protoreflect.Message {
  2809  	mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[15]
  2810  	if protoimpl.UnsafeEnabled && x != nil {
  2811  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2812  		if ms.LoadMessageInfo() == nil {
  2813  			ms.StoreMessageInfo(mi)
  2814  		}
  2815  		return ms
  2816  	}
  2817  	return mi.MessageOf(x)
  2818  }
  2819  
  2820  // Deprecated: Use HeaderMatcher.ProtoReflect.Descriptor instead.
  2821  func (*HeaderMatcher) Descriptor() ([]byte, []int) {
  2822  	return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{15}
  2823  }
  2824  
  2825  func (x *HeaderMatcher) GetName() string {
  2826  	if x != nil {
  2827  		return x.Name
  2828  	}
  2829  	return ""
  2830  }
  2831  
  2832  func (m *HeaderMatcher) GetHeaderMatchSpecifier() isHeaderMatcher_HeaderMatchSpecifier {
  2833  	if m != nil {
  2834  		return m.HeaderMatchSpecifier
  2835  	}
  2836  	return nil
  2837  }
  2838  
  2839  func (x *HeaderMatcher) GetExactMatch() string {
  2840  	if x, ok := x.GetHeaderMatchSpecifier().(*HeaderMatcher_ExactMatch); ok {
  2841  		return x.ExactMatch
  2842  	}
  2843  	return ""
  2844  }
  2845  
  2846  // Deprecated: Do not use.
  2847  func (x *HeaderMatcher) GetRegexMatch() string {
  2848  	if x, ok := x.GetHeaderMatchSpecifier().(*HeaderMatcher_RegexMatch); ok {
  2849  		return x.RegexMatch
  2850  	}
  2851  	return ""
  2852  }
  2853  
  2854  func (x *HeaderMatcher) GetSafeRegexMatch() *matcher.RegexMatcher {
  2855  	if x, ok := x.GetHeaderMatchSpecifier().(*HeaderMatcher_SafeRegexMatch); ok {
  2856  		return x.SafeRegexMatch
  2857  	}
  2858  	return nil
  2859  }
  2860  
  2861  func (x *HeaderMatcher) GetRangeMatch() *_type.Int64Range {
  2862  	if x, ok := x.GetHeaderMatchSpecifier().(*HeaderMatcher_RangeMatch); ok {
  2863  		return x.RangeMatch
  2864  	}
  2865  	return nil
  2866  }
  2867  
  2868  func (x *HeaderMatcher) GetPresentMatch() bool {
  2869  	if x, ok := x.GetHeaderMatchSpecifier().(*HeaderMatcher_PresentMatch); ok {
  2870  		return x.PresentMatch
  2871  	}
  2872  	return false
  2873  }
  2874  
  2875  func (x *HeaderMatcher) GetPrefixMatch() string {
  2876  	if x, ok := x.GetHeaderMatchSpecifier().(*HeaderMatcher_PrefixMatch); ok {
  2877  		return x.PrefixMatch
  2878  	}
  2879  	return ""
  2880  }
  2881  
  2882  func (x *HeaderMatcher) GetSuffixMatch() string {
  2883  	if x, ok := x.GetHeaderMatchSpecifier().(*HeaderMatcher_SuffixMatch); ok {
  2884  		return x.SuffixMatch
  2885  	}
  2886  	return ""
  2887  }
  2888  
  2889  func (x *HeaderMatcher) GetInvertMatch() bool {
  2890  	if x != nil {
  2891  		return x.InvertMatch
  2892  	}
  2893  	return false
  2894  }
  2895  
  2896  type isHeaderMatcher_HeaderMatchSpecifier interface {
  2897  	isHeaderMatcher_HeaderMatchSpecifier()
  2898  }
  2899  
  2900  type HeaderMatcher_ExactMatch struct {
  2901  	// If specified, header match will be performed based on the value of the header.
  2902  	ExactMatch string `protobuf:"bytes,4,opt,name=exact_match,json=exactMatch,proto3,oneof"`
  2903  }
  2904  
  2905  type HeaderMatcher_RegexMatch struct {
  2906  	// If specified, this regex string is a regular expression rule which implies the entire request
  2907  	// header value must match the regex. The rule will not match if only a subsequence of the
  2908  	// request header value matches the regex. The regex grammar used in the value field is defined
  2909  	// `here <https://en.cppreference.com/w/cpp/regex/ecmascript>`_.
  2910  	//
  2911  	// Examples:
  2912  	//
  2913  	// * The regex ``\d{3}`` matches the value *123*
  2914  	// * The regex ``\d{3}`` does not match the value *1234*
  2915  	// * The regex ``\d{3}`` does not match the value *123.456*
  2916  	//
  2917  	// .. attention::
  2918  	//   This field has been deprecated in favor of `safe_regex_match` as it is not safe for use
  2919  	//   with untrusted input in all cases.
  2920  	//
  2921  	// Deprecated: Do not use.
  2922  	RegexMatch string `protobuf:"bytes,5,opt,name=regex_match,json=regexMatch,proto3,oneof"`
  2923  }
  2924  
  2925  type HeaderMatcher_SafeRegexMatch struct {
  2926  	// If specified, this regex string is a regular expression rule which implies the entire request
  2927  	// header value must match the regex. The rule will not match if only a subsequence of the
  2928  	// request header value matches the regex.
  2929  	SafeRegexMatch *matcher.RegexMatcher `protobuf:"bytes,11,opt,name=safe_regex_match,json=safeRegexMatch,proto3,oneof"`
  2930  }
  2931  
  2932  type HeaderMatcher_RangeMatch struct {
  2933  	// If specified, header match will be performed based on range.
  2934  	// The rule will match if the request header value is within this range.
  2935  	// The entire request header value must represent an integer in base 10 notation: consisting of
  2936  	// an optional plus or minus sign followed by a sequence of digits. The rule will not match if
  2937  	// the header value does not represent an integer. Match will fail for empty values, floating
  2938  	// point numbers or if only a subsequence of the header value is an integer.
  2939  	//
  2940  	// Examples:
  2941  	//
  2942  	// * For range [-10,0), route will match for header value -1, but not for 0, "somestring", 10.9,
  2943  	//   "-1somestring"
  2944  	RangeMatch *_type.Int64Range `protobuf:"bytes,6,opt,name=range_match,json=rangeMatch,proto3,oneof"`
  2945  }
  2946  
  2947  type HeaderMatcher_PresentMatch struct {
  2948  	// If specified, header match will be performed based on whether the header is in the
  2949  	// request.
  2950  	PresentMatch bool `protobuf:"varint,7,opt,name=present_match,json=presentMatch,proto3,oneof"`
  2951  }
  2952  
  2953  type HeaderMatcher_PrefixMatch struct {
  2954  	// If specified, header match will be performed based on the prefix of the header value.
  2955  	// Note: empty prefix is not allowed, please use present_match instead.
  2956  	//
  2957  	// Examples:
  2958  	//
  2959  	// * The prefix *abcd* matches the value *abcdxyz*, but not for *abcxyz*.
  2960  	PrefixMatch string `protobuf:"bytes,9,opt,name=prefix_match,json=prefixMatch,proto3,oneof"`
  2961  }
  2962  
  2963  type HeaderMatcher_SuffixMatch struct {
  2964  	// If specified, header match will be performed based on the suffix of the header value.
  2965  	// Note: empty suffix is not allowed, please use present_match instead.
  2966  	//
  2967  	// Examples:
  2968  	//
  2969  	// * The suffix *abcd* matches the value *xyzabcd*, but not for *xyzbcd*.
  2970  	SuffixMatch string `protobuf:"bytes,10,opt,name=suffix_match,json=suffixMatch,proto3,oneof"`
  2971  }
  2972  
  2973  func (*HeaderMatcher_ExactMatch) isHeaderMatcher_HeaderMatchSpecifier() {}
  2974  
  2975  func (*HeaderMatcher_RegexMatch) isHeaderMatcher_HeaderMatchSpecifier() {}
  2976  
  2977  func (*HeaderMatcher_SafeRegexMatch) isHeaderMatcher_HeaderMatchSpecifier() {}
  2978  
  2979  func (*HeaderMatcher_RangeMatch) isHeaderMatcher_HeaderMatchSpecifier() {}
  2980  
  2981  func (*HeaderMatcher_PresentMatch) isHeaderMatcher_HeaderMatchSpecifier() {}
  2982  
  2983  func (*HeaderMatcher_PrefixMatch) isHeaderMatcher_HeaderMatchSpecifier() {}
  2984  
  2985  func (*HeaderMatcher_SuffixMatch) isHeaderMatcher_HeaderMatchSpecifier() {}
  2986  
  2987  // Query parameter matching treats the query string of a request's :path header
  2988  // as an ampersand-separated list of keys and/or key=value elements.
  2989  // [#next-free-field: 7]
  2990  type QueryParameterMatcher struct {
  2991  	state         protoimpl.MessageState
  2992  	sizeCache     protoimpl.SizeCache
  2993  	unknownFields protoimpl.UnknownFields
  2994  
  2995  	// Specifies the name of a key that must be present in the requested
  2996  	// *path*'s query string.
  2997  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
  2998  	// Specifies the value of the key. If the value is absent, a request
  2999  	// that contains the key in its query string will match, whether the
  3000  	// key appears with a value (e.g., "?debug=true") or not (e.g., "?debug")
  3001  	//
  3002  	// ..attention::
  3003  	//   This field is deprecated. Use an `exact` match inside the `string_match` field.
  3004  	//
  3005  	// Deprecated: Do not use.
  3006  	Value string `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"`
  3007  	// Specifies whether the query parameter value is a regular expression.
  3008  	// Defaults to false. The entire query parameter value (i.e., the part to
  3009  	// the right of the equals sign in "key=value") must match the regex.
  3010  	// E.g., the regex ``\d+$`` will match *123* but not *a123* or *123a*.
  3011  	//
  3012  	// ..attention::
  3013  	//   This field is deprecated. Use a `safe_regex` match inside the `string_match` field.
  3014  	//
  3015  	// Deprecated: Do not use.
  3016  	Regex *wrappers.BoolValue `protobuf:"bytes,4,opt,name=regex,proto3" json:"regex,omitempty"`
  3017  	// Types that are assignable to QueryParameterMatchSpecifier:
  3018  	//	*QueryParameterMatcher_StringMatch
  3019  	//	*QueryParameterMatcher_PresentMatch
  3020  	QueryParameterMatchSpecifier isQueryParameterMatcher_QueryParameterMatchSpecifier `protobuf_oneof:"query_parameter_match_specifier"`
  3021  }
  3022  
  3023  func (x *QueryParameterMatcher) Reset() {
  3024  	*x = QueryParameterMatcher{}
  3025  	if protoimpl.UnsafeEnabled {
  3026  		mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[16]
  3027  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  3028  		ms.StoreMessageInfo(mi)
  3029  	}
  3030  }
  3031  
  3032  func (x *QueryParameterMatcher) String() string {
  3033  	return protoimpl.X.MessageStringOf(x)
  3034  }
  3035  
  3036  func (*QueryParameterMatcher) ProtoMessage() {}
  3037  
  3038  func (x *QueryParameterMatcher) ProtoReflect() protoreflect.Message {
  3039  	mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[16]
  3040  	if protoimpl.UnsafeEnabled && x != nil {
  3041  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  3042  		if ms.LoadMessageInfo() == nil {
  3043  			ms.StoreMessageInfo(mi)
  3044  		}
  3045  		return ms
  3046  	}
  3047  	return mi.MessageOf(x)
  3048  }
  3049  
  3050  // Deprecated: Use QueryParameterMatcher.ProtoReflect.Descriptor instead.
  3051  func (*QueryParameterMatcher) Descriptor() ([]byte, []int) {
  3052  	return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{16}
  3053  }
  3054  
  3055  func (x *QueryParameterMatcher) GetName() string {
  3056  	if x != nil {
  3057  		return x.Name
  3058  	}
  3059  	return ""
  3060  }
  3061  
  3062  // Deprecated: Do not use.
  3063  func (x *QueryParameterMatcher) GetValue() string {
  3064  	if x != nil {
  3065  		return x.Value
  3066  	}
  3067  	return ""
  3068  }
  3069  
  3070  // Deprecated: Do not use.
  3071  func (x *QueryParameterMatcher) GetRegex() *wrappers.BoolValue {
  3072  	if x != nil {
  3073  		return x.Regex
  3074  	}
  3075  	return nil
  3076  }
  3077  
  3078  func (m *QueryParameterMatcher) GetQueryParameterMatchSpecifier() isQueryParameterMatcher_QueryParameterMatchSpecifier {
  3079  	if m != nil {
  3080  		return m.QueryParameterMatchSpecifier
  3081  	}
  3082  	return nil
  3083  }
  3084  
  3085  func (x *QueryParameterMatcher) GetStringMatch() *matcher.StringMatcher {
  3086  	if x, ok := x.GetQueryParameterMatchSpecifier().(*QueryParameterMatcher_StringMatch); ok {
  3087  		return x.StringMatch
  3088  	}
  3089  	return nil
  3090  }
  3091  
  3092  func (x *QueryParameterMatcher) GetPresentMatch() bool {
  3093  	if x, ok := x.GetQueryParameterMatchSpecifier().(*QueryParameterMatcher_PresentMatch); ok {
  3094  		return x.PresentMatch
  3095  	}
  3096  	return false
  3097  }
  3098  
  3099  type isQueryParameterMatcher_QueryParameterMatchSpecifier interface {
  3100  	isQueryParameterMatcher_QueryParameterMatchSpecifier()
  3101  }
  3102  
  3103  type QueryParameterMatcher_StringMatch struct {
  3104  	// Specifies whether a query parameter value should match against a string.
  3105  	StringMatch *matcher.StringMatcher `protobuf:"bytes,5,opt,name=string_match,json=stringMatch,proto3,oneof"`
  3106  }
  3107  
  3108  type QueryParameterMatcher_PresentMatch struct {
  3109  	// Specifies whether a query parameter should be present.
  3110  	PresentMatch bool `protobuf:"varint,6,opt,name=present_match,json=presentMatch,proto3,oneof"`
  3111  }
  3112  
  3113  func (*QueryParameterMatcher_StringMatch) isQueryParameterMatcher_QueryParameterMatchSpecifier() {}
  3114  
  3115  func (*QueryParameterMatcher_PresentMatch) isQueryParameterMatcher_QueryParameterMatchSpecifier() {}
  3116  
  3117  // [#next-free-field: 11]
  3118  type WeightedCluster_ClusterWeight struct {
  3119  	state         protoimpl.MessageState
  3120  	sizeCache     protoimpl.SizeCache
  3121  	unknownFields protoimpl.UnknownFields
  3122  
  3123  	// Name of the upstream cluster. The cluster must exist in the
  3124  	// :ref:`cluster manager configuration <config_cluster_manager>`.
  3125  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
  3126  	// An integer between 0 and :ref:`total_weight
  3127  	// <envoy_api_field_route.WeightedCluster.total_weight>`. When a request matches the route,
  3128  	// the choice of an upstream cluster is determined by its weight. The sum of weights across all
  3129  	// entries in the clusters array must add up to the total_weight, which defaults to 100.
  3130  	Weight *wrappers.UInt32Value `protobuf:"bytes,2,opt,name=weight,proto3" json:"weight,omitempty"`
  3131  	// Optional endpoint metadata match criteria used by the subset load balancer. Only endpoints in
  3132  	// the upstream cluster with metadata matching what is set in this field will be considered for
  3133  	// load balancing. Note that this will be merged with what's provided in
  3134  	// :ref:`RouteAction.metadata_match <envoy_api_field_route.RouteAction.metadata_match>`, with
  3135  	// values here taking precedence. The filter name should be specified as *envoy.lb*.
  3136  	MetadataMatch *core.Metadata `protobuf:"bytes,3,opt,name=metadata_match,json=metadataMatch,proto3" json:"metadata_match,omitempty"`
  3137  	// Specifies a list of headers to be added to requests when this cluster is selected
  3138  	// through the enclosing :ref:`envoy_api_msg_route.RouteAction`.
  3139  	// Headers specified at this level are applied before headers from the enclosing
  3140  	// :ref:`envoy_api_msg_route.Route`, :ref:`envoy_api_msg_route.VirtualHost`, and
  3141  	// :ref:`envoy_api_msg_RouteConfiguration`. For more information, including details on
  3142  	// header value syntax, see the documentation on :ref:`custom request headers
  3143  	// <config_http_conn_man_headers_custom_request_headers>`.
  3144  	RequestHeadersToAdd []*core.HeaderValueOption `protobuf:"bytes,4,rep,name=request_headers_to_add,json=requestHeadersToAdd,proto3" json:"request_headers_to_add,omitempty"`
  3145  	// Specifies a list of HTTP headers that should be removed from each request when
  3146  	// this cluster is selected through the enclosing :ref:`envoy_api_msg_route.RouteAction`.
  3147  	RequestHeadersToRemove []string `protobuf:"bytes,9,rep,name=request_headers_to_remove,json=requestHeadersToRemove,proto3" json:"request_headers_to_remove,omitempty"`
  3148  	// Specifies a list of headers to be added to responses when this cluster is selected
  3149  	// through the enclosing :ref:`envoy_api_msg_route.RouteAction`.
  3150  	// Headers specified at this level are applied before headers from the enclosing
  3151  	// :ref:`envoy_api_msg_route.Route`, :ref:`envoy_api_msg_route.VirtualHost`, and
  3152  	// :ref:`envoy_api_msg_RouteConfiguration`. For more information, including details on
  3153  	// header value syntax, see the documentation on :ref:`custom request headers
  3154  	// <config_http_conn_man_headers_custom_request_headers>`.
  3155  	ResponseHeadersToAdd []*core.HeaderValueOption `protobuf:"bytes,5,rep,name=response_headers_to_add,json=responseHeadersToAdd,proto3" json:"response_headers_to_add,omitempty"`
  3156  	// Specifies a list of headers to be removed from responses when this cluster is selected
  3157  	// through the enclosing :ref:`envoy_api_msg_route.RouteAction`.
  3158  	ResponseHeadersToRemove []string `protobuf:"bytes,6,rep,name=response_headers_to_remove,json=responseHeadersToRemove,proto3" json:"response_headers_to_remove,omitempty"`
  3159  	// The per_filter_config field can be used to provide weighted cluster-specific
  3160  	// configurations for filters. The key should match the filter name, such as
  3161  	// *envoy.filters.http.buffer* for the HTTP buffer filter. Use of this field is filter
  3162  	// specific; see the :ref:`HTTP filter documentation <config_http_filters>`
  3163  	// for if and how it is utilized.
  3164  	//
  3165  	// Deprecated: Do not use.
  3166  	PerFilterConfig map[string]*_struct.Struct `protobuf:"bytes,8,rep,name=per_filter_config,json=perFilterConfig,proto3" json:"per_filter_config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
  3167  	// The per_filter_config field can be used to provide weighted cluster-specific
  3168  	// configurations for filters. The key should match the filter name, such as
  3169  	// *envoy.filters.http.buffer* for the HTTP buffer filter. Use of this field is filter
  3170  	// specific; see the :ref:`HTTP filter documentation <config_http_filters>`
  3171  	// for if and how it is utilized.
  3172  	TypedPerFilterConfig map[string]*any.Any `protobuf:"bytes,10,rep,name=typed_per_filter_config,json=typedPerFilterConfig,proto3" json:"typed_per_filter_config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
  3173  }
  3174  
  3175  func (x *WeightedCluster_ClusterWeight) Reset() {
  3176  	*x = WeightedCluster_ClusterWeight{}
  3177  	if protoimpl.UnsafeEnabled {
  3178  		mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[21]
  3179  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  3180  		ms.StoreMessageInfo(mi)
  3181  	}
  3182  }
  3183  
  3184  func (x *WeightedCluster_ClusterWeight) String() string {
  3185  	return protoimpl.X.MessageStringOf(x)
  3186  }
  3187  
  3188  func (*WeightedCluster_ClusterWeight) ProtoMessage() {}
  3189  
  3190  func (x *WeightedCluster_ClusterWeight) ProtoReflect() protoreflect.Message {
  3191  	mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[21]
  3192  	if protoimpl.UnsafeEnabled && x != nil {
  3193  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  3194  		if ms.LoadMessageInfo() == nil {
  3195  			ms.StoreMessageInfo(mi)
  3196  		}
  3197  		return ms
  3198  	}
  3199  	return mi.MessageOf(x)
  3200  }
  3201  
  3202  // Deprecated: Use WeightedCluster_ClusterWeight.ProtoReflect.Descriptor instead.
  3203  func (*WeightedCluster_ClusterWeight) Descriptor() ([]byte, []int) {
  3204  	return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{3, 0}
  3205  }
  3206  
  3207  func (x *WeightedCluster_ClusterWeight) GetName() string {
  3208  	if x != nil {
  3209  		return x.Name
  3210  	}
  3211  	return ""
  3212  }
  3213  
  3214  func (x *WeightedCluster_ClusterWeight) GetWeight() *wrappers.UInt32Value {
  3215  	if x != nil {
  3216  		return x.Weight
  3217  	}
  3218  	return nil
  3219  }
  3220  
  3221  func (x *WeightedCluster_ClusterWeight) GetMetadataMatch() *core.Metadata {
  3222  	if x != nil {
  3223  		return x.MetadataMatch
  3224  	}
  3225  	return nil
  3226  }
  3227  
  3228  func (x *WeightedCluster_ClusterWeight) GetRequestHeadersToAdd() []*core.HeaderValueOption {
  3229  	if x != nil {
  3230  		return x.RequestHeadersToAdd
  3231  	}
  3232  	return nil
  3233  }
  3234  
  3235  func (x *WeightedCluster_ClusterWeight) GetRequestHeadersToRemove() []string {
  3236  	if x != nil {
  3237  		return x.RequestHeadersToRemove
  3238  	}
  3239  	return nil
  3240  }
  3241  
  3242  func (x *WeightedCluster_ClusterWeight) GetResponseHeadersToAdd() []*core.HeaderValueOption {
  3243  	if x != nil {
  3244  		return x.ResponseHeadersToAdd
  3245  	}
  3246  	return nil
  3247  }
  3248  
  3249  func (x *WeightedCluster_ClusterWeight) GetResponseHeadersToRemove() []string {
  3250  	if x != nil {
  3251  		return x.ResponseHeadersToRemove
  3252  	}
  3253  	return nil
  3254  }
  3255  
  3256  // Deprecated: Do not use.
  3257  func (x *WeightedCluster_ClusterWeight) GetPerFilterConfig() map[string]*_struct.Struct {
  3258  	if x != nil {
  3259  		return x.PerFilterConfig
  3260  	}
  3261  	return nil
  3262  }
  3263  
  3264  func (x *WeightedCluster_ClusterWeight) GetTypedPerFilterConfig() map[string]*any.Any {
  3265  	if x != nil {
  3266  		return x.TypedPerFilterConfig
  3267  	}
  3268  	return nil
  3269  }
  3270  
  3271  type RouteMatch_GrpcRouteMatchOptions struct {
  3272  	state         protoimpl.MessageState
  3273  	sizeCache     protoimpl.SizeCache
  3274  	unknownFields protoimpl.UnknownFields
  3275  }
  3276  
  3277  func (x *RouteMatch_GrpcRouteMatchOptions) Reset() {
  3278  	*x = RouteMatch_GrpcRouteMatchOptions{}
  3279  	if protoimpl.UnsafeEnabled {
  3280  		mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[24]
  3281  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  3282  		ms.StoreMessageInfo(mi)
  3283  	}
  3284  }
  3285  
  3286  func (x *RouteMatch_GrpcRouteMatchOptions) String() string {
  3287  	return protoimpl.X.MessageStringOf(x)
  3288  }
  3289  
  3290  func (*RouteMatch_GrpcRouteMatchOptions) ProtoMessage() {}
  3291  
  3292  func (x *RouteMatch_GrpcRouteMatchOptions) ProtoReflect() protoreflect.Message {
  3293  	mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[24]
  3294  	if protoimpl.UnsafeEnabled && x != nil {
  3295  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  3296  		if ms.LoadMessageInfo() == nil {
  3297  			ms.StoreMessageInfo(mi)
  3298  		}
  3299  		return ms
  3300  	}
  3301  	return mi.MessageOf(x)
  3302  }
  3303  
  3304  // Deprecated: Use RouteMatch_GrpcRouteMatchOptions.ProtoReflect.Descriptor instead.
  3305  func (*RouteMatch_GrpcRouteMatchOptions) Descriptor() ([]byte, []int) {
  3306  	return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{4, 0}
  3307  }
  3308  
  3309  type RouteMatch_TlsContextMatchOptions struct {
  3310  	state         protoimpl.MessageState
  3311  	sizeCache     protoimpl.SizeCache
  3312  	unknownFields protoimpl.UnknownFields
  3313  
  3314  	// If specified, the route will match against whether or not a certificate is presented.
  3315  	// If not specified, certificate presentation status (true or false) will not be considered when route matching.
  3316  	Presented *wrappers.BoolValue `protobuf:"bytes,1,opt,name=presented,proto3" json:"presented,omitempty"`
  3317  	// If specified, the route will match against whether or not a certificate is validated.
  3318  	// If not specified, certificate validation status (true or false) will not be considered when route matching.
  3319  	Validated *wrappers.BoolValue `protobuf:"bytes,2,opt,name=validated,proto3" json:"validated,omitempty"`
  3320  }
  3321  
  3322  func (x *RouteMatch_TlsContextMatchOptions) Reset() {
  3323  	*x = RouteMatch_TlsContextMatchOptions{}
  3324  	if protoimpl.UnsafeEnabled {
  3325  		mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[25]
  3326  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  3327  		ms.StoreMessageInfo(mi)
  3328  	}
  3329  }
  3330  
  3331  func (x *RouteMatch_TlsContextMatchOptions) String() string {
  3332  	return protoimpl.X.MessageStringOf(x)
  3333  }
  3334  
  3335  func (*RouteMatch_TlsContextMatchOptions) ProtoMessage() {}
  3336  
  3337  func (x *RouteMatch_TlsContextMatchOptions) ProtoReflect() protoreflect.Message {
  3338  	mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[25]
  3339  	if protoimpl.UnsafeEnabled && x != nil {
  3340  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  3341  		if ms.LoadMessageInfo() == nil {
  3342  			ms.StoreMessageInfo(mi)
  3343  		}
  3344  		return ms
  3345  	}
  3346  	return mi.MessageOf(x)
  3347  }
  3348  
  3349  // Deprecated: Use RouteMatch_TlsContextMatchOptions.ProtoReflect.Descriptor instead.
  3350  func (*RouteMatch_TlsContextMatchOptions) Descriptor() ([]byte, []int) {
  3351  	return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{4, 1}
  3352  }
  3353  
  3354  func (x *RouteMatch_TlsContextMatchOptions) GetPresented() *wrappers.BoolValue {
  3355  	if x != nil {
  3356  		return x.Presented
  3357  	}
  3358  	return nil
  3359  }
  3360  
  3361  func (x *RouteMatch_TlsContextMatchOptions) GetValidated() *wrappers.BoolValue {
  3362  	if x != nil {
  3363  		return x.Validated
  3364  	}
  3365  	return nil
  3366  }
  3367  
  3368  // The router is capable of shadowing traffic from one cluster to another. The current
  3369  // implementation is "fire and forget," meaning Envoy will not wait for the shadow cluster to
  3370  // respond before returning the response from the primary cluster. All normal statistics are
  3371  // collected for the shadow cluster making this feature useful for testing.
  3372  //
  3373  // During shadowing, the host/authority header is altered such that *-shadow* is appended. This is
  3374  // useful for logging. For example, *cluster1* becomes *cluster1-shadow*.
  3375  //
  3376  // .. note::
  3377  //
  3378  //   Shadowing will not be triggered if the primary cluster does not exist.
  3379  type RouteAction_RequestMirrorPolicy struct {
  3380  	state         protoimpl.MessageState
  3381  	sizeCache     protoimpl.SizeCache
  3382  	unknownFields protoimpl.UnknownFields
  3383  
  3384  	// Specifies the cluster that requests will be mirrored to. The cluster must
  3385  	// exist in the cluster manager configuration.
  3386  	Cluster string `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"`
  3387  	// If not specified, all requests to the target cluster will be mirrored. If
  3388  	// specified, Envoy will lookup the runtime key to get the % of requests to
  3389  	// mirror. Valid values are from 0 to 10000, allowing for increments of
  3390  	// 0.01% of requests to be mirrored. If the runtime key is specified in the
  3391  	// configuration but not present in runtime, 0 is the default and thus 0% of
  3392  	// requests will be mirrored.
  3393  	//
  3394  	// .. attention::
  3395  	//
  3396  	//   **This field is deprecated**. Set the
  3397  	//   :ref:`runtime_fraction
  3398  	//   <envoy_api_field_route.RouteAction.RequestMirrorPolicy.runtime_fraction>`
  3399  	//   field instead. Mirroring occurs if both this and
  3400  	//   <envoy_api_field_route.RouteAction.RequestMirrorPolicy.runtime_fraction>`
  3401  	//   are not set.
  3402  	//
  3403  	// Deprecated: Do not use.
  3404  	RuntimeKey string `protobuf:"bytes,2,opt,name=runtime_key,json=runtimeKey,proto3" json:"runtime_key,omitempty"`
  3405  	// If not specified, all requests to the target cluster will be mirrored.
  3406  	//
  3407  	// If specified, this field takes precedence over the `runtime_key` field and requests must also
  3408  	// fall under the percentage of matches indicated by this field.
  3409  	//
  3410  	// For some fraction N/D, a random number in the range [0,D) is selected. If the
  3411  	// number is <= the value of the numerator N, or if the key is not present, the default
  3412  	// value, the request will be mirrored.
  3413  	RuntimeFraction *core.RuntimeFractionalPercent `protobuf:"bytes,3,opt,name=runtime_fraction,json=runtimeFraction,proto3" json:"runtime_fraction,omitempty"`
  3414  	// Determines if the trace span should be sampled. Defaults to true.
  3415  	TraceSampled *wrappers.BoolValue `protobuf:"bytes,4,opt,name=trace_sampled,json=traceSampled,proto3" json:"trace_sampled,omitempty"`
  3416  }
  3417  
  3418  func (x *RouteAction_RequestMirrorPolicy) Reset() {
  3419  	*x = RouteAction_RequestMirrorPolicy{}
  3420  	if protoimpl.UnsafeEnabled {
  3421  		mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[26]
  3422  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  3423  		ms.StoreMessageInfo(mi)
  3424  	}
  3425  }
  3426  
  3427  func (x *RouteAction_RequestMirrorPolicy) String() string {
  3428  	return protoimpl.X.MessageStringOf(x)
  3429  }
  3430  
  3431  func (*RouteAction_RequestMirrorPolicy) ProtoMessage() {}
  3432  
  3433  func (x *RouteAction_RequestMirrorPolicy) ProtoReflect() protoreflect.Message {
  3434  	mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[26]
  3435  	if protoimpl.UnsafeEnabled && x != nil {
  3436  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  3437  		if ms.LoadMessageInfo() == nil {
  3438  			ms.StoreMessageInfo(mi)
  3439  		}
  3440  		return ms
  3441  	}
  3442  	return mi.MessageOf(x)
  3443  }
  3444  
  3445  // Deprecated: Use RouteAction_RequestMirrorPolicy.ProtoReflect.Descriptor instead.
  3446  func (*RouteAction_RequestMirrorPolicy) Descriptor() ([]byte, []int) {
  3447  	return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{6, 0}
  3448  }
  3449  
  3450  func (x *RouteAction_RequestMirrorPolicy) GetCluster() string {
  3451  	if x != nil {
  3452  		return x.Cluster
  3453  	}
  3454  	return ""
  3455  }
  3456  
  3457  // Deprecated: Do not use.
  3458  func (x *RouteAction_RequestMirrorPolicy) GetRuntimeKey() string {
  3459  	if x != nil {
  3460  		return x.RuntimeKey
  3461  	}
  3462  	return ""
  3463  }
  3464  
  3465  func (x *RouteAction_RequestMirrorPolicy) GetRuntimeFraction() *core.RuntimeFractionalPercent {
  3466  	if x != nil {
  3467  		return x.RuntimeFraction
  3468  	}
  3469  	return nil
  3470  }
  3471  
  3472  func (x *RouteAction_RequestMirrorPolicy) GetTraceSampled() *wrappers.BoolValue {
  3473  	if x != nil {
  3474  		return x.TraceSampled
  3475  	}
  3476  	return nil
  3477  }
  3478  
  3479  // Specifies the route's hashing policy if the upstream cluster uses a hashing :ref:`load balancer
  3480  // <arch_overview_load_balancing_types>`.
  3481  // [#next-free-field: 7]
  3482  type RouteAction_HashPolicy struct {
  3483  	state         protoimpl.MessageState
  3484  	sizeCache     protoimpl.SizeCache
  3485  	unknownFields protoimpl.UnknownFields
  3486  
  3487  	// Types that are assignable to PolicySpecifier:
  3488  	//	*RouteAction_HashPolicy_Header_
  3489  	//	*RouteAction_HashPolicy_Cookie_
  3490  	//	*RouteAction_HashPolicy_ConnectionProperties_
  3491  	//	*RouteAction_HashPolicy_QueryParameter_
  3492  	//	*RouteAction_HashPolicy_FilterState_
  3493  	PolicySpecifier isRouteAction_HashPolicy_PolicySpecifier `protobuf_oneof:"policy_specifier"`
  3494  	// The flag that short-circuits the hash computing. This field provides a
  3495  	// 'fallback' style of configuration: "if a terminal policy doesn't work,
  3496  	// fallback to rest of the policy list", it saves time when the terminal
  3497  	// policy works.
  3498  	//
  3499  	// If true, and there is already a hash computed, ignore rest of the
  3500  	// list of hash polices.
  3501  	// For example, if the following hash methods are configured:
  3502  	//
  3503  	//  ========= ========
  3504  	//  specifier terminal
  3505  	//  ========= ========
  3506  	//  Header A  true
  3507  	//  Header B  false
  3508  	//  Header C  false
  3509  	//  ========= ========
  3510  	//
  3511  	// The generateHash process ends if policy "header A" generates a hash, as
  3512  	// it's a terminal policy.
  3513  	Terminal bool `protobuf:"varint,4,opt,name=terminal,proto3" json:"terminal,omitempty"`
  3514  }
  3515  
  3516  func (x *RouteAction_HashPolicy) Reset() {
  3517  	*x = RouteAction_HashPolicy{}
  3518  	if protoimpl.UnsafeEnabled {
  3519  		mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[27]
  3520  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  3521  		ms.StoreMessageInfo(mi)
  3522  	}
  3523  }
  3524  
  3525  func (x *RouteAction_HashPolicy) String() string {
  3526  	return protoimpl.X.MessageStringOf(x)
  3527  }
  3528  
  3529  func (*RouteAction_HashPolicy) ProtoMessage() {}
  3530  
  3531  func (x *RouteAction_HashPolicy) ProtoReflect() protoreflect.Message {
  3532  	mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[27]
  3533  	if protoimpl.UnsafeEnabled && x != nil {
  3534  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  3535  		if ms.LoadMessageInfo() == nil {
  3536  			ms.StoreMessageInfo(mi)
  3537  		}
  3538  		return ms
  3539  	}
  3540  	return mi.MessageOf(x)
  3541  }
  3542  
  3543  // Deprecated: Use RouteAction_HashPolicy.ProtoReflect.Descriptor instead.
  3544  func (*RouteAction_HashPolicy) Descriptor() ([]byte, []int) {
  3545  	return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{6, 1}
  3546  }
  3547  
  3548  func (m *RouteAction_HashPolicy) GetPolicySpecifier() isRouteAction_HashPolicy_PolicySpecifier {
  3549  	if m != nil {
  3550  		return m.PolicySpecifier
  3551  	}
  3552  	return nil
  3553  }
  3554  
  3555  func (x *RouteAction_HashPolicy) GetHeader() *RouteAction_HashPolicy_Header {
  3556  	if x, ok := x.GetPolicySpecifier().(*RouteAction_HashPolicy_Header_); ok {
  3557  		return x.Header
  3558  	}
  3559  	return nil
  3560  }
  3561  
  3562  func (x *RouteAction_HashPolicy) GetCookie() *RouteAction_HashPolicy_Cookie {
  3563  	if x, ok := x.GetPolicySpecifier().(*RouteAction_HashPolicy_Cookie_); ok {
  3564  		return x.Cookie
  3565  	}
  3566  	return nil
  3567  }
  3568  
  3569  func (x *RouteAction_HashPolicy) GetConnectionProperties() *RouteAction_HashPolicy_ConnectionProperties {
  3570  	if x, ok := x.GetPolicySpecifier().(*RouteAction_HashPolicy_ConnectionProperties_); ok {
  3571  		return x.ConnectionProperties
  3572  	}
  3573  	return nil
  3574  }
  3575  
  3576  func (x *RouteAction_HashPolicy) GetQueryParameter() *RouteAction_HashPolicy_QueryParameter {
  3577  	if x, ok := x.GetPolicySpecifier().(*RouteAction_HashPolicy_QueryParameter_); ok {
  3578  		return x.QueryParameter
  3579  	}
  3580  	return nil
  3581  }
  3582  
  3583  func (x *RouteAction_HashPolicy) GetFilterState() *RouteAction_HashPolicy_FilterState {
  3584  	if x, ok := x.GetPolicySpecifier().(*RouteAction_HashPolicy_FilterState_); ok {
  3585  		return x.FilterState
  3586  	}
  3587  	return nil
  3588  }
  3589  
  3590  func (x *RouteAction_HashPolicy) GetTerminal() bool {
  3591  	if x != nil {
  3592  		return x.Terminal
  3593  	}
  3594  	return false
  3595  }
  3596  
  3597  type isRouteAction_HashPolicy_PolicySpecifier interface {
  3598  	isRouteAction_HashPolicy_PolicySpecifier()
  3599  }
  3600  
  3601  type RouteAction_HashPolicy_Header_ struct {
  3602  	// Header hash policy.
  3603  	Header *RouteAction_HashPolicy_Header `protobuf:"bytes,1,opt,name=header,proto3,oneof"`
  3604  }
  3605  
  3606  type RouteAction_HashPolicy_Cookie_ struct {
  3607  	// Cookie hash policy.
  3608  	Cookie *RouteAction_HashPolicy_Cookie `protobuf:"bytes,2,opt,name=cookie,proto3,oneof"`
  3609  }
  3610  
  3611  type RouteAction_HashPolicy_ConnectionProperties_ struct {
  3612  	// Connection properties hash policy.
  3613  	ConnectionProperties *RouteAction_HashPolicy_ConnectionProperties `protobuf:"bytes,3,opt,name=connection_properties,json=connectionProperties,proto3,oneof"`
  3614  }
  3615  
  3616  type RouteAction_HashPolicy_QueryParameter_ struct {
  3617  	// Query parameter hash policy.
  3618  	QueryParameter *RouteAction_HashPolicy_QueryParameter `protobuf:"bytes,5,opt,name=query_parameter,json=queryParameter,proto3,oneof"`
  3619  }
  3620  
  3621  type RouteAction_HashPolicy_FilterState_ struct {
  3622  	// Filter state hash policy.
  3623  	FilterState *RouteAction_HashPolicy_FilterState `protobuf:"bytes,6,opt,name=filter_state,json=filterState,proto3,oneof"`
  3624  }
  3625  
  3626  func (*RouteAction_HashPolicy_Header_) isRouteAction_HashPolicy_PolicySpecifier() {}
  3627  
  3628  func (*RouteAction_HashPolicy_Cookie_) isRouteAction_HashPolicy_PolicySpecifier() {}
  3629  
  3630  func (*RouteAction_HashPolicy_ConnectionProperties_) isRouteAction_HashPolicy_PolicySpecifier() {}
  3631  
  3632  func (*RouteAction_HashPolicy_QueryParameter_) isRouteAction_HashPolicy_PolicySpecifier() {}
  3633  
  3634  func (*RouteAction_HashPolicy_FilterState_) isRouteAction_HashPolicy_PolicySpecifier() {}
  3635  
  3636  // Allows enabling and disabling upgrades on a per-route basis.
  3637  // This overrides any enabled/disabled upgrade filter chain specified in the
  3638  // HttpConnectionManager
  3639  // :ref:`upgrade_configs
  3640  // <envoy_api_field_config.filter.network.http_connection_manager.v2.HttpConnectionManager.upgrade_configs>`
  3641  // but does not affect any custom filter chain specified there.
  3642  type RouteAction_UpgradeConfig struct {
  3643  	state         protoimpl.MessageState
  3644  	sizeCache     protoimpl.SizeCache
  3645  	unknownFields protoimpl.UnknownFields
  3646  
  3647  	// The case-insensitive name of this upgrade, e.g. "websocket".
  3648  	// For each upgrade type present in upgrade_configs, requests with
  3649  	// Upgrade: [upgrade_type] will be proxied upstream.
  3650  	UpgradeType string `protobuf:"bytes,1,opt,name=upgrade_type,json=upgradeType,proto3" json:"upgrade_type,omitempty"`
  3651  	// Determines if upgrades are available on this route. Defaults to true.
  3652  	Enabled *wrappers.BoolValue `protobuf:"bytes,2,opt,name=enabled,proto3" json:"enabled,omitempty"`
  3653  }
  3654  
  3655  func (x *RouteAction_UpgradeConfig) Reset() {
  3656  	*x = RouteAction_UpgradeConfig{}
  3657  	if protoimpl.UnsafeEnabled {
  3658  		mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[28]
  3659  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  3660  		ms.StoreMessageInfo(mi)
  3661  	}
  3662  }
  3663  
  3664  func (x *RouteAction_UpgradeConfig) String() string {
  3665  	return protoimpl.X.MessageStringOf(x)
  3666  }
  3667  
  3668  func (*RouteAction_UpgradeConfig) ProtoMessage() {}
  3669  
  3670  func (x *RouteAction_UpgradeConfig) ProtoReflect() protoreflect.Message {
  3671  	mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[28]
  3672  	if protoimpl.UnsafeEnabled && x != nil {
  3673  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  3674  		if ms.LoadMessageInfo() == nil {
  3675  			ms.StoreMessageInfo(mi)
  3676  		}
  3677  		return ms
  3678  	}
  3679  	return mi.MessageOf(x)
  3680  }
  3681  
  3682  // Deprecated: Use RouteAction_UpgradeConfig.ProtoReflect.Descriptor instead.
  3683  func (*RouteAction_UpgradeConfig) Descriptor() ([]byte, []int) {
  3684  	return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{6, 2}
  3685  }
  3686  
  3687  func (x *RouteAction_UpgradeConfig) GetUpgradeType() string {
  3688  	if x != nil {
  3689  		return x.UpgradeType
  3690  	}
  3691  	return ""
  3692  }
  3693  
  3694  func (x *RouteAction_UpgradeConfig) GetEnabled() *wrappers.BoolValue {
  3695  	if x != nil {
  3696  		return x.Enabled
  3697  	}
  3698  	return nil
  3699  }
  3700  
  3701  type RouteAction_HashPolicy_Header struct {
  3702  	state         protoimpl.MessageState
  3703  	sizeCache     protoimpl.SizeCache
  3704  	unknownFields protoimpl.UnknownFields
  3705  
  3706  	// The name of the request header that will be used to obtain the hash
  3707  	// key. If the request header is not present, no hash will be produced.
  3708  	HeaderName string `protobuf:"bytes,1,opt,name=header_name,json=headerName,proto3" json:"header_name,omitempty"`
  3709  }
  3710  
  3711  func (x *RouteAction_HashPolicy_Header) Reset() {
  3712  	*x = RouteAction_HashPolicy_Header{}
  3713  	if protoimpl.UnsafeEnabled {
  3714  		mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[29]
  3715  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  3716  		ms.StoreMessageInfo(mi)
  3717  	}
  3718  }
  3719  
  3720  func (x *RouteAction_HashPolicy_Header) String() string {
  3721  	return protoimpl.X.MessageStringOf(x)
  3722  }
  3723  
  3724  func (*RouteAction_HashPolicy_Header) ProtoMessage() {}
  3725  
  3726  func (x *RouteAction_HashPolicy_Header) ProtoReflect() protoreflect.Message {
  3727  	mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[29]
  3728  	if protoimpl.UnsafeEnabled && x != nil {
  3729  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  3730  		if ms.LoadMessageInfo() == nil {
  3731  			ms.StoreMessageInfo(mi)
  3732  		}
  3733  		return ms
  3734  	}
  3735  	return mi.MessageOf(x)
  3736  }
  3737  
  3738  // Deprecated: Use RouteAction_HashPolicy_Header.ProtoReflect.Descriptor instead.
  3739  func (*RouteAction_HashPolicy_Header) Descriptor() ([]byte, []int) {
  3740  	return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{6, 1, 0}
  3741  }
  3742  
  3743  func (x *RouteAction_HashPolicy_Header) GetHeaderName() string {
  3744  	if x != nil {
  3745  		return x.HeaderName
  3746  	}
  3747  	return ""
  3748  }
  3749  
  3750  // Envoy supports two types of cookie affinity:
  3751  //
  3752  // 1. Passive. Envoy takes a cookie that's present in the cookies header and
  3753  //    hashes on its value.
  3754  //
  3755  // 2. Generated. Envoy generates and sets a cookie with an expiration (TTL)
  3756  //    on the first request from the client in its response to the client,
  3757  //    based on the endpoint the request gets sent to. The client then
  3758  //    presents this on the next and all subsequent requests. The hash of
  3759  //    this is sufficient to ensure these requests get sent to the same
  3760  //    endpoint. The cookie is generated by hashing the source and
  3761  //    destination ports and addresses so that multiple independent HTTP2
  3762  //    streams on the same connection will independently receive the same
  3763  //    cookie, even if they arrive at the Envoy simultaneously.
  3764  type RouteAction_HashPolicy_Cookie struct {
  3765  	state         protoimpl.MessageState
  3766  	sizeCache     protoimpl.SizeCache
  3767  	unknownFields protoimpl.UnknownFields
  3768  
  3769  	// The name of the cookie that will be used to obtain the hash key. If the
  3770  	// cookie is not present and ttl below is not set, no hash will be
  3771  	// produced.
  3772  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
  3773  	// If specified, a cookie with the TTL will be generated if the cookie is
  3774  	// not present. If the TTL is present and zero, the generated cookie will
  3775  	// be a session cookie.
  3776  	Ttl *duration.Duration `protobuf:"bytes,2,opt,name=ttl,proto3" json:"ttl,omitempty"`
  3777  	// The name of the path for the cookie. If no path is specified here, no path
  3778  	// will be set for the cookie.
  3779  	Path string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"`
  3780  }
  3781  
  3782  func (x *RouteAction_HashPolicy_Cookie) Reset() {
  3783  	*x = RouteAction_HashPolicy_Cookie{}
  3784  	if protoimpl.UnsafeEnabled {
  3785  		mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[30]
  3786  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  3787  		ms.StoreMessageInfo(mi)
  3788  	}
  3789  }
  3790  
  3791  func (x *RouteAction_HashPolicy_Cookie) String() string {
  3792  	return protoimpl.X.MessageStringOf(x)
  3793  }
  3794  
  3795  func (*RouteAction_HashPolicy_Cookie) ProtoMessage() {}
  3796  
  3797  func (x *RouteAction_HashPolicy_Cookie) ProtoReflect() protoreflect.Message {
  3798  	mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[30]
  3799  	if protoimpl.UnsafeEnabled && x != nil {
  3800  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  3801  		if ms.LoadMessageInfo() == nil {
  3802  			ms.StoreMessageInfo(mi)
  3803  		}
  3804  		return ms
  3805  	}
  3806  	return mi.MessageOf(x)
  3807  }
  3808  
  3809  // Deprecated: Use RouteAction_HashPolicy_Cookie.ProtoReflect.Descriptor instead.
  3810  func (*RouteAction_HashPolicy_Cookie) Descriptor() ([]byte, []int) {
  3811  	return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{6, 1, 1}
  3812  }
  3813  
  3814  func (x *RouteAction_HashPolicy_Cookie) GetName() string {
  3815  	if x != nil {
  3816  		return x.Name
  3817  	}
  3818  	return ""
  3819  }
  3820  
  3821  func (x *RouteAction_HashPolicy_Cookie) GetTtl() *duration.Duration {
  3822  	if x != nil {
  3823  		return x.Ttl
  3824  	}
  3825  	return nil
  3826  }
  3827  
  3828  func (x *RouteAction_HashPolicy_Cookie) GetPath() string {
  3829  	if x != nil {
  3830  		return x.Path
  3831  	}
  3832  	return ""
  3833  }
  3834  
  3835  type RouteAction_HashPolicy_ConnectionProperties struct {
  3836  	state         protoimpl.MessageState
  3837  	sizeCache     protoimpl.SizeCache
  3838  	unknownFields protoimpl.UnknownFields
  3839  
  3840  	// Hash on source IP address.
  3841  	SourceIp bool `protobuf:"varint,1,opt,name=source_ip,json=sourceIp,proto3" json:"source_ip,omitempty"`
  3842  }
  3843  
  3844  func (x *RouteAction_HashPolicy_ConnectionProperties) Reset() {
  3845  	*x = RouteAction_HashPolicy_ConnectionProperties{}
  3846  	if protoimpl.UnsafeEnabled {
  3847  		mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[31]
  3848  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  3849  		ms.StoreMessageInfo(mi)
  3850  	}
  3851  }
  3852  
  3853  func (x *RouteAction_HashPolicy_ConnectionProperties) String() string {
  3854  	return protoimpl.X.MessageStringOf(x)
  3855  }
  3856  
  3857  func (*RouteAction_HashPolicy_ConnectionProperties) ProtoMessage() {}
  3858  
  3859  func (x *RouteAction_HashPolicy_ConnectionProperties) ProtoReflect() protoreflect.Message {
  3860  	mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[31]
  3861  	if protoimpl.UnsafeEnabled && x != nil {
  3862  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  3863  		if ms.LoadMessageInfo() == nil {
  3864  			ms.StoreMessageInfo(mi)
  3865  		}
  3866  		return ms
  3867  	}
  3868  	return mi.MessageOf(x)
  3869  }
  3870  
  3871  // Deprecated: Use RouteAction_HashPolicy_ConnectionProperties.ProtoReflect.Descriptor instead.
  3872  func (*RouteAction_HashPolicy_ConnectionProperties) Descriptor() ([]byte, []int) {
  3873  	return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{6, 1, 2}
  3874  }
  3875  
  3876  func (x *RouteAction_HashPolicy_ConnectionProperties) GetSourceIp() bool {
  3877  	if x != nil {
  3878  		return x.SourceIp
  3879  	}
  3880  	return false
  3881  }
  3882  
  3883  type RouteAction_HashPolicy_QueryParameter struct {
  3884  	state         protoimpl.MessageState
  3885  	sizeCache     protoimpl.SizeCache
  3886  	unknownFields protoimpl.UnknownFields
  3887  
  3888  	// The name of the URL query parameter that will be used to obtain the hash
  3889  	// key. If the parameter is not present, no hash will be produced. Query
  3890  	// parameter names are case-sensitive.
  3891  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
  3892  }
  3893  
  3894  func (x *RouteAction_HashPolicy_QueryParameter) Reset() {
  3895  	*x = RouteAction_HashPolicy_QueryParameter{}
  3896  	if protoimpl.UnsafeEnabled {
  3897  		mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[32]
  3898  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  3899  		ms.StoreMessageInfo(mi)
  3900  	}
  3901  }
  3902  
  3903  func (x *RouteAction_HashPolicy_QueryParameter) String() string {
  3904  	return protoimpl.X.MessageStringOf(x)
  3905  }
  3906  
  3907  func (*RouteAction_HashPolicy_QueryParameter) ProtoMessage() {}
  3908  
  3909  func (x *RouteAction_HashPolicy_QueryParameter) ProtoReflect() protoreflect.Message {
  3910  	mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[32]
  3911  	if protoimpl.UnsafeEnabled && x != nil {
  3912  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  3913  		if ms.LoadMessageInfo() == nil {
  3914  			ms.StoreMessageInfo(mi)
  3915  		}
  3916  		return ms
  3917  	}
  3918  	return mi.MessageOf(x)
  3919  }
  3920  
  3921  // Deprecated: Use RouteAction_HashPolicy_QueryParameter.ProtoReflect.Descriptor instead.
  3922  func (*RouteAction_HashPolicy_QueryParameter) Descriptor() ([]byte, []int) {
  3923  	return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{6, 1, 3}
  3924  }
  3925  
  3926  func (x *RouteAction_HashPolicy_QueryParameter) GetName() string {
  3927  	if x != nil {
  3928  		return x.Name
  3929  	}
  3930  	return ""
  3931  }
  3932  
  3933  type RouteAction_HashPolicy_FilterState struct {
  3934  	state         protoimpl.MessageState
  3935  	sizeCache     protoimpl.SizeCache
  3936  	unknownFields protoimpl.UnknownFields
  3937  
  3938  	// The name of the Object in the per-request filterState, which is an
  3939  	// Envoy::Http::Hashable object. If there is no data associated with the key,
  3940  	// or the stored object is not Envoy::Http::Hashable, no hash will be produced.
  3941  	Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
  3942  }
  3943  
  3944  func (x *RouteAction_HashPolicy_FilterState) Reset() {
  3945  	*x = RouteAction_HashPolicy_FilterState{}
  3946  	if protoimpl.UnsafeEnabled {
  3947  		mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[33]
  3948  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  3949  		ms.StoreMessageInfo(mi)
  3950  	}
  3951  }
  3952  
  3953  func (x *RouteAction_HashPolicy_FilterState) String() string {
  3954  	return protoimpl.X.MessageStringOf(x)
  3955  }
  3956  
  3957  func (*RouteAction_HashPolicy_FilterState) ProtoMessage() {}
  3958  
  3959  func (x *RouteAction_HashPolicy_FilterState) ProtoReflect() protoreflect.Message {
  3960  	mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[33]
  3961  	if protoimpl.UnsafeEnabled && x != nil {
  3962  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  3963  		if ms.LoadMessageInfo() == nil {
  3964  			ms.StoreMessageInfo(mi)
  3965  		}
  3966  		return ms
  3967  	}
  3968  	return mi.MessageOf(x)
  3969  }
  3970  
  3971  // Deprecated: Use RouteAction_HashPolicy_FilterState.ProtoReflect.Descriptor instead.
  3972  func (*RouteAction_HashPolicy_FilterState) Descriptor() ([]byte, []int) {
  3973  	return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{6, 1, 4}
  3974  }
  3975  
  3976  func (x *RouteAction_HashPolicy_FilterState) GetKey() string {
  3977  	if x != nil {
  3978  		return x.Key
  3979  	}
  3980  	return ""
  3981  }
  3982  
  3983  type RetryPolicy_RetryPriority struct {
  3984  	state         protoimpl.MessageState
  3985  	sizeCache     protoimpl.SizeCache
  3986  	unknownFields protoimpl.UnknownFields
  3987  
  3988  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
  3989  	// Types that are assignable to ConfigType:
  3990  	//	*RetryPolicy_RetryPriority_Config
  3991  	//	*RetryPolicy_RetryPriority_TypedConfig
  3992  	ConfigType isRetryPolicy_RetryPriority_ConfigType `protobuf_oneof:"config_type"`
  3993  }
  3994  
  3995  func (x *RetryPolicy_RetryPriority) Reset() {
  3996  	*x = RetryPolicy_RetryPriority{}
  3997  	if protoimpl.UnsafeEnabled {
  3998  		mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[34]
  3999  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  4000  		ms.StoreMessageInfo(mi)
  4001  	}
  4002  }
  4003  
  4004  func (x *RetryPolicy_RetryPriority) String() string {
  4005  	return protoimpl.X.MessageStringOf(x)
  4006  }
  4007  
  4008  func (*RetryPolicy_RetryPriority) ProtoMessage() {}
  4009  
  4010  func (x *RetryPolicy_RetryPriority) ProtoReflect() protoreflect.Message {
  4011  	mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[34]
  4012  	if protoimpl.UnsafeEnabled && x != nil {
  4013  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  4014  		if ms.LoadMessageInfo() == nil {
  4015  			ms.StoreMessageInfo(mi)
  4016  		}
  4017  		return ms
  4018  	}
  4019  	return mi.MessageOf(x)
  4020  }
  4021  
  4022  // Deprecated: Use RetryPolicy_RetryPriority.ProtoReflect.Descriptor instead.
  4023  func (*RetryPolicy_RetryPriority) Descriptor() ([]byte, []int) {
  4024  	return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{7, 0}
  4025  }
  4026  
  4027  func (x *RetryPolicy_RetryPriority) GetName() string {
  4028  	if x != nil {
  4029  		return x.Name
  4030  	}
  4031  	return ""
  4032  }
  4033  
  4034  func (m *RetryPolicy_RetryPriority) GetConfigType() isRetryPolicy_RetryPriority_ConfigType {
  4035  	if m != nil {
  4036  		return m.ConfigType
  4037  	}
  4038  	return nil
  4039  }
  4040  
  4041  // Deprecated: Do not use.
  4042  func (x *RetryPolicy_RetryPriority) GetConfig() *_struct.Struct {
  4043  	if x, ok := x.GetConfigType().(*RetryPolicy_RetryPriority_Config); ok {
  4044  		return x.Config
  4045  	}
  4046  	return nil
  4047  }
  4048  
  4049  func (x *RetryPolicy_RetryPriority) GetTypedConfig() *any.Any {
  4050  	if x, ok := x.GetConfigType().(*RetryPolicy_RetryPriority_TypedConfig); ok {
  4051  		return x.TypedConfig
  4052  	}
  4053  	return nil
  4054  }
  4055  
  4056  type isRetryPolicy_RetryPriority_ConfigType interface {
  4057  	isRetryPolicy_RetryPriority_ConfigType()
  4058  }
  4059  
  4060  type RetryPolicy_RetryPriority_Config struct {
  4061  	// Deprecated: Do not use.
  4062  	Config *_struct.Struct `protobuf:"bytes,2,opt,name=config,proto3,oneof"`
  4063  }
  4064  
  4065  type RetryPolicy_RetryPriority_TypedConfig struct {
  4066  	TypedConfig *any.Any `protobuf:"bytes,3,opt,name=typed_config,json=typedConfig,proto3,oneof"`
  4067  }
  4068  
  4069  func (*RetryPolicy_RetryPriority_Config) isRetryPolicy_RetryPriority_ConfigType() {}
  4070  
  4071  func (*RetryPolicy_RetryPriority_TypedConfig) isRetryPolicy_RetryPriority_ConfigType() {}
  4072  
  4073  type RetryPolicy_RetryHostPredicate struct {
  4074  	state         protoimpl.MessageState
  4075  	sizeCache     protoimpl.SizeCache
  4076  	unknownFields protoimpl.UnknownFields
  4077  
  4078  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
  4079  	// Types that are assignable to ConfigType:
  4080  	//	*RetryPolicy_RetryHostPredicate_Config
  4081  	//	*RetryPolicy_RetryHostPredicate_TypedConfig
  4082  	ConfigType isRetryPolicy_RetryHostPredicate_ConfigType `protobuf_oneof:"config_type"`
  4083  }
  4084  
  4085  func (x *RetryPolicy_RetryHostPredicate) Reset() {
  4086  	*x = RetryPolicy_RetryHostPredicate{}
  4087  	if protoimpl.UnsafeEnabled {
  4088  		mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[35]
  4089  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  4090  		ms.StoreMessageInfo(mi)
  4091  	}
  4092  }
  4093  
  4094  func (x *RetryPolicy_RetryHostPredicate) String() string {
  4095  	return protoimpl.X.MessageStringOf(x)
  4096  }
  4097  
  4098  func (*RetryPolicy_RetryHostPredicate) ProtoMessage() {}
  4099  
  4100  func (x *RetryPolicy_RetryHostPredicate) ProtoReflect() protoreflect.Message {
  4101  	mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[35]
  4102  	if protoimpl.UnsafeEnabled && x != nil {
  4103  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  4104  		if ms.LoadMessageInfo() == nil {
  4105  			ms.StoreMessageInfo(mi)
  4106  		}
  4107  		return ms
  4108  	}
  4109  	return mi.MessageOf(x)
  4110  }
  4111  
  4112  // Deprecated: Use RetryPolicy_RetryHostPredicate.ProtoReflect.Descriptor instead.
  4113  func (*RetryPolicy_RetryHostPredicate) Descriptor() ([]byte, []int) {
  4114  	return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{7, 1}
  4115  }
  4116  
  4117  func (x *RetryPolicy_RetryHostPredicate) GetName() string {
  4118  	if x != nil {
  4119  		return x.Name
  4120  	}
  4121  	return ""
  4122  }
  4123  
  4124  func (m *RetryPolicy_RetryHostPredicate) GetConfigType() isRetryPolicy_RetryHostPredicate_ConfigType {
  4125  	if m != nil {
  4126  		return m.ConfigType
  4127  	}
  4128  	return nil
  4129  }
  4130  
  4131  // Deprecated: Do not use.
  4132  func (x *RetryPolicy_RetryHostPredicate) GetConfig() *_struct.Struct {
  4133  	if x, ok := x.GetConfigType().(*RetryPolicy_RetryHostPredicate_Config); ok {
  4134  		return x.Config
  4135  	}
  4136  	return nil
  4137  }
  4138  
  4139  func (x *RetryPolicy_RetryHostPredicate) GetTypedConfig() *any.Any {
  4140  	if x, ok := x.GetConfigType().(*RetryPolicy_RetryHostPredicate_TypedConfig); ok {
  4141  		return x.TypedConfig
  4142  	}
  4143  	return nil
  4144  }
  4145  
  4146  type isRetryPolicy_RetryHostPredicate_ConfigType interface {
  4147  	isRetryPolicy_RetryHostPredicate_ConfigType()
  4148  }
  4149  
  4150  type RetryPolicy_RetryHostPredicate_Config struct {
  4151  	// Deprecated: Do not use.
  4152  	Config *_struct.Struct `protobuf:"bytes,2,opt,name=config,proto3,oneof"`
  4153  }
  4154  
  4155  type RetryPolicy_RetryHostPredicate_TypedConfig struct {
  4156  	TypedConfig *any.Any `protobuf:"bytes,3,opt,name=typed_config,json=typedConfig,proto3,oneof"`
  4157  }
  4158  
  4159  func (*RetryPolicy_RetryHostPredicate_Config) isRetryPolicy_RetryHostPredicate_ConfigType() {}
  4160  
  4161  func (*RetryPolicy_RetryHostPredicate_TypedConfig) isRetryPolicy_RetryHostPredicate_ConfigType() {}
  4162  
  4163  type RetryPolicy_RetryBackOff struct {
  4164  	state         protoimpl.MessageState
  4165  	sizeCache     protoimpl.SizeCache
  4166  	unknownFields protoimpl.UnknownFields
  4167  
  4168  	// Specifies the base interval between retries. This parameter is required and must be greater
  4169  	// than zero. Values less than 1 ms are rounded up to 1 ms.
  4170  	// See :ref:`config_http_filters_router_x-envoy-max-retries` for a discussion of Envoy's
  4171  	// back-off algorithm.
  4172  	BaseInterval *duration.Duration `protobuf:"bytes,1,opt,name=base_interval,json=baseInterval,proto3" json:"base_interval,omitempty"`
  4173  	// Specifies the maximum interval between retries. This parameter is optional, but must be
  4174  	// greater than or equal to the `base_interval` if set. The default is 10 times the
  4175  	// `base_interval`. See :ref:`config_http_filters_router_x-envoy-max-retries` for a discussion
  4176  	// of Envoy's back-off algorithm.
  4177  	MaxInterval *duration.Duration `protobuf:"bytes,2,opt,name=max_interval,json=maxInterval,proto3" json:"max_interval,omitempty"`
  4178  }
  4179  
  4180  func (x *RetryPolicy_RetryBackOff) Reset() {
  4181  	*x = RetryPolicy_RetryBackOff{}
  4182  	if protoimpl.UnsafeEnabled {
  4183  		mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[36]
  4184  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  4185  		ms.StoreMessageInfo(mi)
  4186  	}
  4187  }
  4188  
  4189  func (x *RetryPolicy_RetryBackOff) String() string {
  4190  	return protoimpl.X.MessageStringOf(x)
  4191  }
  4192  
  4193  func (*RetryPolicy_RetryBackOff) ProtoMessage() {}
  4194  
  4195  func (x *RetryPolicy_RetryBackOff) ProtoReflect() protoreflect.Message {
  4196  	mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[36]
  4197  	if protoimpl.UnsafeEnabled && x != nil {
  4198  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  4199  		if ms.LoadMessageInfo() == nil {
  4200  			ms.StoreMessageInfo(mi)
  4201  		}
  4202  		return ms
  4203  	}
  4204  	return mi.MessageOf(x)
  4205  }
  4206  
  4207  // Deprecated: Use RetryPolicy_RetryBackOff.ProtoReflect.Descriptor instead.
  4208  func (*RetryPolicy_RetryBackOff) Descriptor() ([]byte, []int) {
  4209  	return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{7, 2}
  4210  }
  4211  
  4212  func (x *RetryPolicy_RetryBackOff) GetBaseInterval() *duration.Duration {
  4213  	if x != nil {
  4214  		return x.BaseInterval
  4215  	}
  4216  	return nil
  4217  }
  4218  
  4219  func (x *RetryPolicy_RetryBackOff) GetMaxInterval() *duration.Duration {
  4220  	if x != nil {
  4221  		return x.MaxInterval
  4222  	}
  4223  	return nil
  4224  }
  4225  
  4226  // [#next-free-field: 7]
  4227  type RateLimit_Action struct {
  4228  	state         protoimpl.MessageState
  4229  	sizeCache     protoimpl.SizeCache
  4230  	unknownFields protoimpl.UnknownFields
  4231  
  4232  	// Types that are assignable to ActionSpecifier:
  4233  	//	*RateLimit_Action_SourceCluster_
  4234  	//	*RateLimit_Action_DestinationCluster_
  4235  	//	*RateLimit_Action_RequestHeaders_
  4236  	//	*RateLimit_Action_RemoteAddress_
  4237  	//	*RateLimit_Action_GenericKey_
  4238  	//	*RateLimit_Action_HeaderValueMatch_
  4239  	ActionSpecifier isRateLimit_Action_ActionSpecifier `protobuf_oneof:"action_specifier"`
  4240  }
  4241  
  4242  func (x *RateLimit_Action) Reset() {
  4243  	*x = RateLimit_Action{}
  4244  	if protoimpl.UnsafeEnabled {
  4245  		mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[37]
  4246  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  4247  		ms.StoreMessageInfo(mi)
  4248  	}
  4249  }
  4250  
  4251  func (x *RateLimit_Action) String() string {
  4252  	return protoimpl.X.MessageStringOf(x)
  4253  }
  4254  
  4255  func (*RateLimit_Action) ProtoMessage() {}
  4256  
  4257  func (x *RateLimit_Action) ProtoReflect() protoreflect.Message {
  4258  	mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[37]
  4259  	if protoimpl.UnsafeEnabled && x != nil {
  4260  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  4261  		if ms.LoadMessageInfo() == nil {
  4262  			ms.StoreMessageInfo(mi)
  4263  		}
  4264  		return ms
  4265  	}
  4266  	return mi.MessageOf(x)
  4267  }
  4268  
  4269  // Deprecated: Use RateLimit_Action.ProtoReflect.Descriptor instead.
  4270  func (*RateLimit_Action) Descriptor() ([]byte, []int) {
  4271  	return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{14, 0}
  4272  }
  4273  
  4274  func (m *RateLimit_Action) GetActionSpecifier() isRateLimit_Action_ActionSpecifier {
  4275  	if m != nil {
  4276  		return m.ActionSpecifier
  4277  	}
  4278  	return nil
  4279  }
  4280  
  4281  func (x *RateLimit_Action) GetSourceCluster() *RateLimit_Action_SourceCluster {
  4282  	if x, ok := x.GetActionSpecifier().(*RateLimit_Action_SourceCluster_); ok {
  4283  		return x.SourceCluster
  4284  	}
  4285  	return nil
  4286  }
  4287  
  4288  func (x *RateLimit_Action) GetDestinationCluster() *RateLimit_Action_DestinationCluster {
  4289  	if x, ok := x.GetActionSpecifier().(*RateLimit_Action_DestinationCluster_); ok {
  4290  		return x.DestinationCluster
  4291  	}
  4292  	return nil
  4293  }
  4294  
  4295  func (x *RateLimit_Action) GetRequestHeaders() *RateLimit_Action_RequestHeaders {
  4296  	if x, ok := x.GetActionSpecifier().(*RateLimit_Action_RequestHeaders_); ok {
  4297  		return x.RequestHeaders
  4298  	}
  4299  	return nil
  4300  }
  4301  
  4302  func (x *RateLimit_Action) GetRemoteAddress() *RateLimit_Action_RemoteAddress {
  4303  	if x, ok := x.GetActionSpecifier().(*RateLimit_Action_RemoteAddress_); ok {
  4304  		return x.RemoteAddress
  4305  	}
  4306  	return nil
  4307  }
  4308  
  4309  func (x *RateLimit_Action) GetGenericKey() *RateLimit_Action_GenericKey {
  4310  	if x, ok := x.GetActionSpecifier().(*RateLimit_Action_GenericKey_); ok {
  4311  		return x.GenericKey
  4312  	}
  4313  	return nil
  4314  }
  4315  
  4316  func (x *RateLimit_Action) GetHeaderValueMatch() *RateLimit_Action_HeaderValueMatch {
  4317  	if x, ok := x.GetActionSpecifier().(*RateLimit_Action_HeaderValueMatch_); ok {
  4318  		return x.HeaderValueMatch
  4319  	}
  4320  	return nil
  4321  }
  4322  
  4323  type isRateLimit_Action_ActionSpecifier interface {
  4324  	isRateLimit_Action_ActionSpecifier()
  4325  }
  4326  
  4327  type RateLimit_Action_SourceCluster_ struct {
  4328  	// Rate limit on source cluster.
  4329  	SourceCluster *RateLimit_Action_SourceCluster `protobuf:"bytes,1,opt,name=source_cluster,json=sourceCluster,proto3,oneof"`
  4330  }
  4331  
  4332  type RateLimit_Action_DestinationCluster_ struct {
  4333  	// Rate limit on destination cluster.
  4334  	DestinationCluster *RateLimit_Action_DestinationCluster `protobuf:"bytes,2,opt,name=destination_cluster,json=destinationCluster,proto3,oneof"`
  4335  }
  4336  
  4337  type RateLimit_Action_RequestHeaders_ struct {
  4338  	// Rate limit on request headers.
  4339  	RequestHeaders *RateLimit_Action_RequestHeaders `protobuf:"bytes,3,opt,name=request_headers,json=requestHeaders,proto3,oneof"`
  4340  }
  4341  
  4342  type RateLimit_Action_RemoteAddress_ struct {
  4343  	// Rate limit on remote address.
  4344  	RemoteAddress *RateLimit_Action_RemoteAddress `protobuf:"bytes,4,opt,name=remote_address,json=remoteAddress,proto3,oneof"`
  4345  }
  4346  
  4347  type RateLimit_Action_GenericKey_ struct {
  4348  	// Rate limit on a generic key.
  4349  	GenericKey *RateLimit_Action_GenericKey `protobuf:"bytes,5,opt,name=generic_key,json=genericKey,proto3,oneof"`
  4350  }
  4351  
  4352  type RateLimit_Action_HeaderValueMatch_ struct {
  4353  	// Rate limit on the existence of request headers.
  4354  	HeaderValueMatch *RateLimit_Action_HeaderValueMatch `protobuf:"bytes,6,opt,name=header_value_match,json=headerValueMatch,proto3,oneof"`
  4355  }
  4356  
  4357  func (*RateLimit_Action_SourceCluster_) isRateLimit_Action_ActionSpecifier() {}
  4358  
  4359  func (*RateLimit_Action_DestinationCluster_) isRateLimit_Action_ActionSpecifier() {}
  4360  
  4361  func (*RateLimit_Action_RequestHeaders_) isRateLimit_Action_ActionSpecifier() {}
  4362  
  4363  func (*RateLimit_Action_RemoteAddress_) isRateLimit_Action_ActionSpecifier() {}
  4364  
  4365  func (*RateLimit_Action_GenericKey_) isRateLimit_Action_ActionSpecifier() {}
  4366  
  4367  func (*RateLimit_Action_HeaderValueMatch_) isRateLimit_Action_ActionSpecifier() {}
  4368  
  4369  // The following descriptor entry is appended to the descriptor:
  4370  //
  4371  // .. code-block:: cpp
  4372  //
  4373  //   ("source_cluster", "<local service cluster>")
  4374  //
  4375  // <local service cluster> is derived from the :option:`--service-cluster` option.
  4376  type RateLimit_Action_SourceCluster struct {
  4377  	state         protoimpl.MessageState
  4378  	sizeCache     protoimpl.SizeCache
  4379  	unknownFields protoimpl.UnknownFields
  4380  }
  4381  
  4382  func (x *RateLimit_Action_SourceCluster) Reset() {
  4383  	*x = RateLimit_Action_SourceCluster{}
  4384  	if protoimpl.UnsafeEnabled {
  4385  		mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[38]
  4386  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  4387  		ms.StoreMessageInfo(mi)
  4388  	}
  4389  }
  4390  
  4391  func (x *RateLimit_Action_SourceCluster) String() string {
  4392  	return protoimpl.X.MessageStringOf(x)
  4393  }
  4394  
  4395  func (*RateLimit_Action_SourceCluster) ProtoMessage() {}
  4396  
  4397  func (x *RateLimit_Action_SourceCluster) ProtoReflect() protoreflect.Message {
  4398  	mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[38]
  4399  	if protoimpl.UnsafeEnabled && x != nil {
  4400  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  4401  		if ms.LoadMessageInfo() == nil {
  4402  			ms.StoreMessageInfo(mi)
  4403  		}
  4404  		return ms
  4405  	}
  4406  	return mi.MessageOf(x)
  4407  }
  4408  
  4409  // Deprecated: Use RateLimit_Action_SourceCluster.ProtoReflect.Descriptor instead.
  4410  func (*RateLimit_Action_SourceCluster) Descriptor() ([]byte, []int) {
  4411  	return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{14, 0, 0}
  4412  }
  4413  
  4414  // The following descriptor entry is appended to the descriptor:
  4415  //
  4416  // .. code-block:: cpp
  4417  //
  4418  //   ("destination_cluster", "<routed target cluster>")
  4419  //
  4420  // Once a request matches against a route table rule, a routed cluster is determined by one of
  4421  // the following :ref:`route table configuration <envoy_api_msg_RouteConfiguration>`
  4422  // settings:
  4423  //
  4424  // * :ref:`cluster <envoy_api_field_route.RouteAction.cluster>` indicates the upstream cluster
  4425  //   to route to.
  4426  // * :ref:`weighted_clusters <envoy_api_field_route.RouteAction.weighted_clusters>`
  4427  //   chooses a cluster randomly from a set of clusters with attributed weight.
  4428  // * :ref:`cluster_header <envoy_api_field_route.RouteAction.cluster_header>` indicates which
  4429  //   header in the request contains the target cluster.
  4430  type RateLimit_Action_DestinationCluster struct {
  4431  	state         protoimpl.MessageState
  4432  	sizeCache     protoimpl.SizeCache
  4433  	unknownFields protoimpl.UnknownFields
  4434  }
  4435  
  4436  func (x *RateLimit_Action_DestinationCluster) Reset() {
  4437  	*x = RateLimit_Action_DestinationCluster{}
  4438  	if protoimpl.UnsafeEnabled {
  4439  		mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[39]
  4440  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  4441  		ms.StoreMessageInfo(mi)
  4442  	}
  4443  }
  4444  
  4445  func (x *RateLimit_Action_DestinationCluster) String() string {
  4446  	return protoimpl.X.MessageStringOf(x)
  4447  }
  4448  
  4449  func (*RateLimit_Action_DestinationCluster) ProtoMessage() {}
  4450  
  4451  func (x *RateLimit_Action_DestinationCluster) ProtoReflect() protoreflect.Message {
  4452  	mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[39]
  4453  	if protoimpl.UnsafeEnabled && x != nil {
  4454  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  4455  		if ms.LoadMessageInfo() == nil {
  4456  			ms.StoreMessageInfo(mi)
  4457  		}
  4458  		return ms
  4459  	}
  4460  	return mi.MessageOf(x)
  4461  }
  4462  
  4463  // Deprecated: Use RateLimit_Action_DestinationCluster.ProtoReflect.Descriptor instead.
  4464  func (*RateLimit_Action_DestinationCluster) Descriptor() ([]byte, []int) {
  4465  	return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{14, 0, 1}
  4466  }
  4467  
  4468  // The following descriptor entry is appended when a header contains a key that matches the
  4469  // *header_name*:
  4470  //
  4471  // .. code-block:: cpp
  4472  //
  4473  //   ("<descriptor_key>", "<header_value_queried_from_header>")
  4474  type RateLimit_Action_RequestHeaders struct {
  4475  	state         protoimpl.MessageState
  4476  	sizeCache     protoimpl.SizeCache
  4477  	unknownFields protoimpl.UnknownFields
  4478  
  4479  	// The header name to be queried from the request headers. The header’s
  4480  	// value is used to populate the value of the descriptor entry for the
  4481  	// descriptor_key.
  4482  	HeaderName string `protobuf:"bytes,1,opt,name=header_name,json=headerName,proto3" json:"header_name,omitempty"`
  4483  	// The key to use in the descriptor entry.
  4484  	DescriptorKey string `protobuf:"bytes,2,opt,name=descriptor_key,json=descriptorKey,proto3" json:"descriptor_key,omitempty"`
  4485  }
  4486  
  4487  func (x *RateLimit_Action_RequestHeaders) Reset() {
  4488  	*x = RateLimit_Action_RequestHeaders{}
  4489  	if protoimpl.UnsafeEnabled {
  4490  		mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[40]
  4491  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  4492  		ms.StoreMessageInfo(mi)
  4493  	}
  4494  }
  4495  
  4496  func (x *RateLimit_Action_RequestHeaders) String() string {
  4497  	return protoimpl.X.MessageStringOf(x)
  4498  }
  4499  
  4500  func (*RateLimit_Action_RequestHeaders) ProtoMessage() {}
  4501  
  4502  func (x *RateLimit_Action_RequestHeaders) ProtoReflect() protoreflect.Message {
  4503  	mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[40]
  4504  	if protoimpl.UnsafeEnabled && x != nil {
  4505  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  4506  		if ms.LoadMessageInfo() == nil {
  4507  			ms.StoreMessageInfo(mi)
  4508  		}
  4509  		return ms
  4510  	}
  4511  	return mi.MessageOf(x)
  4512  }
  4513  
  4514  // Deprecated: Use RateLimit_Action_RequestHeaders.ProtoReflect.Descriptor instead.
  4515  func (*RateLimit_Action_RequestHeaders) Descriptor() ([]byte, []int) {
  4516  	return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{14, 0, 2}
  4517  }
  4518  
  4519  func (x *RateLimit_Action_RequestHeaders) GetHeaderName() string {
  4520  	if x != nil {
  4521  		return x.HeaderName
  4522  	}
  4523  	return ""
  4524  }
  4525  
  4526  func (x *RateLimit_Action_RequestHeaders) GetDescriptorKey() string {
  4527  	if x != nil {
  4528  		return x.DescriptorKey
  4529  	}
  4530  	return ""
  4531  }
  4532  
  4533  // The following descriptor entry is appended to the descriptor and is populated using the
  4534  // trusted address from :ref:`x-forwarded-for <config_http_conn_man_headers_x-forwarded-for>`:
  4535  //
  4536  // .. code-block:: cpp
  4537  //
  4538  //   ("remote_address", "<trusted address from x-forwarded-for>")
  4539  type RateLimit_Action_RemoteAddress struct {
  4540  	state         protoimpl.MessageState
  4541  	sizeCache     protoimpl.SizeCache
  4542  	unknownFields protoimpl.UnknownFields
  4543  }
  4544  
  4545  func (x *RateLimit_Action_RemoteAddress) Reset() {
  4546  	*x = RateLimit_Action_RemoteAddress{}
  4547  	if protoimpl.UnsafeEnabled {
  4548  		mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[41]
  4549  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  4550  		ms.StoreMessageInfo(mi)
  4551  	}
  4552  }
  4553  
  4554  func (x *RateLimit_Action_RemoteAddress) String() string {
  4555  	return protoimpl.X.MessageStringOf(x)
  4556  }
  4557  
  4558  func (*RateLimit_Action_RemoteAddress) ProtoMessage() {}
  4559  
  4560  func (x *RateLimit_Action_RemoteAddress) ProtoReflect() protoreflect.Message {
  4561  	mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[41]
  4562  	if protoimpl.UnsafeEnabled && x != nil {
  4563  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  4564  		if ms.LoadMessageInfo() == nil {
  4565  			ms.StoreMessageInfo(mi)
  4566  		}
  4567  		return ms
  4568  	}
  4569  	return mi.MessageOf(x)
  4570  }
  4571  
  4572  // Deprecated: Use RateLimit_Action_RemoteAddress.ProtoReflect.Descriptor instead.
  4573  func (*RateLimit_Action_RemoteAddress) Descriptor() ([]byte, []int) {
  4574  	return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{14, 0, 3}
  4575  }
  4576  
  4577  // The following descriptor entry is appended to the descriptor:
  4578  //
  4579  // .. code-block:: cpp
  4580  //
  4581  //   ("generic_key", "<descriptor_value>")
  4582  type RateLimit_Action_GenericKey struct {
  4583  	state         protoimpl.MessageState
  4584  	sizeCache     protoimpl.SizeCache
  4585  	unknownFields protoimpl.UnknownFields
  4586  
  4587  	// The value to use in the descriptor entry.
  4588  	DescriptorValue string `protobuf:"bytes,1,opt,name=descriptor_value,json=descriptorValue,proto3" json:"descriptor_value,omitempty"`
  4589  }
  4590  
  4591  func (x *RateLimit_Action_GenericKey) Reset() {
  4592  	*x = RateLimit_Action_GenericKey{}
  4593  	if protoimpl.UnsafeEnabled {
  4594  		mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[42]
  4595  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  4596  		ms.StoreMessageInfo(mi)
  4597  	}
  4598  }
  4599  
  4600  func (x *RateLimit_Action_GenericKey) String() string {
  4601  	return protoimpl.X.MessageStringOf(x)
  4602  }
  4603  
  4604  func (*RateLimit_Action_GenericKey) ProtoMessage() {}
  4605  
  4606  func (x *RateLimit_Action_GenericKey) ProtoReflect() protoreflect.Message {
  4607  	mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[42]
  4608  	if protoimpl.UnsafeEnabled && x != nil {
  4609  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  4610  		if ms.LoadMessageInfo() == nil {
  4611  			ms.StoreMessageInfo(mi)
  4612  		}
  4613  		return ms
  4614  	}
  4615  	return mi.MessageOf(x)
  4616  }
  4617  
  4618  // Deprecated: Use RateLimit_Action_GenericKey.ProtoReflect.Descriptor instead.
  4619  func (*RateLimit_Action_GenericKey) Descriptor() ([]byte, []int) {
  4620  	return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{14, 0, 4}
  4621  }
  4622  
  4623  func (x *RateLimit_Action_GenericKey) GetDescriptorValue() string {
  4624  	if x != nil {
  4625  		return x.DescriptorValue
  4626  	}
  4627  	return ""
  4628  }
  4629  
  4630  // The following descriptor entry is appended to the descriptor:
  4631  //
  4632  // .. code-block:: cpp
  4633  //
  4634  //   ("header_match", "<descriptor_value>")
  4635  type RateLimit_Action_HeaderValueMatch struct {
  4636  	state         protoimpl.MessageState
  4637  	sizeCache     protoimpl.SizeCache
  4638  	unknownFields protoimpl.UnknownFields
  4639  
  4640  	// The value to use in the descriptor entry.
  4641  	DescriptorValue string `protobuf:"bytes,1,opt,name=descriptor_value,json=descriptorValue,proto3" json:"descriptor_value,omitempty"`
  4642  	// If set to true, the action will append a descriptor entry when the
  4643  	// request matches the headers. If set to false, the action will append a
  4644  	// descriptor entry when the request does not match the headers. The
  4645  	// default value is true.
  4646  	ExpectMatch *wrappers.BoolValue `protobuf:"bytes,2,opt,name=expect_match,json=expectMatch,proto3" json:"expect_match,omitempty"`
  4647  	// Specifies a set of headers that the rate limit action should match
  4648  	// on. The action will check the request’s headers against all the
  4649  	// specified headers in the config. A match will happen if all the
  4650  	// headers in the config are present in the request with the same values
  4651  	// (or based on presence if the value field is not in the config).
  4652  	Headers []*HeaderMatcher `protobuf:"bytes,3,rep,name=headers,proto3" json:"headers,omitempty"`
  4653  }
  4654  
  4655  func (x *RateLimit_Action_HeaderValueMatch) Reset() {
  4656  	*x = RateLimit_Action_HeaderValueMatch{}
  4657  	if protoimpl.UnsafeEnabled {
  4658  		mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[43]
  4659  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  4660  		ms.StoreMessageInfo(mi)
  4661  	}
  4662  }
  4663  
  4664  func (x *RateLimit_Action_HeaderValueMatch) String() string {
  4665  	return protoimpl.X.MessageStringOf(x)
  4666  }
  4667  
  4668  func (*RateLimit_Action_HeaderValueMatch) ProtoMessage() {}
  4669  
  4670  func (x *RateLimit_Action_HeaderValueMatch) ProtoReflect() protoreflect.Message {
  4671  	mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[43]
  4672  	if protoimpl.UnsafeEnabled && x != nil {
  4673  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  4674  		if ms.LoadMessageInfo() == nil {
  4675  			ms.StoreMessageInfo(mi)
  4676  		}
  4677  		return ms
  4678  	}
  4679  	return mi.MessageOf(x)
  4680  }
  4681  
  4682  // Deprecated: Use RateLimit_Action_HeaderValueMatch.ProtoReflect.Descriptor instead.
  4683  func (*RateLimit_Action_HeaderValueMatch) Descriptor() ([]byte, []int) {
  4684  	return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{14, 0, 5}
  4685  }
  4686  
  4687  func (x *RateLimit_Action_HeaderValueMatch) GetDescriptorValue() string {
  4688  	if x != nil {
  4689  		return x.DescriptorValue
  4690  	}
  4691  	return ""
  4692  }
  4693  
  4694  func (x *RateLimit_Action_HeaderValueMatch) GetExpectMatch() *wrappers.BoolValue {
  4695  	if x != nil {
  4696  		return x.ExpectMatch
  4697  	}
  4698  	return nil
  4699  }
  4700  
  4701  func (x *RateLimit_Action_HeaderValueMatch) GetHeaders() []*HeaderMatcher {
  4702  	if x != nil {
  4703  		return x.Headers
  4704  	}
  4705  	return nil
  4706  }
  4707  
  4708  var File_envoy_api_v2_route_route_components_proto protoreflect.FileDescriptor
  4709  
  4710  var file_envoy_api_v2_route_route_components_proto_rawDesc = []byte{
  4711  	0x0a, 0x29, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x32, 0x2f, 0x72,
  4712  	0x6f, 0x75, 0x74, 0x65, 0x2f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6f,
  4713  	0x6e, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x65, 0x6e, 0x76,
  4714  	0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x1a,
  4715  	0x1c, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x32, 0x2f, 0x63, 0x6f,
  4716  	0x72, 0x65, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x65,
  4717  	0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65,
  4718  	0x72, 0x2f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x65,
  4719  	0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65,
  4720  	0x72, 0x2f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x18,
  4721  	0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x70, 0x65, 0x72, 0x63, 0x65,
  4722  	0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f,
  4723  	0x74, 0x79, 0x70, 0x65, 0x2f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
  4724  	0x1a, 0x26, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x74, 0x72, 0x61,
  4725  	0x63, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x32, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x74,
  4726  	0x61, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
  4727  	0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72,
  4728  	0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74,
  4729  	0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72,
  4730  	0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74,
  4731  	0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74,
  4732  	0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
  4733  	0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,
  4734  	0x6f, 0x1a, 0x23, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74,
  4735  	0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
  4736  	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x75, 0x64, 0x70, 0x61, 0x2f, 0x61, 0x6e, 0x6e,
  4737  	0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65,
  4738  	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x75, 0x64, 0x70, 0x61, 0x2f, 0x61, 0x6e, 0x6e,
  4739  	0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e,
  4740  	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f,
  4741  	0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x91,
  4742  	0x0d, 0x0a, 0x0b, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x1b,
  4743  	0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42,
  4744  	0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x07, 0x64,
  4745  	0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, 0x12, 0xfa, 0x42,
  4746  	0x0f, 0x92, 0x01, 0x0c, 0x08, 0x01, 0x22, 0x08, 0x72, 0x06, 0xc0, 0x01, 0x02, 0xc8, 0x01, 0x00,
  4747  	0x52, 0x07, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x31, 0x0a, 0x06, 0x72, 0x6f, 0x75,
  4748  	0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x65, 0x6e, 0x76, 0x6f,
  4749  	0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52,
  4750  	0x6f, 0x75, 0x74, 0x65, 0x52, 0x06, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x12, 0x5d, 0x0a, 0x0b,
  4751  	0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x5f, 0x74, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28,
  4752  	0x0e, 0x32, 0x32, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32,
  4753  	0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x48, 0x6f,
  4754  	0x73, 0x74, 0x2e, 0x54, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e,
  4755  	0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52,
  4756  	0x0a, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x54, 0x6c, 0x73, 0x12, 0x4d, 0x0a, 0x10, 0x76,
  4757  	0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x18,
  4758  	0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70,
  4759  	0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x56, 0x69, 0x72, 0x74, 0x75,
  4760  	0x61, 0x6c, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x0f, 0x76, 0x69, 0x72, 0x74, 0x75,
  4761  	0x61, 0x6c, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x3e, 0x0a, 0x0b, 0x72, 0x61,
  4762  	0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32,
  4763  	0x1d, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72,
  4764  	0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x0a,
  4765  	0x72, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x64, 0x0a, 0x16, 0x72, 0x65,
  4766  	0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f,
  4767  	0x5f, 0x61, 0x64, 0x64, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x6e, 0x76,
  4768  	0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x48,
  4769  	0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
  4770  	0x42, 0x09, 0xfa, 0x42, 0x06, 0x92, 0x01, 0x03, 0x10, 0xe8, 0x07, 0x52, 0x13, 0x72, 0x65, 0x71,
  4771  	0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x41, 0x64, 0x64,
  4772  	0x12, 0x39, 0x0a, 0x19, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64,
  4773  	0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x18, 0x0d, 0x20,
  4774  	0x03, 0x28, 0x09, 0x52, 0x16, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64,
  4775  	0x65, 0x72, 0x73, 0x54, 0x6f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x12, 0x66, 0x0a, 0x17, 0x72,
  4776  	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f,
  4777  	0x74, 0x6f, 0x5f, 0x61, 0x64, 0x64, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x65,
  4778  	0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65,
  4779  	0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69,
  4780  	0x6f, 0x6e, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x92, 0x01, 0x03, 0x10, 0xe8, 0x07, 0x52, 0x14, 0x72,
  4781  	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f,
  4782  	0x41, 0x64, 0x64, 0x12, 0x3b, 0x0a, 0x1a, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f,
  4783  	0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76,
  4784  	0x65, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x17, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
  4785  	0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65,
  4786  	0x12, 0x32, 0x0a, 0x04, 0x63, 0x6f, 0x72, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e,
  4787  	0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f,
  4788  	0x75, 0x74, 0x65, 0x2e, 0x43, 0x6f, 0x72, 0x73, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x04,
  4789  	0x63, 0x6f, 0x72, 0x73, 0x12, 0x64, 0x0a, 0x11, 0x70, 0x65, 0x72, 0x5f, 0x66, 0x69, 0x6c, 0x74,
  4790  	0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32,
  4791  	0x34, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72,
  4792  	0x6f, 0x75, 0x74, 0x65, 0x2e, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x48, 0x6f, 0x73, 0x74,
  4793  	0x2e, 0x50, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
  4794  	0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0f, 0x70, 0x65, 0x72, 0x46, 0x69,
  4795  	0x6c, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x70, 0x0a, 0x17, 0x74, 0x79,
  4796  	0x70, 0x65, 0x64, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x63,
  4797  	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x65, 0x6e,
  4798  	0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65,
  4799  	0x2e, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x48, 0x6f, 0x73, 0x74, 0x2e, 0x54, 0x79, 0x70,
  4800  	0x65, 0x64, 0x50, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69,
  4801  	0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x14, 0x74, 0x79, 0x70, 0x65, 0x64, 0x50, 0x65, 0x72,
  4802  	0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x41, 0x0a, 0x1d,
  4803  	0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f,
  4804  	0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0e, 0x20,
  4805  	0x01, 0x28, 0x08, 0x52, 0x1a, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75,
  4806  	0x65, 0x73, 0x74, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12,
  4807  	0x48, 0x0a, 0x21, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d,
  4808  	0x70, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x70,
  4809  	0x6f, 0x6e, 0x73, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1d, 0x69, 0x6e, 0x63, 0x6c,
  4810  	0x75, 0x64, 0x65, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x49,
  4811  	0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x0c, 0x72, 0x65, 0x74,
  4812  	0x72, 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32,
  4813  	0x1f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72,
  4814  	0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
  4815  	0x52, 0x0b, 0x72, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x4f, 0x0a,
  4816  	0x19, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x74, 0x79,
  4817  	0x70, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b,
  4818  	0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
  4819  	0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x16, 0x72, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c,
  4820  	0x69, 0x63, 0x79, 0x54, 0x79, 0x70, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x42,
  4821  	0x0a, 0x0c, 0x68, 0x65, 0x64, 0x67, 0x65, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x11,
  4822  	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69,
  4823  	0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x48, 0x65, 0x64, 0x67, 0x65, 0x50,
  4824  	0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x0b, 0x68, 0x65, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69,
  4825  	0x63, 0x79, 0x12, 0x60, 0x0a, 0x1e, 0x70, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73,
  4826  	0x74, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x62,
  4827  	0x79, 0x74, 0x65, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f,
  4828  	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e,
  4829  	0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x1a, 0x70, 0x65, 0x72, 0x52, 0x65, 0x71,
  4830  	0x75, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x42,
  4831  	0x79, 0x74, 0x65, 0x73, 0x1a, 0x5b, 0x0a, 0x14, 0x50, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65,
  4832  	0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
  4833  	0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2d,
  4834  	0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e,
  4835  	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
  4836  	0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
  4837  	0x01, 0x1a, 0x5d, 0x0a, 0x19, 0x54, 0x79, 0x70, 0x65, 0x64, 0x50, 0x65, 0x72, 0x46, 0x69, 0x6c,
  4838  	0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
  4839  	0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,
  4840  	0x12, 0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
  4841  	0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
  4842  	0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
  4843  	0x22, 0x3a, 0x0a, 0x12, 0x54, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65,
  4844  	0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00,
  4845  	0x12, 0x11, 0x0a, 0x0d, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x4f, 0x4e, 0x4c,
  4846  	0x59, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x4c, 0x4c, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x09,
  4847  	0x10, 0x0a, 0x22, 0x3c, 0x0a, 0x0c, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69,
  4848  	0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01,
  4849  	0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
  4850  	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e,
  4851  	0x22, 0xe6, 0x0a, 0x0a, 0x05, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
  4852  	0x6d, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3e,
  4853  	0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e,
  4854  	0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75,
  4855  	0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x08, 0xfa,
  4856  	0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x37,
  4857  	0x0a, 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e,
  4858  	0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75,
  4859  	0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00,
  4860  	0x52, 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x40, 0x0a, 0x08, 0x72, 0x65, 0x64, 0x69, 0x72,
  4861  	0x65, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x65, 0x6e, 0x76, 0x6f,
  4862  	0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52,
  4863  	0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52,
  4864  	0x08, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 0x53, 0x0a, 0x0f, 0x64, 0x69, 0x72,
  4865  	0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x07, 0x20, 0x01,
  4866  	0x28, 0x0b, 0x32, 0x28, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
  4867  	0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65,
  4868  	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0e,
  4869  	0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47,
  4870  	0x0a, 0x0d, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18,
  4871  	0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70,
  4872  	0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65,
  4873  	0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0c, 0x66, 0x69, 0x6c, 0x74, 0x65,
  4874  	0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64,
  4875  	0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x65, 0x6e, 0x76, 0x6f,
  4876  	0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4d, 0x65,
  4877  	0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
  4878  	0x12, 0x3b, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x05, 0x20,
  4879  	0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e,
  4880  	0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74,
  4881  	0x6f, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x5e, 0x0a,
  4882  	0x11, 0x70, 0x65, 0x72, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66,
  4883  	0x69, 0x67, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79,
  4884  	0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x6f,
  4885  	0x75, 0x74, 0x65, 0x2e, 0x50, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e,
  4886  	0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0f, 0x70, 0x65,
  4887  	0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x6a, 0x0a,
  4888  	0x17, 0x74, 0x79, 0x70, 0x65, 0x64, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65,
  4889  	0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33,
  4890  	0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f,
  4891  	0x75, 0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x64, 0x50,
  4892  	0x65, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e,
  4893  	0x74, 0x72, 0x79, 0x52, 0x14, 0x74, 0x79, 0x70, 0x65, 0x64, 0x50, 0x65, 0x72, 0x46, 0x69, 0x6c,
  4894  	0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x64, 0x0a, 0x16, 0x72, 0x65, 0x71,
  4895  	0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f,
  4896  	0x61, 0x64, 0x64, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x6e, 0x76, 0x6f,
  4897  	0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x48, 0x65,
  4898  	0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42,
  4899  	0x09, 0xfa, 0x42, 0x06, 0x92, 0x01, 0x03, 0x10, 0xe8, 0x07, 0x52, 0x13, 0x72, 0x65, 0x71, 0x75,
  4900  	0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x41, 0x64, 0x64, 0x12,
  4901  	0x39, 0x0a, 0x19, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65,
  4902  	0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x18, 0x0c, 0x20, 0x03,
  4903  	0x28, 0x09, 0x52, 0x16, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65,
  4904  	0x72, 0x73, 0x54, 0x6f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x12, 0x66, 0x0a, 0x17, 0x72, 0x65,
  4905  	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74,
  4906  	0x6f, 0x5f, 0x61, 0x64, 0x64, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x6e,
  4907  	0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e,
  4908  	0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f,
  4909  	0x6e, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x92, 0x01, 0x03, 0x10, 0xe8, 0x07, 0x52, 0x14, 0x72, 0x65,
  4910  	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x41,
  4911  	0x64, 0x64, 0x12, 0x3b, 0x0a, 0x1a, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x68,
  4912  	0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65,
  4913  	0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x17, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
  4914  	0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x12,
  4915  	0x35, 0x0a, 0x07, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b,
  4916  	0x32, 0x1b, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e,
  4917  	0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x74,
  4918  	0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x12, 0x60, 0x0a, 0x1e, 0x70, 0x65, 0x72, 0x5f, 0x72, 0x65,
  4919  	0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x6d,
  4920  	0x69, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c,
  4921  	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
  4922  	0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x1a, 0x70, 0x65,
  4923  	0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x4c, 0x69,
  4924  	0x6d, 0x69, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x1a, 0x5b, 0x0a, 0x14, 0x50, 0x65, 0x72, 0x46,
  4925  	0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79,
  4926  	0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,
  4927  	0x65, 0x79, 0x12, 0x2d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
  4928  	0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
  4929  	0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
  4930  	0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5d, 0x0a, 0x19, 0x54, 0x79, 0x70, 0x65, 0x64, 0x50, 0x65,
  4931  	0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74,
  4932  	0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
  4933  	0x03, 0x6b, 0x65, 0x79, 0x12, 0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
  4934  	0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
  4935  	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
  4936  	0x3a, 0x02, 0x38, 0x01, 0x42, 0x0d, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x03,
  4937  	0xf8, 0x42, 0x01, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x22, 0x90, 0x09, 0x0a, 0x0f, 0x57, 0x65,
  4938  	0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x57, 0x0a,
  4939  	0x08, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
  4940  	0x31, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72,
  4941  	0x6f, 0x75, 0x74, 0x65, 0x2e, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75,
  4942  	0x73, 0x74, 0x65, 0x72, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x57, 0x65, 0x69, 0x67,
  4943  	0x68, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, 0x08, 0x63, 0x6c,
  4944  	0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x48, 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f,
  4945  	0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67,
  4946  	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55,
  4947  	0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x2a,
  4948  	0x02, 0x28, 0x01, 0x52, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74,
  4949  	0x12, 0x2c, 0x0a, 0x12, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x5f,
  4950  	0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x72, 0x75,
  4951  	0x6e, 0x74, 0x69, 0x6d, 0x65, 0x4b, 0x65, 0x79, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x1a, 0xab,
  4952  	0x07, 0x0a, 0x0d, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74,
  4953  	0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07,
  4954  	0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x34, 0x0a,
  4955  	0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e,
  4956  	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
  4957  	0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x77, 0x65, 0x69,
  4958  	0x67, 0x68, 0x74, 0x12, 0x42, 0x0a, 0x0e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f,
  4959  	0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x65, 0x6e,
  4960  	0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e,
  4961  	0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0d, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
  4962  	0x74, 0x61, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x64, 0x0a, 0x16, 0x72, 0x65, 0x71, 0x75, 0x65,
  4963  	0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x61, 0x64,
  4964  	0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e,
  4965  	0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x64,
  4966  	0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x09, 0xfa,
  4967  	0x42, 0x06, 0x92, 0x01, 0x03, 0x10, 0xe8, 0x07, 0x52, 0x13, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73,
  4968  	0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x41, 0x64, 0x64, 0x12, 0x39, 0x0a,
  4969  	0x19, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73,
  4970  	0x5f, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09,
  4971  	0x52, 0x16, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73,
  4972  	0x54, 0x6f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x12, 0x66, 0x0a, 0x17, 0x72, 0x65, 0x73, 0x70,
  4973  	0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f,
  4974  	0x61, 0x64, 0x64, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x6e, 0x76, 0x6f,
  4975  	0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x48, 0x65,
  4976  	0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42,
  4977  	0x09, 0xfa, 0x42, 0x06, 0x92, 0x01, 0x03, 0x10, 0xe8, 0x07, 0x52, 0x14, 0x72, 0x65, 0x73, 0x70,
  4978  	0x6f, 0x6e, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x41, 0x64, 0x64,
  4979  	0x12, 0x3b, 0x0a, 0x1a, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61,
  4980  	0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x18, 0x06,
  4981  	0x20, 0x03, 0x28, 0x09, 0x52, 0x17, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x65,
  4982  	0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x12, 0x76, 0x0a,
  4983  	0x11, 0x70, 0x65, 0x72, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66,
  4984  	0x69, 0x67, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79,
  4985  	0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x57, 0x65,
  4986  	0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x43, 0x6c,
  4987  	0x75, 0x73, 0x74, 0x65, 0x72, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x2e, 0x50, 0x65, 0x72, 0x46,
  4988  	0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79,
  4989  	0x42, 0x02, 0x18, 0x01, 0x52, 0x0f, 0x70, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43,
  4990  	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x82, 0x01, 0x0a, 0x17, 0x74, 0x79, 0x70, 0x65, 0x64, 0x5f,
  4991  	0x70, 0x65, 0x72, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69,
  4992  	0x67, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4b, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e,
  4993  	0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x57, 0x65, 0x69,
  4994  	0x67, 0x68, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x43, 0x6c, 0x75,
  4995  	0x73, 0x74, 0x65, 0x72, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x64,
  4996  	0x50, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45,
  4997  	0x6e, 0x74, 0x72, 0x79, 0x52, 0x14, 0x74, 0x79, 0x70, 0x65, 0x64, 0x50, 0x65, 0x72, 0x46, 0x69,
  4998  	0x6c, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x5b, 0x0a, 0x14, 0x50, 0x65,
  4999  	0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74,
  5000  	0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
  5001  	0x03, 0x6b, 0x65, 0x79, 0x12, 0x2d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
  5002  	0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
  5003  	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x05, 0x76, 0x61,
  5004  	0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5d, 0x0a, 0x19, 0x54, 0x79, 0x70, 0x65, 0x64,
  5005  	0x50, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45,
  5006  	0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
  5007  	0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
  5008  	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
  5009  	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c,
  5010  	0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, 0x22, 0xc8, 0x06, 0x0a,
  5011  	0x0a, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x18, 0x0a, 0x06, 0x70,
  5012  	0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x70,
  5013  	0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x14, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20,
  5014  	0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x28, 0x0a, 0x05, 0x72,
  5015  	0x65, 0x67, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x10, 0x18, 0x01, 0xfa, 0x42,
  5016  	0x05, 0x72, 0x03, 0x28, 0x80, 0x08, 0xb8, 0xee, 0xf2, 0xd2, 0x05, 0x01, 0x48, 0x00, 0x52, 0x05,
  5017  	0x72, 0x65, 0x67, 0x65, 0x78, 0x12, 0x4b, 0x0a, 0x0a, 0x73, 0x61, 0x66, 0x65, 0x5f, 0x72, 0x65,
  5018  	0x67, 0x65, 0x78, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x65, 0x6e, 0x76, 0x6f,
  5019  	0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2e, 0x52,
  5020  	0x65, 0x67, 0x65, 0x78, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x42, 0x08, 0xfa, 0x42, 0x05,
  5021  	0x8a, 0x01, 0x02, 0x10, 0x01, 0x48, 0x00, 0x52, 0x09, 0x73, 0x61, 0x66, 0x65, 0x52, 0x65, 0x67,
  5022  	0x65, 0x78, 0x12, 0x41, 0x0a, 0x0e, 0x63, 0x61, 0x73, 0x65, 0x5f, 0x73, 0x65, 0x6e, 0x73, 0x69,
  5023  	0x74, 0x69, 0x76, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
  5024  	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f,
  5025  	0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x63, 0x61, 0x73, 0x65, 0x53, 0x65, 0x6e, 0x73,
  5026  	0x69, 0x74, 0x69, 0x76, 0x65, 0x12, 0x56, 0x0a, 0x10, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65,
  5027  	0x5f, 0x66, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32,
  5028  	0x2b, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63,
  5029  	0x6f, 0x72, 0x65, 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x46, 0x72, 0x61, 0x63, 0x74,
  5030  	0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x52, 0x0f, 0x72, 0x75,
  5031  	0x6e, 0x74, 0x69, 0x6d, 0x65, 0x46, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a,
  5032  	0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21,
  5033  	0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f,
  5034  	0x75, 0x74, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65,
  5035  	0x72, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x54, 0x0a, 0x10, 0x71, 0x75,
  5036  	0x65, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x07,
  5037  	0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69,
  5038  	0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50,
  5039  	0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52,
  5040  	0x0f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73,
  5041  	0x12, 0x48, 0x0a, 0x04, 0x67, 0x72, 0x70, 0x63, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34,
  5042  	0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f,
  5043  	0x75, 0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x47,
  5044  	0x72, 0x70, 0x63, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4f, 0x70, 0x74,
  5045  	0x69, 0x6f, 0x6e, 0x73, 0x52, 0x04, 0x67, 0x72, 0x70, 0x63, 0x12, 0x56, 0x0a, 0x0b, 0x74, 0x6c,
  5046  	0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32,
  5047  	0x35, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72,
  5048  	0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x2e,
  5049  	0x54, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4f,
  5050  	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0a, 0x74, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x65,
  5051  	0x78, 0x74, 0x1a, 0x17, 0x0a, 0x15, 0x47, 0x72, 0x70, 0x63, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4d,
  5052  	0x61, 0x74, 0x63, 0x68, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x8c, 0x01, 0x0a, 0x16,
  5053  	0x54, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4f,
  5054  	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x38, 0x0a, 0x09, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e,
  5055  	0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
  5056  	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c,
  5057  	0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x65, 0x64,
  5058  	0x12, 0x38, 0x0a, 0x09, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20,
  5059  	0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
  5060  	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52,
  5061  	0x09, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x42, 0x15, 0x0a, 0x0e, 0x70, 0x61,
  5062  	0x74, 0x68, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x03, 0xf8, 0x42,
  5063  	0x01, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x22, 0xaa, 0x05, 0x0a, 0x0a, 0x43, 0x6f, 0x72, 0x73,
  5064  	0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x2b, 0x0a, 0x0c, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f,
  5065  	0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x08, 0x18, 0x01,
  5066  	0xb8, 0xee, 0xf2, 0xd2, 0x05, 0x01, 0x52, 0x0b, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4f, 0x72, 0x69,
  5067  	0x67, 0x69, 0x6e, 0x12, 0x3d, 0x0a, 0x12, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6f, 0x72, 0x69,
  5068  	0x67, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x42,
  5069  	0x0f, 0x18, 0x01, 0xfa, 0x42, 0x0a, 0x92, 0x01, 0x07, 0x22, 0x05, 0x72, 0x03, 0x28, 0x80, 0x08,
  5070  	0x52, 0x10, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x67,
  5071  	0x65, 0x78, 0x12, 0x5c, 0x0a, 0x19, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6f, 0x72, 0x69, 0x67,
  5072  	0x69, 0x6e, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18,
  5073  	0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79,
  5074  	0x70, 0x65, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e,
  5075  	0x67, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x16, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4f,
  5076  	0x72, 0x69, 0x67, 0x69, 0x6e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x74, 0x63, 0x68,
  5077  	0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64,
  5078  	0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4d, 0x65,
  5079  	0x74, 0x68, 0x6f, 0x64, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x68,
  5080  	0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x6c,
  5081  	0x6c, 0x6f, 0x77, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78,
  5082  	0x70, 0x6f, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x01,
  5083  	0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72,
  5084  	0x73, 0x12, 0x17, 0x0a, 0x07, 0x6d, 0x61, 0x78, 0x5f, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01,
  5085  	0x28, 0x09, 0x52, 0x06, 0x6d, 0x61, 0x78, 0x41, 0x67, 0x65, 0x12, 0x47, 0x0a, 0x11, 0x61, 0x6c,
  5086  	0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18,
  5087  	0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
  5088  	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75,
  5089  	0x65, 0x52, 0x10, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69,
  5090  	0x61, 0x6c, 0x73, 0x12, 0x40, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x07,
  5091  	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
  5092  	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65,
  5093  	0x42, 0x08, 0x18, 0x01, 0xb8, 0xee, 0xf2, 0xd2, 0x05, 0x01, 0x48, 0x00, 0x52, 0x07, 0x65, 0x6e,
  5094  	0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x54, 0x0a, 0x0e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f,
  5095  	0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e,
  5096  	0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72,
  5097  	0x65, 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x46, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f,
  5098  	0x6e, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0d, 0x66, 0x69,
  5099  	0x6c, 0x74, 0x65, 0x72, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x52, 0x0a, 0x0e, 0x73,
  5100  	0x68, 0x61, 0x64, 0x6f, 0x77, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0a, 0x20,
  5101  	0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e,
  5102  	0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x46,
  5103  	0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74,
  5104  	0x52, 0x0d, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x42,
  5105  	0x13, 0x0a, 0x11, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69,
  5106  	0x66, 0x69, 0x65, 0x72, 0x22, 0xfb, 0x1b, 0x0a, 0x0b, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63,
  5107  	0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18,
  5108  	0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x48, 0x00,
  5109  	0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x36, 0x0a, 0x0e, 0x63, 0x6c, 0x75,
  5110  	0x73, 0x74, 0x65, 0x72, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28,
  5111  	0x09, 0x42, 0x0d, 0xfa, 0x42, 0x0a, 0x72, 0x08, 0x20, 0x01, 0xc0, 0x01, 0x01, 0xc8, 0x01, 0x00,
  5112  	0x48, 0x00, 0x52, 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x48, 0x65, 0x61, 0x64, 0x65,
  5113  	0x72, 0x12, 0x52, 0x0a, 0x11, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6c,
  5114  	0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65,
  5115  	0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74,
  5116  	0x65, 0x2e, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65,
  5117  	0x72, 0x48, 0x00, 0x52, 0x10, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75,
  5118  	0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x8b, 0x01, 0x0a, 0x1f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
  5119  	0x72, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70,
  5120  	0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0e, 0x32,
  5121  	0x3b, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72,
  5122  	0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e,
  5123  	0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64,
  5124  	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x42, 0x08, 0xfa, 0x42,
  5125  	0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x1b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e,
  5126  	0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43,
  5127  	0x6f, 0x64, 0x65, 0x12, 0x42, 0x0a, 0x0e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f,
  5128  	0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x65, 0x6e,
  5129  	0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e,
  5130  	0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0d, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
  5131  	0x74, 0x61, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x32, 0x0a, 0x0e, 0x70, 0x72, 0x65, 0x66, 0x69,
  5132  	0x78, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42,
  5133  	0x0b, 0xfa, 0x42, 0x08, 0x72, 0x06, 0xc0, 0x01, 0x02, 0xc8, 0x01, 0x00, 0x52, 0x0d, 0x70, 0x72,
  5134  	0x65, 0x66, 0x69, 0x78, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x12, 0x50, 0x0a, 0x0d, 0x72,
  5135  	0x65, 0x67, 0x65, 0x78, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x20, 0x20, 0x01,
  5136  	0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e,
  5137  	0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x4d, 0x61, 0x74,
  5138  	0x63, 0x68, 0x41, 0x6e, 0x64, 0x53, 0x75, 0x62, 0x73, 0x74, 0x69, 0x74, 0x75, 0x74, 0x65, 0x52,
  5139  	0x0c, 0x72, 0x65, 0x67, 0x65, 0x78, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x12, 0x4c, 0x0a,
  5140  	0x0c, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x06, 0x20,
  5141  	0x01, 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x08, 0x72, 0x06, 0xc0, 0x01, 0x02, 0xc8, 0x01, 0x00,
  5142  	0xf2, 0x98, 0xfe, 0x8f, 0x05, 0x16, 0x0a, 0x14, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x77,
  5143  	0x72, 0x69, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x48, 0x01, 0x52, 0x0b,
  5144  	0x68, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x12, 0x48, 0x0a, 0x11, 0x61,
  5145  	0x75, 0x74, 0x6f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65,
  5146  	0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
  5147  	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c,
  5148  	0x75, 0x65, 0x48, 0x01, 0x52, 0x0f, 0x61, 0x75, 0x74, 0x6f, 0x48, 0x6f, 0x73, 0x74, 0x52, 0x65,
  5149  	0x77, 0x72, 0x69, 0x74, 0x65, 0x12, 0x61, 0x0a, 0x18, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x68, 0x6f,
  5150  	0x73, 0x74, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65,
  5151  	0x72, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x09, 0x42, 0x26, 0xfa, 0x42, 0x08, 0x72, 0x06, 0xc0, 0x01,
  5152  	0x01, 0xc8, 0x01, 0x00, 0xf2, 0x98, 0xfe, 0x8f, 0x05, 0x15, 0x0a, 0x13, 0x68, 0x6f, 0x73, 0x74,
  5153  	0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48,
  5154  	0x01, 0x52, 0x15, 0x61, 0x75, 0x74, 0x6f, 0x48, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x77, 0x72, 0x69,
  5155  	0x74, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x33, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65,
  5156  	0x6f, 0x75, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
  5157  	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61,
  5158  	0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x3c, 0x0a,
  5159  	0x0c, 0x69, 0x64, 0x6c, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x18, 0x20,
  5160  	0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
  5161  	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b,
  5162  	0x69, 0x64, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x42, 0x0a, 0x0c, 0x72,
  5163  	0x65, 0x74, 0x72, 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28,
  5164  	0x0b, 0x32, 0x1f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32,
  5165  	0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69,
  5166  	0x63, 0x79, 0x52, 0x0b, 0x72, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12,
  5167  	0x4f, 0x0a, 0x19, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f,
  5168  	0x74, 0x79, 0x70, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x21, 0x20, 0x01,
  5169  	0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
  5170  	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x16, 0x72, 0x65, 0x74, 0x72, 0x79, 0x50,
  5171  	0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x79, 0x70, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
  5172  	0x12, 0x6b, 0x0a, 0x15, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x69, 0x72, 0x72,
  5173  	0x6f, 0x72, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32,
  5174  	0x33, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72,
  5175  	0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e,
  5176  	0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x50, 0x6f,
  5177  	0x6c, 0x69, 0x63, 0x79, 0x42, 0x02, 0x18, 0x01, 0x52, 0x13, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73,
  5178  	0x74, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x6b, 0x0a,
  5179  	0x17, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f,
  5180  	0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x1e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33,
  5181  	0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f,
  5182  	0x75, 0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e,
  5183  	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x50, 0x6f, 0x6c,
  5184  	0x69, 0x63, 0x79, 0x52, 0x15, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x69, 0x72, 0x72,
  5185  	0x6f, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x48, 0x0a, 0x08, 0x70, 0x72,
  5186  	0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x65,
  5187  	0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65,
  5188  	0x2e, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79,
  5189  	0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f,
  5190  	0x72, 0x69, 0x74, 0x79, 0x12, 0x3e, 0x0a, 0x0b, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d,
  5191  	0x69, 0x74, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x65, 0x6e, 0x76, 0x6f,
  5192  	0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52,
  5193  	0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x0a, 0x72, 0x61, 0x74, 0x65, 0x4c, 0x69,
  5194  	0x6d, 0x69, 0x74, 0x73, 0x12, 0x4f, 0x0a, 0x16, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f,
  5195  	0x76, 0x68, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x0e,
  5196  	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
  5197  	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65,
  5198  	0x52, 0x13, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x56, 0x68, 0x52, 0x61, 0x74, 0x65, 0x4c,
  5199  	0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x4b, 0x0a, 0x0b, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x70, 0x6f,
  5200  	0x6c, 0x69, 0x63, 0x79, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x65, 0x6e, 0x76,
  5201  	0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e,
  5202  	0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x48, 0x61, 0x73, 0x68,
  5203  	0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x0a, 0x68, 0x61, 0x73, 0x68, 0x50, 0x6f, 0x6c, 0x69,
  5204  	0x63, 0x79, 0x12, 0x32, 0x0a, 0x04, 0x63, 0x6f, 0x72, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b,
  5205  	0x32, 0x1e, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e,
  5206  	0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x43, 0x6f, 0x72, 0x73, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
  5207  	0x52, 0x04, 0x63, 0x6f, 0x72, 0x73, 0x12, 0x43, 0x0a, 0x10, 0x6d, 0x61, 0x78, 0x5f, 0x67, 0x72,
  5208  	0x70, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b,
  5209  	0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
  5210  	0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x6d, 0x61, 0x78,
  5211  	0x47, 0x72, 0x70, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x49, 0x0a, 0x13, 0x67,
  5212  	0x72, 0x70, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x6f, 0x66, 0x66, 0x73,
  5213  	0x65, 0x74, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
  5214  	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74,
  5215  	0x69, 0x6f, 0x6e, 0x52, 0x11, 0x67, 0x72, 0x70, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74,
  5216  	0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x56, 0x0a, 0x0f, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64,
  5217  	0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x19, 0x20, 0x03, 0x28, 0x0b, 0x32,
  5218  	0x2d, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72,
  5219  	0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e,
  5220  	0x2e, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e,
  5221  	0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, 0x70,
  5222  	0x0a, 0x18, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72,
  5223  	0x65, 0x63, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0e,
  5224  	0x32, 0x36, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e,
  5225  	0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f,
  5226  	0x6e, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65,
  5227  	0x63, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x16, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e,
  5228  	0x61, 0x6c, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e,
  5229  	0x12, 0x52, 0x0a, 0x16, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c,
  5230  	0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x73, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b,
  5231  	0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
  5232  	0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x14,
  5233  	0x6d, 0x61, 0x78, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x64, 0x69, 0x72,
  5234  	0x65, 0x63, 0x74, 0x73, 0x12, 0x42, 0x0a, 0x0c, 0x68, 0x65, 0x64, 0x67, 0x65, 0x5f, 0x70, 0x6f,
  5235  	0x6c, 0x69, 0x63, 0x79, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x65, 0x6e, 0x76,
  5236  	0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e,
  5237  	0x48, 0x65, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x0b, 0x68, 0x65, 0x64,
  5238  	0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x1a, 0xfc, 0x01, 0x0a, 0x13, 0x52, 0x65, 0x71,
  5239  	0x75, 0x65, 0x73, 0x74, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
  5240  	0x12, 0x21, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28,
  5241  	0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73,
  5242  	0x74, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x0b, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6b,
  5243  	0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0x18, 0x01, 0xb8, 0xee, 0xf2, 0xd2,
  5244  	0x05, 0x01, 0x52, 0x0a, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x56,
  5245  	0x0a, 0x10, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x66, 0x72, 0x61, 0x63, 0x74, 0x69,
  5246  	0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79,
  5247  	0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x75, 0x6e,
  5248  	0x74, 0x69, 0x6d, 0x65, 0x46, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x65,
  5249  	0x72, 0x63, 0x65, 0x6e, 0x74, 0x52, 0x0f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x46, 0x72,
  5250  	0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x0d, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f,
  5251  	0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
  5252  	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
  5253  	0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x63, 0x65,
  5254  	0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x64, 0x1a, 0xc6, 0x06, 0x0a, 0x0a, 0x48, 0x61, 0x73, 0x68,
  5255  	0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x4b, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72,
  5256  	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61,
  5257  	0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74,
  5258  	0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x50, 0x6f, 0x6c, 0x69,
  5259  	0x63, 0x79, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x68, 0x65, 0x61,
  5260  	0x64, 0x65, 0x72, 0x12, 0x4b, 0x0a, 0x06, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x18, 0x02, 0x20,
  5261  	0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e,
  5262  	0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63,
  5263  	0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e,
  5264  	0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x48, 0x00, 0x52, 0x06, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65,
  5265  	0x12, 0x76, 0x0a, 0x15, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70,
  5266  	0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
  5267  	0x3f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72,
  5268  	0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e,
  5269  	0x2e, 0x48, 0x61, 0x73, 0x68, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x43, 0x6f, 0x6e, 0x6e,
  5270  	0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73,
  5271  	0x48, 0x00, 0x52, 0x14, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72,
  5272  	0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x64, 0x0a, 0x0f, 0x71, 0x75, 0x65, 0x72,
  5273  	0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28,
  5274  	0x0b, 0x32, 0x39, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32,
  5275  	0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69,
  5276  	0x6f, 0x6e, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x51, 0x75,
  5277  	0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0e,
  5278  	0x71, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x5b,
  5279  	0x0a, 0x0c, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x06,
  5280  	0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69,
  5281  	0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41,
  5282  	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
  5283  	0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x0b,
  5284  	0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x74,
  5285  	0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x74,
  5286  	0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x1a, 0x38, 0x0a, 0x06, 0x48, 0x65, 0x61, 0x64, 0x65,
  5287  	0x72, 0x12, 0x2e, 0x0a, 0x0b, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
  5288  	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, 0xfa, 0x42, 0x0a, 0x72, 0x08, 0x20, 0x01, 0xc0,
  5289  	0x01, 0x01, 0xc8, 0x01, 0x00, 0x52, 0x0a, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4e, 0x61, 0x6d,
  5290  	0x65, 0x1a, 0x66, 0x0a, 0x06, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x12, 0x1b, 0x0a, 0x04, 0x6e,
  5291  	0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02,
  5292  	0x20, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x03, 0x74, 0x74, 0x6c, 0x18,
  5293  	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
  5294  	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
  5295  	0x52, 0x03, 0x74, 0x74, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20,
  5296  	0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x1a, 0x33, 0x0a, 0x14, 0x43, 0x6f, 0x6e,
  5297  	0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65,
  5298  	0x73, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x70, 0x18, 0x01,
  5299  	0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x70, 0x1a, 0x2d,
  5300  	0x0a, 0x0e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72,
  5301  	0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07,
  5302  	0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x1a, 0x28, 0x0a,
  5303  	0x0b, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x19, 0x0a, 0x03,
  5304  	0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02,
  5305  	0x20, 0x01, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x42, 0x17, 0x0a, 0x10, 0x70, 0x6f, 0x6c, 0x69, 0x63,
  5306  	0x79, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x03, 0xf8, 0x42, 0x01,
  5307  	0x1a, 0x75, 0x0a, 0x0d, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
  5308  	0x67, 0x12, 0x2e, 0x0a, 0x0c, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x74, 0x79, 0x70,
  5309  	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x72, 0x06, 0xc0, 0x01,
  5310  	0x02, 0xc8, 0x01, 0x00, 0x52, 0x0b, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x54, 0x79, 0x70,
  5311  	0x65, 0x12, 0x34, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01,
  5312  	0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
  5313  	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07,
  5314  	0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x45, 0x0a, 0x1b, 0x43, 0x6c, 0x75, 0x73, 0x74,
  5315  	0x65, 0x72, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
  5316  	0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x17, 0x0a, 0x13, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43,
  5317  	0x45, 0x5f, 0x55, 0x4e, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x00, 0x12,
  5318  	0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x01, 0x22, 0x5a,
  5319  	0x0a, 0x16, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65,
  5320  	0x63, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x41, 0x53, 0x53,
  5321  	0x5f, 0x54, 0x48, 0x52, 0x4f, 0x55, 0x47, 0x48, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41,
  5322  	0x4c, 0x5f, 0x52, 0x45, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18,
  5323  	0x48, 0x41, 0x4e, 0x44, 0x4c, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f,
  5324  	0x52, 0x45, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x10, 0x01, 0x42, 0x18, 0x0a, 0x11, 0x63, 0x6c,
  5325  	0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12,
  5326  	0x03, 0xf8, 0x42, 0x01, 0x42, 0x18, 0x0a, 0x16, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x77,
  5327  	0x72, 0x69, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4a, 0x04,
  5328  	0x08, 0x0c, 0x10, 0x0d, 0x4a, 0x04, 0x08, 0x12, 0x10, 0x13, 0x4a, 0x04, 0x08, 0x13, 0x10, 0x14,
  5329  	0x4a, 0x04, 0x08, 0x10, 0x10, 0x11, 0x4a, 0x04, 0x08, 0x16, 0x10, 0x17, 0x4a, 0x04, 0x08, 0x15,
  5330  	0x10, 0x16, 0x22, 0xf3, 0x09, 0x0a, 0x0b, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69,
  5331  	0x63, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x6f, 0x6e, 0x18, 0x01,
  5332  	0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x74, 0x72, 0x79, 0x4f, 0x6e, 0x12, 0x3d, 0x0a,
  5333  	0x0b, 0x6e, 0x75, 0x6d, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01,
  5334  	0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
  5335  	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65,
  5336  	0x52, 0x0a, 0x6e, 0x75, 0x6d, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x0f,
  5337  	0x70, 0x65, 0x72, 0x5f, 0x74, 0x72, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18,
  5338  	0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
  5339  	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
  5340  	0x52, 0x0d, 0x70, 0x65, 0x72, 0x54, 0x72, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12,
  5341  	0x54, 0x0a, 0x0e, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74,
  5342  	0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e,
  5343  	0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x65, 0x74,
  5344  	0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x72,
  5345  	0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x0d, 0x72, 0x65, 0x74, 0x72, 0x79, 0x50, 0x72, 0x69,
  5346  	0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x64, 0x0a, 0x14, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x68,
  5347  	0x6f, 0x73, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20,
  5348  	0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e,
  5349  	0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f,
  5350  	0x6c, 0x69, 0x63, 0x79, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x48, 0x6f, 0x73, 0x74, 0x50, 0x72,
  5351  	0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x12, 0x72, 0x65, 0x74, 0x72, 0x79, 0x48, 0x6f,
  5352  	0x73, 0x74, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x48, 0x0a, 0x21, 0x68,
  5353  	0x6f, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65,
  5354  	0x74, 0x72, 0x79, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73,
  5355  	0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x1d, 0x68, 0x6f, 0x73, 0x74, 0x53, 0x65, 0x6c, 0x65,
  5356  	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x4d, 0x61, 0x78, 0x41, 0x74, 0x74,
  5357  	0x65, 0x6d, 0x70, 0x74, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x72, 0x65, 0x74, 0x72, 0x69, 0x61, 0x62,
  5358  	0x6c, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x18,
  5359  	0x07, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x14, 0x72, 0x65, 0x74, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65,
  5360  	0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x52, 0x0a, 0x0e, 0x72,
  5361  	0x65, 0x74, 0x72, 0x79, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x6f, 0x66, 0x66, 0x18, 0x08, 0x20,
  5362  	0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e,
  5363  	0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f,
  5364  	0x6c, 0x69, 0x63, 0x79, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x42, 0x61, 0x63, 0x6b, 0x4f, 0x66,
  5365  	0x66, 0x52, 0x0c, 0x72, 0x65, 0x74, 0x72, 0x79, 0x42, 0x61, 0x63, 0x6b, 0x4f, 0x66, 0x66, 0x12,
  5366  	0x4e, 0x0a, 0x11, 0x72, 0x65, 0x74, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x68, 0x65, 0x61,
  5367  	0x64, 0x65, 0x72, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x65, 0x6e, 0x76,
  5368  	0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e,
  5369  	0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x10, 0x72,
  5370  	0x65, 0x74, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12,
  5371  	0x5d, 0x0a, 0x19, 0x72, 0x65, 0x74, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x71,
  5372  	0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x0a, 0x20, 0x03,
  5373  	0x28, 0x0b, 0x32, 0x21, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
  5374  	0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61,
  5375  	0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x17, 0x72, 0x65, 0x74, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65,
  5376  	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x1a, 0xad,
  5377  	0x01, 0x0a, 0x0d, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79,
  5378  	0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07,
  5379  	0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x35, 0x0a,
  5380  	0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e,
  5381  	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
  5382  	0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x06, 0x63, 0x6f,
  5383  	0x6e, 0x66, 0x69, 0x67, 0x12, 0x39, 0x0a, 0x0c, 0x74, 0x79, 0x70, 0x65, 0x64, 0x5f, 0x63, 0x6f,
  5384  	0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f,
  5385  	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79,
  5386  	0x48, 0x00, 0x52, 0x0b, 0x74, 0x79, 0x70, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42,
  5387  	0x0d, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x1a, 0xb2,
  5388  	0x01, 0x0a, 0x12, 0x52, 0x65, 0x74, 0x72, 0x79, 0x48, 0x6f, 0x73, 0x74, 0x50, 0x72, 0x65, 0x64,
  5389  	0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
  5390  	0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x04, 0x6e, 0x61,
  5391  	0x6d, 0x65, 0x12, 0x35, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01,
  5392  	0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
  5393  	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x42, 0x02, 0x18, 0x01, 0x48,
  5394  	0x00, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x39, 0x0a, 0x0c, 0x74, 0x79, 0x70,
  5395  	0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
  5396  	0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
  5397  	0x66, 0x2e, 0x41, 0x6e, 0x79, 0x48, 0x00, 0x52, 0x0b, 0x74, 0x79, 0x70, 0x65, 0x64, 0x43, 0x6f,
  5398  	0x6e, 0x66, 0x69, 0x67, 0x42, 0x0d, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x74,
  5399  	0x79, 0x70, 0x65, 0x1a, 0xa2, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x74, 0x72, 0x79, 0x42, 0x61, 0x63,
  5400  	0x6b, 0x4f, 0x66, 0x66, 0x12, 0x4a, 0x0a, 0x0d, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x74,
  5401  	0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f,
  5402  	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75,
  5403  	0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0xaa, 0x01, 0x04, 0x08, 0x01,
  5404  	0x2a, 0x00, 0x52, 0x0c, 0x62, 0x61, 0x73, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c,
  5405  	0x12, 0x46, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c,
  5406  	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
  5407  	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f,
  5408  	0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x2a, 0x00, 0x52, 0x0b, 0x6d, 0x61, 0x78,
  5409  	0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x22, 0xf2, 0x01, 0x0a, 0x0b, 0x48, 0x65, 0x64,
  5410  	0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x50, 0x0a, 0x10, 0x69, 0x6e, 0x69, 0x74,
  5411  	0x69, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01,
  5412  	0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
  5413  	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65,
  5414  	0x42, 0x07, 0xfa, 0x42, 0x04, 0x2a, 0x02, 0x28, 0x01, 0x52, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x69,
  5415  	0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x59, 0x0a, 0x19, 0x61, 0x64,
  5416  	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
  5417  	0x5f, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e,
  5418  	0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x46, 0x72, 0x61, 0x63, 0x74,
  5419  	0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x52, 0x17, 0x61, 0x64,
  5420  	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43,
  5421  	0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x36, 0x0a, 0x18, 0x68, 0x65, 0x64, 0x67, 0x65, 0x5f, 0x6f,
  5422  	0x6e, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x74, 0x72, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75,
  5423  	0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x68, 0x65, 0x64, 0x67, 0x65, 0x4f, 0x6e,
  5424  	0x50, 0x65, 0x72, 0x54, 0x72, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0xdd, 0x04,
  5425  	0x0a, 0x0e, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e,
  5426  	0x12, 0x27, 0x0a, 0x0e, 0x68, 0x74, 0x74, 0x70, 0x73, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65,
  5427  	0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0d, 0x68, 0x74, 0x74, 0x70,
  5428  	0x73, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 0x29, 0x0a, 0x0f, 0x73, 0x63, 0x68,
  5429  	0x65, 0x6d, 0x65, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x07, 0x20, 0x01,
  5430  	0x28, 0x09, 0x48, 0x00, 0x52, 0x0e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x52, 0x65, 0x64, 0x69,
  5431  	0x72, 0x65, 0x63, 0x74, 0x12, 0x30, 0x0a, 0x0d, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x64,
  5432  	0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xfa, 0x42, 0x08,
  5433  	0x72, 0x06, 0xc0, 0x01, 0x02, 0xc8, 0x01, 0x00, 0x52, 0x0c, 0x68, 0x6f, 0x73, 0x74, 0x52, 0x65,
  5434  	0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x72,
  5435  	0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x70,
  5436  	0x6f, 0x72, 0x74, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 0x32, 0x0a, 0x0d, 0x70,
  5437  	0x61, 0x74, 0x68, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01,
  5438  	0x28, 0x09, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x72, 0x06, 0xc0, 0x01, 0x02, 0xc8, 0x01, 0x00, 0x48,
  5439  	0x01, 0x52, 0x0c, 0x70, 0x61, 0x74, 0x68, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12,
  5440  	0x34, 0x0a, 0x0e, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74,
  5441  	0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x72, 0x06, 0xc0, 0x01,
  5442  	0x02, 0xc8, 0x01, 0x00, 0x48, 0x01, 0x52, 0x0d, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x52, 0x65,
  5443  	0x77, 0x72, 0x69, 0x74, 0x65, 0x12, 0x66, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
  5444  	0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x65,
  5445  	0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74,
  5446  	0x65, 0x2e, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e,
  5447  	0x2e, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
  5448  	0x65, 0x43, 0x6f, 0x64, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52,
  5449  	0x0c, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1f, 0x0a,
  5450  	0x0b, 0x73, 0x74, 0x72, 0x69, 0x70, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x06, 0x20, 0x01,
  5451  	0x28, 0x08, 0x52, 0x0a, 0x73, 0x74, 0x72, 0x69, 0x70, 0x51, 0x75, 0x65, 0x72, 0x79, 0x22, 0x77,
  5452  	0x0a, 0x14, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
  5453  	0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x4d, 0x4f, 0x56, 0x45, 0x44, 0x5f,
  5454  	0x50, 0x45, 0x52, 0x4d, 0x41, 0x4e, 0x45, 0x4e, 0x54, 0x4c, 0x59, 0x10, 0x00, 0x12, 0x09, 0x0a,
  5455  	0x05, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x45, 0x45, 0x5f,
  5456  	0x4f, 0x54, 0x48, 0x45, 0x52, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x54, 0x45, 0x4d, 0x50, 0x4f,
  5457  	0x52, 0x41, 0x52, 0x59, 0x5f, 0x52, 0x45, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x10, 0x03, 0x12,
  5458  	0x16, 0x0a, 0x12, 0x50, 0x45, 0x52, 0x4d, 0x41, 0x4e, 0x45, 0x4e, 0x54, 0x5f, 0x52, 0x45, 0x44,
  5459  	0x49, 0x52, 0x45, 0x43, 0x54, 0x10, 0x04, 0x42, 0x1a, 0x0a, 0x18, 0x73, 0x63, 0x68, 0x65, 0x6d,
  5460  	0x65, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66,
  5461  	0x69, 0x65, 0x72, 0x42, 0x18, 0x0a, 0x16, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x72, 0x65, 0x77, 0x72,
  5462  	0x69, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x22, 0x6d, 0x0a,
  5463  	0x14, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x41,
  5464  	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18,
  5465  	0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x2a, 0x05, 0x10, 0xd8, 0x04, 0x28,
  5466  	0x64, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x31, 0x0a, 0x04, 0x62, 0x6f, 0x64,
  5467  	0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e,
  5468  	0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x44, 0x61, 0x74, 0x61,
  5469  	0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0x6c, 0x0a, 0x09,
  5470  	0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x25, 0x0a, 0x09, 0x6f, 0x70, 0x65,
  5471  	0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42,
  5472  	0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
  5473  	0x12, 0x38, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20,
  5474  	0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
  5475  	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52,
  5476  	0x09, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x65, 0x22, 0xa6, 0x02, 0x0a, 0x07, 0x54,
  5477  	0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x12, 0x46, 0x0a, 0x0f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74,
  5478  	0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
  5479  	0x1d, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x46, 0x72, 0x61,
  5480  	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x52, 0x0e,
  5481  	0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x46,
  5482  	0x0a, 0x0f, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e,
  5483  	0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e,
  5484  	0x74, 0x79, 0x70, 0x65, 0x2e, 0x46, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50,
  5485  	0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x52, 0x0e, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x53, 0x61,
  5486  	0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x48, 0x0a, 0x10, 0x6f, 0x76, 0x65, 0x72, 0x61, 0x6c,
  5487  	0x6c, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
  5488  	0x32, 0x1d, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x46, 0x72,
  5489  	0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x52,
  5490  	0x0f, 0x6f, 0x76, 0x65, 0x72, 0x61, 0x6c, 0x6c, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67,
  5491  	0x12, 0x41, 0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18,
  5492  	0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79,
  5493  	0x70, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x75,
  5494  	0x73, 0x74, 0x6f, 0x6d, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54,
  5495  	0x61, 0x67, 0x73, 0x22, 0xda, 0x01, 0x0a, 0x0e, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x43,
  5496  	0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72,
  5497  	0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x10, 0x18, 0x01, 0xfa, 0x42, 0x05, 0x72, 0x03,
  5498  	0x28, 0x80, 0x08, 0xb8, 0xee, 0xf2, 0xd2, 0x05, 0x01, 0x52, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65,
  5499  	0x72, 0x6e, 0x12, 0x3b, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20,
  5500  	0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e,
  5501  	0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d,
  5502  	0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12,
  5503  	0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa,
  5504  	0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x42, 0x0a, 0x06,
  5505  	0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x65,
  5506  	0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65,
  5507  	0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x42, 0x08,
  5508  	0x18, 0x01, 0xb8, 0xee, 0xf2, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64,
  5509  	0x22, 0xd3, 0x09, 0x0a, 0x09, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x3b,
  5510  	0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e,
  5511  	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
  5512  	0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x07, 0xfa, 0x42, 0x04,
  5513  	0x2a, 0x02, 0x18, 0x0a, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x64,
  5514  	0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
  5515  	0x52, 0x0a, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x48, 0x0a, 0x07,
  5516  	0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e,
  5517  	0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75,
  5518  	0x74, 0x65, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x41, 0x63, 0x74,
  5519  	0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, 0x07, 0x61,
  5520  	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x9d, 0x08, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f,
  5521  	0x6e, 0x12, 0x5b, 0x0a, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x75, 0x73,
  5522  	0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x65, 0x6e, 0x76, 0x6f,
  5523  	0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52,
  5524  	0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e,
  5525  	0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52,
  5526  	0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x6a,
  5527  	0x0a, 0x13, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6c,
  5528  	0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x65, 0x6e,
  5529  	0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65,
  5530  	0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f,
  5531  	0x6e, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x75,
  5532  	0x73, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x12, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74,
  5533  	0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x5e, 0x0a, 0x0f, 0x72, 0x65,
  5534  	0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20,
  5535  	0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e,
  5536  	0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d,
  5537  	0x69, 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
  5538  	0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x0e, 0x72, 0x65, 0x71, 0x75,
  5539  	0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x5b, 0x0a, 0x0e, 0x72, 0x65,
  5540  	0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01,
  5541  	0x28, 0x0b, 0x32, 0x32, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
  5542  	0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69,
  5543  	0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41,
  5544  	0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65,
  5545  	0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x52, 0x0a, 0x0b, 0x67, 0x65, 0x6e, 0x65, 0x72,
  5546  	0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x65,
  5547  	0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74,
  5548  	0x65, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69,
  5549  	0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52,
  5550  	0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x65, 0x0a, 0x12, 0x68,
  5551  	0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63,
  5552  	0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e,
  5553  	0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x61, 0x74,
  5554  	0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x48, 0x65,
  5555  	0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x48, 0x00,
  5556  	0x52, 0x10, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x74,
  5557  	0x63, 0x68, 0x1a, 0x0f, 0x0a, 0x0d, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6c, 0x75, 0x73,
  5558  	0x74, 0x65, 0x72, 0x1a, 0x14, 0x0a, 0x12, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69,
  5559  	0x6f, 0x6e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x70, 0x0a, 0x0e, 0x52, 0x65, 0x71,
  5560  	0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x2e, 0x0a, 0x0b, 0x68,
  5561  	0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
  5562  	0x42, 0x0d, 0xfa, 0x42, 0x0a, 0x72, 0x08, 0x20, 0x01, 0xc0, 0x01, 0x01, 0xc8, 0x01, 0x00, 0x52,
  5563  	0x0a, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x0e, 0x64,
  5564  	0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20,
  5565  	0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x0d, 0x64, 0x65,
  5566  	0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x4b, 0x65, 0x79, 0x1a, 0x0f, 0x0a, 0x0d, 0x52,
  5567  	0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x1a, 0x40, 0x0a, 0x0a,
  5568  	0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x32, 0x0a, 0x10, 0x64, 0x65,
  5569  	0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01,
  5570  	0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x0f, 0x64,
  5571  	0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0xcc,
  5572  	0x01, 0x0a, 0x10, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x61,
  5573  	0x74, 0x63, 0x68, 0x12, 0x32, 0x0a, 0x10, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f,
  5574  	0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa,
  5575  	0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x0f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
  5576  	0x6f, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3d, 0x0a, 0x0c, 0x65, 0x78, 0x70, 0x65, 0x63,
  5577  	0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
  5578  	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
  5579  	0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x65, 0x63,
  5580  	0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x45, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72,
  5581  	0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e,
  5582  	0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x48, 0x65, 0x61,
  5583  	0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92,
  5584  	0x01, 0x02, 0x08, 0x01, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x42, 0x17, 0x0a,
  5585  	0x10, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65,
  5586  	0x72, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x22, 0xdf, 0x03, 0x0a, 0x0d, 0x48, 0x65, 0x61, 0x64, 0x65,
  5587  	0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
  5588  	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, 0xfa, 0x42, 0x0a, 0x72, 0x08, 0x20, 0x01, 0xc0,
  5589  	0x01, 0x01, 0xc8, 0x01, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0b, 0x65,
  5590  	0x78, 0x61, 0x63, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
  5591  	0x48, 0x00, 0x52, 0x0a, 0x65, 0x78, 0x61, 0x63, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x33,
  5592  	0x0a, 0x0b, 0x72, 0x65, 0x67, 0x65, 0x78, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x05, 0x20,
  5593  	0x01, 0x28, 0x09, 0x42, 0x10, 0x18, 0x01, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x28, 0x80, 0x08, 0xb8,
  5594  	0xee, 0xf2, 0xd2, 0x05, 0x01, 0x48, 0x00, 0x52, 0x0a, 0x72, 0x65, 0x67, 0x65, 0x78, 0x4d, 0x61,
  5595  	0x74, 0x63, 0x68, 0x12, 0x4c, 0x0a, 0x10, 0x73, 0x61, 0x66, 0x65, 0x5f, 0x72, 0x65, 0x67, 0x65,
  5596  	0x78, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e,
  5597  	0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68,
  5598  	0x65, 0x72, 0x2e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x48,
  5599  	0x00, 0x52, 0x0e, 0x73, 0x61, 0x66, 0x65, 0x52, 0x65, 0x67, 0x65, 0x78, 0x4d, 0x61, 0x74, 0x63,
  5600  	0x68, 0x12, 0x39, 0x0a, 0x0b, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68,
  5601  	0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74,
  5602  	0x79, 0x70, 0x65, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x00,
  5603  	0x52, 0x0a, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x25, 0x0a, 0x0d,
  5604  	0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x07, 0x20,
  5605  	0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0c, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x4d, 0x61,
  5606  	0x74, 0x63, 0x68, 0x12, 0x2c, 0x0a, 0x0c, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x6d, 0x61,
  5607  	0x74, 0x63, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02,
  5608  	0x20, 0x01, 0x48, 0x00, 0x52, 0x0b, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x4d, 0x61, 0x74, 0x63,
  5609  	0x68, 0x12, 0x2c, 0x0a, 0x0c, 0x73, 0x75, 0x66, 0x66, 0x69, 0x78, 0x5f, 0x6d, 0x61, 0x74, 0x63,
  5610  	0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01,
  5611  	0x48, 0x00, 0x52, 0x0b, 0x73, 0x75, 0x66, 0x66, 0x69, 0x78, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12,
  5612  	0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18,
  5613  	0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x4d, 0x61, 0x74,
  5614  	0x63, 0x68, 0x42, 0x18, 0x0a, 0x16, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x74,
  5615  	0x63, 0x68, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4a, 0x04, 0x08, 0x02,
  5616  	0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0xaf, 0x02, 0x0a, 0x15, 0x51, 0x75, 0x65,
  5617  	0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68,
  5618  	0x65, 0x72, 0x12, 0x1e, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
  5619  	0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x20, 0x01, 0x28, 0x80, 0x08, 0x52, 0x04, 0x6e, 0x61,
  5620  	0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
  5621  	0x09, 0x42, 0x08, 0x18, 0x01, 0xb8, 0xee, 0xf2, 0xd2, 0x05, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c,
  5622  	0x75, 0x65, 0x12, 0x3a, 0x0a, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28,
  5623  	0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
  5624  	0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x08, 0x18,
  5625  	0x01, 0xb8, 0xee, 0xf2, 0xd2, 0x05, 0x01, 0x52, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x12, 0x50,
  5626  	0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x05,
  5627  	0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70,
  5628  	0x65, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67,
  5629  	0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10,
  5630  	0x01, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x74, 0x63, 0x68,
  5631  	0x12, 0x25, 0x0a, 0x0d, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63,
  5632  	0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0c, 0x70, 0x72, 0x65, 0x73, 0x65,
  5633  	0x6e, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x21, 0x0a, 0x1f, 0x71, 0x75, 0x65, 0x72, 0x79,
  5634  	0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68,
  5635  	0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x5f, 0x0a, 0x20, 0x69, 0x6f,
  5636  	0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x65, 0x6e, 0x76, 0x6f,
  5637  	0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x42, 0x14,
  5638  	0x52, 0x6f, 0x75, 0x74, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x50,
  5639  	0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0xf2, 0x98, 0xfe, 0x8f, 0x05, 0x17, 0x12, 0x15, 0x65, 0x6e,
  5640  	0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65,
  5641  	0x2e, 0x76, 0x33, 0xba, 0x80, 0xc8, 0xd1, 0x06, 0x02, 0x10, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f,
  5642  	0x74, 0x6f, 0x33,
  5643  }
  5644  
  5645  var (
  5646  	file_envoy_api_v2_route_route_components_proto_rawDescOnce sync.Once
  5647  	file_envoy_api_v2_route_route_components_proto_rawDescData = file_envoy_api_v2_route_route_components_proto_rawDesc
  5648  )
  5649  
  5650  func file_envoy_api_v2_route_route_components_proto_rawDescGZIP() []byte {
  5651  	file_envoy_api_v2_route_route_components_proto_rawDescOnce.Do(func() {
  5652  		file_envoy_api_v2_route_route_components_proto_rawDescData = protoimpl.X.CompressGZIP(file_envoy_api_v2_route_route_components_proto_rawDescData)
  5653  	})
  5654  	return file_envoy_api_v2_route_route_components_proto_rawDescData
  5655  }
  5656  
  5657  var file_envoy_api_v2_route_route_components_proto_enumTypes = make([]protoimpl.EnumInfo, 4)
  5658  var file_envoy_api_v2_route_route_components_proto_msgTypes = make([]protoimpl.MessageInfo, 44)
  5659  var file_envoy_api_v2_route_route_components_proto_goTypes = []interface{}{
  5660  	(VirtualHost_TlsRequirementType)(0),          // 0: envoy.api.v2.route.VirtualHost.TlsRequirementType
  5661  	(RouteAction_ClusterNotFoundResponseCode)(0), // 1: envoy.api.v2.route.RouteAction.ClusterNotFoundResponseCode
  5662  	(RouteAction_InternalRedirectAction)(0),      // 2: envoy.api.v2.route.RouteAction.InternalRedirectAction
  5663  	(RedirectAction_RedirectResponseCode)(0),     // 3: envoy.api.v2.route.RedirectAction.RedirectResponseCode
  5664  	(*VirtualHost)(nil),                          // 4: envoy.api.v2.route.VirtualHost
  5665  	(*FilterAction)(nil),                         // 5: envoy.api.v2.route.FilterAction
  5666  	(*Route)(nil),                                // 6: envoy.api.v2.route.Route
  5667  	(*WeightedCluster)(nil),                      // 7: envoy.api.v2.route.WeightedCluster
  5668  	(*RouteMatch)(nil),                           // 8: envoy.api.v2.route.RouteMatch
  5669  	(*CorsPolicy)(nil),                           // 9: envoy.api.v2.route.CorsPolicy
  5670  	(*RouteAction)(nil),                          // 10: envoy.api.v2.route.RouteAction
  5671  	(*RetryPolicy)(nil),                          // 11: envoy.api.v2.route.RetryPolicy
  5672  	(*HedgePolicy)(nil),                          // 12: envoy.api.v2.route.HedgePolicy
  5673  	(*RedirectAction)(nil),                       // 13: envoy.api.v2.route.RedirectAction
  5674  	(*DirectResponseAction)(nil),                 // 14: envoy.api.v2.route.DirectResponseAction
  5675  	(*Decorator)(nil),                            // 15: envoy.api.v2.route.Decorator
  5676  	(*Tracing)(nil),                              // 16: envoy.api.v2.route.Tracing
  5677  	(*VirtualCluster)(nil),                       // 17: envoy.api.v2.route.VirtualCluster
  5678  	(*RateLimit)(nil),                            // 18: envoy.api.v2.route.RateLimit
  5679  	(*HeaderMatcher)(nil),                        // 19: envoy.api.v2.route.HeaderMatcher
  5680  	(*QueryParameterMatcher)(nil),                // 20: envoy.api.v2.route.QueryParameterMatcher
  5681  	nil,                                          // 21: envoy.api.v2.route.VirtualHost.PerFilterConfigEntry
  5682  	nil,                                          // 22: envoy.api.v2.route.VirtualHost.TypedPerFilterConfigEntry
  5683  	nil,                                          // 23: envoy.api.v2.route.Route.PerFilterConfigEntry
  5684  	nil,                                          // 24: envoy.api.v2.route.Route.TypedPerFilterConfigEntry
  5685  	(*WeightedCluster_ClusterWeight)(nil),        // 25: envoy.api.v2.route.WeightedCluster.ClusterWeight
  5686  	nil,                                          // 26: envoy.api.v2.route.WeightedCluster.ClusterWeight.PerFilterConfigEntry
  5687  	nil,                                          // 27: envoy.api.v2.route.WeightedCluster.ClusterWeight.TypedPerFilterConfigEntry
  5688  	(*RouteMatch_GrpcRouteMatchOptions)(nil),     // 28: envoy.api.v2.route.RouteMatch.GrpcRouteMatchOptions
  5689  	(*RouteMatch_TlsContextMatchOptions)(nil),           // 29: envoy.api.v2.route.RouteMatch.TlsContextMatchOptions
  5690  	(*RouteAction_RequestMirrorPolicy)(nil),             // 30: envoy.api.v2.route.RouteAction.RequestMirrorPolicy
  5691  	(*RouteAction_HashPolicy)(nil),                      // 31: envoy.api.v2.route.RouteAction.HashPolicy
  5692  	(*RouteAction_UpgradeConfig)(nil),                   // 32: envoy.api.v2.route.RouteAction.UpgradeConfig
  5693  	(*RouteAction_HashPolicy_Header)(nil),               // 33: envoy.api.v2.route.RouteAction.HashPolicy.Header
  5694  	(*RouteAction_HashPolicy_Cookie)(nil),               // 34: envoy.api.v2.route.RouteAction.HashPolicy.Cookie
  5695  	(*RouteAction_HashPolicy_ConnectionProperties)(nil), // 35: envoy.api.v2.route.RouteAction.HashPolicy.ConnectionProperties
  5696  	(*RouteAction_HashPolicy_QueryParameter)(nil),       // 36: envoy.api.v2.route.RouteAction.HashPolicy.QueryParameter
  5697  	(*RouteAction_HashPolicy_FilterState)(nil),          // 37: envoy.api.v2.route.RouteAction.HashPolicy.FilterState
  5698  	(*RetryPolicy_RetryPriority)(nil),                   // 38: envoy.api.v2.route.RetryPolicy.RetryPriority
  5699  	(*RetryPolicy_RetryHostPredicate)(nil),              // 39: envoy.api.v2.route.RetryPolicy.RetryHostPredicate
  5700  	(*RetryPolicy_RetryBackOff)(nil),                    // 40: envoy.api.v2.route.RetryPolicy.RetryBackOff
  5701  	(*RateLimit_Action)(nil),                            // 41: envoy.api.v2.route.RateLimit.Action
  5702  	(*RateLimit_Action_SourceCluster)(nil),              // 42: envoy.api.v2.route.RateLimit.Action.SourceCluster
  5703  	(*RateLimit_Action_DestinationCluster)(nil),         // 43: envoy.api.v2.route.RateLimit.Action.DestinationCluster
  5704  	(*RateLimit_Action_RequestHeaders)(nil),             // 44: envoy.api.v2.route.RateLimit.Action.RequestHeaders
  5705  	(*RateLimit_Action_RemoteAddress)(nil),              // 45: envoy.api.v2.route.RateLimit.Action.RemoteAddress
  5706  	(*RateLimit_Action_GenericKey)(nil),                 // 46: envoy.api.v2.route.RateLimit.Action.GenericKey
  5707  	(*RateLimit_Action_HeaderValueMatch)(nil),           // 47: envoy.api.v2.route.RateLimit.Action.HeaderValueMatch
  5708  	(*core.HeaderValueOption)(nil),                      // 48: envoy.api.v2.core.HeaderValueOption
  5709  	(*any.Any)(nil),                                     // 49: google.protobuf.Any
  5710  	(*wrappers.UInt32Value)(nil),                        // 50: google.protobuf.UInt32Value
  5711  	(*core.Metadata)(nil),                               // 51: envoy.api.v2.core.Metadata
  5712  	(*matcher.RegexMatcher)(nil),                        // 52: envoy.type.matcher.RegexMatcher
  5713  	(*wrappers.BoolValue)(nil),                          // 53: google.protobuf.BoolValue
  5714  	(*core.RuntimeFractionalPercent)(nil),               // 54: envoy.api.v2.core.RuntimeFractionalPercent
  5715  	(*matcher.StringMatcher)(nil),                       // 55: envoy.type.matcher.StringMatcher
  5716  	(*matcher.RegexMatchAndSubstitute)(nil),             // 56: envoy.type.matcher.RegexMatchAndSubstitute
  5717  	(*duration.Duration)(nil),                           // 57: google.protobuf.Duration
  5718  	(core.RoutingPriority)(0),                           // 58: envoy.api.v2.core.RoutingPriority
  5719  	(*_type.FractionalPercent)(nil),                     // 59: envoy.type.FractionalPercent
  5720  	(*core.DataSource)(nil),                             // 60: envoy.api.v2.core.DataSource
  5721  	(*v2.CustomTag)(nil),                                // 61: envoy.type.tracing.v2.CustomTag
  5722  	(core.RequestMethod)(0),                             // 62: envoy.api.v2.core.RequestMethod
  5723  	(*_type.Int64Range)(nil),                            // 63: envoy.type.Int64Range
  5724  	(*_struct.Struct)(nil),                              // 64: google.protobuf.Struct
  5725  }
  5726  var file_envoy_api_v2_route_route_components_proto_depIdxs = []int32{
  5727  	6,   // 0: envoy.api.v2.route.VirtualHost.routes:type_name -> envoy.api.v2.route.Route
  5728  	0,   // 1: envoy.api.v2.route.VirtualHost.require_tls:type_name -> envoy.api.v2.route.VirtualHost.TlsRequirementType
  5729  	17,  // 2: envoy.api.v2.route.VirtualHost.virtual_clusters:type_name -> envoy.api.v2.route.VirtualCluster
  5730  	18,  // 3: envoy.api.v2.route.VirtualHost.rate_limits:type_name -> envoy.api.v2.route.RateLimit
  5731  	48,  // 4: envoy.api.v2.route.VirtualHost.request_headers_to_add:type_name -> envoy.api.v2.core.HeaderValueOption
  5732  	48,  // 5: envoy.api.v2.route.VirtualHost.response_headers_to_add:type_name -> envoy.api.v2.core.HeaderValueOption
  5733  	9,   // 6: envoy.api.v2.route.VirtualHost.cors:type_name -> envoy.api.v2.route.CorsPolicy
  5734  	21,  // 7: envoy.api.v2.route.VirtualHost.per_filter_config:type_name -> envoy.api.v2.route.VirtualHost.PerFilterConfigEntry
  5735  	22,  // 8: envoy.api.v2.route.VirtualHost.typed_per_filter_config:type_name -> envoy.api.v2.route.VirtualHost.TypedPerFilterConfigEntry
  5736  	11,  // 9: envoy.api.v2.route.VirtualHost.retry_policy:type_name -> envoy.api.v2.route.RetryPolicy
  5737  	49,  // 10: envoy.api.v2.route.VirtualHost.retry_policy_typed_config:type_name -> google.protobuf.Any
  5738  	12,  // 11: envoy.api.v2.route.VirtualHost.hedge_policy:type_name -> envoy.api.v2.route.HedgePolicy
  5739  	50,  // 12: envoy.api.v2.route.VirtualHost.per_request_buffer_limit_bytes:type_name -> google.protobuf.UInt32Value
  5740  	49,  // 13: envoy.api.v2.route.FilterAction.action:type_name -> google.protobuf.Any
  5741  	8,   // 14: envoy.api.v2.route.Route.match:type_name -> envoy.api.v2.route.RouteMatch
  5742  	10,  // 15: envoy.api.v2.route.Route.route:type_name -> envoy.api.v2.route.RouteAction
  5743  	13,  // 16: envoy.api.v2.route.Route.redirect:type_name -> envoy.api.v2.route.RedirectAction
  5744  	14,  // 17: envoy.api.v2.route.Route.direct_response:type_name -> envoy.api.v2.route.DirectResponseAction
  5745  	5,   // 18: envoy.api.v2.route.Route.filter_action:type_name -> envoy.api.v2.route.FilterAction
  5746  	51,  // 19: envoy.api.v2.route.Route.metadata:type_name -> envoy.api.v2.core.Metadata
  5747  	15,  // 20: envoy.api.v2.route.Route.decorator:type_name -> envoy.api.v2.route.Decorator
  5748  	23,  // 21: envoy.api.v2.route.Route.per_filter_config:type_name -> envoy.api.v2.route.Route.PerFilterConfigEntry
  5749  	24,  // 22: envoy.api.v2.route.Route.typed_per_filter_config:type_name -> envoy.api.v2.route.Route.TypedPerFilterConfigEntry
  5750  	48,  // 23: envoy.api.v2.route.Route.request_headers_to_add:type_name -> envoy.api.v2.core.HeaderValueOption
  5751  	48,  // 24: envoy.api.v2.route.Route.response_headers_to_add:type_name -> envoy.api.v2.core.HeaderValueOption
  5752  	16,  // 25: envoy.api.v2.route.Route.tracing:type_name -> envoy.api.v2.route.Tracing
  5753  	50,  // 26: envoy.api.v2.route.Route.per_request_buffer_limit_bytes:type_name -> google.protobuf.UInt32Value
  5754  	25,  // 27: envoy.api.v2.route.WeightedCluster.clusters:type_name -> envoy.api.v2.route.WeightedCluster.ClusterWeight
  5755  	50,  // 28: envoy.api.v2.route.WeightedCluster.total_weight:type_name -> google.protobuf.UInt32Value
  5756  	52,  // 29: envoy.api.v2.route.RouteMatch.safe_regex:type_name -> envoy.type.matcher.RegexMatcher
  5757  	53,  // 30: envoy.api.v2.route.RouteMatch.case_sensitive:type_name -> google.protobuf.BoolValue
  5758  	54,  // 31: envoy.api.v2.route.RouteMatch.runtime_fraction:type_name -> envoy.api.v2.core.RuntimeFractionalPercent
  5759  	19,  // 32: envoy.api.v2.route.RouteMatch.headers:type_name -> envoy.api.v2.route.HeaderMatcher
  5760  	20,  // 33: envoy.api.v2.route.RouteMatch.query_parameters:type_name -> envoy.api.v2.route.QueryParameterMatcher
  5761  	28,  // 34: envoy.api.v2.route.RouteMatch.grpc:type_name -> envoy.api.v2.route.RouteMatch.GrpcRouteMatchOptions
  5762  	29,  // 35: envoy.api.v2.route.RouteMatch.tls_context:type_name -> envoy.api.v2.route.RouteMatch.TlsContextMatchOptions
  5763  	55,  // 36: envoy.api.v2.route.CorsPolicy.allow_origin_string_match:type_name -> envoy.type.matcher.StringMatcher
  5764  	53,  // 37: envoy.api.v2.route.CorsPolicy.allow_credentials:type_name -> google.protobuf.BoolValue
  5765  	53,  // 38: envoy.api.v2.route.CorsPolicy.enabled:type_name -> google.protobuf.BoolValue
  5766  	54,  // 39: envoy.api.v2.route.CorsPolicy.filter_enabled:type_name -> envoy.api.v2.core.RuntimeFractionalPercent
  5767  	54,  // 40: envoy.api.v2.route.CorsPolicy.shadow_enabled:type_name -> envoy.api.v2.core.RuntimeFractionalPercent
  5768  	7,   // 41: envoy.api.v2.route.RouteAction.weighted_clusters:type_name -> envoy.api.v2.route.WeightedCluster
  5769  	1,   // 42: envoy.api.v2.route.RouteAction.cluster_not_found_response_code:type_name -> envoy.api.v2.route.RouteAction.ClusterNotFoundResponseCode
  5770  	51,  // 43: envoy.api.v2.route.RouteAction.metadata_match:type_name -> envoy.api.v2.core.Metadata
  5771  	56,  // 44: envoy.api.v2.route.RouteAction.regex_rewrite:type_name -> envoy.type.matcher.RegexMatchAndSubstitute
  5772  	53,  // 45: envoy.api.v2.route.RouteAction.auto_host_rewrite:type_name -> google.protobuf.BoolValue
  5773  	57,  // 46: envoy.api.v2.route.RouteAction.timeout:type_name -> google.protobuf.Duration
  5774  	57,  // 47: envoy.api.v2.route.RouteAction.idle_timeout:type_name -> google.protobuf.Duration
  5775  	11,  // 48: envoy.api.v2.route.RouteAction.retry_policy:type_name -> envoy.api.v2.route.RetryPolicy
  5776  	49,  // 49: envoy.api.v2.route.RouteAction.retry_policy_typed_config:type_name -> google.protobuf.Any
  5777  	30,  // 50: envoy.api.v2.route.RouteAction.request_mirror_policy:type_name -> envoy.api.v2.route.RouteAction.RequestMirrorPolicy
  5778  	30,  // 51: envoy.api.v2.route.RouteAction.request_mirror_policies:type_name -> envoy.api.v2.route.RouteAction.RequestMirrorPolicy
  5779  	58,  // 52: envoy.api.v2.route.RouteAction.priority:type_name -> envoy.api.v2.core.RoutingPriority
  5780  	18,  // 53: envoy.api.v2.route.RouteAction.rate_limits:type_name -> envoy.api.v2.route.RateLimit
  5781  	53,  // 54: envoy.api.v2.route.RouteAction.include_vh_rate_limits:type_name -> google.protobuf.BoolValue
  5782  	31,  // 55: envoy.api.v2.route.RouteAction.hash_policy:type_name -> envoy.api.v2.route.RouteAction.HashPolicy
  5783  	9,   // 56: envoy.api.v2.route.RouteAction.cors:type_name -> envoy.api.v2.route.CorsPolicy
  5784  	57,  // 57: envoy.api.v2.route.RouteAction.max_grpc_timeout:type_name -> google.protobuf.Duration
  5785  	57,  // 58: envoy.api.v2.route.RouteAction.grpc_timeout_offset:type_name -> google.protobuf.Duration
  5786  	32,  // 59: envoy.api.v2.route.RouteAction.upgrade_configs:type_name -> envoy.api.v2.route.RouteAction.UpgradeConfig
  5787  	2,   // 60: envoy.api.v2.route.RouteAction.internal_redirect_action:type_name -> envoy.api.v2.route.RouteAction.InternalRedirectAction
  5788  	50,  // 61: envoy.api.v2.route.RouteAction.max_internal_redirects:type_name -> google.protobuf.UInt32Value
  5789  	12,  // 62: envoy.api.v2.route.RouteAction.hedge_policy:type_name -> envoy.api.v2.route.HedgePolicy
  5790  	50,  // 63: envoy.api.v2.route.RetryPolicy.num_retries:type_name -> google.protobuf.UInt32Value
  5791  	57,  // 64: envoy.api.v2.route.RetryPolicy.per_try_timeout:type_name -> google.protobuf.Duration
  5792  	38,  // 65: envoy.api.v2.route.RetryPolicy.retry_priority:type_name -> envoy.api.v2.route.RetryPolicy.RetryPriority
  5793  	39,  // 66: envoy.api.v2.route.RetryPolicy.retry_host_predicate:type_name -> envoy.api.v2.route.RetryPolicy.RetryHostPredicate
  5794  	40,  // 67: envoy.api.v2.route.RetryPolicy.retry_back_off:type_name -> envoy.api.v2.route.RetryPolicy.RetryBackOff
  5795  	19,  // 68: envoy.api.v2.route.RetryPolicy.retriable_headers:type_name -> envoy.api.v2.route.HeaderMatcher
  5796  	19,  // 69: envoy.api.v2.route.RetryPolicy.retriable_request_headers:type_name -> envoy.api.v2.route.HeaderMatcher
  5797  	50,  // 70: envoy.api.v2.route.HedgePolicy.initial_requests:type_name -> google.protobuf.UInt32Value
  5798  	59,  // 71: envoy.api.v2.route.HedgePolicy.additional_request_chance:type_name -> envoy.type.FractionalPercent
  5799  	3,   // 72: envoy.api.v2.route.RedirectAction.response_code:type_name -> envoy.api.v2.route.RedirectAction.RedirectResponseCode
  5800  	60,  // 73: envoy.api.v2.route.DirectResponseAction.body:type_name -> envoy.api.v2.core.DataSource
  5801  	53,  // 74: envoy.api.v2.route.Decorator.propagate:type_name -> google.protobuf.BoolValue
  5802  	59,  // 75: envoy.api.v2.route.Tracing.client_sampling:type_name -> envoy.type.FractionalPercent
  5803  	59,  // 76: envoy.api.v2.route.Tracing.random_sampling:type_name -> envoy.type.FractionalPercent
  5804  	59,  // 77: envoy.api.v2.route.Tracing.overall_sampling:type_name -> envoy.type.FractionalPercent
  5805  	61,  // 78: envoy.api.v2.route.Tracing.custom_tags:type_name -> envoy.type.tracing.v2.CustomTag
  5806  	19,  // 79: envoy.api.v2.route.VirtualCluster.headers:type_name -> envoy.api.v2.route.HeaderMatcher
  5807  	62,  // 80: envoy.api.v2.route.VirtualCluster.method:type_name -> envoy.api.v2.core.RequestMethod
  5808  	50,  // 81: envoy.api.v2.route.RateLimit.stage:type_name -> google.protobuf.UInt32Value
  5809  	41,  // 82: envoy.api.v2.route.RateLimit.actions:type_name -> envoy.api.v2.route.RateLimit.Action
  5810  	52,  // 83: envoy.api.v2.route.HeaderMatcher.safe_regex_match:type_name -> envoy.type.matcher.RegexMatcher
  5811  	63,  // 84: envoy.api.v2.route.HeaderMatcher.range_match:type_name -> envoy.type.Int64Range
  5812  	53,  // 85: envoy.api.v2.route.QueryParameterMatcher.regex:type_name -> google.protobuf.BoolValue
  5813  	55,  // 86: envoy.api.v2.route.QueryParameterMatcher.string_match:type_name -> envoy.type.matcher.StringMatcher
  5814  	64,  // 87: envoy.api.v2.route.VirtualHost.PerFilterConfigEntry.value:type_name -> google.protobuf.Struct
  5815  	49,  // 88: envoy.api.v2.route.VirtualHost.TypedPerFilterConfigEntry.value:type_name -> google.protobuf.Any
  5816  	64,  // 89: envoy.api.v2.route.Route.PerFilterConfigEntry.value:type_name -> google.protobuf.Struct
  5817  	49,  // 90: envoy.api.v2.route.Route.TypedPerFilterConfigEntry.value:type_name -> google.protobuf.Any
  5818  	50,  // 91: envoy.api.v2.route.WeightedCluster.ClusterWeight.weight:type_name -> google.protobuf.UInt32Value
  5819  	51,  // 92: envoy.api.v2.route.WeightedCluster.ClusterWeight.metadata_match:type_name -> envoy.api.v2.core.Metadata
  5820  	48,  // 93: envoy.api.v2.route.WeightedCluster.ClusterWeight.request_headers_to_add:type_name -> envoy.api.v2.core.HeaderValueOption
  5821  	48,  // 94: envoy.api.v2.route.WeightedCluster.ClusterWeight.response_headers_to_add:type_name -> envoy.api.v2.core.HeaderValueOption
  5822  	26,  // 95: envoy.api.v2.route.WeightedCluster.ClusterWeight.per_filter_config:type_name -> envoy.api.v2.route.WeightedCluster.ClusterWeight.PerFilterConfigEntry
  5823  	27,  // 96: envoy.api.v2.route.WeightedCluster.ClusterWeight.typed_per_filter_config:type_name -> envoy.api.v2.route.WeightedCluster.ClusterWeight.TypedPerFilterConfigEntry
  5824  	64,  // 97: envoy.api.v2.route.WeightedCluster.ClusterWeight.PerFilterConfigEntry.value:type_name -> google.protobuf.Struct
  5825  	49,  // 98: envoy.api.v2.route.WeightedCluster.ClusterWeight.TypedPerFilterConfigEntry.value:type_name -> google.protobuf.Any
  5826  	53,  // 99: envoy.api.v2.route.RouteMatch.TlsContextMatchOptions.presented:type_name -> google.protobuf.BoolValue
  5827  	53,  // 100: envoy.api.v2.route.RouteMatch.TlsContextMatchOptions.validated:type_name -> google.protobuf.BoolValue
  5828  	54,  // 101: envoy.api.v2.route.RouteAction.RequestMirrorPolicy.runtime_fraction:type_name -> envoy.api.v2.core.RuntimeFractionalPercent
  5829  	53,  // 102: envoy.api.v2.route.RouteAction.RequestMirrorPolicy.trace_sampled:type_name -> google.protobuf.BoolValue
  5830  	33,  // 103: envoy.api.v2.route.RouteAction.HashPolicy.header:type_name -> envoy.api.v2.route.RouteAction.HashPolicy.Header
  5831  	34,  // 104: envoy.api.v2.route.RouteAction.HashPolicy.cookie:type_name -> envoy.api.v2.route.RouteAction.HashPolicy.Cookie
  5832  	35,  // 105: envoy.api.v2.route.RouteAction.HashPolicy.connection_properties:type_name -> envoy.api.v2.route.RouteAction.HashPolicy.ConnectionProperties
  5833  	36,  // 106: envoy.api.v2.route.RouteAction.HashPolicy.query_parameter:type_name -> envoy.api.v2.route.RouteAction.HashPolicy.QueryParameter
  5834  	37,  // 107: envoy.api.v2.route.RouteAction.HashPolicy.filter_state:type_name -> envoy.api.v2.route.RouteAction.HashPolicy.FilterState
  5835  	53,  // 108: envoy.api.v2.route.RouteAction.UpgradeConfig.enabled:type_name -> google.protobuf.BoolValue
  5836  	57,  // 109: envoy.api.v2.route.RouteAction.HashPolicy.Cookie.ttl:type_name -> google.protobuf.Duration
  5837  	64,  // 110: envoy.api.v2.route.RetryPolicy.RetryPriority.config:type_name -> google.protobuf.Struct
  5838  	49,  // 111: envoy.api.v2.route.RetryPolicy.RetryPriority.typed_config:type_name -> google.protobuf.Any
  5839  	64,  // 112: envoy.api.v2.route.RetryPolicy.RetryHostPredicate.config:type_name -> google.protobuf.Struct
  5840  	49,  // 113: envoy.api.v2.route.RetryPolicy.RetryHostPredicate.typed_config:type_name -> google.protobuf.Any
  5841  	57,  // 114: envoy.api.v2.route.RetryPolicy.RetryBackOff.base_interval:type_name -> google.protobuf.Duration
  5842  	57,  // 115: envoy.api.v2.route.RetryPolicy.RetryBackOff.max_interval:type_name -> google.protobuf.Duration
  5843  	42,  // 116: envoy.api.v2.route.RateLimit.Action.source_cluster:type_name -> envoy.api.v2.route.RateLimit.Action.SourceCluster
  5844  	43,  // 117: envoy.api.v2.route.RateLimit.Action.destination_cluster:type_name -> envoy.api.v2.route.RateLimit.Action.DestinationCluster
  5845  	44,  // 118: envoy.api.v2.route.RateLimit.Action.request_headers:type_name -> envoy.api.v2.route.RateLimit.Action.RequestHeaders
  5846  	45,  // 119: envoy.api.v2.route.RateLimit.Action.remote_address:type_name -> envoy.api.v2.route.RateLimit.Action.RemoteAddress
  5847  	46,  // 120: envoy.api.v2.route.RateLimit.Action.generic_key:type_name -> envoy.api.v2.route.RateLimit.Action.GenericKey
  5848  	47,  // 121: envoy.api.v2.route.RateLimit.Action.header_value_match:type_name -> envoy.api.v2.route.RateLimit.Action.HeaderValueMatch
  5849  	53,  // 122: envoy.api.v2.route.RateLimit.Action.HeaderValueMatch.expect_match:type_name -> google.protobuf.BoolValue
  5850  	19,  // 123: envoy.api.v2.route.RateLimit.Action.HeaderValueMatch.headers:type_name -> envoy.api.v2.route.HeaderMatcher
  5851  	124, // [124:124] is the sub-list for method output_type
  5852  	124, // [124:124] is the sub-list for method input_type
  5853  	124, // [124:124] is the sub-list for extension type_name
  5854  	124, // [124:124] is the sub-list for extension extendee
  5855  	0,   // [0:124] is the sub-list for field type_name
  5856  }
  5857  
  5858  func init() { file_envoy_api_v2_route_route_components_proto_init() }
  5859  func file_envoy_api_v2_route_route_components_proto_init() {
  5860  	if File_envoy_api_v2_route_route_components_proto != nil {
  5861  		return
  5862  	}
  5863  	if !protoimpl.UnsafeEnabled {
  5864  		file_envoy_api_v2_route_route_components_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
  5865  			switch v := v.(*VirtualHost); i {
  5866  			case 0:
  5867  				return &v.state
  5868  			case 1:
  5869  				return &v.sizeCache
  5870  			case 2:
  5871  				return &v.unknownFields
  5872  			default:
  5873  				return nil
  5874  			}
  5875  		}
  5876  		file_envoy_api_v2_route_route_components_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
  5877  			switch v := v.(*FilterAction); i {
  5878  			case 0:
  5879  				return &v.state
  5880  			case 1:
  5881  				return &v.sizeCache
  5882  			case 2:
  5883  				return &v.unknownFields
  5884  			default:
  5885  				return nil
  5886  			}
  5887  		}
  5888  		file_envoy_api_v2_route_route_components_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
  5889  			switch v := v.(*Route); i {
  5890  			case 0:
  5891  				return &v.state
  5892  			case 1:
  5893  				return &v.sizeCache
  5894  			case 2:
  5895  				return &v.unknownFields
  5896  			default:
  5897  				return nil
  5898  			}
  5899  		}
  5900  		file_envoy_api_v2_route_route_components_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
  5901  			switch v := v.(*WeightedCluster); i {
  5902  			case 0:
  5903  				return &v.state
  5904  			case 1:
  5905  				return &v.sizeCache
  5906  			case 2:
  5907  				return &v.unknownFields
  5908  			default:
  5909  				return nil
  5910  			}
  5911  		}
  5912  		file_envoy_api_v2_route_route_components_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
  5913  			switch v := v.(*RouteMatch); i {
  5914  			case 0:
  5915  				return &v.state
  5916  			case 1:
  5917  				return &v.sizeCache
  5918  			case 2:
  5919  				return &v.unknownFields
  5920  			default:
  5921  				return nil
  5922  			}
  5923  		}
  5924  		file_envoy_api_v2_route_route_components_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
  5925  			switch v := v.(*CorsPolicy); i {
  5926  			case 0:
  5927  				return &v.state
  5928  			case 1:
  5929  				return &v.sizeCache
  5930  			case 2:
  5931  				return &v.unknownFields
  5932  			default:
  5933  				return nil
  5934  			}
  5935  		}
  5936  		file_envoy_api_v2_route_route_components_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
  5937  			switch v := v.(*RouteAction); i {
  5938  			case 0:
  5939  				return &v.state
  5940  			case 1:
  5941  				return &v.sizeCache
  5942  			case 2:
  5943  				return &v.unknownFields
  5944  			default:
  5945  				return nil
  5946  			}
  5947  		}
  5948  		file_envoy_api_v2_route_route_components_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
  5949  			switch v := v.(*RetryPolicy); i {
  5950  			case 0:
  5951  				return &v.state
  5952  			case 1:
  5953  				return &v.sizeCache
  5954  			case 2:
  5955  				return &v.unknownFields
  5956  			default:
  5957  				return nil
  5958  			}
  5959  		}
  5960  		file_envoy_api_v2_route_route_components_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
  5961  			switch v := v.(*HedgePolicy); i {
  5962  			case 0:
  5963  				return &v.state
  5964  			case 1:
  5965  				return &v.sizeCache
  5966  			case 2:
  5967  				return &v.unknownFields
  5968  			default:
  5969  				return nil
  5970  			}
  5971  		}
  5972  		file_envoy_api_v2_route_route_components_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
  5973  			switch v := v.(*RedirectAction); i {
  5974  			case 0:
  5975  				return &v.state
  5976  			case 1:
  5977  				return &v.sizeCache
  5978  			case 2:
  5979  				return &v.unknownFields
  5980  			default:
  5981  				return nil
  5982  			}
  5983  		}
  5984  		file_envoy_api_v2_route_route_components_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
  5985  			switch v := v.(*DirectResponseAction); i {
  5986  			case 0:
  5987  				return &v.state
  5988  			case 1:
  5989  				return &v.sizeCache
  5990  			case 2:
  5991  				return &v.unknownFields
  5992  			default:
  5993  				return nil
  5994  			}
  5995  		}
  5996  		file_envoy_api_v2_route_route_components_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
  5997  			switch v := v.(*Decorator); i {
  5998  			case 0:
  5999  				return &v.state
  6000  			case 1:
  6001  				return &v.sizeCache
  6002  			case 2:
  6003  				return &v.unknownFields
  6004  			default:
  6005  				return nil
  6006  			}
  6007  		}
  6008  		file_envoy_api_v2_route_route_components_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
  6009  			switch v := v.(*Tracing); i {
  6010  			case 0:
  6011  				return &v.state
  6012  			case 1:
  6013  				return &v.sizeCache
  6014  			case 2:
  6015  				return &v.unknownFields
  6016  			default:
  6017  				return nil
  6018  			}
  6019  		}
  6020  		file_envoy_api_v2_route_route_components_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
  6021  			switch v := v.(*VirtualCluster); i {
  6022  			case 0:
  6023  				return &v.state
  6024  			case 1:
  6025  				return &v.sizeCache
  6026  			case 2:
  6027  				return &v.unknownFields
  6028  			default:
  6029  				return nil
  6030  			}
  6031  		}
  6032  		file_envoy_api_v2_route_route_components_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
  6033  			switch v := v.(*RateLimit); i {
  6034  			case 0:
  6035  				return &v.state
  6036  			case 1:
  6037  				return &v.sizeCache
  6038  			case 2:
  6039  				return &v.unknownFields
  6040  			default:
  6041  				return nil
  6042  			}
  6043  		}
  6044  		file_envoy_api_v2_route_route_components_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
  6045  			switch v := v.(*HeaderMatcher); i {
  6046  			case 0:
  6047  				return &v.state
  6048  			case 1:
  6049  				return &v.sizeCache
  6050  			case 2:
  6051  				return &v.unknownFields
  6052  			default:
  6053  				return nil
  6054  			}
  6055  		}
  6056  		file_envoy_api_v2_route_route_components_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
  6057  			switch v := v.(*QueryParameterMatcher); i {
  6058  			case 0:
  6059  				return &v.state
  6060  			case 1:
  6061  				return &v.sizeCache
  6062  			case 2:
  6063  				return &v.unknownFields
  6064  			default:
  6065  				return nil
  6066  			}
  6067  		}
  6068  		file_envoy_api_v2_route_route_components_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
  6069  			switch v := v.(*WeightedCluster_ClusterWeight); i {
  6070  			case 0:
  6071  				return &v.state
  6072  			case 1:
  6073  				return &v.sizeCache
  6074  			case 2:
  6075  				return &v.unknownFields
  6076  			default:
  6077  				return nil
  6078  			}
  6079  		}
  6080  		file_envoy_api_v2_route_route_components_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
  6081  			switch v := v.(*RouteMatch_GrpcRouteMatchOptions); i {
  6082  			case 0:
  6083  				return &v.state
  6084  			case 1:
  6085  				return &v.sizeCache
  6086  			case 2:
  6087  				return &v.unknownFields
  6088  			default:
  6089  				return nil
  6090  			}
  6091  		}
  6092  		file_envoy_api_v2_route_route_components_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
  6093  			switch v := v.(*RouteMatch_TlsContextMatchOptions); i {
  6094  			case 0:
  6095  				return &v.state
  6096  			case 1:
  6097  				return &v.sizeCache
  6098  			case 2:
  6099  				return &v.unknownFields
  6100  			default:
  6101  				return nil
  6102  			}
  6103  		}
  6104  		file_envoy_api_v2_route_route_components_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
  6105  			switch v := v.(*RouteAction_RequestMirrorPolicy); i {
  6106  			case 0:
  6107  				return &v.state
  6108  			case 1:
  6109  				return &v.sizeCache
  6110  			case 2:
  6111  				return &v.unknownFields
  6112  			default:
  6113  				return nil
  6114  			}
  6115  		}
  6116  		file_envoy_api_v2_route_route_components_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
  6117  			switch v := v.(*RouteAction_HashPolicy); i {
  6118  			case 0:
  6119  				return &v.state
  6120  			case 1:
  6121  				return &v.sizeCache
  6122  			case 2:
  6123  				return &v.unknownFields
  6124  			default:
  6125  				return nil
  6126  			}
  6127  		}
  6128  		file_envoy_api_v2_route_route_components_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
  6129  			switch v := v.(*RouteAction_UpgradeConfig); i {
  6130  			case 0:
  6131  				return &v.state
  6132  			case 1:
  6133  				return &v.sizeCache
  6134  			case 2:
  6135  				return &v.unknownFields
  6136  			default:
  6137  				return nil
  6138  			}
  6139  		}
  6140  		file_envoy_api_v2_route_route_components_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
  6141  			switch v := v.(*RouteAction_HashPolicy_Header); i {
  6142  			case 0:
  6143  				return &v.state
  6144  			case 1:
  6145  				return &v.sizeCache
  6146  			case 2:
  6147  				return &v.unknownFields
  6148  			default:
  6149  				return nil
  6150  			}
  6151  		}
  6152  		file_envoy_api_v2_route_route_components_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
  6153  			switch v := v.(*RouteAction_HashPolicy_Cookie); i {
  6154  			case 0:
  6155  				return &v.state
  6156  			case 1:
  6157  				return &v.sizeCache
  6158  			case 2:
  6159  				return &v.unknownFields
  6160  			default:
  6161  				return nil
  6162  			}
  6163  		}
  6164  		file_envoy_api_v2_route_route_components_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
  6165  			switch v := v.(*RouteAction_HashPolicy_ConnectionProperties); i {
  6166  			case 0:
  6167  				return &v.state
  6168  			case 1:
  6169  				return &v.sizeCache
  6170  			case 2:
  6171  				return &v.unknownFields
  6172  			default:
  6173  				return nil
  6174  			}
  6175  		}
  6176  		file_envoy_api_v2_route_route_components_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
  6177  			switch v := v.(*RouteAction_HashPolicy_QueryParameter); i {
  6178  			case 0:
  6179  				return &v.state
  6180  			case 1:
  6181  				return &v.sizeCache
  6182  			case 2:
  6183  				return &v.unknownFields
  6184  			default:
  6185  				return nil
  6186  			}
  6187  		}
  6188  		file_envoy_api_v2_route_route_components_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
  6189  			switch v := v.(*RouteAction_HashPolicy_FilterState); i {
  6190  			case 0:
  6191  				return &v.state
  6192  			case 1:
  6193  				return &v.sizeCache
  6194  			case 2:
  6195  				return &v.unknownFields
  6196  			default:
  6197  				return nil
  6198  			}
  6199  		}
  6200  		file_envoy_api_v2_route_route_components_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
  6201  			switch v := v.(*RetryPolicy_RetryPriority); i {
  6202  			case 0:
  6203  				return &v.state
  6204  			case 1:
  6205  				return &v.sizeCache
  6206  			case 2:
  6207  				return &v.unknownFields
  6208  			default:
  6209  				return nil
  6210  			}
  6211  		}
  6212  		file_envoy_api_v2_route_route_components_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
  6213  			switch v := v.(*RetryPolicy_RetryHostPredicate); i {
  6214  			case 0:
  6215  				return &v.state
  6216  			case 1:
  6217  				return &v.sizeCache
  6218  			case 2:
  6219  				return &v.unknownFields
  6220  			default:
  6221  				return nil
  6222  			}
  6223  		}
  6224  		file_envoy_api_v2_route_route_components_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
  6225  			switch v := v.(*RetryPolicy_RetryBackOff); i {
  6226  			case 0:
  6227  				return &v.state
  6228  			case 1:
  6229  				return &v.sizeCache
  6230  			case 2:
  6231  				return &v.unknownFields
  6232  			default:
  6233  				return nil
  6234  			}
  6235  		}
  6236  		file_envoy_api_v2_route_route_components_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
  6237  			switch v := v.(*RateLimit_Action); i {
  6238  			case 0:
  6239  				return &v.state
  6240  			case 1:
  6241  				return &v.sizeCache
  6242  			case 2:
  6243  				return &v.unknownFields
  6244  			default:
  6245  				return nil
  6246  			}
  6247  		}
  6248  		file_envoy_api_v2_route_route_components_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
  6249  			switch v := v.(*RateLimit_Action_SourceCluster); i {
  6250  			case 0:
  6251  				return &v.state
  6252  			case 1:
  6253  				return &v.sizeCache
  6254  			case 2:
  6255  				return &v.unknownFields
  6256  			default:
  6257  				return nil
  6258  			}
  6259  		}
  6260  		file_envoy_api_v2_route_route_components_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
  6261  			switch v := v.(*RateLimit_Action_DestinationCluster); i {
  6262  			case 0:
  6263  				return &v.state
  6264  			case 1:
  6265  				return &v.sizeCache
  6266  			case 2:
  6267  				return &v.unknownFields
  6268  			default:
  6269  				return nil
  6270  			}
  6271  		}
  6272  		file_envoy_api_v2_route_route_components_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} {
  6273  			switch v := v.(*RateLimit_Action_RequestHeaders); i {
  6274  			case 0:
  6275  				return &v.state
  6276  			case 1:
  6277  				return &v.sizeCache
  6278  			case 2:
  6279  				return &v.unknownFields
  6280  			default:
  6281  				return nil
  6282  			}
  6283  		}
  6284  		file_envoy_api_v2_route_route_components_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} {
  6285  			switch v := v.(*RateLimit_Action_RemoteAddress); i {
  6286  			case 0:
  6287  				return &v.state
  6288  			case 1:
  6289  				return &v.sizeCache
  6290  			case 2:
  6291  				return &v.unknownFields
  6292  			default:
  6293  				return nil
  6294  			}
  6295  		}
  6296  		file_envoy_api_v2_route_route_components_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} {
  6297  			switch v := v.(*RateLimit_Action_GenericKey); i {
  6298  			case 0:
  6299  				return &v.state
  6300  			case 1:
  6301  				return &v.sizeCache
  6302  			case 2:
  6303  				return &v.unknownFields
  6304  			default:
  6305  				return nil
  6306  			}
  6307  		}
  6308  		file_envoy_api_v2_route_route_components_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} {
  6309  			switch v := v.(*RateLimit_Action_HeaderValueMatch); i {
  6310  			case 0:
  6311  				return &v.state
  6312  			case 1:
  6313  				return &v.sizeCache
  6314  			case 2:
  6315  				return &v.unknownFields
  6316  			default:
  6317  				return nil
  6318  			}
  6319  		}
  6320  	}
  6321  	file_envoy_api_v2_route_route_components_proto_msgTypes[2].OneofWrappers = []interface{}{
  6322  		(*Route_Route)(nil),
  6323  		(*Route_Redirect)(nil),
  6324  		(*Route_DirectResponse)(nil),
  6325  		(*Route_FilterAction)(nil),
  6326  	}
  6327  	file_envoy_api_v2_route_route_components_proto_msgTypes[4].OneofWrappers = []interface{}{
  6328  		(*RouteMatch_Prefix)(nil),
  6329  		(*RouteMatch_Path)(nil),
  6330  		(*RouteMatch_Regex)(nil),
  6331  		(*RouteMatch_SafeRegex)(nil),
  6332  	}
  6333  	file_envoy_api_v2_route_route_components_proto_msgTypes[5].OneofWrappers = []interface{}{
  6334  		(*CorsPolicy_Enabled)(nil),
  6335  		(*CorsPolicy_FilterEnabled)(nil),
  6336  	}
  6337  	file_envoy_api_v2_route_route_components_proto_msgTypes[6].OneofWrappers = []interface{}{
  6338  		(*RouteAction_Cluster)(nil),
  6339  		(*RouteAction_ClusterHeader)(nil),
  6340  		(*RouteAction_WeightedClusters)(nil),
  6341  		(*RouteAction_HostRewrite)(nil),
  6342  		(*RouteAction_AutoHostRewrite)(nil),
  6343  		(*RouteAction_AutoHostRewriteHeader)(nil),
  6344  	}
  6345  	file_envoy_api_v2_route_route_components_proto_msgTypes[9].OneofWrappers = []interface{}{
  6346  		(*RedirectAction_HttpsRedirect)(nil),
  6347  		(*RedirectAction_SchemeRedirect)(nil),
  6348  		(*RedirectAction_PathRedirect)(nil),
  6349  		(*RedirectAction_PrefixRewrite)(nil),
  6350  	}
  6351  	file_envoy_api_v2_route_route_components_proto_msgTypes[15].OneofWrappers = []interface{}{
  6352  		(*HeaderMatcher_ExactMatch)(nil),
  6353  		(*HeaderMatcher_RegexMatch)(nil),
  6354  		(*HeaderMatcher_SafeRegexMatch)(nil),
  6355  		(*HeaderMatcher_RangeMatch)(nil),
  6356  		(*HeaderMatcher_PresentMatch)(nil),
  6357  		(*HeaderMatcher_PrefixMatch)(nil),
  6358  		(*HeaderMatcher_SuffixMatch)(nil),
  6359  	}
  6360  	file_envoy_api_v2_route_route_components_proto_msgTypes[16].OneofWrappers = []interface{}{
  6361  		(*QueryParameterMatcher_StringMatch)(nil),
  6362  		(*QueryParameterMatcher_PresentMatch)(nil),
  6363  	}
  6364  	file_envoy_api_v2_route_route_components_proto_msgTypes[27].OneofWrappers = []interface{}{
  6365  		(*RouteAction_HashPolicy_Header_)(nil),
  6366  		(*RouteAction_HashPolicy_Cookie_)(nil),
  6367  		(*RouteAction_HashPolicy_ConnectionProperties_)(nil),
  6368  		(*RouteAction_HashPolicy_QueryParameter_)(nil),
  6369  		(*RouteAction_HashPolicy_FilterState_)(nil),
  6370  	}
  6371  	file_envoy_api_v2_route_route_components_proto_msgTypes[34].OneofWrappers = []interface{}{
  6372  		(*RetryPolicy_RetryPriority_Config)(nil),
  6373  		(*RetryPolicy_RetryPriority_TypedConfig)(nil),
  6374  	}
  6375  	file_envoy_api_v2_route_route_components_proto_msgTypes[35].OneofWrappers = []interface{}{
  6376  		(*RetryPolicy_RetryHostPredicate_Config)(nil),
  6377  		(*RetryPolicy_RetryHostPredicate_TypedConfig)(nil),
  6378  	}
  6379  	file_envoy_api_v2_route_route_components_proto_msgTypes[37].OneofWrappers = []interface{}{
  6380  		(*RateLimit_Action_SourceCluster_)(nil),
  6381  		(*RateLimit_Action_DestinationCluster_)(nil),
  6382  		(*RateLimit_Action_RequestHeaders_)(nil),
  6383  		(*RateLimit_Action_RemoteAddress_)(nil),
  6384  		(*RateLimit_Action_GenericKey_)(nil),
  6385  		(*RateLimit_Action_HeaderValueMatch_)(nil),
  6386  	}
  6387  	type x struct{}
  6388  	out := protoimpl.TypeBuilder{
  6389  		File: protoimpl.DescBuilder{
  6390  			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
  6391  			RawDescriptor: file_envoy_api_v2_route_route_components_proto_rawDesc,
  6392  			NumEnums:      4,
  6393  			NumMessages:   44,
  6394  			NumExtensions: 0,
  6395  			NumServices:   0,
  6396  		},
  6397  		GoTypes:           file_envoy_api_v2_route_route_components_proto_goTypes,
  6398  		DependencyIndexes: file_envoy_api_v2_route_route_components_proto_depIdxs,
  6399  		EnumInfos:         file_envoy_api_v2_route_route_components_proto_enumTypes,
  6400  		MessageInfos:      file_envoy_api_v2_route_route_components_proto_msgTypes,
  6401  	}.Build()
  6402  	File_envoy_api_v2_route_route_components_proto = out.File
  6403  	file_envoy_api_v2_route_route_components_proto_rawDesc = nil
  6404  	file_envoy_api_v2_route_route_components_proto_goTypes = nil
  6405  	file_envoy_api_v2_route_route_components_proto_depIdxs = nil
  6406  }