// Code generated by protoc-gen-go. DO NOT EDIT.
// source: envoy/api/v2/auth/cert.proto

package auth

import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
import wrappers "github.com/golang/protobuf/ptypes/wrappers"
import base "google.golang.org/grpc/balancer/xds/internal/proto/envoy/api/v2/core/base"
import config_source "google.golang.org/grpc/balancer/xds/internal/proto/envoy/api/v2/core/config_source"
import _ "google.golang.org/grpc/balancer/xds/internal/proto/validate"

// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf

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

type TlsParameters_TlsProtocol int32

const (
	TlsParameters_TLS_AUTO TlsParameters_TlsProtocol = 0
	TlsParameters_TLSv1_0  TlsParameters_TlsProtocol = 1
	TlsParameters_TLSv1_1  TlsParameters_TlsProtocol = 2
	TlsParameters_TLSv1_2  TlsParameters_TlsProtocol = 3
	TlsParameters_TLSv1_3  TlsParameters_TlsProtocol = 4
)

var TlsParameters_TlsProtocol_name = map[int32]string{
	0: "TLS_AUTO",
	1: "TLSv1_0",
	2: "TLSv1_1",
	3: "TLSv1_2",
	4: "TLSv1_3",
}
var TlsParameters_TlsProtocol_value = map[string]int32{
	"TLS_AUTO": 0,
	"TLSv1_0":  1,
	"TLSv1_1":  2,
	"TLSv1_2":  3,
	"TLSv1_3":  4,
}

func (x TlsParameters_TlsProtocol) String() string {
	return proto.EnumName(TlsParameters_TlsProtocol_name, int32(x))
}
func (TlsParameters_TlsProtocol) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_cert_f82beca1d890b9d7, []int{0, 0}
}

type TlsParameters struct {
	TlsMinimumProtocolVersion TlsParameters_TlsProtocol `protobuf:"varint,1,opt,name=tls_minimum_protocol_version,json=tlsMinimumProtocolVersion,proto3,enum=envoy.api.v2.auth.TlsParameters_TlsProtocol" json:"tls_minimum_protocol_version,omitempty"`
	TlsMaximumProtocolVersion TlsParameters_TlsProtocol `protobuf:"varint,2,opt,name=tls_maximum_protocol_version,json=tlsMaximumProtocolVersion,proto3,enum=envoy.api.v2.auth.TlsParameters_TlsProtocol" json:"tls_maximum_protocol_version,omitempty"`
	CipherSuites              []string                  `protobuf:"bytes,3,rep,name=cipher_suites,json=cipherSuites,proto3" json:"cipher_suites,omitempty"`
	EcdhCurves                []string                  `protobuf:"bytes,4,rep,name=ecdh_curves,json=ecdhCurves,proto3" json:"ecdh_curves,omitempty"`
	XXX_NoUnkeyedLiteral      struct{}                  `json:"-"`
	XXX_unrecognized          []byte                    `json:"-"`
	XXX_sizecache             int32                     `json:"-"`
}

func (m *TlsParameters) Reset()         { *m = TlsParameters{} }
func (m *TlsParameters) String() string { return proto.CompactTextString(m) }
func (*TlsParameters) ProtoMessage()    {}
func (*TlsParameters) Descriptor() ([]byte, []int) {
	return fileDescriptor_cert_f82beca1d890b9d7, []int{0}
}
func (m *TlsParameters) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_TlsParameters.Unmarshal(m, b)
}
func (m *TlsParameters) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_TlsParameters.Marshal(b, m, deterministic)
}
func (dst *TlsParameters) XXX_Merge(src proto.Message) {
	xxx_messageInfo_TlsParameters.Merge(dst, src)
}
func (m *TlsParameters) XXX_Size() int {
	return xxx_messageInfo_TlsParameters.Size(m)
}
func (m *TlsParameters) XXX_DiscardUnknown() {
	xxx_messageInfo_TlsParameters.DiscardUnknown(m)
}

var xxx_messageInfo_TlsParameters proto.InternalMessageInfo

func (m *TlsParameters) GetTlsMinimumProtocolVersion() TlsParameters_TlsProtocol {
	if m != nil {
		return m.TlsMinimumProtocolVersion
	}
	return TlsParameters_TLS_AUTO
}

func (m *TlsParameters) GetTlsMaximumProtocolVersion() TlsParameters_TlsProtocol {
	if m != nil {
		return m.TlsMaximumProtocolVersion
	}
	return TlsParameters_TLS_AUTO
}

func (m *TlsParameters) GetCipherSuites() []string {
	if m != nil {
		return m.CipherSuites
	}
	return nil
}

func (m *TlsParameters) GetEcdhCurves() []string {
	if m != nil {
		return m.EcdhCurves
	}
	return nil
}

type TlsCertificate struct {
	CertificateChain           *base.DataSource   `protobuf:"bytes,1,opt,name=certificate_chain,json=certificateChain,proto3" json:"certificate_chain,omitempty"`
	PrivateKey                 *base.DataSource   `protobuf:"bytes,2,opt,name=private_key,json=privateKey,proto3" json:"private_key,omitempty"`
	Password                   *base.DataSource   `protobuf:"bytes,3,opt,name=password,proto3" json:"password,omitempty"`
	OcspStaple                 *base.DataSource   `protobuf:"bytes,4,opt,name=ocsp_staple,json=ocspStaple,proto3" json:"ocsp_staple,omitempty"`
	SignedCertificateTimestamp []*base.DataSource `protobuf:"bytes,5,rep,name=signed_certificate_timestamp,json=signedCertificateTimestamp,proto3" json:"signed_certificate_timestamp,omitempty"`
	XXX_NoUnkeyedLiteral       struct{}           `json:"-"`
	XXX_unrecognized           []byte             `json:"-"`
	XXX_sizecache              int32              `json:"-"`
}

func (m *TlsCertificate) Reset()         { *m = TlsCertificate{} }
func (m *TlsCertificate) String() string { return proto.CompactTextString(m) }
func (*TlsCertificate) ProtoMessage()    {}
func (*TlsCertificate) Descriptor() ([]byte, []int) {
	return fileDescriptor_cert_f82beca1d890b9d7, []int{1}
}
func (m *TlsCertificate) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_TlsCertificate.Unmarshal(m, b)
}
func (m *TlsCertificate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_TlsCertificate.Marshal(b, m, deterministic)
}
func (dst *TlsCertificate) XXX_Merge(src proto.Message) {
	xxx_messageInfo_TlsCertificate.Merge(dst, src)
}
func (m *TlsCertificate) XXX_Size() int {
	return xxx_messageInfo_TlsCertificate.Size(m)
}
func (m *TlsCertificate) XXX_DiscardUnknown() {
	xxx_messageInfo_TlsCertificate.DiscardUnknown(m)
}

var xxx_messageInfo_TlsCertificate proto.InternalMessageInfo

func (m *TlsCertificate) GetCertificateChain() *base.DataSource {
	if m != nil {
		return m.CertificateChain
	}
	return nil
}

func (m *TlsCertificate) GetPrivateKey() *base.DataSource {
	if m != nil {
		return m.PrivateKey
	}
	return nil
}

func (m *TlsCertificate) GetPassword() *base.DataSource {
	if m != nil {
		return m.Password
	}
	return nil
}

func (m *TlsCertificate) GetOcspStaple() *base.DataSource {
	if m != nil {
		return m.OcspStaple
	}
	return nil
}

func (m *TlsCertificate) GetSignedCertificateTimestamp() []*base.DataSource {
	if m != nil {
		return m.SignedCertificateTimestamp
	}
	return nil
}

