// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.34.2
// 	protoc        v3.21.12
// source: yandex/cloud/apploadbalancer/v1/virtual_host.proto

package apploadbalancer

import (
	_ "github.com/yandex-cloud/go-genproto/yandex/cloud"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	durationpb "google.golang.org/protobuf/types/known/durationpb"
	reflect "reflect"
	sync "sync"
)

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

type RBAC_Action int32

const (
	RBAC_ACTION_UNSPECIFIED RBAC_Action = 0
	// Allows the request if and only if there is a principal that matches the request.
	RBAC_ALLOW RBAC_Action = 1
	// Allows the request if and only if there are no principal that match the request.
	RBAC_DENY RBAC_Action = 2
)

// Enum value maps for RBAC_Action.
var (
	RBAC_Action_name = map[int32]string{
		0: "ACTION_UNSPECIFIED",
		1: "ALLOW",
		2: "DENY",
	}
	RBAC_Action_value = map[string]int32{
		"ACTION_UNSPECIFIED": 0,
		"ALLOW":              1,
		"DENY":               2,
	}
)

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

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

func (RBAC_Action) Descriptor() protoreflect.EnumDescriptor {
	return file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_enumTypes[0].Descriptor()
}

func (RBAC_Action) Type() protoreflect.EnumType {
	return &file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_enumTypes[0]
}

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

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

// HTTP status codes supported for use in redirect responses.
type RedirectAction_RedirectResponseCode int32

const (
	// `301 Moved Permanently` status code.
	RedirectAction_MOVED_PERMANENTLY RedirectAction_RedirectResponseCode = 0
	// `302 Found` status code.
	RedirectAction_FOUND RedirectAction_RedirectResponseCode = 1
	// `303 See Other` status code.
	RedirectAction_SEE_OTHER RedirectAction_RedirectResponseCode = 2
	// `307 Temporary Redirect` status code.
	RedirectAction_TEMPORARY_REDIRECT RedirectAction_RedirectResponseCode = 3
	// `308 Permanent Redirect` status code.
	RedirectAction_PERMANENT_REDIRECT RedirectAction_RedirectResponseCode = 4
)

// Enum value maps for RedirectAction_RedirectResponseCode.
var (
	RedirectAction_RedirectResponseCode_name = map[int32]string{
		0: "MOVED_PERMANENTLY",
		1: "FOUND",
		2: "SEE_OTHER",
		3: "TEMPORARY_REDIRECT",
		4: "PERMANENT_REDIRECT",
	}
	RedirectAction_RedirectResponseCode_value = map[string]int32{
		"MOVED_PERMANENTLY":  0,
		"FOUND":              1,
		"SEE_OTHER":          2,
		"TEMPORARY_REDIRECT": 3,
		"PERMANENT_REDIRECT": 4,
	}
)

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

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

func (RedirectAction_RedirectResponseCode) Descriptor() protoreflect.EnumDescriptor {
	return file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_enumTypes[1].Descriptor()
}

func (RedirectAction_RedirectResponseCode) Type() protoreflect.EnumType {
	return &file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_enumTypes[1]
}

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

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

// gRPC status code supported for use in responses.
type GrpcStatusResponseAction_Status int32

const (
	// `OK` (0) status code.
	GrpcStatusResponseAction_OK GrpcStatusResponseAction_Status = 0
	// `INVALID_ARGUMENT` (3) status code.
	GrpcStatusResponseAction_INVALID_ARGUMENT GrpcStatusResponseAction_Status = 1
	// `NOT_FOUND` (5) status code.
	GrpcStatusResponseAction_NOT_FOUND GrpcStatusResponseAction_Status = 2
	// `PERMISSION_DENIED` (7) status code.
	GrpcStatusResponseAction_PERMISSION_DENIED GrpcStatusResponseAction_Status = 3
	// `UNAUTHENTICATED` (16) status code.
	GrpcStatusResponseAction_UNAUTHENTICATED GrpcStatusResponseAction_Status = 4
	// `UNIMPLEMENTED` (12) status code.
	GrpcStatusResponseAction_UNIMPLEMENTED GrpcStatusResponseAction_Status = 5
	// `INTERNAL` (13) status code.
	GrpcStatusResponseAction_INTERNAL GrpcStatusResponseAction_Status = 6
	// `UNAVAILABLE` (14) status code.
	GrpcStatusResponseAction_UNAVAILABLE GrpcStatusResponseAction_Status = 7
)

// Enum value maps for GrpcStatusResponseAction_Status.
var (
	GrpcStatusResponseAction_Status_name = map[int32]string{
		0: "OK",
		1: "INVALID_ARGUMENT",
		2: "NOT_FOUND",
		3: "PERMISSION_DENIED",
		4: "UNAUTHENTICATED",
		5: "UNIMPLEMENTED",
		6: "INTERNAL",
		7: "UNAVAILABLE",
	}
	GrpcStatusResponseAction_Status_value = map[string]int32{
		"OK":                0,
		"INVALID_ARGUMENT":  1,
		"NOT_FOUND":         2,
		"PERMISSION_DENIED": 3,
		"UNAUTHENTICATED":   4,
		"UNIMPLEMENTED":     5,
		"INTERNAL":          6,
		"UNAVAILABLE":       7,
	}
)

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

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

func (GrpcStatusResponseAction_Status) Descriptor() protoreflect.EnumDescriptor {
	return file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_enumTypes[2].Descriptor()
}

func (GrpcStatusResponseAction_Status) Type() protoreflect.EnumType {
	return &file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_enumTypes[2]
}

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

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

// A virtual host resource.
// For details about the concept, see [documentation](/docs/application-load-balancer/concepts/http-router#virtual-host).
type VirtualHost struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Name of the virtual host. The name is unique within the HTTP router.
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// List of domains that are attributed to the virtual host.
	//
	// The host is selected to process the request received by the load balancer
	// if the domain specified in the HTTP/1.1 `Host` header or the HTTP/2 `:authority` pseudo-header matches a domain
	// specified in the host.
	//
	// A wildcard asterisk character (`*`) matches 0 or more characters.
	//
	// If not specified, all domains are attributed to the host, which is the same as specifying a `*` value.
	// An HTTP router must not contain more than one virtual host to which all domains are attributed.
	Authority []string `protobuf:"bytes,2,rep,name=authority,proto3" json:"authority,omitempty"`
	// Routes of the virtual host.
	//
	// A route contains a set of conditions (predicates) that are used by the load balancer to select the route
	// for the request and an action on the request.
	// For details about the concept, see [documentation](/docs/application-load-balancer/concepts/http-router#routes).
	//
	// The order of routes matters: the first route whose predicate matches the request is selected.
	// The most specific routes should be at the top of the list, so that they are not overridden.
	// For example, if the first HTTP route is configured, via [HttpRoute.match], to match paths prefixed with just `/`,
	// other routes are never matched.
	Routes []*Route `protobuf:"bytes,3,rep,name=routes,proto3" json:"routes,omitempty"`
	// Deprecated, use route_options.modify_request_headers.
	ModifyRequestHeaders []*HeaderModification `protobuf:"bytes,4,rep,name=modify_request_headers,json=modifyRequestHeaders,proto3" json:"modify_request_headers,omitempty"`
	// Deprecated, use route_options.modify_response_headers.
	ModifyResponseHeaders []*HeaderModification `protobuf:"bytes,5,rep,name=modify_response_headers,json=modifyResponseHeaders,proto3" json:"modify_response_headers,omitempty"`
	RouteOptions          *RouteOptions         `protobuf:"bytes,6,opt,name=route_options,json=routeOptions,proto3" json:"route_options,omitempty"`
	// RateLimit is a rate limit configuration applied for a whole virtual host.
	RateLimit *RateLimit `protobuf:"bytes,7,opt,name=rate_limit,json=rateLimit,proto3" json:"rate_limit,omitempty"`
}

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

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

func (*VirtualHost) ProtoMessage() {}

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

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

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

func (x *VirtualHost) GetAuthority() []string {
	if x != nil {
		return x.Authority
	}
	return nil
}

func (x *VirtualHost) GetRoutes() []*Route {
	if x != nil {
		return x.Routes
	}
	return nil
}

func (x *VirtualHost) GetModifyRequestHeaders() []*HeaderModification {
	if x != nil {
		return x.ModifyRequestHeaders
	}
	return nil
}

func (x *VirtualHost) GetModifyResponseHeaders() []*HeaderModification {
	if x != nil {
		return x.ModifyResponseHeaders
	}
	return nil
}

func (x *VirtualHost) GetRouteOptions() *RouteOptions {
	if x != nil {
		return x.RouteOptions
	}
	return nil
}

func (x *VirtualHost) GetRateLimit() *RateLimit {
	if x != nil {
		return x.RateLimit
	}
	return nil
}

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

	// Apply the following modifications to the request headers.
	ModifyRequestHeaders []*HeaderModification `protobuf:"bytes,1,rep,name=modify_request_headers,json=modifyRequestHeaders,proto3" json:"modify_request_headers,omitempty"`
	// Apply the following modifications to the response headers.
	ModifyResponseHeaders []*HeaderModification `protobuf:"bytes,2,rep,name=modify_response_headers,json=modifyResponseHeaders,proto3" json:"modify_response_headers,omitempty"`
	Rbac                  *RBAC                 `protobuf:"bytes,3,opt,name=rbac,proto3" json:"rbac,omitempty"`
	// Security profile that will take effect to all requests routed via particular virtual host.
	SecurityProfileId string `protobuf:"bytes,4,opt,name=security_profile_id,json=securityProfileId,proto3" json:"security_profile_id,omitempty"`
}

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

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