type TlsSessionTicketKeys struct {
	Keys                 []*base.DataSource `protobuf:"bytes,1,rep,name=keys,proto3" json:"keys,omitempty"`
	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
	XXX_unrecognized     []byte             `json:"-"`
	XXX_sizecache        int32              `json:"-"`
}

func (m *TlsSessionTicketKeys) Reset()         { *m = TlsSessionTicketKeys{} }
func (m *TlsSessionTicketKeys) String() string { return proto.CompactTextString(m) }
func (*TlsSessionTicketKeys) ProtoMessage()    {}
func (*TlsSessionTicketKeys) Descriptor() ([]byte, []int) {
	return fileDescriptor_cert_f82beca1d890b9d7, []int{2}
}
func (m *TlsSessionTicketKeys) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_TlsSessionTicketKeys.Unmarshal(m, b)
}
func (m *TlsSessionTicketKeys) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_TlsSessionTicketKeys.Marshal(b, m, deterministic)
}
func (dst *TlsSessionTicketKeys) XXX_Merge(src proto.Message) {
	xxx_messageInfo_TlsSessionTicketKeys.Merge(dst, src)
}
func (m *TlsSessionTicketKeys) XXX_Size() int {
	return xxx_messageInfo_TlsSessionTicketKeys.Size(m)
}
func (m *TlsSessionTicketKeys) XXX_DiscardUnknown() {
	xxx_messageInfo_TlsSessionTicketKeys.DiscardUnknown(m)
}

var xxx_messageInfo_TlsSessionTicketKeys proto.InternalMessageInfo

func (m *TlsSessionTicketKeys) GetKeys() []*base.DataSource {
	if m != nil {
		return m.Keys
	}
	return nil
}

type CertificateValidationContext struct {
	TrustedCa                         *base.DataSource    `protobuf:"bytes,1,opt,name=trusted_ca,json=trustedCa,proto3" json:"trusted_ca,omitempty"`
	VerifyCertificateSpki             []string            `protobuf:"bytes,3,rep,name=verify_certificate_spki,json=verifyCertificateSpki,proto3" json:"verify_certificate_spki,omitempty"`
	VerifyCertificateHash             []string            `protobuf:"bytes,2,rep,name=verify_certificate_hash,json=verifyCertificateHash,proto3" json:"verify_certificate_hash,omitempty"`
	VerifySubjectAltName              []string            `protobuf:"bytes,4,rep,name=verify_subject_alt_name,json=verifySubjectAltName,proto3" json:"verify_subject_alt_name,omitempty"`
	RequireOcspStaple                 *wrappers.BoolValue `protobuf:"bytes,5,opt,name=require_ocsp_staple,json=requireOcspStaple,proto3" json:"require_ocsp_staple,omitempty"`
	RequireSignedCertificateTimestamp *wrappers.BoolValue `protobuf:"bytes,6,opt,name=require_signed_certificate_timestamp,json=requireSignedCertificateTimestamp,proto3" json:"require_signed_certificate_timestamp,omitempty"`
	Crl                               *base.DataSource    `protobuf:"bytes,7,opt,name=crl,proto3" json:"crl,omitempty"`
	AllowExpiredCertificate           bool                `protobuf:"varint,8,opt,name=allow_expired_certificate,json=allowExpiredCertificate,proto3" json:"allow_expired_certificate,omitempty"`
	XXX_NoUnkeyedLiteral              struct{}            `json:"-"`
	XXX_unrecognized                  []byte              `json:"-"`
	XXX_sizecache                     int32               `json:"-"`
}

func (m *CertificateValidationContext) Reset()         { *m = CertificateValidationContext{} }
func (m *CertificateValidationContext) String() string { return proto.CompactTextString(m) }
func (*CertificateValidationContext) ProtoMessage()    {}
func (*CertificateValidationContext) Descriptor() ([]byte, []int) {
	return fileDescriptor_cert_f82beca1d890b9d7, []int{3}
}
func (m *CertificateValidationContext) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_CertificateValidationContext.Unmarshal(m, b)
}
func (m *CertificateValidationContext) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_CertificateValidationContext.Marshal(b, m, deterministic)
}
func (dst *CertificateValidationContext) XXX_Merge(src proto.Message) {
	xxx_messageInfo_CertificateValidationContext.Merge(dst, src)
}
func (m *CertificateValidationContext) XXX_Size() int {
	return xxx_messageInfo_CertificateValidationContext.Size(m)
}
func (m *CertificateValidationContext) XXX_DiscardUnknown() {
	xxx_messageInfo_CertificateValidationContext.DiscardUnknown(m)
}

var xxx_messageInfo_CertificateValidationContext proto.InternalMessageInfo

func (m *CertificateValidationContext) GetTrustedCa() *base.DataSource {
	if m != nil {
		return m.TrustedCa
	}
	return nil
}

func (m *CertificateValidationContext) GetVerifyCertificateSpki() []string {
	if m != nil {
		return m.VerifyCertificateSpki
	}
	return nil
}

func (m *CertificateValidationContext) GetVerifyCertificateHash() []string {
	if m != nil {
		return m.VerifyCertificateHash
	}
	return nil
}

func (m *CertificateValidationContext) GetVerifySubjectAltName() []string {
	if m != nil {
		return m.VerifySubjectAltName
	}
	return nil
}

func (m *CertificateValidationContext) GetRequireOcspStaple() *wrappers.BoolValue {
	if m != nil {
		return m.RequireOcspStaple
	}
	return nil
}

func (m *CertificateValidationContext) GetRequireSignedCertificateTimestamp() *wrappers.BoolValue {
	if m != nil {
		return m.RequireSignedCertificateTimestamp
	}
	return nil
}

func (m *CertificateValidationContext) GetCrl() *base.DataSource {
	if m != nil {
		return m.Crl
	}
	return nil
}

func (m *CertificateValidationContext) GetAllowExpiredCertificate() bool {
	if m != nil {
		return m.AllowExpiredCertificate
	}
	return false
}

type CommonTlsContext struct {
	TlsParams                      *TlsParameters     `protobuf:"bytes,1,opt,name=tls_params,json=tlsParams,proto3" json:"tls_params,omitempty"`
	TlsCertificates                []*TlsCertificate  `protobuf:"bytes,2,rep,name=tls_certificates,json=tlsCertificates,proto3" json:"tls_certificates,omitempty"`
	TlsCertificateSdsSecretConfigs []*SdsSecretConfig `protobuf:"bytes,6,rep,name=tls_certificate_sds_secret_configs,json=tlsCertificateSdsSecretConfigs,proto3" json:"tls_certificate_sds_secret_configs,omitempty"`
	// Types that are valid to be assigned to ValidationContextType:
	//	*CommonTlsContext_ValidationContext
	//	*CommonTlsContext_ValidationContextSdsSecretConfig
	//	*CommonTlsContext_CombinedValidationContext
	ValidationContextType isCommonTlsContext_ValidationContextType `protobuf_oneof:"validation_context_type"`
	AlpnProtocols         []string                                 `protobuf:"bytes,4,rep,name=alpn_protocols,json=alpnProtocols,proto3" json:"alpn_protocols,omitempty"`
	XXX_NoUnkeyedLiteral  struct{}                                 `json:"-"`
	XXX_unrecognized      []byte                                   `json:"-"`
	XXX_sizecache         int32                                    `json:"-"`
}

func (m *CommonTlsContext) Reset()         { *m = CommonTlsContext{} }
func (m *CommonTlsContext) String() string { return proto.CompactTextString(m) }
func (*CommonTlsContext) ProtoMessage()    {}
func (*CommonTlsContext) Descriptor() ([]byte, []int) {
	return fileDescriptor_cert_f82beca1d890b9d7, []int{4}
}
func (m *CommonTlsContext) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_CommonTlsContext.Unmarshal(m, b)
}
func (m *CommonTlsContext) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_CommonTlsContext.Marshal(b, m, deterministic)
}
func (dst *CommonTlsContext) XXX_Merge(src proto.Message) {
	xxx_messageInfo_CommonTlsContext.Merge(dst, src)
}
func (m *CommonTlsContext) XXX_Size() int {
	return xxx_messageInfo_CommonTlsContext.Size(m)
}
func (m *CommonTlsContext) XXX_DiscardUnknown() {
	xxx_messageInfo_CommonTlsContext.DiscardUnknown(m)
}

var xxx_messageInfo_CommonTlsContext proto.InternalMessageInfo

func (m *CommonTlsContext) GetTlsParams() *TlsParameters {
	if m != nil {
		return m.TlsParams
	}
	return nil
}

func (m *CommonTlsContext) GetTlsCertificates() []*TlsCertificate {
	if m != nil {
		return m.TlsCertificates
	}
	return nil
}

func (m *CommonTlsContext) GetTlsCertificateSdsSecretConfigs() []*SdsSecretConfig {
	if m != nil {
		return m.TlsCertificateSdsSecretConfigs
	}
	return nil
}

type isCommonTlsContext_ValidationContextType interface {
	isCommonTlsContext_ValidationContextType()
}

type CommonTlsContext_ValidationContext struct {
	ValidationContext *CertificateValidationContext `protobuf:"bytes,3,opt,name=validation_context,json=validationContext,proto3,oneof"`
}

type CommonTlsContext_ValidationContextSdsSecretConfig struct {
	ValidationContextSdsSecretConfig *SdsSecretConfig `protobuf:"bytes,7,opt,name=validation_context_sds_secret_config,json=validationContextSdsSecretConfig,proto3,oneof"`
}

type CommonTlsContext_CombinedValidationContext struct {
	CombinedValidationContext *CommonTlsContext_CombinedCertificateValidationContext `protobuf:"bytes,8,opt,name=combined_validation_context,json=combinedValidationContext,proto3,oneof"`
}

func (*CommonTlsContext_ValidationContext) isCommonTlsContext_ValidationContextType() {}

func (*CommonTlsContext_ValidationContextSdsSecretConfig) isCommonTlsContext_ValidationContextType() {}

func (*CommonTlsContext_CombinedValidationContext) isCommonTlsContext_ValidationContextType() {}

func (m *CommonTlsContext) GetValidationContextType() isCommonTlsContext_ValidationContextType {
	if m != nil {
		return m.ValidationContextType
	}
	return nil
}

func (m *CommonTlsContext) GetValidationContext() *CertificateValidationContext {
	if x, ok := m.GetValidationContextType().(*CommonTlsContext_ValidationContext); ok {
		return x.ValidationContext
	}
	return nil
}

func (m *CommonTlsContext) GetValidationContextSdsSecretConfig() *SdsSecretConfig {
	if x, ok := m.GetValidationContextType().(*CommonTlsContext_ValidationContextSdsSecretConfig); ok {
		return x.ValidationContextSdsSecretConfig
	}
	return nil
}

func (m *CommonTlsContext) GetCombinedValidationContext() *CommonTlsContext_CombinedCertificateValidationContext {
	if x, ok := m.GetValidationContextType().(*CommonTlsContext_CombinedValidationContext); ok {
		return x.CombinedValidationContext
	}
	return nil
}

func (m *CommonTlsContext) GetAlpnProtocols() []string {
	if m != nil {
		return m.AlpnProtocols
	}
	return nil
}

// XXX_OneofFuncs is for the internal use of the proto package.
func (*CommonTlsContext) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
	return _CommonTlsContext_OneofMarshaler, _CommonTlsContext_OneofUnmarshaler, _CommonTlsContext_OneofSizer, []interface{}{
		(*CommonTlsContext_ValidationContext)(nil),
		(*CommonTlsContext_ValidationContextSdsSecretConfig)(nil),
		(*CommonTlsContext_CombinedValidationContext)(nil),
	}
}

func _CommonTlsContext_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
	m := msg.(*CommonTlsContext)
	// validation_context_type
	switch x := m.ValidationContextType.(type) {
	case *CommonTlsContext_ValidationContext:
		b.EncodeVarint(3<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.ValidationContext); err != nil {
			return err
		}
	case *CommonTlsContext_ValidationContextSdsSecretConfig:
		b.EncodeVarint(7<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.ValidationContextSdsSecretConfig); err != nil {
			return err
		}
	case *CommonTlsContext_CombinedValidationContext:
		b.EncodeVarint(8<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.CombinedValidationContext); err != nil {
			return err
		}
	case nil:
	default:
		return fmt.Errorf("CommonTlsContext.ValidationContextType has unexpected type %T", x)
	}
	return nil
}

func _CommonTlsContext_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
	m := msg.(*CommonTlsContext)
	switch tag {
	case 3: // validation_context_type.validation_context
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(CertificateValidationContext)
		err := b.DecodeMessage(msg)
		m.ValidationContextType = &CommonTlsContext_ValidationContext{msg}
		return true, err
	case 7: // validation_context_type.validation_context_sds_secret_config
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(SdsSecretConfig)
		err := b.DecodeMessage(msg)
		m.ValidationContextType = &CommonTlsContext_ValidationContextSdsSecretConfig{msg}
		return true, err
	case 8: // validation_context_type.combined_validation_context
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(CommonTlsContext_CombinedCertificateValidationContext)
		err := b.DecodeMessage(msg)
		m.ValidationContextType = &CommonTlsContext_CombinedValidationContext{msg}
		return true, err
	default:
		return false, nil
	}
}

func _CommonTlsContext_OneofSizer(msg proto.Message) (n int) {
	m := msg.(*CommonTlsContext)
	// validation_context_type
	switch x := m.ValidationContextType.(type) {
	case *CommonTlsContext_ValidationContext:
		s := proto.Size(x.ValidationContext)
		n += 1 // tag and wire
		n += proto.SizeVarint(uint64(s))
		n += s
	case *CommonTlsContext_ValidationContextSdsSecretConfig:
		s := proto.Size(x.ValidationContextSdsSecretConfig)
		n += 1 // tag and wire
		n += proto.SizeVarint(uint64(s))
		n += s
	case *CommonTlsContext_CombinedValidationContext:
		s := proto.Size(x.CombinedValidationContext)
		n += 1 // tag and wire
		n += proto.SizeVarint(uint64(s))
		n += s
	case nil:
	default:
		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
	}
	return n
}

type CommonTlsContext_CombinedCertificateValidationContext struct {
	DefaultValidationContext         *CertificateValidationContext `protobuf:"bytes,1,opt,name=default_validation_context,json=defaultValidationContext,proto3" json:"default_validation_context,omitempty"`
	ValidationContextSdsSecretConfig *SdsSecretConfig              `protobuf:"bytes,2,opt,name=validation_context_sds_secret_config,json=validationContextSdsSecretConfig,proto3" json:"validation_context_sds_secret_config,omitempty"`
	XXX_NoUnkeyedLiteral             struct{}                      `json:"-"`
	XXX_unrecognized                 []byte                        `json:"-"`
	XXX_sizecache                    int32                         `json:"-"`
}