func (*RouteOptions) ProtoMessage() {}

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

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

func (x *RouteOptions) GetModifyRequestHeaders() []*HeaderModification {
	if x != nil {
		return x.ModifyRequestHeaders
	}
	return nil
}

func (x *RouteOptions) GetModifyResponseHeaders() []*HeaderModification {
	if x != nil {
		return x.ModifyResponseHeaders
	}
	return nil
}

func (x *RouteOptions) GetRbac() *RBAC {
	if x != nil {
		return x.Rbac
	}
	return nil
}

func (x *RouteOptions) GetSecurityProfileId() string {
	if x != nil {
		return x.SecurityProfileId
	}
	return ""
}

// Role Based Access Control (RBAC) provides router, virtual host, and route access control for the ALB
// service. Requests are allowed or denied based on the `action` and whether a matching principal is
// found. For instance, if the action is ALLOW and a matching principal is found the request should be
// allowed.
type RBAC struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The action to take if a principal matches. Every action either allows or denies a request.
	Action RBAC_Action `protobuf:"varint,1,opt,name=action,proto3,enum=yandex.cloud.apploadbalancer.v1.RBAC_Action" json:"action,omitempty"`
	// Required. A match occurs when at least one matches the request.
	Principals []*Principals `protobuf:"bytes,2,rep,name=principals,proto3" json:"principals,omitempty"`
}

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

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

func (*RBAC) ProtoMessage() {}

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

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

func (x *RBAC) GetAction() RBAC_Action {
	if x != nil {
		return x.Action
	}
	return RBAC_ACTION_UNSPECIFIED
}

func (x *RBAC) GetPrincipals() []*Principals {
	if x != nil {
		return x.Principals
	}
	return nil
}

// Principals define a group of identities for a request.
type Principals struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. A match occurs when all principals match the request.
	AndPrincipals []*Principal `protobuf:"bytes,1,rep,name=and_principals,json=andPrincipals,proto3" json:"and_principals,omitempty"`
}

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

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

func (*Principals) ProtoMessage() {}

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

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

func (x *Principals) GetAndPrincipals() []*Principal {
	if x != nil {
		return x.AndPrincipals
	}
	return nil
}

// Principal defines an identity for a request.
type Principal struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to Identifier:
	//
	//	*Principal_Header
	//	*Principal_RemoteIp
	//	*Principal_Any
	Identifier isPrincipal_Identifier `protobuf_oneof:"identifier"`
}

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

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

func (*Principal) ProtoMessage() {}

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

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

func (m *Principal) GetIdentifier() isPrincipal_Identifier {
	if m != nil {
		return m.Identifier
	}
	return nil
}

func (x *Principal) GetHeader() *Principal_HeaderMatcher {
	if x, ok := x.GetIdentifier().(*Principal_Header); ok {
		return x.Header
	}
	return nil
}

func (x *Principal) GetRemoteIp() string {
	if x, ok := x.GetIdentifier().(*Principal_RemoteIp); ok {
		return x.RemoteIp
	}
	return ""
}

func (x *Principal) GetAny() bool {
	if x, ok := x.GetIdentifier().(*Principal_Any); ok {
		return x.Any
	}
	return false
}

type isPrincipal_Identifier interface {
	isPrincipal_Identifier()
}

type Principal_Header struct {
	// A header (or pseudo-header such as :path or :method) of the incoming HTTP request.
	Header *Principal_HeaderMatcher `protobuf:"bytes,1,opt,name=header,proto3,oneof"`
}

type Principal_RemoteIp struct {
	// A CIDR block or IP that describes the request remote/origin address, e.g. “192.0.0.0/24“ or“192.0.0.4“ .
	RemoteIp string `protobuf:"bytes,2,opt,name=remote_ip,json=remoteIp,proto3,oneof"`
}

type Principal_Any struct {
	// When any is set, it matches any request.
	Any bool `protobuf:"varint,3,opt,name=any,proto3,oneof"`
}

func (*Principal_Header) isPrincipal_Identifier() {}

func (*Principal_RemoteIp) isPrincipal_Identifier() {}

func (*Principal_Any) isPrincipal_Identifier() {}

// A header modification resource.
type HeaderModification struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Name of the header.
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Operation to perform on the header.
	//
	// Types that are assignable to Operation:
	//
	//	*HeaderModification_Append
	//	*HeaderModification_Replace
	//	*HeaderModification_Remove
	//	*HeaderModification_Rename
	Operation isHeaderModification_Operation `protobuf_oneof:"operation"`
}

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

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

func (*HeaderModification) ProtoMessage() {}

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

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

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

func (m *HeaderModification) GetOperation() isHeaderModification_Operation {
	if m != nil {
		return m.Operation
	}
	return nil
}

func (x *HeaderModification) GetAppend() string {
	if x, ok := x.GetOperation().(*HeaderModification_Append); ok {
		return x.Append
	}
	return ""
}

func (x *HeaderModification) GetReplace() string {
	if x, ok := x.GetOperation().(*HeaderModification_Replace); ok {
		return x.Replace
	}
	return ""
}

func (x *HeaderModification) GetRemove() bool {
	if x, ok := x.GetOperation().(*HeaderModification_Remove); ok {
		return x.Remove
	}
	return false
}

func (x *HeaderModification) GetRename() string {
	if x, ok := x.GetOperation().(*HeaderModification_Rename); ok {
		return x.Rename
	}
	return ""
}

type isHeaderModification_Operation interface {
	isHeaderModification_Operation()
}

type HeaderModification_Append struct {
	// Appends the specified string to the header value.
	//
	// Variables [defined for Envoy proxy](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_conn_man/headers#custom-request-response-headers)
	// are supported.
	Append string `protobuf:"bytes,2,opt,name=append,proto3,oneof"`
}

type HeaderModification_Replace struct {
	// Replaces the value of the header with the specified string.
	//
	// Variables [defined for Envoy proxy](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_conn_man/headers#custom-request-response-headers)
	// are supported.
	Replace string `protobuf:"bytes,3,opt,name=replace,proto3,oneof"`
}

type HeaderModification_Remove struct {
	// Removes the header.
	Remove bool `protobuf:"varint,4,opt,name=remove,proto3,oneof"`
}

type HeaderModification_Rename struct {
	// Replaces the name of the header with the specified string.
	// This operation is only supported for ALB Virtual Hosts.
	Rename string `protobuf:"bytes,5,opt,name=rename,proto3,oneof"`
}

func (*HeaderModification_Append) isHeaderModification_Operation() {}

func (*HeaderModification_Replace) isHeaderModification_Operation() {}

func (*HeaderModification_Remove) isHeaderModification_Operation() {}

func (*HeaderModification_Rename) isHeaderModification_Operation() {}

// A route resource.
// For details about the concept, see [documentation](/docs/application-load-balancer/concepts/http-router#routes).
type Route struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Name of the route.
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Route configuration.
	//
	// Types that are assignable to Route:
	//
	//	*Route_Http
	//	*Route_Grpc
	Route        isRoute_Route `protobuf_oneof:"route"`
	RouteOptions *RouteOptions `protobuf:"bytes,4,opt,name=route_options,json=routeOptions,proto3" json:"route_options,omitempty"`
}

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

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

func (*Route) ProtoMessage() {}

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

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

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

func (m *Route) GetRoute() isRoute_Route {
	if m != nil {
		return m.Route
	}
	return nil
}

func (x *Route) GetHttp() *HttpRoute {
	if x, ok := x.GetRoute().(*Route_Http); ok {
		return x.Http
	}
	return nil
}

func (x *Route) GetGrpc() *GrpcRoute {
	if x, ok := x.GetRoute().(*Route_Grpc); ok {
		return x.Grpc
	}
	return nil
}

func (x *Route) GetRouteOptions() *RouteOptions {
	if x != nil {
		return x.RouteOptions
	}
	return nil
}

type isRoute_Route interface {
	isRoute_Route()
}

type Route_Http struct {
	// HTTP route configuration.
	Http *HttpRoute `protobuf:"bytes,2,opt,name=http,proto3,oneof"`
}

type Route_Grpc struct {
	// gRPC route configuration.
	Grpc *GrpcRoute `protobuf:"bytes,3,opt,name=grpc,proto3,oneof"`
}

func (*Route_Http) isRoute_Route() {}

func (*Route_Grpc) isRoute_Route() {}

// An HTTP route configuration resource.
type HttpRoute struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Condition (predicate) used to select the route.
	Match *HttpRouteMatch `protobuf:"bytes,1,opt,name=match,proto3" json:"match,omitempty"`
	// Action performed on the request if the route is selected.
	//
	// Types that are assignable to Action:
	//
	//	*HttpRoute_Route
	//	*HttpRoute_Redirect
	//	*HttpRoute_DirectResponse
	Action isHttpRoute_Action `protobuf_oneof:"action"`
}