func (m *CommonTlsContext_CombinedCertificateValidationContext) Reset() {
	*m = CommonTlsContext_CombinedCertificateValidationContext{}
}
func (m *CommonTlsContext_CombinedCertificateValidationContext) String() string {
	return proto.CompactTextString(m)
}
func (*CommonTlsContext_CombinedCertificateValidationContext) ProtoMessage() {}
func (*CommonTlsContext_CombinedCertificateValidationContext) Descriptor() ([]byte, []int) {
	return fileDescriptor_cert_f82beca1d890b9d7, []int{4, 0}
}
func (m *CommonTlsContext_CombinedCertificateValidationContext) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_CommonTlsContext_CombinedCertificateValidationContext.Unmarshal(m, b)
}
func (m *CommonTlsContext_CombinedCertificateValidationContext) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_CommonTlsContext_CombinedCertificateValidationContext.Marshal(b, m, deterministic)
}
func (dst *CommonTlsContext_CombinedCertificateValidationContext) XXX_Merge(src proto.Message) {
	xxx_messageInfo_CommonTlsContext_CombinedCertificateValidationContext.Merge(dst, src)
}
func (m *CommonTlsContext_CombinedCertificateValidationContext) XXX_Size() int {
	return xxx_messageInfo_CommonTlsContext_CombinedCertificateValidationContext.Size(m)
}
func (m *CommonTlsContext_CombinedCertificateValidationContext) XXX_DiscardUnknown() {
	xxx_messageInfo_CommonTlsContext_CombinedCertificateValidationContext.DiscardUnknown(m)
}

var xxx_messageInfo_CommonTlsContext_CombinedCertificateValidationContext proto.InternalMessageInfo

func (m *CommonTlsContext_CombinedCertificateValidationContext) GetDefaultValidationContext() *CertificateValidationContext {
	if m != nil {
		return m.DefaultValidationContext
	}
	return nil
}

func (m *CommonTlsContext_CombinedCertificateValidationContext) GetValidationContextSdsSecretConfig() *SdsSecretConfig {
	if m != nil {
		return m.ValidationContextSdsSecretConfig
	}
	return nil
}

type UpstreamTlsContext struct {
	CommonTlsContext     *CommonTlsContext     `protobuf:"bytes,1,opt,name=common_tls_context,json=commonTlsContext,proto3" json:"common_tls_context,omitempty"`
	Sni                  string                `protobuf:"bytes,2,opt,name=sni,proto3" json:"sni,omitempty"`
	AllowRenegotiation   bool                  `protobuf:"varint,3,opt,name=allow_renegotiation,json=allowRenegotiation,proto3" json:"allow_renegotiation,omitempty"`
	MaxSessionKeys       *wrappers.UInt32Value `protobuf:"bytes,4,opt,name=max_session_keys,json=maxSessionKeys,proto3" json:"max_session_keys,omitempty"`
	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
	XXX_unrecognized     []byte                `json:"-"`
	XXX_sizecache        int32                 `json:"-"`
}

func (m *UpstreamTlsContext) Reset()         { *m = UpstreamTlsContext{} }
func (m *UpstreamTlsContext) String() string { return proto.CompactTextString(m) }
func (*UpstreamTlsContext) ProtoMessage()    {}
func (*UpstreamTlsContext) Descriptor() ([]byte, []int) {
	return fileDescriptor_cert_f82beca1d890b9d7, []int{5}
}
func (m *UpstreamTlsContext) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_UpstreamTlsContext.Unmarshal(m, b)
}
func (m *UpstreamTlsContext) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_UpstreamTlsContext.Marshal(b, m, deterministic)
}
func (dst *UpstreamTlsContext) XXX_Merge(src proto.Message) {
	xxx_messageInfo_UpstreamTlsContext.Merge(dst, src)
}
func (m *UpstreamTlsContext) XXX_Size() int {
	return xxx_messageInfo_UpstreamTlsContext.Size(m)
}
func (m *UpstreamTlsContext) XXX_DiscardUnknown() {
	xxx_messageInfo_UpstreamTlsContext.DiscardUnknown(m)
}

var xxx_messageInfo_UpstreamTlsContext proto.InternalMessageInfo

func (m *UpstreamTlsContext) GetCommonTlsContext() *CommonTlsContext {
	if m != nil {
		return m.CommonTlsContext
	}
	return nil
}

func (m *UpstreamTlsContext) GetSni() string {
	if m != nil {
		return m.Sni
	}
	return ""
}

func (m *UpstreamTlsContext) GetAllowRenegotiation() bool {
	if m != nil {
		return m.AllowRenegotiation
	}
	return false
}

func (m *UpstreamTlsContext) GetMaxSessionKeys() *wrappers.UInt32Value {
	if m != nil {
		return m.MaxSessionKeys
	}
	return nil
}

type DownstreamTlsContext struct {
	CommonTlsContext         *CommonTlsContext   `protobuf:"bytes,1,opt,name=common_tls_context,json=commonTlsContext,proto3" json:"common_tls_context,omitempty"`
	RequireClientCertificate *wrappers.BoolValue `protobuf:"bytes,2,opt,name=require_client_certificate,json=requireClientCertificate,proto3" json:"require_client_certificate,omitempty"`
	RequireSni               *wrappers.BoolValue `protobuf:"bytes,3,opt,name=require_sni,json=requireSni,proto3" json:"require_sni,omitempty"`
	// Types that are valid to be assigned to SessionTicketKeysType:
	//	*DownstreamTlsContext_SessionTicketKeys
	//	*DownstreamTlsContext_SessionTicketKeysSdsSecretConfig
	SessionTicketKeysType isDownstreamTlsContext_SessionTicketKeysType `protobuf_oneof:"session_ticket_keys_type"`
	XXX_NoUnkeyedLiteral  struct{}                                     `json:"-"`
	XXX_unrecognized      []byte                                       `json:"-"`
	XXX_sizecache         int32                                        `json:"-"`
}

func (m *DownstreamTlsContext) Reset()         { *m = DownstreamTlsContext{} }
func (m *DownstreamTlsContext) String() string { return proto.CompactTextString(m) }
func (*DownstreamTlsContext) ProtoMessage()    {}
func (*DownstreamTlsContext) Descriptor() ([]byte, []int) {
	return fileDescriptor_cert_f82beca1d890b9d7, []int{6}
}
func (m *DownstreamTlsContext) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_DownstreamTlsContext.Unmarshal(m, b)
}
func (m *DownstreamTlsContext) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_DownstreamTlsContext.Marshal(b, m, deterministic)
}
func (dst *DownstreamTlsContext) XXX_Merge(src proto.Message) {
	xxx_messageInfo_DownstreamTlsContext.Merge(dst, src)
}
func (m *DownstreamTlsContext) XXX_Size() int {
	return xxx_messageInfo_DownstreamTlsContext.Size(m)
}
func (m *DownstreamTlsContext) XXX_DiscardUnknown() {
	xxx_messageInfo_DownstreamTlsContext.DiscardUnknown(m)
}

var xxx_messageInfo_DownstreamTlsContext proto.InternalMessageInfo

func (m *DownstreamTlsContext) GetCommonTlsContext() *CommonTlsContext {
	if m != nil {
		return m.CommonTlsContext
	}
	return nil
}

func (m *DownstreamTlsContext) GetRequireClientCertificate() *wrappers.BoolValue {
	if m != nil {
		return m.RequireClientCertificate
	}
	return nil
}

func (m *DownstreamTlsContext) GetRequireSni() *wrappers.BoolValue {
	if m != nil {
		return m.RequireSni
	}
	return nil
}

type isDownstreamTlsContext_SessionTicketKeysType interface {
	isDownstreamTlsContext_SessionTicketKeysType()
}

type DownstreamTlsContext_SessionTicketKeys struct {
	SessionTicketKeys *TlsSessionTicketKeys `protobuf:"bytes,4,opt,name=session_ticket_keys,json=sessionTicketKeys,proto3,oneof"`
}

type DownstreamTlsContext_SessionTicketKeysSdsSecretConfig struct {
	SessionTicketKeysSdsSecretConfig *SdsSecretConfig `protobuf:"bytes,5,opt,name=session_ticket_keys_sds_secret_config,json=sessionTicketKeysSdsSecretConfig,proto3,oneof"`
}

func (*DownstreamTlsContext_SessionTicketKeys) isDownstreamTlsContext_SessionTicketKeysType() {}

func (*DownstreamTlsContext_SessionTicketKeysSdsSecretConfig) isDownstreamTlsContext_SessionTicketKeysType() {
}

func (m *DownstreamTlsContext) GetSessionTicketKeysType() isDownstreamTlsContext_SessionTicketKeysType {
	if m != nil {
		return m.SessionTicketKeysType
	}
	return nil
}

func (m *DownstreamTlsContext) GetSessionTicketKeys() *TlsSessionTicketKeys {
	if x, ok := m.GetSessionTicketKeysType().(*DownstreamTlsContext_SessionTicketKeys); ok {
		return x.SessionTicketKeys
	}
	return nil
}

func (m *DownstreamTlsContext) GetSessionTicketKeysSdsSecretConfig() *SdsSecretConfig {
	if x, ok := m.GetSessionTicketKeysType().(*DownstreamTlsContext_SessionTicketKeysSdsSecretConfig); ok {
		return x.SessionTicketKeysSdsSecretConfig
	}
	return nil
}

// XXX_OneofFuncs is for the internal use of the proto package.
func (*DownstreamTlsContext) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
	return _DownstreamTlsContext_OneofMarshaler, _DownstreamTlsContext_OneofUnmarshaler, _DownstreamTlsContext_OneofSizer, []interface{}{
		(*DownstreamTlsContext_SessionTicketKeys)(nil),
		(*DownstreamTlsContext_SessionTicketKeysSdsSecretConfig)(nil),
	}
}

func _DownstreamTlsContext_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
	m := msg.(*DownstreamTlsContext)
	// session_ticket_keys_type
	switch x := m.SessionTicketKeysType.(type) {
	case *DownstreamTlsContext_SessionTicketKeys:
		b.EncodeVarint(4<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.SessionTicketKeys); err != nil {
			return err
		}
	case *DownstreamTlsContext_SessionTicketKeysSdsSecretConfig:
		b.EncodeVarint(5<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.SessionTicketKeysSdsSecretConfig); err != nil {
			return err
		}
	case nil:
	default:
		return fmt.Errorf("DownstreamTlsContext.SessionTicketKeysType has unexpected type %T", x)
	}
	return nil
}

func _DownstreamTlsContext_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
	m := msg.(*DownstreamTlsContext)
	switch tag {
	case 4: // session_ticket_keys_type.session_ticket_keys
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(TlsSessionTicketKeys)
		err := b.DecodeMessage(msg)
		m.SessionTicketKeysType = &DownstreamTlsContext_SessionTicketKeys{msg}
		return true, err
	case 5: // session_ticket_keys_type.session_ticket_keys_sds_secret_config
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(SdsSecretConfig)
		err := b.DecodeMessage(msg)
		m.SessionTicketKeysType = &DownstreamTlsContext_SessionTicketKeysSdsSecretConfig{msg}
		return true, err
	default:
		return false, nil
	}
}

func _DownstreamTlsContext_OneofSizer(msg proto.Message) (n int) {
	m := msg.(*DownstreamTlsContext)
	// session_ticket_keys_type
	switch x := m.SessionTicketKeysType.(type) {
	case *DownstreamTlsContext_SessionTicketKeys:
		s := proto.Size(x.SessionTicketKeys)
		n += 1 // tag and wire
		n += proto.SizeVarint(uint64(s))
		n += s
	case *DownstreamTlsContext_SessionTicketKeysSdsSecretConfig:
		s := proto.Size(x.SessionTicketKeysSdsSecretConfig)
		n += 1 // tag and wire
		n += proto.SizeVarint(uint64(s))
		n += s
	case nil:
	default:
		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
	}
	return n
}