func (x *HttpRoute) Reset() {
	*x = HttpRoute{}
	if protoimpl.UnsafeEnabled {
		mi := &file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_msgTypes[7]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*HttpRoute) ProtoMessage() {}

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

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

func (x *HttpRoute) GetMatch() *HttpRouteMatch {
	if x != nil {
		return x.Match
	}
	return nil
}

func (m *HttpRoute) GetAction() isHttpRoute_Action {
	if m != nil {
		return m.Action
	}
	return nil
}

func (x *HttpRoute) GetRoute() *HttpRouteAction {
	if x, ok := x.GetAction().(*HttpRoute_Route); ok {
		return x.Route
	}
	return nil
}

func (x *HttpRoute) GetRedirect() *RedirectAction {
	if x, ok := x.GetAction().(*HttpRoute_Redirect); ok {
		return x.Redirect
	}
	return nil
}

func (x *HttpRoute) GetDirectResponse() *DirectResponseAction {
	if x, ok := x.GetAction().(*HttpRoute_DirectResponse); ok {
		return x.DirectResponse
	}
	return nil
}

type isHttpRoute_Action interface {
	isHttpRoute_Action()
}

type HttpRoute_Route struct {
	// Forwards the request to a backend group for processing as configured.
	Route *HttpRouteAction `protobuf:"bytes,2,opt,name=route,proto3,oneof"`
}

type HttpRoute_Redirect struct {
	// Redirects the request as configured.
	Redirect *RedirectAction `protobuf:"bytes,3,opt,name=redirect,proto3,oneof"`
}

type HttpRoute_DirectResponse struct {
	// Instructs the load balancer to respond directly as configured.
	DirectResponse *DirectResponseAction `protobuf:"bytes,4,opt,name=direct_response,json=directResponse,proto3,oneof"`
}

func (*HttpRoute_Route) isHttpRoute_Action() {}

func (*HttpRoute_Redirect) isHttpRoute_Action() {}

func (*HttpRoute_DirectResponse) isHttpRoute_Action() {}

// A gRPC route configuration resource.
type GrpcRoute struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Condition (predicate) used to select the route.
	Match *GrpcRouteMatch `protobuf:"bytes,1,opt,name=match,proto3" json:"match,omitempty"`
	// Action performed on the request if the route is selected.
	//
	// Types that are assignable to Action:
	//
	//	*GrpcRoute_Route
	//	*GrpcRoute_StatusResponse
	Action isGrpcRoute_Action `protobuf_oneof:"action"`
}

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

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

func (*GrpcRoute) ProtoMessage() {}

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

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

func (x *GrpcRoute) GetMatch() *GrpcRouteMatch {
	if x != nil {
		return x.Match
	}
	return nil
}

func (m *GrpcRoute) GetAction() isGrpcRoute_Action {
	if m != nil {
		return m.Action
	}
	return nil
}

func (x *GrpcRoute) GetRoute() *GrpcRouteAction {
	if x, ok := x.GetAction().(*GrpcRoute_Route); ok {
		return x.Route
	}
	return nil
}

func (x *GrpcRoute) GetStatusResponse() *GrpcStatusResponseAction {
	if x, ok := x.GetAction().(*GrpcRoute_StatusResponse); ok {
		return x.StatusResponse
	}
	return nil
}

type isGrpcRoute_Action interface {
	isGrpcRoute_Action()
}

type GrpcRoute_Route struct {
	// Forwards the request to a backend group for processing as configured.
	Route *GrpcRouteAction `protobuf:"bytes,2,opt,name=route,proto3,oneof"`
}

type GrpcRoute_StatusResponse struct {
	// Instructs the load balancer to respond directly with a specified status.
	StatusResponse *GrpcStatusResponseAction `protobuf:"bytes,3,opt,name=status_response,json=statusResponse,proto3,oneof"`
}

func (*GrpcRoute_Route) isGrpcRoute_Action() {}

func (*GrpcRoute_StatusResponse) isGrpcRoute_Action() {}

// An HTTP route condition (predicate) resource.
type HttpRouteMatch struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// HTTP method specified in the request.
	HttpMethod []string `protobuf:"bytes,1,rep,name=http_method,json=httpMethod,proto3" json:"http_method,omitempty"`
	// Match settings for the path specified in the request.
	//
	// If not specified, the route matches all paths.
	Path *StringMatch `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"`
}

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

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

func (*HttpRouteMatch) ProtoMessage() {}

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

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

func (x *HttpRouteMatch) GetHttpMethod() []string {
	if x != nil {
		return x.HttpMethod
	}
	return nil
}

func (x *HttpRouteMatch) GetPath() *StringMatch {
	if x != nil {
		return x.Path
	}
	return nil
}

// A gRPC route condition (predicate) resource.
type GrpcRouteMatch struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Match settings for gRPC service method called in the request.
	//
	// A match string must be a fully qualified method name, e.g. `foo.bar.v1.BazService/Get`, or a prefix of such.
	//
	// If not specified, the route matches all methods.
	Fqmn *StringMatch `protobuf:"bytes,1,opt,name=fqmn,proto3" json:"fqmn,omitempty"`
}

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

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

func (*GrpcRouteMatch) ProtoMessage() {}

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

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

func (x *GrpcRouteMatch) GetFqmn() *StringMatch {
	if x != nil {
		return x.Fqmn
	}
	return nil
}

// A string matcher resource.
type StringMatch struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Match string for either exact or prefix match.
	//
	// Types that are assignable to Match:
	//
	//	*StringMatch_ExactMatch
	//	*StringMatch_PrefixMatch
	//	*StringMatch_RegexMatch
	Match isStringMatch_Match `protobuf_oneof:"match"`
}

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

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

func (*StringMatch) ProtoMessage() {}

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

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

func (m *StringMatch) GetMatch() isStringMatch_Match {
	if m != nil {
		return m.Match
	}
	return nil
}

func (x *StringMatch) GetExactMatch() string {
	if x, ok := x.GetMatch().(*StringMatch_ExactMatch); ok {
		return x.ExactMatch
	}
	return ""
}

func (x *StringMatch) GetPrefixMatch() string {
	if x, ok := x.GetMatch().(*StringMatch_PrefixMatch); ok {
		return x.PrefixMatch
	}
	return ""
}

func (x *StringMatch) GetRegexMatch() string {
	if x, ok := x.GetMatch().(*StringMatch_RegexMatch); ok {
		return x.RegexMatch
	}
	return ""
}

type isStringMatch_Match interface {
	isStringMatch_Match()
}

type StringMatch_ExactMatch struct {
	// Exact match string.
	ExactMatch string `protobuf:"bytes,1,opt,name=exact_match,json=exactMatch,proto3,oneof"`
}

type StringMatch_PrefixMatch struct {
	// Prefix match string.
	PrefixMatch string `protobuf:"bytes,2,opt,name=prefix_match,json=prefixMatch,proto3,oneof"`
}

type StringMatch_RegexMatch struct {
	// Regular expression match string.
	RegexMatch string `protobuf:"bytes,3,opt,name=regex_match,json=regexMatch,proto3,oneof"`
}

func (*StringMatch_ExactMatch) isStringMatch_Match() {}

func (*StringMatch_PrefixMatch) isStringMatch_Match() {}

func (*StringMatch_RegexMatch) isStringMatch_Match() {}

// A redirect action resource.
type RedirectAction struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// URI scheme replacement.
	//
	// If `http` or `https` scheme is to be replaced and `80` or `443` port is specified in the original URI,
	// the port is also removed.
	//
	// If not specified, the original scheme and port are used.
	ReplaceScheme string `protobuf:"bytes,1,opt,name=replace_scheme,json=replaceScheme,proto3" json:"replace_scheme,omitempty"`
	// URI host replacement.
	//
	// If not specified, the original host is used.
	ReplaceHost string `protobuf:"bytes,2,opt,name=replace_host,json=replaceHost,proto3" json:"replace_host,omitempty"`
	// URI host replacement.
	//
	// If not specified, the original host is used.
	ReplacePort int64 `protobuf:"varint,3,opt,name=replace_port,json=replacePort,proto3" json:"replace_port,omitempty"`
	// URI path replacement.
	//
	// If not specified, the original path is used.
	//
	// Types that are assignable to Path:
	//
	//	*RedirectAction_ReplacePath
	//	*RedirectAction_ReplacePrefix
	Path isRedirectAction_Path `protobuf_oneof:"path"`
	// Removes URI query.
	RemoveQuery bool `protobuf:"varint,6,opt,name=remove_query,json=removeQuery,proto3" json:"remove_query,omitempty"`
	// HTTP status code to use in redirect responses.
	ResponseCode RedirectAction_RedirectResponseCode `protobuf:"varint,7,opt,name=response_code,json=responseCode,proto3,enum=yandex.cloud.apploadbalancer.v1.RedirectAction_RedirectResponseCode" json:"response_code,omitempty"`
}

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

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

func (*RedirectAction) ProtoMessage() {}

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

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

func (x *RedirectAction) GetReplaceScheme() string {
	if x != nil {
		return x.ReplaceScheme
	}
	return ""
}

func (x *RedirectAction) GetReplaceHost() string {
	if x != nil {
		return x.ReplaceHost
	}
	return ""
}

func (x *RedirectAction) GetReplacePort() int64 {
	if x != nil {
		return x.ReplacePort
	}
	return 0
}

func (m *RedirectAction) GetPath() isRedirectAction_Path {
	if m != nil {
		return m.Path
	}
	return nil
}

func (x *RedirectAction) GetReplacePath() string {
	if x, ok := x.GetPath().(*RedirectAction_ReplacePath); ok {
		return x.ReplacePath
	}
	return ""
}

func (x *RedirectAction) GetReplacePrefix() string {
	if x, ok := x.GetPath().(*RedirectAction_ReplacePrefix); ok {
		return x.ReplacePrefix
	}
	return ""
}

func (x *RedirectAction) GetRemoveQuery() bool {
	if x != nil {
		return x.RemoveQuery
	}
	return false
}

func (x *RedirectAction) GetResponseCode() RedirectAction_RedirectResponseCode {
	if x != nil {
		return x.ResponseCode
	}
	return RedirectAction_MOVED_PERMANENTLY
}

type isRedirectAction_Path interface {
	isRedirectAction_Path()
}

type RedirectAction_ReplacePath struct {
	// Replacement for the whole path.
	ReplacePath string `protobuf:"bytes,4,opt,name=replace_path,json=replacePath,proto3,oneof"`
}

type RedirectAction_ReplacePrefix struct {
	// Replacement for the path prefix matched by [StringMatch].
	//
	// For instance, if [StringMatch.prefix_match] value is `/foo` and `replace_prefix` value is `/bar`,
	// a request with `https://example.com/foobaz` URI is redirected to `https://example.com/barbaz`.
	// For [StringMatch.exact_match], the whole path is replaced.
	ReplacePrefix string `protobuf:"bytes,5,opt,name=replace_prefix,json=replacePrefix,proto3,oneof"`
}

func (*RedirectAction_ReplacePath) isRedirectAction_Path() {}

func (*RedirectAction_ReplacePrefix) isRedirectAction_Path() {}

// A direct response action resource.
type DirectResponseAction struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// HTTP status code to use in responses.
	Status int64 `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"`
	// Response body.
	Body *Payload `protobuf:"bytes,2,opt,name=body,proto3" json:"body,omitempty"`
}

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

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

func (*DirectResponseAction) ProtoMessage() {}

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

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

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

func (x *DirectResponseAction) GetBody() *Payload {
	if x != nil {
		return x.Body
	}
	return nil
}

// A gRPC status response action resource.
type GrpcStatusResponseAction struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// gRPC [status code](https://grpc.github.io/grpc/core/md_doc_statuscodes.html) to use in responses.
	Status GrpcStatusResponseAction_Status `protobuf:"varint,1,opt,name=status,proto3,enum=yandex.cloud.apploadbalancer.v1.GrpcStatusResponseAction_Status" json:"status,omitempty"`
}

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

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

func (*GrpcStatusResponseAction) ProtoMessage() {}

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

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

func (x *GrpcStatusResponseAction) GetStatus() GrpcStatusResponseAction_Status {
	if x != nil {
		return x.Status
	}
	return GrpcStatusResponseAction_OK
}

// An HTTP route action resource.
type HttpRouteAction struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Backend group to forward requests to.
	//
	// Stream (TCP) backend groups are not supported.
	BackendGroupId string `protobuf:"bytes,1,opt,name=backend_group_id,json=backendGroupId,proto3" json:"backend_group_id,omitempty"`
	// Overall timeout for an HTTP connection between a load balancer node an a backend from the backend group:
	// the maximum time the connection is kept alive for, regardless of whether data is transferred over it.
	//
	// If a connection times out, the load balancer responds to the client with a `504 Gateway Timeout` status code.
	//
	// Default value: `60`.
	Timeout *durationpb.Duration `protobuf:"bytes,2,opt,name=timeout,proto3" json:"timeout,omitempty"`
	// Idle timeout for an HTTP connection between a load balancer node an a backend from the backend group:
	// the maximum time the connection is allowed to be idle, i.e. without any data transferred over it.
	//
	// Specifying meaningful values for both [timeout] and `idle_timeout` is useful for implementing
	// server-push mechanisms such as long polling, server-sent events (`EventSource` interface) etc.
	//
	// If a connection times out, the load balancer responds to the client with a `504 Gateway Timeout` status code.
	//
	// If not specified, no idle timeout is used, and an alive connection may be idle for any duration (see [timeout]).
	IdleTimeout *durationpb.Duration `protobuf:"bytes,3,opt,name=idle_timeout,json=idleTimeout,proto3" json:"idle_timeout,omitempty"`
	// Value rewrite settings for HTTP/1.1 `Host` headers and HTTP/2 `:authority` pseudo-headers.
	//
	// If not specified, the host is not changed.
	//
	// Types that are assignable to HostRewriteSpecifier:
	//
	//	*HttpRouteAction_HostRewrite
	//	*HttpRouteAction_AutoHostRewrite
	HostRewriteSpecifier isHttpRouteAction_HostRewriteSpecifier `protobuf_oneof:"host_rewrite_specifier"`
	// Replacement for the path prefix matched by [StringMatch].
	//
	// For instance, if [StringMatch.prefix_match] value is `/foo` and `prefix_rewrite` value is `/bar`,
	// a request with `/foobaz` path is forwarded with `/barbaz` path.
	// For [StringMatch.exact_match], the whole path is replaced.
	//
	// If not specified, the path is not changed.
	PrefixRewrite string `protobuf:"bytes,6,opt,name=prefix_rewrite,json=prefixRewrite,proto3" json:"prefix_rewrite,omitempty"`
	// Supported values for HTTP `Upgrade` header. E.g. `websocket`.
	UpgradeTypes []string `protobuf:"bytes,7,rep,name=upgrade_types,json=upgradeTypes,proto3" json:"upgrade_types,omitempty"`
	// RateLimit is a rate limit configuration applied for route.
	RateLimit *RateLimit `protobuf:"bytes,8,opt,name=rate_limit,json=rateLimit,proto3" json:"rate_limit,omitempty"`
}

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

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

func (*HttpRouteAction) ProtoMessage() {}

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

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

func (x *HttpRouteAction) GetBackendGroupId() string {
	if x != nil {
		return x.BackendGroupId
	}
	return ""
}

func (x *HttpRouteAction) GetTimeout() *durationpb.Duration {
	if x != nil {
		return x.Timeout
	}
	return nil
}

func (x *HttpRouteAction) GetIdleTimeout() *durationpb.Duration {
	if x != nil {
		return x.IdleTimeout
	}
	return nil
}

func (m *HttpRouteAction) GetHostRewriteSpecifier() isHttpRouteAction_HostRewriteSpecifier {
	if m != nil {
		return m.HostRewriteSpecifier
	}
	return nil
}

func (x *HttpRouteAction) GetHostRewrite() string {
	if x, ok := x.GetHostRewriteSpecifier().(*HttpRouteAction_HostRewrite); ok {
		return x.HostRewrite
	}
	return ""
}

func (x *HttpRouteAction) GetAutoHostRewrite() bool {
	if x, ok := x.GetHostRewriteSpecifier().(*HttpRouteAction_AutoHostRewrite); ok {
		return x.AutoHostRewrite
	}
	return false
}

func (x *HttpRouteAction) GetPrefixRewrite() string {
	if x != nil {
		return x.PrefixRewrite
	}
	return ""
}

func (x *HttpRouteAction) GetUpgradeTypes() []string {
	if x != nil {
		return x.UpgradeTypes
	}
	return nil
}

func (x *HttpRouteAction) GetRateLimit() *RateLimit {
	if x != nil {
		return x.RateLimit
	}
	return nil
}

type isHttpRouteAction_HostRewriteSpecifier interface {
	isHttpRouteAction_HostRewriteSpecifier()
}

type HttpRouteAction_HostRewrite struct {
	// Host replacement.
	HostRewrite string `protobuf:"bytes,4,opt,name=host_rewrite,json=hostRewrite,proto3,oneof"`
}

type HttpRouteAction_AutoHostRewrite struct {
	// Automatically replaces the host with that of the target.
	AutoHostRewrite bool `protobuf:"varint,5,opt,name=auto_host_rewrite,json=autoHostRewrite,proto3,oneof"`
}

func (*HttpRouteAction_HostRewrite) isHttpRouteAction_HostRewriteSpecifier() {}

func (*HttpRouteAction_AutoHostRewrite) isHttpRouteAction_HostRewriteSpecifier() {}