type SdsSecretConfig struct {
	Name                 string                      `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	SdsConfig            *config_source.ConfigSource `protobuf:"bytes,2,opt,name=sds_config,json=sdsConfig,proto3" json:"sds_config,omitempty"`
	XXX_NoUnkeyedLiteral struct{}                    `json:"-"`
	XXX_unrecognized     []byte                      `json:"-"`
	XXX_sizecache        int32                       `json:"-"`
}

func (m *SdsSecretConfig) Reset()         { *m = SdsSecretConfig{} }
func (m *SdsSecretConfig) String() string { return proto.CompactTextString(m) }
func (*SdsSecretConfig) ProtoMessage()    {}
func (*SdsSecretConfig) Descriptor() ([]byte, []int) {
	return fileDescriptor_cert_f82beca1d890b9d7, []int{7}
}
func (m *SdsSecretConfig) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_SdsSecretConfig.Unmarshal(m, b)
}
func (m *SdsSecretConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_SdsSecretConfig.Marshal(b, m, deterministic)
}
func (dst *SdsSecretConfig) XXX_Merge(src proto.Message) {
	xxx_messageInfo_SdsSecretConfig.Merge(dst, src)
}
func (m *SdsSecretConfig) XXX_Size() int {
	return xxx_messageInfo_SdsSecretConfig.Size(m)
}
func (m *SdsSecretConfig) XXX_DiscardUnknown() {
	xxx_messageInfo_SdsSecretConfig.DiscardUnknown(m)
}

var xxx_messageInfo_SdsSecretConfig proto.InternalMessageInfo

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

func (m *SdsSecretConfig) GetSdsConfig() *config_source.ConfigSource {
	if m != nil {
		return m.SdsConfig
	}
	return nil
}

type Secret struct {
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Types that are valid to be assigned to Type:
	//	*Secret_TlsCertificate
	//	*Secret_SessionTicketKeys
	//	*Secret_ValidationContext
	Type                 isSecret_Type `protobuf_oneof:"type"`
	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
	XXX_unrecognized     []byte        `json:"-"`
	XXX_sizecache        int32         `json:"-"`
}

func (m *Secret) Reset()         { *m = Secret{} }
func (m *Secret) String() string { return proto.CompactTextString(m) }
func (*Secret) ProtoMessage()    {}
func (*Secret) Descriptor() ([]byte, []int) {
	return fileDescriptor_cert_f82beca1d890b9d7, []int{8}
}
func (m *Secret) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Secret.Unmarshal(m, b)
}
func (m *Secret) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Secret.Marshal(b, m, deterministic)
}
func (dst *Secret) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Secret.Merge(dst, src)
}
func (m *Secret) XXX_Size() int {
	return xxx_messageInfo_Secret.Size(m)
}
func (m *Secret) XXX_DiscardUnknown() {
	xxx_messageInfo_Secret.DiscardUnknown(m)
}

var xxx_messageInfo_Secret proto.InternalMessageInfo

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

type isSecret_Type interface {
	isSecret_Type()
}

type Secret_TlsCertificate struct {
	TlsCertificate *TlsCertificate `protobuf:"bytes,2,opt,name=tls_certificate,json=tlsCertificate,proto3,oneof"`
}

type Secret_SessionTicketKeys struct {
	SessionTicketKeys *TlsSessionTicketKeys `protobuf:"bytes,3,opt,name=session_ticket_keys,json=sessionTicketKeys,proto3,oneof"`
}

type Secret_ValidationContext struct {
	ValidationContext *CertificateValidationContext `protobuf:"bytes,4,opt,name=validation_context,json=validationContext,proto3,oneof"`
}

func (*Secret_TlsCertificate) isSecret_Type() {}

func (*Secret_SessionTicketKeys) isSecret_Type() {}

func (*Secret_ValidationContext) isSecret_Type() {}

func (m *Secret) GetType() isSecret_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (m *Secret) GetTlsCertificate() *TlsCertificate {
	if x, ok := m.GetType().(*Secret_TlsCertificate); ok {
		return x.TlsCertificate
	}
	return nil
}

func (m *Secret) GetSessionTicketKeys() *TlsSessionTicketKeys {
	if x, ok := m.GetType().(*Secret_SessionTicketKeys); ok {
		return x.SessionTicketKeys
	}
	return nil
}

func (m *Secret) GetValidationContext() *CertificateValidationContext {
	if x, ok := m.GetType().(*Secret_ValidationContext); ok {
		return x.ValidationContext
	}
	return nil
}

// XXX_OneofFuncs is for the internal use of the proto package.
func (*Secret) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
	return _Secret_OneofMarshaler, _Secret_OneofUnmarshaler, _Secret_OneofSizer, []interface{}{
		(*Secret_TlsCertificate)(nil),
		(*Secret_SessionTicketKeys)(nil),
		(*Secret_ValidationContext)(nil),
	}
}

func _Secret_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
	m := msg.(*Secret)
	// type
	switch x := m.Type.(type) {
	case *Secret_TlsCertificate:
		b.EncodeVarint(2<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.TlsCertificate); err != nil {
			return err
		}
	case *Secret_SessionTicketKeys:
		b.EncodeVarint(3<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.SessionTicketKeys); err != nil {
			return err
		}
	case *Secret_ValidationContext:
		b.EncodeVarint(4<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.ValidationContext); err != nil {
			return err
		}
	case nil:
	default:
		return fmt.Errorf("Secret.Type has unexpected type %T", x)
	}
	return nil
}

func _Secret_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
	m := msg.(*Secret)
	switch tag {
	case 2: // type.tls_certificate
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(TlsCertificate)
		err := b.DecodeMessage(msg)
		m.Type = &Secret_TlsCertificate{msg}
		return true, err
	case 3: // type.session_ticket_keys
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(TlsSessionTicketKeys)
		err := b.DecodeMessage(msg)
		m.Type = &Secret_SessionTicketKeys{msg}
		return true, err
	case 4: // type.validation_context
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(CertificateValidationContext)
		err := b.DecodeMessage(msg)
		m.Type = &Secret_ValidationContext{msg}
		return true, err
	default:
		return false, nil
	}
}

func _Secret_OneofSizer(msg proto.Message) (n int) {
	m := msg.(*Secret)
	// type
	switch x := m.Type.(type) {
	case *Secret_TlsCertificate:
		s := proto.Size(x.TlsCertificate)
		n += 1 // tag and wire
		n += proto.SizeVarint(uint64(s))
		n += s
	case *Secret_SessionTicketKeys:
		s := proto.Size(x.SessionTicketKeys)
		n += 1 // tag and wire
		n += proto.SizeVarint(uint64(s))
		n += s
	case *Secret_ValidationContext:
		s := proto.Size(x.ValidationContext)
		n += 1 // tag and wire
		n += proto.SizeVarint(uint64(s))
		n += s
	case nil:
	default:
		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
	}
	return n
}

func init() {
	proto.RegisterType((*TlsParameters)(nil), "envoy.api.v2.auth.TlsParameters")
	proto.RegisterType((*TlsCertificate)(nil), "envoy.api.v2.auth.TlsCertificate")
	proto.RegisterType((*TlsSessionTicketKeys)(nil), "envoy.api.v2.auth.TlsSessionTicketKeys")
	proto.RegisterType((*CertificateValidationContext)(nil), "envoy.api.v2.auth.CertificateValidationContext")
	proto.RegisterType((*CommonTlsContext)(nil), "envoy.api.v2.auth.CommonTlsContext")
	proto.RegisterType((*CommonTlsContext_CombinedCertificateValidationContext)(nil), "envoy.api.v2.auth.CommonTlsContext.CombinedCertificateValidationContext")
	proto.RegisterType((*UpstreamTlsContext)(nil), "envoy.api.v2.auth.UpstreamTlsContext")
	proto.RegisterType((*DownstreamTlsContext)(nil), "envoy.api.v2.auth.DownstreamTlsContext")
	proto.RegisterType((*SdsSecretConfig)(nil), "envoy.api.v2.auth.SdsSecretConfig")
	proto.RegisterType((*Secret)(nil), "envoy.api.v2.auth.Secret")
	proto.RegisterEnum("envoy.api.v2.auth.TlsParameters_TlsProtocol", TlsParameters_TlsProtocol_name, TlsParameters_TlsProtocol_value)
}

func init() { proto.RegisterFile("envoy/api/v2/auth/cert.proto", fileDescriptor_cert_f82beca1d890b9d7) }

var fileDescriptor_cert_f82beca1d890b9d7 = []byte{
	// 1295 bytes of a gzipped FileDescriptorProto
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x56, 0x4d, 0x77, 0xdb, 0x44,
	0x17, 0x8e, 0x6c, 0xc7, 0x75, 0xae, 0xdb, 0x54, 0x99, 0xf6, 0x3d, 0x51, 0xfc, 0x86, 0xd6, 0x55,
	0xdb, 0x43, 0x16, 0x3d, 0x36, 0x75, 0x61, 0xc1, 0x57, 0xa1, 0x76, 0xe1, 0x84, 0x36, 0xd0, 0x22,
	0x3b, 0x3d, 0xc0, 0x46, 0x4c, 0xe4, 0x49, 0x3c, 0x44, 0x5f, 0xcc, 0x8c, 0x9d, 0x98, 0x05, 0x0b,
	0x96, 0x5d, 0x76, 0xcd, 0x86, 0x5f, 0xc0, 0x9e, 0x15, 0x7f, 0x80, 0x1f, 0xc2, 0xa6, 0x6b, 0x56,
	0xc0, 0x99, 0x91, 0x14, 0x4b, 0x96, 0x5a, 0x1b, 0x4e, 0x0f, 0x3b, 0xcd, 0xdc, 0xb9, 0xcf, 0x33,
	0x73, 0xef, 0x73, 0xef, 0x15, 0x6c, 0x13, 0x7f, 0x12, 0x4c, 0xdb, 0x38, 0xa4, 0xed, 0x49, 0xa7,
	0x8d, 0xc7, 0x62, 0xd4, 0x76, 0x08, 0x13, 0xad, 0x90, 0x05, 0x22, 0x40, 0x1b, 0xca, 0xda, 0xc2,
	0x21, 0x6d, 0x4d, 0x3a, 0x2d, 0x69, 0x6d, 0x64, 0x1d, 0x9c, 0x80, 0x91, 0xf6, 0x01, 0xe6, 0x24,
	0x72, 0x68, 0xdc, 0xcc, 0x5b, 0x9d, 0xc0, 0x3f, 0xa4, 0x47, 0x36, 0x0f, 0xc6, 0xcc, 0x49, 0x8e,
	0x5d, 0x39, 0x0a, 0x82, 0x23, 0x97, 0xb4, 0xd5, 0xea, 0x60, 0x7c, 0xd8, 0x3e, 0x61, 0x38, 0x0c,
	0x09, 0xe3, 0xb1, 0x7d, 0x73, 0x82, 0x5d, 0x3a, 0xc4, 0x82, 0xb4, 0x93, 0x8f, 0xc8, 0x60, 0xfe,
	0x58, 0x86, 0x0b, 0x03, 0x97, 0x3f, 0xc6, 0x0c, 0x7b, 0x44, 0x10, 0xc6, 0xd1, 0x14, 0xb6, 0x85,
	0xcb, 0x6d, 0x8f, 0xfa, 0xd4, 0x1b, 0x7b, 0xb6, 0x3a, 0xe6, 0x04, 0xae, 0x3d, 0x21, 0x8c, 0xd3,
	0xc0, 0x37, 0xb4, 0xa6, 0xb6, 0xb3, 0xde, 0xb9, 0xd5, 0xca, 0xbd, 0xa4, 0x95, 0xc1, 0x51, 0xab,
	0xd8, 0xb7, 0x0b, 0xbf, 0xfc, 0xfe, 0x6b, 0x79, 0xf5, 0x07, 0xad, 0xa4, 0x6b, 0xd6, 0x96, 0x70,
	0xf9, 0xa7, 0x11, 0x78, 0x62, 0x7f, 0x12, 0x41, 0x9f, 0x51, 0xe3, 0xd3, 0x62, 0xea, 0xd2, 0xab,
	0xa0, 0x8e, 0xc0, 0xe7, 0xa9, 0xaf, 0xc3, 0x05, 0x87, 0x86, 0x23, 0xc2, 0x6c, 0x3e, 0xa6, 0x82,
	0x70, 0xa3, 0xdc, 0x2c, 0xef, 0xac, 0x59, 0xe7, 0xa3, 0xcd, 0xbe, 0xda, 0x43, 0x57, 0xa1, 0x4e,
	0x9c, 0xe1, 0xc8, 0x76, 0xc6, 0x6c, 0x42, 0xb8, 0x51, 0x51, 0x47, 0x40, 0x6e, 0xf5, 0xd4, 0x8e,
	0xf9, 0x08, 0xea, 0x29, 0x6e, 0x74, 0x1e, 0x6a, 0x83, 0xbd, 0xbe, 0x7d, 0x6f, 0x7f, 0xf0, 0x48,
	0x5f, 0x41, 0x75, 0x38, 0x37, 0xd8, 0xeb, 0x4f, 0x6e, 0xdb, 0x6f, 0xe8, 0xda, 0x6c, 0x71, 0x5b,
	0x2f, 0xcd, 0x16, 0x1d, 0xbd, 0x3c, 0x5b, 0xdc, 0xd1, 0x2b, 0xe6, 0x1f, 0x25, 0x58, 0x1f, 0xb8,
	0xbc, 0x47, 0x98, 0xa0, 0x87, 0xd4, 0xc1, 0x82, 0xa0, 0x07, 0xb0, 0xe1, 0xcc, 0x96, 0xb6, 0x33,
	0xc2, 0x34, 0x4a, 0x4a, 0xbd, 0xf3, 0x5a, 0x36, 0x32, 0x52, 0x2d, 0xad, 0xfb, 0x58, 0xe0, 0xbe,
	0x92, 0x8a, 0xa5, 0xa7, 0xfc, 0x7a, 0xd2, 0x0d, 0xdd, 0x85, 0x7a, 0xc8, 0xe8, 0x44, 0xe2, 0x1c,
	0x93, 0xa9, 0x8a, 0xef, 0x42, 0x14, 0x88, 0x3d, 0x1e, 0x92, 0x29, 0x7a, 0x1b, 0x6a, 0x21, 0xe6,
	0xfc, 0x24, 0x60, 0x43, 0xa3, 0xbc, 0x8c, 0xf3, 0xd9, 0x71, 0x49, 0x1d, 0x38, 0x3c, 0xb4, 0xb9,
	0xc0, 0xa1, 0x4b, 0x8c, 0xca, 0x52, 0xd4, 0xd2, 0xa3, 0xaf, 0x1c, 0x90, 0x0d, 0xdb, 0x9c, 0x1e,
	0xf9, 0x64, 0x68, 0xa7, 0xa3, 0x21, 0xa8, 0x47, 0xb8, 0xc0, 0x5e, 0x68, 0xac, 0x36, 0xcb, 0x8b,
	0x01, 0x1b, 0x11, 0x44, 0x2a, 0xbc, 0x83, 0x04, 0xc0, 0xdc, 0x87, 0xcb, 0x03, 0x97, 0xf7, 0x09,
	0x97, 0xfa, 0x18, 0x50, 0xe7, 0x98, 0x88, 0x87, 0x64, 0xca, 0xd1, 0xfb, 0x50, 0x39, 0x26, 0x53,
	0x6e, 0x68, 0x4b, 0x10, 0xc4, 0xea, 0x7b, 0xa6, 0x95, 0x6a, 0x9a, 0xa5, 0xdc, 0xcc, 0xdf, 0x2a,
	0xb0, 0x9d, 0xe2, 0x7b, 0x12, 0x95, 0x23, 0x0d, 0xfc, 0x5e, 0xe0, 0x0b, 0x72, 0x2a, 0xd0, 0x7b,
	0x00, 0x82, 0x8d, 0xb9, 0x90, 0x2f, 0xc3, 0xcb, 0x25, 0x76, 0x2d, 0x76, 0xe8, 0x61, 0xb4, 0x0b,
	0x9b, 0x13, 0xc2, 0xe8, 0xe1, 0x34, 0x13, 0x16, 0x1e, 0x1e, 0xd3, 0x48, 0xd1, 0x5d, 0x5d, 0xde,
	0xa8, 0xfe, 0x4c, 0xab, 0x99, 0x55, 0x56, 0x69, 0xde, 0xda, 0xb9, 0x65, 0xfd, 0x2f, 0x72, 0x48,
	0x5d, 0xaa, 0x1f, 0x1e, 0xd3, 0x17, 0x20, 0x8d, 0x30, 0x1f, 0x19, 0xa5, 0x02, 0xa4, 0x0f, 0x77,
	0xec, 0x02, 0xa4, 0x5d, 0xcc, 0x47, 0xe8, 0xad, 0x33, 0x24, 0x3e, 0x3e, 0xf8, 0x86, 0x38, 0xc2,
	0xc6, 0xae, 0xb0, 0x7d, 0xec, 0x91, 0xb8, 0x84, 0x2e, 0x47, 0xe6, 0x7e, 0x64, 0xbd, 0xe7, 0x8a,
	0xcf, 0xb0, 0x27, 0x85, 0x7e, 0x89, 0x91, 0x6f, 0xc7, 0x94, 0x11, 0x3b, 0xad, 0x94, 0x55, 0x15,
	0x91, 0x46, 0x2b, 0xea, 0x78, 0xad, 0xa4, 0xe3, 0xb5, 0xba, 0x41, 0xe0, 0x3e, 0xc1, 0xee, 0x98,
	0x58, 0x1b, 0xb1, 0xdb, 0xa3, 0x99, 0x5a, 0x8e, 0xe1, 0x46, 0x82, 0xf5, 0x52, 0xd5, 0x54, 0x17,
	0x82, 0x5f, 0x8b, 0x71, 0xfa, 0x2f, 0x54, 0x0e, 0x6a, 0x43, 0xd9, 0x61, 0xae, 0x71, 0x6e, 0x99,
	0xd4, 0xc9, 0x93, 0xe8, 0x1d, 0xd8, 0xc2, 0xae, 0x1b, 0x9c, 0xd8, 0xe4, 0x34, 0xa4, 0x2c, 0x7b,
	0x39, 0xa3, 0xd6, 0xd4, 0x76, 0x6a, 0xd6, 0xa6, 0x3a, 0xf0, 0x51, 0x64, 0x4f, 0xb1, 0x9a, 0xcf,
	0xcf, 0x81, 0xde, 0x0b, 0x3c, 0x2f, 0xf0, 0x65, 0x9f, 0x88, 0x35, 0xf4, 0x01, 0x80, 0x6c, 0xa4,
	0xa1, 0x6c, 0x89, 0x3c, 0xd6, 0x50, 0x73, 0x51, 0xdb, 0xb4, 0xd6, 0x44, 0xbc, 0xe4, 0x68, 0x0f,
	0x74, 0x09, 0x90, 0xba, 0x07, 0x57, 0x59, 0xaf, 0x77, 0xae, 0x15, 0xc3, 0xa4, 0xae, 0x64, 0x5d,
	0x14, 0x99, 0x35, 0x47, 0xdf, 0x81, 0x39, 0x87, 0x66, 0xf3, 0x21, 0xb7, 0x39, 0x71, 0x18, 0x11,
	0x76, 0x34, 0xcf, 0xb8, 0x51, 0x55, 0xf8, 0x66, 0x01, 0x7e, 0x7f, 0xc8, 0xfb, 0xea, 0x6c, 0x4f,
	0x1d, 0x9d, 0x55, 0x95, 0xae, 0x59, 0x57, 0xb2, 0x64, 0x73, 0x47, 0x39, 0xfa, 0x1a, 0xd0, 0xe4,
	0xac, 0xc6, 0x24, 0x97, 0x0c, 0x50, 0xdc, 0xac, 0xda, 0x05, 0x5c, 0x2f, 0xab, 0xcd, 0xdd, 0x15,
	0x6b, 0x63, 0x92, 0x2b, 0x58, 0x01, 0x37, 0xf2, 0x0c, 0xf9, 0x07, 0xc6, 0x7a, 0x58, 0xe2, 0x7d,
	0xbb, 0x2b, 0x56, 0x33, 0x47, 0x33, 0x77, 0x06, 0x3d, 0xd5, 0xe0, 0xff, 0x4e, 0xe0, 0x1d, 0x50,
	0x29, 0xe6, 0x82, 0x17, 0xd6, 0x14, 0xdb, 0x6e, 0xd1, 0x0b, 0xe7, 0xd4, 0x22, 0x37, 0x14, 0xcc,
	0x82, 0xa7, 0x6f, 0x25, 0x74, 0xf9, 0x9e, 0x75, 0x13, 0xd6, 0xb1, 0x1b, 0xfa, 0x67, 0x13, 0x3b,
	0x99, 0x8d, 0x17, 0xe4, 0x6e, 0x32, 0x0e, 0x79, 0xe3, 0xa7, 0x12, 0xdc, 0x58, 0x86, 0x0c, 0x4d,
	0xa1, 0x31, 0x24, 0x87, 0x78, 0xec, 0x8a, 0xa2, 0xa7, 0x69, 0xff, 0x2a, 0x79, 0xb1, 0x6a, 0x9e,
	0x2a, 0xd5, 0x18, 0x31, 0x7c, 0x9e, 0xfa, 0xfb, 0x25, 0xb3, 0x59, 0x5a, 0x36, 0x9b, 0x19, 0xde,
	0x85, 0x79, 0xed, 0x6e, 0xc1, 0x66, 0x01, 0xbf, 0x98, 0x86, 0xe4, 0x41, 0xa5, 0xb6, 0xaa, 0x57,
	0xcd, 0x3f, 0x35, 0x40, 0xfb, 0x21, 0x17, 0x8c, 0x60, 0x2f, 0x55, 0xf2, 0x9f, 0x03, 0x72, 0x54,
	0x62, 0x6d, 0x55, 0x6a, 0x99, 0x50, 0x5d, 0x5f, 0x42, 0x05, 0x96, 0xee, 0xcc, 0x77, 0x91, 0x6d,
	0x28, 0x73, 0x9f, 0xaa, 0x97, 0xae, 0xc5, 0xaf, 0x60, 0xe5, 0x9d, 0xbf, 0x34, 0x4b, 0x6e, 0xa3,
	0x36, 0x5c, 0x8a, 0x9a, 0x16, 0x23, 0x3e, 0x39, 0x0a, 0x04, 0x55, 0x37, 0x56, 0x95, 0x55, 0xb3,
	0x90, 0x32, 0x59, 0x69, 0x0b, 0xfa, 0x18, 0x74, 0x0f, 0x9f, 0xda, 0x3c, 0x9a, 0xa8, 0xb6, 0x1a,
	0xa2, 0xd1, 0xd8, 0xdf, 0xce, 0xf5, 0xdb, 0xfd, 0x4f, 0x7c, 0x71, 0xa7, 0x13, 0x75, 0xdc, 0x75,
	0x0f, 0x9f, 0xc6, 0x63, 0x58, 0x0e, 0x60, 0xf3, 0x79, 0x19, 0x2e, 0xdf, 0x0f, 0x4e, 0xfc, 0xff,
	0x22, 0x04, 0x5f, 0x40, 0x23, 0x99, 0x1b, 0x8e, 0x4b, 0x89, 0x2f, 0x32, 0xad, 0xb9, 0xb4, 0x70,
	0x5a, 0x18, 0xb1, 0x77, 0x4f, 0x39, 0xa7, 0x7f, 0xe3, 0xde, 0x85, 0xfa, 0xd9, 0x44, 0xf2, 0x69,
	0xdc, 0x90, 0x5e, 0x06, 0x05, 0xc9, 0xe0, 0xf1, 0x29, 0xfa, 0x12, 0x2e, 0x25, 0x61, 0x14, 0xea,
	0xcf, 0x24, 0x1d, 0xcd, 0xd7, 0x8b, 0x3b, 0x74, 0xee, 0x4f, 0x46, 0x76, 0x33, 0x9e, 0xfb, 0xbd,
	0x19, 0xc3, 0xcd, 0x02, 0xe8, 0x82, 0x02, 0x58, 0xfd, 0x27, 0xed, 0x2c, 0xc7, 0x33, 0x2f, 0xfb,
	0x06, 0x18, 0x45, 0xb4, 0x52, 0xf7, 0x26, 0x81, 0x8b, 0xf3, 0xdd, 0x0f, 0x41, 0x45, 0xfd, 0x3f,
	0xc8, 0xe4, 0xae, 0x59, 0xea, 0x1b, 0xdd, 0x05, 0x90, 0xb7, 0xcc, 0xd4, 0xe7, 0xd5, 0x82, 0xe9,
	0x1b, 0x41, 0x24, 0xbf, 0x4e, 0x7c, 0xc8, 0xa3, 0x0d, 0xf3, 0xe7, 0x12, 0x54, 0x23, 0x92, 0x42,
	0xf8, 0x3d, 0xb8, 0x38, 0x37, 0xc4, 0x62, 0x8e, 0xc5, 0x13, 0x71, 0x77, 0xc5, 0x5a, 0xcf, 0x8e,
	0xa9, 0x17, 0x65, 0xb0, 0xfc, 0x0a, 0x32, 0x58, 0x3c, 0xf1, 0x2a, 0xaf, 0x6e, 0xe2, 0x75, 0xab,
	0x50, 0x91, 0x89, 0xe9, 0xbe, 0x09, 0x57, 0x69, 0x10, 0x21, 0x86, 0x2c, 0x38, 0x9d, 0xe6, 0xc1,
	0xbb, 0x6b, 0x12, 0x5d, 0x4d, 0x80, 0xc7, 0xda, 0x57, 0x15, 0xb9, 0x75, 0x50, 0x55, 0xe2, 0xbe,
	0xf3, 0x77, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3c, 0x5e, 0x86, 0x05, 0x2a, 0x0f, 0x00, 0x00,
}