// A gRPC route action resource.
type GrpcRouteAction struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Backend group to forward requests to.
	BackendGroupId string `protobuf:"bytes,1,opt,name=backend_group_id,json=backendGroupId,proto3" json:"backend_group_id,omitempty"`
	// Overall timeout for an underlying HTTP connection between a load balancer node an a backend from the backend group:
	// the maximum time the connection is kept alive for, regardless of whether data is transferred over it.
	//
	// If a client specifies a lower timeout in HTTP `grpc-timeout` header, the `max_timeout` value is ignored.
	//
	// If a connection times out, the load balancer responds to the client with an `UNAVAILABLE` status code.
	//
	// Default value: `60`.
	MaxTimeout *durationpb.Duration `protobuf:"bytes,2,opt,name=max_timeout,json=maxTimeout,proto3" json:"max_timeout,omitempty"`
	// Idle timeout for an underlying HTTP connection between a load balancer node an a backend from the backend group:
	// the maximum time the connection is allowed to be idle, i.e. without any data transferred over it.
	//
	// Specifying meaningful values for both [max_timeout] and `idle_timeout` is useful for implementing
	// server-push mechanisms such as long polling, server-sent events etc.
	//
	// If a connection times out, the load balancer responds to the client with an `UNAVAILABLE` status code.
	//
	// If not specified, no idle timeout is used, and an alive connection may be idle for any duration
	// (see [max_timeout]).
	IdleTimeout *durationpb.Duration `protobuf:"bytes,3,opt,name=idle_timeout,json=idleTimeout,proto3" json:"idle_timeout,omitempty"`
	// Value rewrite settings for HTTP/1.1 `Host` headers and HTTP/2 `:authority` pseudo-headers.
	//
	// If not specified, the host is not changed.
	//
	// Types that are assignable to HostRewriteSpecifier:
	//
	//	*GrpcRouteAction_HostRewrite
	//	*GrpcRouteAction_AutoHostRewrite
	HostRewriteSpecifier isGrpcRouteAction_HostRewriteSpecifier `protobuf_oneof:"host_rewrite_specifier"`
	// RateLimit is a rate limit configuration applied for route.
	RateLimit *RateLimit `protobuf:"bytes,6,opt,name=rate_limit,json=rateLimit,proto3" json:"rate_limit,omitempty"`
}

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

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

func (*GrpcRouteAction) ProtoMessage() {}

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

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

func (x *GrpcRouteAction) GetBackendGroupId() string {
	if x != nil {
		return x.BackendGroupId
	}
	return ""
}

func (x *GrpcRouteAction) GetMaxTimeout() *durationpb.Duration {
	if x != nil {
		return x.MaxTimeout
	}
	return nil
}

func (x *GrpcRouteAction) GetIdleTimeout() *durationpb.Duration {
	if x != nil {
		return x.IdleTimeout
	}
	return nil
}

func (m *GrpcRouteAction) GetHostRewriteSpecifier() isGrpcRouteAction_HostRewriteSpecifier {
	if m != nil {
		return m.HostRewriteSpecifier
	}
	return nil
}

func (x *GrpcRouteAction) GetHostRewrite() string {
	if x, ok := x.GetHostRewriteSpecifier().(*GrpcRouteAction_HostRewrite); ok {
		return x.HostRewrite
	}
	return ""
}

func (x *GrpcRouteAction) GetAutoHostRewrite() bool {
	if x, ok := x.GetHostRewriteSpecifier().(*GrpcRouteAction_AutoHostRewrite); ok {
		return x.AutoHostRewrite
	}
	return false
}

func (x *GrpcRouteAction) GetRateLimit() *RateLimit {
	if x != nil {
		return x.RateLimit
	}
	return nil
}

type isGrpcRouteAction_HostRewriteSpecifier interface {
	isGrpcRouteAction_HostRewriteSpecifier()
}

type GrpcRouteAction_HostRewrite struct {
	// Host replacement.
	HostRewrite string `protobuf:"bytes,4,opt,name=host_rewrite,json=hostRewrite,proto3,oneof"`
}

type GrpcRouteAction_AutoHostRewrite struct {
	// Automatically replaces the host with that of the target.
	AutoHostRewrite bool `protobuf:"varint,5,opt,name=auto_host_rewrite,json=autoHostRewrite,proto3,oneof"`
}

func (*GrpcRouteAction_HostRewrite) isGrpcRouteAction_HostRewriteSpecifier() {}

func (*GrpcRouteAction_AutoHostRewrite) isGrpcRouteAction_HostRewriteSpecifier() {}

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

	// Specifies the name of the header in the request.
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Specifies how the header match will be performed to route the request.
	// In the absence of value a request that has specified header name will match,
	// regardless of the header's value.
	Value *StringMatch `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
}

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

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

func (*Principal_HeaderMatcher) ProtoMessage() {}

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

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

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

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

var File_yandex_cloud_apploadbalancer_v1_virtual_host_proto protoreflect.FileDescriptor

var file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_rawDesc = []byte{
	0x0a, 0x32, 0x79, 0x61, 0x6e, 0x64, 0x65, 0x78, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x61,
	0x70, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x2f, 0x76,
	0x31, 0x2f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x2e, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1f, 0x79, 0x61, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x63, 0x6c, 0x6f,
	0x75, 0x64, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63,
	0x65, 0x72, 0x2e, 0x76, 0x31, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x79, 0x61, 0x6e, 0x64, 0x65, 0x78, 0x2f, 0x63, 0x6c,
	0x6f, 0x75, 0x64, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x62, 0x61, 0x6c, 0x61, 0x6e,
	0x63, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x2e, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x30, 0x79, 0x61, 0x6e, 0x64, 0x65, 0x78, 0x2f, 0x63, 0x6c, 0x6f,
	0x75, 0x64, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63,
	0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74,
	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x79, 0x61, 0x6e, 0x64, 0x65, 0x78, 0x2f, 0x63,
	0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xfc, 0x03, 0x0a, 0x0b, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61,
	0x6c, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x42, 0x04, 0xe8, 0xc7, 0x31, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
	0x1c, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x03,
	0x28, 0x09, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x3e, 0x0a,
	0x06, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e,
	0x79, 0x61, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x70, 0x70,
	0x6c, 0x6f, 0x61, 0x64, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e,
	0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x06, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x12, 0x69, 0x0a,
	0x16, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f,
	0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e,
	0x79, 0x61, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x70, 0x70,
	0x6c, 0x6f, 0x61, 0x64, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e,
	0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x52, 0x14, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x6b, 0x0a, 0x17, 0x6d, 0x6f, 0x64, 0x69,
	0x66, 0x79, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64,
	0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x79, 0x61, 0x6e, 0x64,
	0x65, 0x78, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x6f, 0x61, 0x64,
	0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x64,
	0x65, 0x72, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x15,
	0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x65,
	0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x52, 0x0a, 0x0d, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x6f,
	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x79,
	0x61, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x70, 0x70, 0x6c,
	0x6f, 0x61, 0x64, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52,
	0x6f, 0x75, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0c, 0x72, 0x6f, 0x75,
	0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x49, 0x0a, 0x0a, 0x72, 0x61, 0x74,
	0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e,
	0x79, 0x61, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x70, 0x70,
	0x6c, 0x6f, 0x61, 0x64, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e,
	0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x09, 0x72, 0x61, 0x74, 0x65, 0x4c,
	0x69, 0x6d, 0x69, 0x74, 0x22, 0xd1, 0x02, 0x0a, 0x0c, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4f, 0x70,
	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x69, 0x0a, 0x16, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x5f,
	0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18,
	0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x79, 0x61, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x63,
	0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x62, 0x61, 0x6c, 0x61,
	0x6e, 0x63, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x6f,
	0x64, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x14, 0x6d, 0x6f, 0x64, 0x69,
	0x66, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73,
	0x12, 0x6b, 0x0a, 0x17, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f,
	0x6e, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,
	0x0b, 0x32, 0x33, 0x2e, 0x79, 0x61, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
	0x2e, 0x61, 0x70, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72,
	0x2e, 0x76, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69,
	0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x15, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x52, 0x65,
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x39, 0x0a,
	0x04, 0x72, 0x62, 0x61, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x79, 0x61,
	0x6e, 0x64, 0x65, 0x78, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x6f,
	0x61, 0x64, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x42,
	0x41, 0x43, 0x52, 0x04, 0x72, 0x62, 0x61, 0x63, 0x12, 0x2e, 0x0a, 0x13, 0x73, 0x65, 0x63, 0x75,
	0x72, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x50,
	0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x22, 0xdf, 0x01, 0x0a, 0x04, 0x52, 0x42, 0x41,
	0x43, 0x12, 0x4a, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x0e, 0x32, 0x2c, 0x2e, 0x79, 0x61, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
	0x2e, 0x61, 0x70, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72,
	0x2e, 0x76, 0x31, 0x2e, 0x52, 0x42, 0x41, 0x43, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42,
	0x04, 0xe8, 0xc7, 0x31, 0x01, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x54, 0x0a,
	0x0a, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,
	0x0b, 0x32, 0x2b, 0x2e, 0x79, 0x61, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
	0x2e, 0x61, 0x70, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72,
	0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x73, 0x42, 0x07,
	0x82, 0xc8, 0x31, 0x03, 0x3e, 0x3d, 0x31, 0x52, 0x0a, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70,
	0x61, 0x6c, 0x73, 0x22, 0x35, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a,
	0x12, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46,
	0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x10, 0x01,
	0x12, 0x08, 0x0a, 0x04, 0x44, 0x45, 0x4e, 0x59, 0x10, 0x02, 0x22, 0x68, 0x0a, 0x0a, 0x50, 0x72,
	0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x73, 0x12, 0x5a, 0x0a, 0x0e, 0x61, 0x6e, 0x64, 0x5f,
	0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x2a, 0x2e, 0x79, 0x61, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
	0x61, 0x70, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x2e,
	0x76, 0x31, 0x2e, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x42, 0x07, 0x82, 0xc8,
	0x31, 0x03, 0x3e, 0x3d, 0x31, 0x52, 0x0d, 0x61, 0x6e, 0x64, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69,
	0x70, 0x61, 0x6c, 0x73, 0x22, 0x95, 0x02, 0x0a, 0x09, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70,
	0x61, 0x6c, 0x12, 0x52, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x38, 0x2e, 0x79, 0x61, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
	0x64, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65,
	0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x2e, 0x48,
	0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06,
	0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x09, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65,
	0x5f, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x6d,
	0x6f, 0x74, 0x65, 0x49, 0x70, 0x12, 0x12, 0x0a, 0x03, 0x61, 0x6e, 0x79, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x08, 0x48, 0x00, 0x52, 0x03, 0x61, 0x6e, 0x79, 0x1a, 0x6d, 0x0a, 0x0d, 0x48, 0x65, 0x61,
	0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x04, 0x6e, 0x61,
	0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe8, 0xc7, 0x31, 0x01, 0x52, 0x04,
	0x6e, 0x61, 0x6d, 0x65, 0x12, 0x42, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x79, 0x61, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x63, 0x6c, 0x6f,
	0x75, 0x64, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63,
	0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x74, 0x63,
	0x68, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x12, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e,
	0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x04, 0xc0, 0xc1, 0x31, 0x01, 0x22, 0x9f, 0x01, 0x0a,
	0x12, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x65, 0x6e,
	0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x61, 0x70, 0x70, 0x65, 0x6e,
	0x64, 0x12, 0x1a, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x12, 0x18, 0x0a,
	0x06, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52,
	0x06, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x12, 0x18, 0x0a, 0x06, 0x72, 0x65, 0x6e, 0x61, 0x6d,
	0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x72, 0x65, 0x6e, 0x61, 0x6d,
	0x65, 0x42, 0x0b, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x88,
	0x02, 0x0a, 0x05, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe8, 0xc7, 0x31, 0x01, 0x52, 0x04, 0x6e, 0x61,
	0x6d, 0x65, 0x12, 0x40, 0x0a, 0x04, 0x68, 0x74, 0x74, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x2a, 0x2e, 0x79, 0x61, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
	0x61, 0x70, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x2e,
	0x76, 0x31, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x48, 0x00, 0x52, 0x04,
	0x68, 0x74, 0x74, 0x70, 0x12, 0x40, 0x0a, 0x04, 0x67, 0x72, 0x70, 0x63, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x79, 0x61, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
	0x64, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65,
	0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x48, 0x00,
	0x52, 0x04, 0x67, 0x72, 0x70, 0x63, 0x12, 0x52, 0x0a, 0x0d, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f,
	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e,
	0x79, 0x61, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x70, 0x70,
	0x6c, 0x6f, 0x61, 0x64, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e,
	0x52, 0x6f, 0x75, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0c, 0x72, 0x6f,
	0x75, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x0d, 0x0a, 0x05, 0x72, 0x6f,
	0x75, 0x74, 0x65, 0x12, 0x04, 0xc0, 0xc1, 0x31, 0x01, 0x22, 0xdd, 0x02, 0x0a, 0x09, 0x48, 0x74,
	0x74, 0x70, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x45, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x79, 0x61, 0x6e, 0x64, 0x65, 0x78, 0x2e,
	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x62, 0x61, 0x6c,
	0x61, 0x6e, 0x63, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x52, 0x6f, 0x75,
	0x74, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x48,
	0x0a, 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e,
	0x79, 0x61, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x70, 0x70,
	0x6c, 0x6f, 0x61, 0x64, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e,
	0x48, 0x74, 0x74, 0x70, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48,
	0x00, 0x52, 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x4d, 0x0a, 0x08, 0x72, 0x65, 0x64, 0x69,
	0x72, 0x65, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x79, 0x61, 0x6e,
	0x64, 0x65, 0x78, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x6f, 0x61,
	0x64, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x64,
	0x69, 0x72, 0x65, 0x63, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x08, 0x72,
	0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 0x60, 0x0a, 0x0f, 0x64, 0x69, 0x72, 0x65, 0x63,
	0x74, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x35, 0x2e, 0x79, 0x61, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
	0x61, 0x70, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x2e,
	0x76, 0x31, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
	0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0e, 0x64, 0x69, 0x72, 0x65, 0x63,
	0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x0e, 0x0a, 0x06, 0x61, 0x63, 0x74,
	0x69, 0x6f, 0x6e, 0x12, 0x04, 0xc0, 0xc1, 0x31, 0x01, 0x22, 0x92, 0x02, 0x0a, 0x09, 0x47, 0x72,
	0x70, 0x63, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x45, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x79, 0x61, 0x6e, 0x64, 0x65, 0x78, 0x2e,
	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x62, 0x61, 0x6c,
	0x61, 0x6e, 0x63, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x52, 0x6f, 0x75,
	0x74, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x48,
	0x0a, 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e,
	0x79, 0x61, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x70, 0x70,
	0x6c, 0x6f, 0x61, 0x64, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e,
	0x47, 0x72, 0x70, 0x63, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48,
	0x00, 0x52, 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x64, 0x0a, 0x0f, 0x73, 0x74, 0x61, 0x74,
	0x75, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x39, 0x2e, 0x79, 0x61, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
	0x2e, 0x61, 0x70, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72,
	0x2e, 0x76, 0x31, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65,
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0e,
	0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x0e,
	0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x04, 0xc0, 0xc1, 0x31, 0x01, 0x22, 0x73,
	0x0a, 0x0e, 0x48, 0x74, 0x74, 0x70, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68,
	0x12, 0x1f, 0x0a, 0x0b, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18,
	0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x68, 0x74, 0x74, 0x70, 0x4d, 0x65, 0x74, 0x68, 0x6f,
	0x64, 0x12, 0x40, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x2c, 0x2e, 0x79, 0x61, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61,
	0x70, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x2e, 0x76,
	0x31, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x04, 0x70,
	0x61, 0x74, 0x68, 0x22, 0x52, 0x0a, 0x0e, 0x47, 0x72, 0x70, 0x63, 0x52, 0x6f, 0x75, 0x74, 0x65,
	0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x40, 0x0a, 0x04, 0x66, 0x71, 0x6d, 0x6e, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x79, 0x61, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x63, 0x6c, 0x6f,
	0x75, 0x64, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63,
	0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x74, 0x63,
	0x68, 0x52, 0x04, 0x66, 0x71, 0x6d, 0x6e, 0x22, 0x87, 0x01, 0x0a, 0x0b, 0x53, 0x74, 0x72, 0x69,
	0x6e, 0x67, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x21, 0x0a, 0x0b, 0x65, 0x78, 0x61, 0x63, 0x74,
	0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a,
	0x65, 0x78, 0x61, 0x63, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x23, 0x0a, 0x0c, 0x70, 0x72,
	0x65, 0x66, 0x69, 0x78, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
	0x48, 0x00, 0x52, 0x0b, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12,
	0x21, 0x0a, 0x0b, 0x72, 0x65, 0x67, 0x65, 0x78, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, 0x72, 0x65, 0x67, 0x65, 0x78, 0x4d, 0x61, 0x74,
	0x63, 0x68, 0x42, 0x0d, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x04, 0xc0, 0xc1, 0x31,
	0x01, 0x22, 0xda, 0x03, 0x0a, 0x0e, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x41, 0x63,
	0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x5f,
	0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65,
	0x70, 0x6c, 0x61, 0x63, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x72,
	0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x0b, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x21,
	0x0a, 0x0c, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x50, 0x6f, 0x72,
	0x74, 0x12, 0x23, 0x0a, 0x0c, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x70, 0x61, 0x74,
	0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x72, 0x65, 0x70, 0x6c, 0x61,
	0x63, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x27, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63,
	0x65, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00,
	0x52, 0x0d, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12,
	0x21, 0x0a, 0x0c, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18,
	0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x51, 0x75, 0x65,
	0x72, 0x79, 0x12, 0x69, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x63,
	0x6f, 0x64, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x44, 0x2e, 0x79, 0x61, 0x6e, 0x64,
	0x65, 0x78, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x6f, 0x61, 0x64,
	0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x64, 0x69,
	0x72, 0x65, 0x63, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x64, 0x69, 0x72,
	0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x52,
	0x0c, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x77, 0x0a,
	0x14, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
	0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x4d, 0x4f, 0x56, 0x45, 0x44, 0x5f, 0x50,
	0x45, 0x52, 0x4d, 0x41, 0x4e, 0x45, 0x4e, 0x54, 0x4c, 0x59, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05,
	0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x45, 0x45, 0x5f, 0x4f,
	0x54, 0x48, 0x45, 0x52, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x54, 0x45, 0x4d, 0x50, 0x4f, 0x52,
	0x41, 0x52, 0x59, 0x5f, 0x52, 0x45, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x10, 0x03, 0x12, 0x16,
	0x0a, 0x12, 0x50, 0x45, 0x52, 0x4d, 0x41, 0x4e, 0x45, 0x4e, 0x54, 0x5f, 0x52, 0x45, 0x44, 0x49,
	0x52, 0x45, 0x43, 0x54, 0x10, 0x04, 0x42, 0x06, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0x79,
	0x0a, 0x14, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
	0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0b, 0xfa, 0xc7, 0x31, 0x07, 0x31, 0x30, 0x30, 0x2d,
	0x35, 0x39, 0x39, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3c, 0x0a, 0x04, 0x62,
	0x6f, 0x64, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x79, 0x61, 0x6e, 0x64,
	0x65, 0x78, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x6f, 0x61, 0x64,
	0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x79, 0x6c,
	0x6f, 0x61, 0x64, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0x8a, 0x02, 0x0a, 0x18, 0x47, 0x72,
	0x70, 0x63, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
	0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x58, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x40, 0x2e, 0x79, 0x61, 0x6e, 0x64, 0x65, 0x78, 0x2e,
	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x62, 0x61, 0x6c,
	0x61, 0x6e, 0x63, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x53, 0x74, 0x61,
	0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f,
	0x6e, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,
	0x22, 0x93, 0x01, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x06, 0x0a, 0x02, 0x4f,
	0x4b, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x41,
	0x52, 0x47, 0x55, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x54,
	0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x45, 0x52, 0x4d,
	0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x4e, 0x49, 0x45, 0x44, 0x10, 0x03, 0x12,
	0x13, 0x0a, 0x0f, 0x55, 0x4e, 0x41, 0x55, 0x54, 0x48, 0x45, 0x4e, 0x54, 0x49, 0x43, 0x41, 0x54,
	0x45, 0x44, 0x10, 0x04, 0x12, 0x11, 0x0a, 0x0d, 0x55, 0x4e, 0x49, 0x4d, 0x50, 0x4c, 0x45, 0x4d,
	0x45, 0x4e, 0x54, 0x45, 0x44, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x4e, 0x54, 0x45, 0x52,
	0x4e, 0x41, 0x4c, 0x10, 0x06, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x41, 0x56, 0x41, 0x49, 0x4c,
	0x41, 0x42, 0x4c, 0x45, 0x10, 0x07, 0x22, 0xb8, 0x03, 0x0a, 0x0f, 0x48, 0x74, 0x74, 0x70, 0x52,
	0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x10, 0x62, 0x61,
	0x63, 0x6b, 0x65, 0x6e, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe8, 0xc7, 0x31, 0x01, 0x52, 0x0e, 0x62, 0x61, 0x63, 0x6b,
	0x65, 0x6e, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x07, 0x74, 0x69,
	0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75,
	0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12,
	0x3c, 0x0a, 0x0c, 0x69, 0x64, 0x6c, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x52, 0x0b, 0x69, 0x64, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x23, 0x0a,
	0x0c, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x04, 0x20,
	0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x68, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x77, 0x72, 0x69,
	0x74, 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f,
	0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52,
	0x0f, 0x61, 0x75, 0x74, 0x6f, 0x48, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65,
	0x12, 0x25, 0x0a, 0x0e, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69,
	0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78,
	0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x75, 0x70, 0x67, 0x72, 0x61,
	0x64, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c,
	0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x49, 0x0a, 0x0a,
	0x72, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x2a, 0x2e, 0x79, 0x61, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
	0x61, 0x70, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x2e,
	0x76, 0x31, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x09, 0x72, 0x61,
	0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x18, 0x0a, 0x16, 0x68, 0x6f, 0x73, 0x74, 0x5f,
	0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65,
	0x72, 0x22, 0xf3, 0x02, 0x0a, 0x0f, 0x47, 0x72, 0x70, 0x63, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41,
	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x10, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64,
	0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42,
	0x04, 0xe8, 0xc7, 0x31, 0x01, 0x52, 0x0e, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x47, 0x72,
	0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x69, 0x6d,
	0x65, 0x6f, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75,
	0x74, 0x12, 0x3c, 0x0a, 0x0c, 0x69, 0x64, 0x6c, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75,
	0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x52, 0x0b, 0x69, 0x64, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12,
	0x23, 0x0a, 0x0c, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x68, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x77,
	0x72, 0x69, 0x74, 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x68, 0x6f, 0x73,
	0x74, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x48,
	0x00, 0x52, 0x0f, 0x61, 0x75, 0x74, 0x6f, 0x48, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x77, 0x72, 0x69,
	0x74, 0x65, 0x12, 0x49, 0x0a, 0x0a, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74,
	0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x79, 0x61, 0x6e, 0x64, 0x65, 0x78, 0x2e,
	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x62, 0x61, 0x6c,
	0x61, 0x6e, 0x63, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d,
	0x69, 0x74, 0x52, 0x09, 0x72, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x18, 0x0a,
	0x16, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x73, 0x70,
	0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x7a, 0x0a, 0x23, 0x79, 0x61, 0x6e, 0x64, 0x65,
	0x78, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x61, 0x70, 0x70, 0x6c,
	0x6f, 0x61, 0x64, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x5a, 0x53,
	0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x79, 0x61, 0x6e, 0x64, 0x65,
	0x78, 0x2d, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x67, 0x6f, 0x2d, 0x67, 0x65, 0x6e, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x2f, 0x79, 0x61, 0x6e, 0x64, 0x65, 0x78, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64,
	0x2f, 0x61, 0x70, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72,
	0x2f, 0x76, 0x31, 0x3b, 0x61, 0x70, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x62, 0x61, 0x6c, 0x61, 0x6e,
	0x63, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_rawDescOnce sync.Once
	file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_rawDescData = file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_rawDesc
)

func file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_rawDescGZIP() []byte {
	file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_rawDescOnce.Do(func() {
		file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_rawDescData = protoimpl.X.CompressGZIP(file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_rawDescData)
	})
	return file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_rawDescData
}

var file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
var file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_msgTypes = make([]protoimpl.MessageInfo, 18)
var file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_goTypes = []any{
	(RBAC_Action)(0),                         // 0: yandex.cloud.apploadbalancer.v1.RBAC.Action
	(RedirectAction_RedirectResponseCode)(0), // 1: yandex.cloud.apploadbalancer.v1.RedirectAction.RedirectResponseCode
	(GrpcStatusResponseAction_Status)(0),     // 2: yandex.cloud.apploadbalancer.v1.GrpcStatusResponseAction.Status
	(*VirtualHost)(nil),                      // 3: yandex.cloud.apploadbalancer.v1.VirtualHost
	(*RouteOptions)(nil),                     // 4: yandex.cloud.apploadbalancer.v1.RouteOptions
	(*RBAC)(nil),                             // 5: yandex.cloud.apploadbalancer.v1.RBAC
	(*Principals)(nil),                       // 6: yandex.cloud.apploadbalancer.v1.Principals
	(*Principal)(nil),                        // 7: yandex.cloud.apploadbalancer.v1.Principal
	(*HeaderModification)(nil),               // 8: yandex.cloud.apploadbalancer.v1.HeaderModification
	(*Route)(nil),                            // 9: yandex.cloud.apploadbalancer.v1.Route
	(*HttpRoute)(nil),                        // 10: yandex.cloud.apploadbalancer.v1.HttpRoute
	(*GrpcRoute)(nil),                        // 11: yandex.cloud.apploadbalancer.v1.GrpcRoute
	(*HttpRouteMatch)(nil),                   // 12: yandex.cloud.apploadbalancer.v1.HttpRouteMatch
	(*GrpcRouteMatch)(nil),                   // 13: yandex.cloud.apploadbalancer.v1.GrpcRouteMatch
	(*StringMatch)(nil),                      // 14: yandex.cloud.apploadbalancer.v1.StringMatch
	(*RedirectAction)(nil),                   // 15: yandex.cloud.apploadbalancer.v1.RedirectAction
	(*DirectResponseAction)(nil),             // 16: yandex.cloud.apploadbalancer.v1.DirectResponseAction
	(*GrpcStatusResponseAction)(nil),         // 17: yandex.cloud.apploadbalancer.v1.GrpcStatusResponseAction
	(*HttpRouteAction)(nil),                  // 18: yandex.cloud.apploadbalancer.v1.HttpRouteAction
	(*GrpcRouteAction)(nil),                  // 19: yandex.cloud.apploadbalancer.v1.GrpcRouteAction
	(*Principal_HeaderMatcher)(nil),          // 20: yandex.cloud.apploadbalancer.v1.Principal.HeaderMatcher
	(*RateLimit)(nil),                        // 21: yandex.cloud.apploadbalancer.v1.RateLimit
	(*Payload)(nil),                          // 22: yandex.cloud.apploadbalancer.v1.Payload
	(*durationpb.Duration)(nil),              // 23: google.protobuf.Duration
}
var file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_depIdxs = []int32{
	9,  // 0: yandex.cloud.apploadbalancer.v1.VirtualHost.routes:type_name -> yandex.cloud.apploadbalancer.v1.Route
	8,  // 1: yandex.cloud.apploadbalancer.v1.VirtualHost.modify_request_headers:type_name -> yandex.cloud.apploadbalancer.v1.HeaderModification
	8,  // 2: yandex.cloud.apploadbalancer.v1.VirtualHost.modify_response_headers:type_name -> yandex.cloud.apploadbalancer.v1.HeaderModification
	4,  // 3: yandex.cloud.apploadbalancer.v1.VirtualHost.route_options:type_name -> yandex.cloud.apploadbalancer.v1.RouteOptions
	21, // 4: yandex.cloud.apploadbalancer.v1.VirtualHost.rate_limit:type_name -> yandex.cloud.apploadbalancer.v1.RateLimit
	8,  // 5: yandex.cloud.apploadbalancer.v1.RouteOptions.modify_request_headers:type_name -> yandex.cloud.apploadbalancer.v1.HeaderModification
	8,  // 6: yandex.cloud.apploadbalancer.v1.RouteOptions.modify_response_headers:type_name -> yandex.cloud.apploadbalancer.v1.HeaderModification
	5,  // 7: yandex.cloud.apploadbalancer.v1.RouteOptions.rbac:type_name -> yandex.cloud.apploadbalancer.v1.RBAC
	0,  // 8: yandex.cloud.apploadbalancer.v1.RBAC.action:type_name -> yandex.cloud.apploadbalancer.v1.RBAC.Action
	6,  // 9: yandex.cloud.apploadbalancer.v1.RBAC.principals:type_name -> yandex.cloud.apploadbalancer.v1.Principals
	7,  // 10: yandex.cloud.apploadbalancer.v1.Principals.and_principals:type_name -> yandex.cloud.apploadbalancer.v1.Principal
	20, // 11: yandex.cloud.apploadbalancer.v1.Principal.header:type_name -> yandex.cloud.apploadbalancer.v1.Principal.HeaderMatcher
	10, // 12: yandex.cloud.apploadbalancer.v1.Route.http:type_name -> yandex.cloud.apploadbalancer.v1.HttpRoute
	11, // 13: yandex.cloud.apploadbalancer.v1.Route.grpc:type_name -> yandex.cloud.apploadbalancer.v1.GrpcRoute
	4,  // 14: yandex.cloud.apploadbalancer.v1.Route.route_options:type_name -> yandex.cloud.apploadbalancer.v1.RouteOptions
	12, // 15: yandex.cloud.apploadbalancer.v1.HttpRoute.match:type_name -> yandex.cloud.apploadbalancer.v1.HttpRouteMatch
	18, // 16: yandex.cloud.apploadbalancer.v1.HttpRoute.route:type_name -> yandex.cloud.apploadbalancer.v1.HttpRouteAction
	15, // 17: yandex.cloud.apploadbalancer.v1.HttpRoute.redirect:type_name -> yandex.cloud.apploadbalancer.v1.RedirectAction
	16, // 18: yandex.cloud.apploadbalancer.v1.HttpRoute.direct_response:type_name -> yandex.cloud.apploadbalancer.v1.DirectResponseAction
	13, // 19: yandex.cloud.apploadbalancer.v1.GrpcRoute.match:type_name -> yandex.cloud.apploadbalancer.v1.GrpcRouteMatch
	19, // 20: yandex.cloud.apploadbalancer.v1.GrpcRoute.route:type_name -> yandex.cloud.apploadbalancer.v1.GrpcRouteAction
	17, // 21: yandex.cloud.apploadbalancer.v1.GrpcRoute.status_response:type_name -> yandex.cloud.apploadbalancer.v1.GrpcStatusResponseAction
	14, // 22: yandex.cloud.apploadbalancer.v1.HttpRouteMatch.path:type_name -> yandex.cloud.apploadbalancer.v1.StringMatch
	14, // 23: yandex.cloud.apploadbalancer.v1.GrpcRouteMatch.fqmn:type_name -> yandex.cloud.apploadbalancer.v1.StringMatch
	1,  // 24: yandex.cloud.apploadbalancer.v1.RedirectAction.response_code:type_name -> yandex.cloud.apploadbalancer.v1.RedirectAction.RedirectResponseCode
	22, // 25: yandex.cloud.apploadbalancer.v1.DirectResponseAction.body:type_name -> yandex.cloud.apploadbalancer.v1.Payload
	2,  // 26: yandex.cloud.apploadbalancer.v1.GrpcStatusResponseAction.status:type_name -> yandex.cloud.apploadbalancer.v1.GrpcStatusResponseAction.Status
	23, // 27: yandex.cloud.apploadbalancer.v1.HttpRouteAction.timeout:type_name -> google.protobuf.Duration
	23, // 28: yandex.cloud.apploadbalancer.v1.HttpRouteAction.idle_timeout:type_name -> google.protobuf.Duration
	21, // 29: yandex.cloud.apploadbalancer.v1.HttpRouteAction.rate_limit:type_name -> yandex.cloud.apploadbalancer.v1.RateLimit
	23, // 30: yandex.cloud.apploadbalancer.v1.GrpcRouteAction.max_timeout:type_name -> google.protobuf.Duration
	23, // 31: yandex.cloud.apploadbalancer.v1.GrpcRouteAction.idle_timeout:type_name -> google.protobuf.Duration
	21, // 32: yandex.cloud.apploadbalancer.v1.GrpcRouteAction.rate_limit:type_name -> yandex.cloud.apploadbalancer.v1.RateLimit
	14, // 33: yandex.cloud.apploadbalancer.v1.Principal.HeaderMatcher.value:type_name -> yandex.cloud.apploadbalancer.v1.StringMatch
	34, // [34:34] is the sub-list for method output_type
	34, // [34:34] is the sub-list for method input_type
	34, // [34:34] is the sub-list for extension type_name
	34, // [34:34] is the sub-list for extension extendee
	0,  // [0:34] is the sub-list for field type_name
}

func init() { file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_init() }
func file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_init() {
	if File_yandex_cloud_apploadbalancer_v1_virtual_host_proto != nil {
		return
	}
	file_yandex_cloud_apploadbalancer_v1_payload_proto_init()
	file_yandex_cloud_apploadbalancer_v1_rate_limit_proto_init()
	if !protoimpl.UnsafeEnabled {
		file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_msgTypes[0].Exporter = func(v any, i int) any {
			switch v := v.(*VirtualHost); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_msgTypes[1].Exporter = func(v any, i int) any {
			switch v := v.(*RouteOptions); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_msgTypes[2].Exporter = func(v any, i int) any {
			switch v := v.(*RBAC); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_msgTypes[3].Exporter = func(v any, i int) any {
			switch v := v.(*Principals); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_msgTypes[4].Exporter = func(v any, i int) any {
			switch v := v.(*Principal); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_msgTypes[5].Exporter = func(v any, i int) any {
			switch v := v.(*HeaderModification); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_msgTypes[6].Exporter = func(v any, i int) any {
			switch v := v.(*Route); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_msgTypes[7].Exporter = func(v any, i int) any {
			switch v := v.(*HttpRoute); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_msgTypes[8].Exporter = func(v any, i int) any {
			switch v := v.(*GrpcRoute); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_msgTypes[9].Exporter = func(v any, i int) any {
			switch v := v.(*HttpRouteMatch); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_msgTypes[10].Exporter = func(v any, i int) any {
			switch v := v.(*GrpcRouteMatch); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_msgTypes[11].Exporter = func(v any, i int) any {
			switch v := v.(*StringMatch); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_msgTypes[12].Exporter = func(v any, i int) any {
			switch v := v.(*RedirectAction); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_msgTypes[13].Exporter = func(v any, i int) any {
			switch v := v.(*DirectResponseAction); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_msgTypes[14].Exporter = func(v any, i int) any {
			switch v := v.(*GrpcStatusResponseAction); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_msgTypes[15].Exporter = func(v any, i int) any {
			switch v := v.(*HttpRouteAction); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_msgTypes[16].Exporter = func(v any, i int) any {
			switch v := v.(*GrpcRouteAction); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_msgTypes[17].Exporter = func(v any, i int) any {
			switch v := v.(*Principal_HeaderMatcher); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_msgTypes[4].OneofWrappers = []any{
		(*Principal_Header)(nil),
		(*Principal_RemoteIp)(nil),
		(*Principal_Any)(nil),
	}
	file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_msgTypes[5].OneofWrappers = []any{
		(*HeaderModification_Append)(nil),
		(*HeaderModification_Replace)(nil),
		(*HeaderModification_Remove)(nil),
		(*HeaderModification_Rename)(nil),
	}
	file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_msgTypes[6].OneofWrappers = []any{
		(*Route_Http)(nil),
		(*Route_Grpc)(nil),
	}
	file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_msgTypes[7].OneofWrappers = []any{
		(*HttpRoute_Route)(nil),
		(*HttpRoute_Redirect)(nil),
		(*HttpRoute_DirectResponse)(nil),
	}
	file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_msgTypes[8].OneofWrappers = []any{
		(*GrpcRoute_Route)(nil),
		(*GrpcRoute_StatusResponse)(nil),
	}
	file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_msgTypes[11].OneofWrappers = []any{
		(*StringMatch_ExactMatch)(nil),
		(*StringMatch_PrefixMatch)(nil),
		(*StringMatch_RegexMatch)(nil),
	}
	file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_msgTypes[12].OneofWrappers = []any{
		(*RedirectAction_ReplacePath)(nil),
		(*RedirectAction_ReplacePrefix)(nil),
	}
	file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_msgTypes[15].OneofWrappers = []any{
		(*HttpRouteAction_HostRewrite)(nil),
		(*HttpRouteAction_AutoHostRewrite)(nil),
	}
	file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_msgTypes[16].OneofWrappers = []any{
		(*GrpcRouteAction_HostRewrite)(nil),
		(*GrpcRouteAction_AutoHostRewrite)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_rawDesc,
			NumEnums:      3,
			NumMessages:   18,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_goTypes,
		DependencyIndexes: file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_depIdxs,
		EnumInfos:         file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_enumTypes,
		MessageInfos:      file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_msgTypes,
	}.Build()
	File_yandex_cloud_apploadbalancer_v1_virtual_host_proto = out.File
	file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_rawDesc = nil
	file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_goTypes = nil
	file_yandex_cloud_apploadbalancer_v1_virtual_host_proto_depIdxs = nil
}
