// Copyright 2023 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.30.0
// 	protoc        v4.23.2
// source: google/cloud/recaptchaenterprise/v1/recaptchaenterprise.proto

package recaptchaenterprisepb

import (
	context "context"
	reflect "reflect"
	sync "sync"

	_ "google.golang.org/genproto/googleapis/api/annotations"
	grpc "google.golang.org/grpc"
	codes "google.golang.org/grpc/codes"
	status "google.golang.org/grpc/status"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	emptypb "google.golang.org/protobuf/types/known/emptypb"
	fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb"
	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
)

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)
)

// Enum that represents an event in the payment transaction lifecycle.
type TransactionEvent_TransactionEventType int32

const (
	// Default, unspecified event type.
	TransactionEvent_TRANSACTION_EVENT_TYPE_UNSPECIFIED TransactionEvent_TransactionEventType = 0
	// Indicates that the transaction is approved by the merchant. The
	// accompanying reasons can include terms such as 'INHOUSE', 'ACCERTIFY',
	// 'CYBERSOURCE', or 'MANUAL_REVIEW'.
	TransactionEvent_MERCHANT_APPROVE TransactionEvent_TransactionEventType = 1
	// Indicates that the transaction is denied and concluded due to risks
	// detected by the merchant. The accompanying reasons can include terms such
	// as 'INHOUSE',  'ACCERTIFY',  'CYBERSOURCE', or 'MANUAL_REVIEW'.
	TransactionEvent_MERCHANT_DENY TransactionEvent_TransactionEventType = 2
	// Indicates that the transaction is being evaluated by a human, due to
	// suspicion or risk.
	TransactionEvent_MANUAL_REVIEW TransactionEvent_TransactionEventType = 3
	// Indicates that the authorization attempt with the card issuer succeeded.
	TransactionEvent_AUTHORIZATION TransactionEvent_TransactionEventType = 4
	// Indicates that the authorization attempt with the card issuer failed.
	// The accompanying reasons can include Visa's '54' indicating that the card
	// is expired, or '82' indicating that the CVV is incorrect.
	TransactionEvent_AUTHORIZATION_DECLINE TransactionEvent_TransactionEventType = 5
	// Indicates that the transaction is completed because the funds were
	// settled.
	TransactionEvent_PAYMENT_CAPTURE TransactionEvent_TransactionEventType = 6
	// Indicates that the transaction could not be completed because the funds
	// were not settled.
	TransactionEvent_PAYMENT_CAPTURE_DECLINE TransactionEvent_TransactionEventType = 7
	// Indicates that the transaction has been canceled. Specify the reason
	// for the cancellation. For example, 'INSUFFICIENT_INVENTORY'.
	TransactionEvent_CANCEL TransactionEvent_TransactionEventType = 8
	// Indicates that the merchant has received a chargeback inquiry due to
	// fraud for the transaction, requesting additional information before a
	// fraud chargeback is officially issued and a formal chargeback
	// notification is sent.
	TransactionEvent_CHARGEBACK_INQUIRY TransactionEvent_TransactionEventType = 9
	// Indicates that the merchant has received a chargeback alert due to fraud
	// for the transaction. The process of resolving the dispute without
	// involving the payment network is started.
	TransactionEvent_CHARGEBACK_ALERT TransactionEvent_TransactionEventType = 10
	// Indicates that a fraud notification is issued for the transaction, sent
	// by the payment instrument's issuing bank because the transaction appears
	// to be fraudulent. We recommend including TC40 or SAFE data in the
	// `reason` field for this event type. For partial chargebacks, we recommend
	// that you include an amount in the `value` field.
	TransactionEvent_FRAUD_NOTIFICATION TransactionEvent_TransactionEventType = 11
	// Indicates that the merchant is informed by the payment network that the
	// transaction has entered the chargeback process due to fraud. Reason code
	// examples include Discover's '6005' and '6041'. For partial chargebacks,
	// we recommend that you include an amount in the `value` field.
	TransactionEvent_CHARGEBACK TransactionEvent_TransactionEventType = 12
	// Indicates that the transaction has entered the chargeback process due to
	// fraud, and that the merchant has chosen to enter representment. Reason
	// examples include Discover's '6005' and '6041'. For partial chargebacks,
	// we recommend that you include an amount in the `value` field.
	TransactionEvent_CHARGEBACK_REPRESENTMENT TransactionEvent_TransactionEventType = 13
	// Indicates that the transaction has had a fraud chargeback which was
	// illegitimate and was reversed as a result. For partial chargebacks, we
	// recommend that you include an amount in the `value` field.
	TransactionEvent_CHARGEBACK_REVERSE TransactionEvent_TransactionEventType = 14
	// Indicates that the merchant has received a refund for a completed
	// transaction. For partial refunds, we recommend that you include an amount
	// in the `value` field. Reason example: 'TAX_EXEMPT' (partial refund of
	// exempt tax)
	TransactionEvent_REFUND_REQUEST TransactionEvent_TransactionEventType = 15
	// Indicates that the merchant has received a refund request for this
	// transaction, but that they have declined it. For partial refunds, we
	// recommend that you include an amount in the `value` field. Reason
	// example: 'TAX_EXEMPT' (partial refund of exempt tax)
	TransactionEvent_REFUND_DECLINE TransactionEvent_TransactionEventType = 16
	// Indicates that the completed transaction was refunded by the merchant.
	// For partial refunds, we recommend that you include an amount in the
	// `value` field. Reason example: 'TAX_EXEMPT' (partial refund of exempt
	// tax)
	TransactionEvent_REFUND TransactionEvent_TransactionEventType = 17
	// Indicates that the completed transaction was refunded by the merchant,
	// and that this refund was reversed. For partial refunds, we recommend that
	// you include an amount in the `value` field.
	TransactionEvent_REFUND_REVERSE TransactionEvent_TransactionEventType = 18
)

// Enum value maps for TransactionEvent_TransactionEventType.
var (
	TransactionEvent_TransactionEventType_name = map[int32]string{
		0:  "TRANSACTION_EVENT_TYPE_UNSPECIFIED",
		1:  "MERCHANT_APPROVE",
		2:  "MERCHANT_DENY",
		3:  "MANUAL_REVIEW",
		4:  "AUTHORIZATION",
		5:  "AUTHORIZATION_DECLINE",
		6:  "PAYMENT_CAPTURE",
		7:  "PAYMENT_CAPTURE_DECLINE",
		8:  "CANCEL",
		9:  "CHARGEBACK_INQUIRY",
		10: "CHARGEBACK_ALERT",
		11: "FRAUD_NOTIFICATION",
		12: "CHARGEBACK",
		13: "CHARGEBACK_REPRESENTMENT",
		14: "CHARGEBACK_REVERSE",
		15: "REFUND_REQUEST",
		16: "REFUND_DECLINE",
		17: "REFUND",
		18: "REFUND_REVERSE",
	}
	TransactionEvent_TransactionEventType_value = map[string]int32{
		"TRANSACTION_EVENT_TYPE_UNSPECIFIED": 0,
		"MERCHANT_APPROVE":                   1,
		"MERCHANT_DENY":                      2,
		"MANUAL_REVIEW":                      3,
		"AUTHORIZATION":                      4,
		"AUTHORIZATION_DECLINE":              5,
		"PAYMENT_CAPTURE":                    6,
		"PAYMENT_CAPTURE_DECLINE":            7,
		"CANCEL":                             8,
		"CHARGEBACK_INQUIRY":                 9,
		"CHARGEBACK_ALERT":                   10,
		"FRAUD_NOTIFICATION":                 11,
		"CHARGEBACK":                         12,
		"CHARGEBACK_REPRESENTMENT":           13,
		"CHARGEBACK_REVERSE":                 14,
		"REFUND_REQUEST":                     15,
		"REFUND_DECLINE":                     16,
		"REFUND":                             17,
		"REFUND_REVERSE":                     18,
	}
)

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

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

func (TransactionEvent_TransactionEventType) Descriptor() protoreflect.EnumDescriptor {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_enumTypes[0].Descriptor()
}

func (TransactionEvent_TransactionEventType) Type() protoreflect.EnumType {
	return &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_enumTypes[0]
}

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

// Deprecated: Use TransactionEvent_TransactionEventType.Descriptor instead.
func (TransactionEvent_TransactionEventType) EnumDescriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{1, 0}
}

// Enum that represents the types of annotations.
type AnnotateAssessmentRequest_Annotation int32

const (
	// Default unspecified type.
	AnnotateAssessmentRequest_ANNOTATION_UNSPECIFIED AnnotateAssessmentRequest_Annotation = 0
	// Provides information that the event turned out to be legitimate.
	AnnotateAssessmentRequest_LEGITIMATE AnnotateAssessmentRequest_Annotation = 1
	// Provides information that the event turned out to be fraudulent.
	AnnotateAssessmentRequest_FRAUDULENT AnnotateAssessmentRequest_Annotation = 2
	// Provides information that the event was related to a login event in which
	// the user typed the correct password. Deprecated, prefer indicating
	// CORRECT_PASSWORD through the reasons field instead.
	//
	// Deprecated: Marked as deprecated in google/cloud/recaptchaenterprise/v1/recaptchaenterprise.proto.
	AnnotateAssessmentRequest_PASSWORD_CORRECT AnnotateAssessmentRequest_Annotation = 3
	// Provides information that the event was related to a login event in which
	// the user typed the incorrect password. Deprecated, prefer indicating
	// INCORRECT_PASSWORD through the reasons field instead.
	//
	// Deprecated: Marked as deprecated in google/cloud/recaptchaenterprise/v1/recaptchaenterprise.proto.
	AnnotateAssessmentRequest_PASSWORD_INCORRECT AnnotateAssessmentRequest_Annotation = 4
)

// Enum value maps for AnnotateAssessmentRequest_Annotation.
var (
	AnnotateAssessmentRequest_Annotation_name = map[int32]string{
		0: "ANNOTATION_UNSPECIFIED",
		1: "LEGITIMATE",
		2: "FRAUDULENT",
		3: "PASSWORD_CORRECT",
		4: "PASSWORD_INCORRECT",
	}
	AnnotateAssessmentRequest_Annotation_value = map[string]int32{
		"ANNOTATION_UNSPECIFIED": 0,
		"LEGITIMATE":             1,
		"FRAUDULENT":             2,
		"PASSWORD_CORRECT":       3,
		"PASSWORD_INCORRECT":     4,
	}
)

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

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

func (AnnotateAssessmentRequest_Annotation) Descriptor() protoreflect.EnumDescriptor {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_enumTypes[1].Descriptor()
}

func (AnnotateAssessmentRequest_Annotation) Type() protoreflect.EnumType {
	return &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_enumTypes[1]
}

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

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

// Enum that represents potential reasons for annotating an assessment.
type AnnotateAssessmentRequest_Reason int32

const (
	// Default unspecified reason.
	AnnotateAssessmentRequest_REASON_UNSPECIFIED AnnotateAssessmentRequest_Reason = 0
	// Indicates that the transaction had a chargeback issued with no other
	// details. When possible, specify the type by using CHARGEBACK_FRAUD or
	// CHARGEBACK_DISPUTE instead.
	AnnotateAssessmentRequest_CHARGEBACK AnnotateAssessmentRequest_Reason = 1
	// Indicates that the transaction had a chargeback issued related to an
	// alleged unauthorized transaction from the cardholder's perspective (for
	// example, the card number was stolen).
	AnnotateAssessmentRequest_CHARGEBACK_FRAUD AnnotateAssessmentRequest_Reason = 8
	// Indicates that the transaction had a chargeback issued related to the
	// cardholder having provided their card details but allegedly not being
	// satisfied with the purchase (for example, misrepresentation, attempted
	// cancellation).
	AnnotateAssessmentRequest_CHARGEBACK_DISPUTE AnnotateAssessmentRequest_Reason = 9
	// Indicates that the completed payment transaction was refunded by the
	// seller.
	AnnotateAssessmentRequest_REFUND AnnotateAssessmentRequest_Reason = 10
	// Indicates that the completed payment transaction was determined to be
	// fraudulent by the seller, and was cancelled and refunded as a result.
	AnnotateAssessmentRequest_REFUND_FRAUD AnnotateAssessmentRequest_Reason = 11
	// Indicates that the payment transaction was accepted, and the user was
	// charged.
	AnnotateAssessmentRequest_TRANSACTION_ACCEPTED AnnotateAssessmentRequest_Reason = 12
	// Indicates that the payment transaction was declined, for example due to
	// invalid card details.
	AnnotateAssessmentRequest_TRANSACTION_DECLINED AnnotateAssessmentRequest_Reason = 13
	// Indicates the transaction associated with the assessment is suspected of
	// being fraudulent based on the payment method, billing details, shipping
	// address or other transaction information.
	AnnotateAssessmentRequest_PAYMENT_HEURISTICS AnnotateAssessmentRequest_Reason = 2
	// Indicates that the user was served a 2FA challenge. An old assessment
	// with `ENUM_VALUES.INITIATED_TWO_FACTOR` reason that has not been
	// overwritten with `PASSED_TWO_FACTOR` is treated as an abandoned 2FA flow.
	// This is equivalent to `FAILED_TWO_FACTOR`.
	AnnotateAssessmentRequest_INITIATED_TWO_FACTOR AnnotateAssessmentRequest_Reason = 7
	// Indicates that the user passed a 2FA challenge.
	AnnotateAssessmentRequest_PASSED_TWO_FACTOR AnnotateAssessmentRequest_Reason = 3
	// Indicates that the user failed a 2FA challenge.
	AnnotateAssessmentRequest_FAILED_TWO_FACTOR AnnotateAssessmentRequest_Reason = 4
	// Indicates the user provided the correct password.
	AnnotateAssessmentRequest_CORRECT_PASSWORD AnnotateAssessmentRequest_Reason = 5
	// Indicates the user provided an incorrect password.
	AnnotateAssessmentRequest_INCORRECT_PASSWORD AnnotateAssessmentRequest_Reason = 6
	// Indicates that the user sent unwanted and abusive messages to other users
	// of the platform, such as spam, scams, phishing, or social engineering.
	AnnotateAssessmentRequest_SOCIAL_SPAM AnnotateAssessmentRequest_Reason = 14
)

// Enum value maps for AnnotateAssessmentRequest_Reason.
var (
	AnnotateAssessmentRequest_Reason_name = map[int32]string{
		0:  "REASON_UNSPECIFIED",
		1:  "CHARGEBACK",
		8:  "CHARGEBACK_FRAUD",
		9:  "CHARGEBACK_DISPUTE",
		10: "REFUND",
		11: "REFUND_FRAUD",
		12: "TRANSACTION_ACCEPTED",
		13: "TRANSACTION_DECLINED",
		2:  "PAYMENT_HEURISTICS",
		7:  "INITIATED_TWO_FACTOR",
		3:  "PASSED_TWO_FACTOR",
		4:  "FAILED_TWO_FACTOR",
		5:  "CORRECT_PASSWORD",
		6:  "INCORRECT_PASSWORD",
		14: "SOCIAL_SPAM",
	}
	AnnotateAssessmentRequest_Reason_value = map[string]int32{
		"REASON_UNSPECIFIED":   0,
		"CHARGEBACK":           1,
		"CHARGEBACK_FRAUD":     8,
		"CHARGEBACK_DISPUTE":   9,
		"REFUND":               10,
		"REFUND_FRAUD":         11,
		"TRANSACTION_ACCEPTED": 12,
		"TRANSACTION_DECLINED": 13,
		"PAYMENT_HEURISTICS":   2,
		"INITIATED_TWO_FACTOR": 7,
		"PASSED_TWO_FACTOR":    3,
		"FAILED_TWO_FACTOR":    4,
		"CORRECT_PASSWORD":     5,
		"INCORRECT_PASSWORD":   6,
		"SOCIAL_SPAM":          14,
	}
)

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

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

func (AnnotateAssessmentRequest_Reason) Descriptor() protoreflect.EnumDescriptor {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_enumTypes[2].Descriptor()
}

func (AnnotateAssessmentRequest_Reason) Type() protoreflect.EnumType {
	return &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_enumTypes[2]
}

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

// Deprecated: Use AnnotateAssessmentRequest_Reason.Descriptor instead.
func (AnnotateAssessmentRequest_Reason) EnumDescriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{2, 1}
}

// Result of the account verification as contained in the verdict token issued
// at the end of the verification flow.
type AccountVerificationInfo_Result int32

const (
	// No information about the latest account verification.
	AccountVerificationInfo_RESULT_UNSPECIFIED AccountVerificationInfo_Result = 0
	// The user was successfully verified. This means the account verification
	// challenge was successfully completed.
	AccountVerificationInfo_SUCCESS_USER_VERIFIED AccountVerificationInfo_Result = 1
	// The user failed the verification challenge.
	AccountVerificationInfo_ERROR_USER_NOT_VERIFIED AccountVerificationInfo_Result = 2
	// The site is not properly onboarded to use the account verification
	// feature.
	AccountVerificationInfo_ERROR_SITE_ONBOARDING_INCOMPLETE AccountVerificationInfo_Result = 3
	// The recipient is not allowed for account verification. This can occur
	// during integration but should not occur in production.
	AccountVerificationInfo_ERROR_RECIPIENT_NOT_ALLOWED AccountVerificationInfo_Result = 4
	// The recipient has already been sent too many verification codes in a
	// short amount of time.
	AccountVerificationInfo_ERROR_RECIPIENT_ABUSE_LIMIT_EXHAUSTED AccountVerificationInfo_Result = 5
	// The verification flow could not be completed due to a critical internal
	// error.
	AccountVerificationInfo_ERROR_CRITICAL_INTERNAL AccountVerificationInfo_Result = 6
	// The client has exceeded their two factor request quota for this period of
	// time.
	AccountVerificationInfo_ERROR_CUSTOMER_QUOTA_EXHAUSTED AccountVerificationInfo_Result = 7
	// The request cannot be processed at the time because of an incident. This
	// bypass can be restricted to a problematic destination email domain, a
	// customer, or could affect the entire service.
	AccountVerificationInfo_ERROR_VERIFICATION_BYPASSED AccountVerificationInfo_Result = 8
	// The request parameters do not match with the token provided and cannot be
	// processed.
	AccountVerificationInfo_ERROR_VERDICT_MISMATCH AccountVerificationInfo_Result = 9
)

// Enum value maps for AccountVerificationInfo_Result.
var (
	AccountVerificationInfo_Result_name = map[int32]string{
		0: "RESULT_UNSPECIFIED",
		1: "SUCCESS_USER_VERIFIED",
		2: "ERROR_USER_NOT_VERIFIED",
		3: "ERROR_SITE_ONBOARDING_INCOMPLETE",
		4: "ERROR_RECIPIENT_NOT_ALLOWED",
		5: "ERROR_RECIPIENT_ABUSE_LIMIT_EXHAUSTED",
		6: "ERROR_CRITICAL_INTERNAL",
		7: "ERROR_CUSTOMER_QUOTA_EXHAUSTED",
		8: "ERROR_VERIFICATION_BYPASSED",
		9: "ERROR_VERDICT_MISMATCH",
	}
	AccountVerificationInfo_Result_value = map[string]int32{
		"RESULT_UNSPECIFIED":                    0,
		"SUCCESS_USER_VERIFIED":                 1,
		"ERROR_USER_NOT_VERIFIED":               2,
		"ERROR_SITE_ONBOARDING_INCOMPLETE":      3,
		"ERROR_RECIPIENT_NOT_ALLOWED":           4,
		"ERROR_RECIPIENT_ABUSE_LIMIT_EXHAUSTED": 5,
		"ERROR_CRITICAL_INTERNAL":               6,
		"ERROR_CUSTOMER_QUOTA_EXHAUSTED":        7,
		"ERROR_VERIFICATION_BYPASSED":           8,
		"ERROR_VERDICT_MISMATCH":                9,
	}
)

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

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

func (AccountVerificationInfo_Result) Descriptor() protoreflect.EnumDescriptor {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_enumTypes[3].Descriptor()
}

func (AccountVerificationInfo_Result) Type() protoreflect.EnumType {
	return &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_enumTypes[3]
}

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

// Deprecated: Use AccountVerificationInfo_Result.Descriptor instead.
func (AccountVerificationInfo_Result) EnumDescriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{5, 0}
}

// Reasons contributing to the risk analysis verdict.
type RiskAnalysis_ClassificationReason int32

const (
	// Default unspecified type.
	RiskAnalysis_CLASSIFICATION_REASON_UNSPECIFIED RiskAnalysis_ClassificationReason = 0
	// Interactions matched the behavior of an automated agent.
	RiskAnalysis_AUTOMATION RiskAnalysis_ClassificationReason = 1
	// The event originated from an illegitimate environment.
	RiskAnalysis_UNEXPECTED_ENVIRONMENT RiskAnalysis_ClassificationReason = 2
	// Traffic volume from the event source is higher than normal.
	RiskAnalysis_TOO_MUCH_TRAFFIC RiskAnalysis_ClassificationReason = 3
	// Interactions with the site were significantly different than expected
	// patterns.
	RiskAnalysis_UNEXPECTED_USAGE_PATTERNS RiskAnalysis_ClassificationReason = 4
	// Too little traffic has been received from this site thus far to generate
	// quality risk analysis.
	RiskAnalysis_LOW_CONFIDENCE_SCORE RiskAnalysis_ClassificationReason = 5
	// The request matches behavioral characteristics of a carding attack.
	RiskAnalysis_SUSPECTED_CARDING RiskAnalysis_ClassificationReason = 6
	// The request matches behavioral characteristics of chargebacks for fraud.
	RiskAnalysis_SUSPECTED_CHARGEBACK RiskAnalysis_ClassificationReason = 7
)

// Enum value maps for RiskAnalysis_ClassificationReason.
var (
	RiskAnalysis_ClassificationReason_name = map[int32]string{
		0: "CLASSIFICATION_REASON_UNSPECIFIED",
		1: "AUTOMATION",
		2: "UNEXPECTED_ENVIRONMENT",
		3: "TOO_MUCH_TRAFFIC",
		4: "UNEXPECTED_USAGE_PATTERNS",
		5: "LOW_CONFIDENCE_SCORE",
		6: "SUSPECTED_CARDING",
		7: "SUSPECTED_CHARGEBACK",
	}
	RiskAnalysis_ClassificationReason_value = map[string]int32{
		"CLASSIFICATION_REASON_UNSPECIFIED": 0,
		"AUTOMATION":                        1,
		"UNEXPECTED_ENVIRONMENT":            2,
		"TOO_MUCH_TRAFFIC":                  3,
		"UNEXPECTED_USAGE_PATTERNS":         4,
		"LOW_CONFIDENCE_SCORE":              5,
		"SUSPECTED_CARDING":                 6,
		"SUSPECTED_CHARGEBACK":              7,
	}
)

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

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

func (RiskAnalysis_ClassificationReason) Descriptor() protoreflect.EnumDescriptor {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_enumTypes[4].Descriptor()
}

func (RiskAnalysis_ClassificationReason) Type() protoreflect.EnumType {
	return &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_enumTypes[4]
}

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

// Deprecated: Use RiskAnalysis_ClassificationReason.Descriptor instead.
func (RiskAnalysis_ClassificationReason) EnumDescriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{10, 0}
}

// Enum that represents the types of invalid token reasons.
type TokenProperties_InvalidReason int32

const (
	// Default unspecified type.
	TokenProperties_INVALID_REASON_UNSPECIFIED TokenProperties_InvalidReason = 0
	// If the failure reason was not accounted for.
	TokenProperties_UNKNOWN_INVALID_REASON TokenProperties_InvalidReason = 1
	// The provided user verification token was malformed.
	TokenProperties_MALFORMED TokenProperties_InvalidReason = 2
	// The user verification token had expired.
	TokenProperties_EXPIRED TokenProperties_InvalidReason = 3
	// The user verification had already been seen.
	TokenProperties_DUPE TokenProperties_InvalidReason = 4
	// The user verification token was not present.
	TokenProperties_MISSING TokenProperties_InvalidReason = 5
	// A retriable error (such as network failure) occurred on the browser.
	// Could easily be simulated by an attacker.
	TokenProperties_BROWSER_ERROR TokenProperties_InvalidReason = 6
)

// Enum value maps for TokenProperties_InvalidReason.
var (
	TokenProperties_InvalidReason_name = map[int32]string{
		0: "INVALID_REASON_UNSPECIFIED",
		1: "UNKNOWN_INVALID_REASON",
		2: "MALFORMED",
		3: "EXPIRED",
		4: "DUPE",
		5: "MISSING",
		6: "BROWSER_ERROR",
	}
	TokenProperties_InvalidReason_value = map[string]int32{
		"INVALID_REASON_UNSPECIFIED": 0,
		"UNKNOWN_INVALID_REASON":     1,
		"MALFORMED":                  2,
		"EXPIRED":                    3,
		"DUPE":                       4,
		"MISSING":                    5,
		"BROWSER_ERROR":              6,
	}
)

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

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

func (TokenProperties_InvalidReason) Descriptor() protoreflect.EnumDescriptor {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_enumTypes[5].Descriptor()
}

func (TokenProperties_InvalidReason) Type() protoreflect.EnumType {
	return &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_enumTypes[5]
}

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

// Deprecated: Use TokenProperties_InvalidReason.Descriptor instead.
func (TokenProperties_InvalidReason) EnumDescriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{11, 0}
}

// Labels returned by account defender for this request.
type AccountDefenderAssessment_AccountDefenderLabel int32

const (
	// Default unspecified type.
	AccountDefenderAssessment_ACCOUNT_DEFENDER_LABEL_UNSPECIFIED AccountDefenderAssessment_AccountDefenderLabel = 0
	// The request matches a known good profile for the user.
	AccountDefenderAssessment_PROFILE_MATCH AccountDefenderAssessment_AccountDefenderLabel = 1
	// The request is potentially a suspicious login event and must be further
	// verified either through multi-factor authentication or another system.
	AccountDefenderAssessment_SUSPICIOUS_LOGIN_ACTIVITY AccountDefenderAssessment_AccountDefenderLabel = 2
	// The request matched a profile that previously had suspicious account
	// creation behavior. This can mean that this is a fake account.
	AccountDefenderAssessment_SUSPICIOUS_ACCOUNT_CREATION AccountDefenderAssessment_AccountDefenderLabel = 3
	// The account in the request has a high number of related accounts. It does
	// not necessarily imply that the account is bad but can require further
	// investigation.
	AccountDefenderAssessment_RELATED_ACCOUNTS_NUMBER_HIGH AccountDefenderAssessment_AccountDefenderLabel = 4
)

// Enum value maps for AccountDefenderAssessment_AccountDefenderLabel.
var (
	AccountDefenderAssessment_AccountDefenderLabel_name = map[int32]string{
		0: "ACCOUNT_DEFENDER_LABEL_UNSPECIFIED",
		1: "PROFILE_MATCH",
		2: "SUSPICIOUS_LOGIN_ACTIVITY",
		3: "SUSPICIOUS_ACCOUNT_CREATION",
		4: "RELATED_ACCOUNTS_NUMBER_HIGH",
	}
	AccountDefenderAssessment_AccountDefenderLabel_value = map[string]int32{
		"ACCOUNT_DEFENDER_LABEL_UNSPECIFIED": 0,
		"PROFILE_MATCH":                      1,
		"SUSPICIOUS_LOGIN_ACTIVITY":          2,
		"SUSPICIOUS_ACCOUNT_CREATION":        3,
		"RELATED_ACCOUNTS_NUMBER_HIGH":       4,
	}
)

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

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

func (AccountDefenderAssessment_AccountDefenderLabel) Descriptor() protoreflect.EnumDescriptor {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_enumTypes[6].Descriptor()
}

func (AccountDefenderAssessment_AccountDefenderLabel) Type() protoreflect.EnumType {
	return &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_enumTypes[6]
}

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

// Deprecated: Use AccountDefenderAssessment_AccountDefenderLabel.Descriptor instead.
func (AccountDefenderAssessment_AccountDefenderLabel) EnumDescriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{13, 0}
}

// Enum that represents the challenge option for challenge-based (CHECKBOX,
// INVISIBLE) testing keys.
type TestingOptions_TestingChallenge int32

const (
	// Perform the normal risk analysis and return either nocaptcha or a
	// challenge depending on risk and trust factors.
	TestingOptions_TESTING_CHALLENGE_UNSPECIFIED TestingOptions_TestingChallenge = 0
	// Challenge requests for this key always return a nocaptcha, which
	// does not require a solution.
	TestingOptions_NOCAPTCHA TestingOptions_TestingChallenge = 1
	// Challenge requests for this key always return an unsolvable
	// challenge.
	TestingOptions_UNSOLVABLE_CHALLENGE TestingOptions_TestingChallenge = 2
)

// Enum value maps for TestingOptions_TestingChallenge.
var (
	TestingOptions_TestingChallenge_name = map[int32]string{
		0: "TESTING_CHALLENGE_UNSPECIFIED",
		1: "NOCAPTCHA",
		2: "UNSOLVABLE_CHALLENGE",
	}
	TestingOptions_TestingChallenge_value = map[string]int32{
		"TESTING_CHALLENGE_UNSPECIFIED": 0,
		"NOCAPTCHA":                     1,
		"UNSOLVABLE_CHALLENGE":          2,
	}
)

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

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

func (TestingOptions_TestingChallenge) Descriptor() protoreflect.EnumDescriptor {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_enumTypes[7].Descriptor()
}

func (TestingOptions_TestingChallenge) Type() protoreflect.EnumType {
	return &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_enumTypes[7]
}

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

// Deprecated: Use TestingOptions_TestingChallenge.Descriptor instead.
func (TestingOptions_TestingChallenge) EnumDescriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{26, 0}
}

// Enum that represents the integration types for web keys.
type WebKeySettings_IntegrationType int32

const (
	// Default type that indicates this enum hasn't been specified. This is not
	// a valid IntegrationType, one of the other types must be specified
	// instead.
	WebKeySettings_INTEGRATION_TYPE_UNSPECIFIED WebKeySettings_IntegrationType = 0
	// Only used to produce scores. It doesn't display the "I'm not a robot"
	// checkbox and never shows captcha challenges.
	WebKeySettings_SCORE WebKeySettings_IntegrationType = 1
	// Displays the "I'm not a robot" checkbox and may show captcha challenges
	// after it is checked.
	WebKeySettings_CHECKBOX WebKeySettings_IntegrationType = 2
	// Doesn't display the "I'm not a robot" checkbox, but may show captcha
	// challenges after risk analysis.
	WebKeySettings_INVISIBLE WebKeySettings_IntegrationType = 3
)

// Enum value maps for WebKeySettings_IntegrationType.
var (
	WebKeySettings_IntegrationType_name = map[int32]string{
		0: "INTEGRATION_TYPE_UNSPECIFIED",
		1: "SCORE",
		2: "CHECKBOX",
		3: "INVISIBLE",
	}
	WebKeySettings_IntegrationType_value = map[string]int32{
		"INTEGRATION_TYPE_UNSPECIFIED": 0,
		"SCORE":                        1,
		"CHECKBOX":                     2,
		"INVISIBLE":                    3,
	}
)

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

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

func (WebKeySettings_IntegrationType) Descriptor() protoreflect.EnumDescriptor {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_enumTypes[8].Descriptor()
}

func (WebKeySettings_IntegrationType) Type() protoreflect.EnumType {
	return &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_enumTypes[8]
}

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

// Deprecated: Use WebKeySettings_IntegrationType.Descriptor instead.
func (WebKeySettings_IntegrationType) EnumDescriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{27, 0}
}

// Enum that represents the possible challenge frequency and difficulty
// configurations for a web key.
type WebKeySettings_ChallengeSecurityPreference int32

const (
	// Default type that indicates this enum hasn't been specified.
	WebKeySettings_CHALLENGE_SECURITY_PREFERENCE_UNSPECIFIED WebKeySettings_ChallengeSecurityPreference = 0
	// Key tends to show fewer and easier challenges.
	WebKeySettings_USABILITY WebKeySettings_ChallengeSecurityPreference = 1
	// Key tends to show balanced (in amount and difficulty) challenges.
	WebKeySettings_BALANCE WebKeySettings_ChallengeSecurityPreference = 2
	// Key tends to show more and harder challenges.
	WebKeySettings_SECURITY WebKeySettings_ChallengeSecurityPreference = 3
)

// Enum value maps for WebKeySettings_ChallengeSecurityPreference.
var (
	WebKeySettings_ChallengeSecurityPreference_name = map[int32]string{
		0: "CHALLENGE_SECURITY_PREFERENCE_UNSPECIFIED",
		1: "USABILITY",
		2: "BALANCE",
		3: "SECURITY",
	}
	WebKeySettings_ChallengeSecurityPreference_value = map[string]int32{
		"CHALLENGE_SECURITY_PREFERENCE_UNSPECIFIED": 0,
		"USABILITY": 1,
		"BALANCE":   2,
		"SECURITY":  3,
	}
)

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

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

func (WebKeySettings_ChallengeSecurityPreference) Descriptor() protoreflect.EnumDescriptor {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_enumTypes[9].Descriptor()
}

func (WebKeySettings_ChallengeSecurityPreference) Type() protoreflect.EnumType {
	return &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_enumTypes[9]
}

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

// Deprecated: Use WebKeySettings_ChallengeSecurityPreference.Descriptor instead.
func (WebKeySettings_ChallengeSecurityPreference) EnumDescriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{27, 1}
}

// Supported WAF features. For more information, see
// https://cloud.google.com/recaptcha-enterprise/docs/usecase#comparison_of_features.
type WafSettings_WafFeature int32

const (
	// Undefined feature.
	WafSettings_WAF_FEATURE_UNSPECIFIED WafSettings_WafFeature = 0
	// Redirects suspicious traffic to reCAPTCHA.
	WafSettings_CHALLENGE_PAGE WafSettings_WafFeature = 1
	// Use reCAPTCHA session-tokens to protect the whole user session on the
	// site's domain.
	WafSettings_SESSION_TOKEN WafSettings_WafFeature = 2
	// Use reCAPTCHA action-tokens to protect user actions.
	WafSettings_ACTION_TOKEN WafSettings_WafFeature = 3
)

// Enum value maps for WafSettings_WafFeature.
var (
	WafSettings_WafFeature_name = map[int32]string{
		0: "WAF_FEATURE_UNSPECIFIED",
		1: "CHALLENGE_PAGE",
		2: "SESSION_TOKEN",
		3: "ACTION_TOKEN",
	}
	WafSettings_WafFeature_value = map[string]int32{
		"WAF_FEATURE_UNSPECIFIED": 0,
		"CHALLENGE_PAGE":          1,
		"SESSION_TOKEN":           2,
		"ACTION_TOKEN":            3,
	}
)

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

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

func (WafSettings_WafFeature) Descriptor() protoreflect.EnumDescriptor {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_enumTypes[10].Descriptor()
}

func (WafSettings_WafFeature) Type() protoreflect.EnumType {
	return &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_enumTypes[10]
}

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

// Deprecated: Use WafSettings_WafFeature.Descriptor instead.
func (WafSettings_WafFeature) EnumDescriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{41, 0}
}

// Web Application Firewalls supported by reCAPTCHA Enterprise.
type WafSettings_WafService int32

const (
	// Undefined WAF
	WafSettings_WAF_SERVICE_UNSPECIFIED WafSettings_WafService = 0
	// Cloud Armor
	WafSettings_CA WafSettings_WafService = 1
)

// Enum value maps for WafSettings_WafService.
var (
	WafSettings_WafService_name = map[int32]string{
		0: "WAF_SERVICE_UNSPECIFIED",
		1: "CA",
	}
	WafSettings_WafService_value = map[string]int32{
		"WAF_SERVICE_UNSPECIFIED": 0,
		"CA":                      1,
	}
)

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

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

func (WafSettings_WafService) Descriptor() protoreflect.EnumDescriptor {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_enumTypes[11].Descriptor()
}

func (WafSettings_WafService) Type() protoreflect.EnumType {
	return &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_enumTypes[11]
}

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

// Deprecated: Use WafSettings_WafService.Descriptor instead.
func (WafSettings_WafService) EnumDescriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{41, 1}
}

// The create assessment request message.
type CreateAssessmentRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The name of the project in which the assessment will be created,
	// in the format "projects/{project}".
	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
	// Required. The assessment details.
	Assessment *Assessment `protobuf:"bytes,2,opt,name=assessment,proto3" json:"assessment,omitempty"`
}

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

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

func (*CreateAssessmentRequest) ProtoMessage() {}

func (x *CreateAssessmentRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_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 CreateAssessmentRequest.ProtoReflect.Descriptor instead.
func (*CreateAssessmentRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{0}
}

func (x *CreateAssessmentRequest) GetParent() string {
	if x != nil {
		return x.Parent
	}
	return ""
}

func (x *CreateAssessmentRequest) GetAssessment() *Assessment {
	if x != nil {
		return x.Assessment
	}
	return nil
}

// Describes an event in the lifecycle of a payment transaction.
type TransactionEvent struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Optional. The type of this transaction event.
	EventType TransactionEvent_TransactionEventType `protobuf:"varint,1,opt,name=event_type,json=eventType,proto3,enum=google.cloud.recaptchaenterprise.v1.TransactionEvent_TransactionEventType" json:"event_type,omitempty"`
	// Optional. The reason or standardized code that corresponds with this
	// transaction event, if one exists. For example, a CHARGEBACK event with code
	// 6005.
	Reason string `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"`
	// Optional. The value that corresponds with this transaction event, if one
	// exists. For example, a refund event where $5.00 was refunded. Currency is
	// obtained from the original transaction data.
	Value float64 `protobuf:"fixed64,3,opt,name=value,proto3" json:"value,omitempty"`
	// Optional. Timestamp when this transaction event occurred; otherwise assumed
	// to be the time of the API call.
	EventTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=event_time,json=eventTime,proto3" json:"event_time,omitempty"`
}

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

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

func (*TransactionEvent) ProtoMessage() {}

func (x *TransactionEvent) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_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 TransactionEvent.ProtoReflect.Descriptor instead.
func (*TransactionEvent) Descriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{1}
}

func (x *TransactionEvent) GetEventType() TransactionEvent_TransactionEventType {
	if x != nil {
		return x.EventType
	}
	return TransactionEvent_TRANSACTION_EVENT_TYPE_UNSPECIFIED
}

func (x *TransactionEvent) GetReason() string {
	if x != nil {
		return x.Reason
	}
	return ""
}

func (x *TransactionEvent) GetValue() float64 {
	if x != nil {
		return x.Value
	}
	return 0
}

func (x *TransactionEvent) GetEventTime() *timestamppb.Timestamp {
	if x != nil {
		return x.EventTime
	}
	return nil
}

// The request message to annotate an Assessment.
type AnnotateAssessmentRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The resource name of the Assessment, in the format
	// "projects/{project}/assessments/{assessment}".
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Optional. The annotation that will be assigned to the Event. This field can
	// be left empty to provide reasons that apply to an event without concluding
	// whether the event is legitimate or fraudulent.
	Annotation AnnotateAssessmentRequest_Annotation `protobuf:"varint,2,opt,name=annotation,proto3,enum=google.cloud.recaptchaenterprise.v1.AnnotateAssessmentRequest_Annotation" json:"annotation,omitempty"`
	// Optional. Optional reasons for the annotation that will be assigned to the
	// Event.
	Reasons []AnnotateAssessmentRequest_Reason `protobuf:"varint,3,rep,packed,name=reasons,proto3,enum=google.cloud.recaptchaenterprise.v1.AnnotateAssessmentRequest_Reason" json:"reasons,omitempty"`
	// Optional. Unique stable hashed user identifier to apply to the assessment.
	// This is an alternative to setting the hashed_account_id in
	// CreateAssessment, for example when the account identifier is not yet known
	// in the initial request. It is recommended that the identifier is hashed
	// using hmac-sha256 with stable secret.
	HashedAccountId []byte `protobuf:"bytes,4,opt,name=hashed_account_id,json=hashedAccountId,proto3" json:"hashed_account_id,omitempty"`
	// Optional. If the assessment is part of a payment transaction, provide
	// details on payment lifecycle events that occur in the transaction.
	TransactionEvent *TransactionEvent `protobuf:"bytes,5,opt,name=transaction_event,json=transactionEvent,proto3" json:"transaction_event,omitempty"`
}

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

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

func (*AnnotateAssessmentRequest) ProtoMessage() {}

func (x *AnnotateAssessmentRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_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 AnnotateAssessmentRequest.ProtoReflect.Descriptor instead.
func (*AnnotateAssessmentRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{2}
}

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

func (x *AnnotateAssessmentRequest) GetAnnotation() AnnotateAssessmentRequest_Annotation {
	if x != nil {
		return x.Annotation
	}
	return AnnotateAssessmentRequest_ANNOTATION_UNSPECIFIED
}

func (x *AnnotateAssessmentRequest) GetReasons() []AnnotateAssessmentRequest_Reason {
	if x != nil {
		return x.Reasons
	}
	return nil
}

func (x *AnnotateAssessmentRequest) GetHashedAccountId() []byte {
	if x != nil {
		return x.HashedAccountId
	}
	return nil
}

func (x *AnnotateAssessmentRequest) GetTransactionEvent() *TransactionEvent {
	if x != nil {
		return x.TransactionEvent
	}
	return nil
}

// Empty response for AnnotateAssessment.
type AnnotateAssessmentResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

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

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

func (*AnnotateAssessmentResponse) ProtoMessage() {}

func (x *AnnotateAssessmentResponse) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_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 AnnotateAssessmentResponse.ProtoReflect.Descriptor instead.
func (*AnnotateAssessmentResponse) Descriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{3}
}

// Information about a verification endpoint that can be used for 2FA.
type EndpointVerificationInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to Endpoint:
	//	*EndpointVerificationInfo_EmailAddress
	//	*EndpointVerificationInfo_PhoneNumber
	Endpoint isEndpointVerificationInfo_Endpoint `protobuf_oneof:"endpoint"`
	// Output only. Token to provide to the client to trigger endpoint
	// verification. It must be used within 15 minutes.
	RequestToken string `protobuf:"bytes,3,opt,name=request_token,json=requestToken,proto3" json:"request_token,omitempty"`
	// Output only. Timestamp of the last successful verification for the
	// endpoint, if any.
	LastVerificationTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=last_verification_time,json=lastVerificationTime,proto3" json:"last_verification_time,omitempty"`
}

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

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

func (*EndpointVerificationInfo) ProtoMessage() {}

func (x *EndpointVerificationInfo) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_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 EndpointVerificationInfo.ProtoReflect.Descriptor instead.
func (*EndpointVerificationInfo) Descriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{4}
}

func (m *EndpointVerificationInfo) GetEndpoint() isEndpointVerificationInfo_Endpoint {
	if m != nil {
		return m.Endpoint
	}
	return nil
}

func (x *EndpointVerificationInfo) GetEmailAddress() string {
	if x, ok := x.GetEndpoint().(*EndpointVerificationInfo_EmailAddress); ok {
		return x.EmailAddress
	}
	return ""
}

func (x *EndpointVerificationInfo) GetPhoneNumber() string {
	if x, ok := x.GetEndpoint().(*EndpointVerificationInfo_PhoneNumber); ok {
		return x.PhoneNumber
	}
	return ""
}

func (x *EndpointVerificationInfo) GetRequestToken() string {
	if x != nil {
		return x.RequestToken
	}
	return ""
}

func (x *EndpointVerificationInfo) GetLastVerificationTime() *timestamppb.Timestamp {
	if x != nil {
		return x.LastVerificationTime
	}
	return nil
}

type isEndpointVerificationInfo_Endpoint interface {
	isEndpointVerificationInfo_Endpoint()
}

type EndpointVerificationInfo_EmailAddress struct {
	// Email address for which to trigger a verification request.
	EmailAddress string `protobuf:"bytes,1,opt,name=email_address,json=emailAddress,proto3,oneof"`
}

type EndpointVerificationInfo_PhoneNumber struct {
	// Phone number for which to trigger a verification request. Should be given
	// in E.164 format.
	PhoneNumber string `protobuf:"bytes,2,opt,name=phone_number,json=phoneNumber,proto3,oneof"`
}

func (*EndpointVerificationInfo_EmailAddress) isEndpointVerificationInfo_Endpoint() {}

func (*EndpointVerificationInfo_PhoneNumber) isEndpointVerificationInfo_Endpoint() {}

// Information about account verification, used for identity verification.
type AccountVerificationInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Endpoints that can be used for identity verification.
	Endpoints []*EndpointVerificationInfo `protobuf:"bytes,1,rep,name=endpoints,proto3" json:"endpoints,omitempty"`
	// Language code preference for the verification message, set as a IETF BCP 47
	// language code.
	LanguageCode string `protobuf:"bytes,3,opt,name=language_code,json=languageCode,proto3" json:"language_code,omitempty"`
	// Output only. Result of the latest account verification challenge.
	LatestVerificationResult AccountVerificationInfo_Result `protobuf:"varint,7,opt,name=latest_verification_result,json=latestVerificationResult,proto3,enum=google.cloud.recaptchaenterprise.v1.AccountVerificationInfo_Result" json:"latest_verification_result,omitempty"`
	// Username of the account that is being verified. Deprecated. Customers
	// should now provide the hashed account ID field in Event.
	//
	// Deprecated: Marked as deprecated in google/cloud/recaptchaenterprise/v1/recaptchaenterprise.proto.
	Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"`
}

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

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

func (*AccountVerificationInfo) ProtoMessage() {}

func (x *AccountVerificationInfo) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_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 AccountVerificationInfo.ProtoReflect.Descriptor instead.
func (*AccountVerificationInfo) Descriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{5}
}

func (x *AccountVerificationInfo) GetEndpoints() []*EndpointVerificationInfo {
	if x != nil {
		return x.Endpoints
	}
	return nil
}

func (x *AccountVerificationInfo) GetLanguageCode() string {
	if x != nil {
		return x.LanguageCode
	}
	return ""
}

func (x *AccountVerificationInfo) GetLatestVerificationResult() AccountVerificationInfo_Result {
	if x != nil {
		return x.LatestVerificationResult
	}
	return AccountVerificationInfo_RESULT_UNSPECIFIED
}

// Deprecated: Marked as deprecated in google/cloud/recaptchaenterprise/v1/recaptchaenterprise.proto.
func (x *AccountVerificationInfo) GetUsername() string {
	if x != nil {
		return x.Username
	}
	return ""
}

// Private password leak verification info.
type PrivatePasswordLeakVerification struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Optional. Exactly 26-bit prefix of the SHA-256 hash of the canonicalized
	// username. It is used to look up password leaks associated with that hash
	// prefix.
	LookupHashPrefix []byte `protobuf:"bytes,1,opt,name=lookup_hash_prefix,json=lookupHashPrefix,proto3" json:"lookup_hash_prefix,omitempty"`
	// Optional. Encrypted Scrypt hash of the canonicalized username+password. It
	// is re-encrypted by the server and returned through
	// `reencrypted_user_credentials_hash`.
	EncryptedUserCredentialsHash []byte `protobuf:"bytes,2,opt,name=encrypted_user_credentials_hash,json=encryptedUserCredentialsHash,proto3" json:"encrypted_user_credentials_hash,omitempty"`
	// Output only. List of prefixes of the encrypted potential password leaks
	// that matched the given parameters. They must be compared with the
	// client-side decryption prefix of `reencrypted_user_credentials_hash`
	EncryptedLeakMatchPrefixes [][]byte `protobuf:"bytes,3,rep,name=encrypted_leak_match_prefixes,json=encryptedLeakMatchPrefixes,proto3" json:"encrypted_leak_match_prefixes,omitempty"`
	// Output only. Corresponds to the re-encryption of the
	// `encrypted_user_credentials_hash` field. It is used to match potential
	// password leaks within `encrypted_leak_match_prefixes`.
	ReencryptedUserCredentialsHash []byte `protobuf:"bytes,4,opt,name=reencrypted_user_credentials_hash,json=reencryptedUserCredentialsHash,proto3" json:"reencrypted_user_credentials_hash,omitempty"`
}

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

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

func (*PrivatePasswordLeakVerification) ProtoMessage() {}

func (x *PrivatePasswordLeakVerification) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_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 PrivatePasswordLeakVerification.ProtoReflect.Descriptor instead.
func (*PrivatePasswordLeakVerification) Descriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{6}
}

func (x *PrivatePasswordLeakVerification) GetLookupHashPrefix() []byte {
	if x != nil {
		return x.LookupHashPrefix
	}
	return nil
}

func (x *PrivatePasswordLeakVerification) GetEncryptedUserCredentialsHash() []byte {
	if x != nil {
		return x.EncryptedUserCredentialsHash
	}
	return nil
}

func (x *PrivatePasswordLeakVerification) GetEncryptedLeakMatchPrefixes() [][]byte {
	if x != nil {
		return x.EncryptedLeakMatchPrefixes
	}
	return nil
}

func (x *PrivatePasswordLeakVerification) GetReencryptedUserCredentialsHash() []byte {
	if x != nil {
		return x.ReencryptedUserCredentialsHash
	}
	return nil
}

// A reCAPTCHA Enterprise assessment resource.
type Assessment struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Output only. The resource name for the Assessment in the format
	// "projects/{project}/assessments/{assessment}".
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// The event being assessed.
	Event *Event `protobuf:"bytes,2,opt,name=event,proto3" json:"event,omitempty"`
	// Output only. The risk analysis result for the event being assessed.
	RiskAnalysis *RiskAnalysis `protobuf:"bytes,3,opt,name=risk_analysis,json=riskAnalysis,proto3" json:"risk_analysis,omitempty"`
	// Output only. Properties of the provided event token.
	TokenProperties *TokenProperties `protobuf:"bytes,4,opt,name=token_properties,json=tokenProperties,proto3" json:"token_properties,omitempty"`
	// Account verification information for identity verification. The assessment
	// event must include a token and site key to use this feature.
	AccountVerification *AccountVerificationInfo `protobuf:"bytes,5,opt,name=account_verification,json=accountVerification,proto3" json:"account_verification,omitempty"`
	// Assessment returned by account defender when a hashed_account_id is
	// provided.
	AccountDefenderAssessment *AccountDefenderAssessment `protobuf:"bytes,6,opt,name=account_defender_assessment,json=accountDefenderAssessment,proto3" json:"account_defender_assessment,omitempty"`
	// The private password leak verification field contains the parameters that
	// are used to to check for leaks privately without sharing user credentials.
	PrivatePasswordLeakVerification *PrivatePasswordLeakVerification `protobuf:"bytes,8,opt,name=private_password_leak_verification,json=privatePasswordLeakVerification,proto3" json:"private_password_leak_verification,omitempty"`
	// Assessment returned by Fraud Prevention when TransactionData is provided.
	FraudPreventionAssessment *FraudPreventionAssessment `protobuf:"bytes,11,opt,name=fraud_prevention_assessment,json=fraudPreventionAssessment,proto3" json:"fraud_prevention_assessment,omitempty"`
}

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

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

func (*Assessment) ProtoMessage() {}

func (x *Assessment) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_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 Assessment.ProtoReflect.Descriptor instead.
func (*Assessment) Descriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{7}
}

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

func (x *Assessment) GetEvent() *Event {
	if x != nil {
		return x.Event
	}
	return nil
}

func (x *Assessment) GetRiskAnalysis() *RiskAnalysis {
	if x != nil {
		return x.RiskAnalysis
	}
	return nil
}

func (x *Assessment) GetTokenProperties() *TokenProperties {
	if x != nil {
		return x.TokenProperties
	}
	return nil
}

func (x *Assessment) GetAccountVerification() *AccountVerificationInfo {
	if x != nil {
		return x.AccountVerification
	}
	return nil
}

func (x *Assessment) GetAccountDefenderAssessment() *AccountDefenderAssessment {
	if x != nil {
		return x.AccountDefenderAssessment
	}
	return nil
}

func (x *Assessment) GetPrivatePasswordLeakVerification() *PrivatePasswordLeakVerification {
	if x != nil {
		return x.PrivatePasswordLeakVerification
	}
	return nil
}

func (x *Assessment) GetFraudPreventionAssessment() *FraudPreventionAssessment {
	if x != nil {
		return x.FraudPreventionAssessment
	}
	return nil
}

// The event being assessed.
type Event struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Optional. The user response token provided by the reCAPTCHA Enterprise
	// client-side integration on your site.
	Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"`
	// Optional. The site key that was used to invoke reCAPTCHA Enterprise on your
	// site and generate the token.
	SiteKey string `protobuf:"bytes,2,opt,name=site_key,json=siteKey,proto3" json:"site_key,omitempty"`
	// Optional. The user agent present in the request from the user's device
	// related to this event.
	UserAgent string `protobuf:"bytes,3,opt,name=user_agent,json=userAgent,proto3" json:"user_agent,omitempty"`
	// Optional. The IP address in the request from the user's device related to
	// this event.
	UserIpAddress string `protobuf:"bytes,4,opt,name=user_ip_address,json=userIpAddress,proto3" json:"user_ip_address,omitempty"`
	// Optional. The expected action for this type of event. This should be the
	// same action provided at token generation time on client-side platforms
	// already integrated with recaptcha enterprise.
	ExpectedAction string `protobuf:"bytes,5,opt,name=expected_action,json=expectedAction,proto3" json:"expected_action,omitempty"`
	// Optional. Unique stable hashed user identifier for the request. The
	// identifier must be hashed using hmac-sha256 with stable secret.
	HashedAccountId []byte `protobuf:"bytes,6,opt,name=hashed_account_id,json=hashedAccountId,proto3" json:"hashed_account_id,omitempty"`
	// Optional. Data describing a payment transaction to be assessed. Sending
	// this data enables reCAPTCHA Enterprise Fraud Prevention and the
	// FraudPreventionAssessment component in the response.
	TransactionData *TransactionData `protobuf:"bytes,13,opt,name=transaction_data,json=transactionData,proto3" json:"transaction_data,omitempty"`
}

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

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

func (*Event) ProtoMessage() {}

func (x *Event) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_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 Event.ProtoReflect.Descriptor instead.
func (*Event) Descriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{8}
}

func (x *Event) GetToken() string {
	if x != nil {
		return x.Token
	}
	return ""
}

func (x *Event) GetSiteKey() string {
	if x != nil {
		return x.SiteKey
	}
	return ""
}

func (x *Event) GetUserAgent() string {
	if x != nil {
		return x.UserAgent
	}
	return ""
}

func (x *Event) GetUserIpAddress() string {
	if x != nil {
		return x.UserIpAddress
	}
	return ""
}

func (x *Event) GetExpectedAction() string {
	if x != nil {
		return x.ExpectedAction
	}
	return ""
}

func (x *Event) GetHashedAccountId() []byte {
	if x != nil {
		return x.HashedAccountId
	}
	return nil
}

func (x *Event) GetTransactionData() *TransactionData {
	if x != nil {
		return x.TransactionData
	}
	return nil
}

// Transaction data associated with a payment protected by reCAPTCHA Enterprise.
// All fields are optional.
type TransactionData struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Unique identifier for the transaction. This custom identifier can be used
	// to reference this transaction in the future, for example, labeling a refund
	// or chargeback event. Two attempts at the same transaction should use the
	// same transaction id.
	TransactionId *string `protobuf:"bytes,11,opt,name=transaction_id,json=transactionId,proto3,oneof" json:"transaction_id,omitempty"`
	// The payment method for the transaction. The allowed values are:
	//
	// * credit-card
	// * debit-card
	// * gift-card
	// * processor-{name} (If a third-party is used, for example,
	// processor-paypal)
	// * custom-{name} (If an alternative method is used, for example,
	// custom-crypto)
	PaymentMethod string `protobuf:"bytes,1,opt,name=payment_method,json=paymentMethod,proto3" json:"payment_method,omitempty"`
	// The Bank Identification Number - generally the first 6 or 8 digits of the
	// card.
	CardBin string `protobuf:"bytes,2,opt,name=card_bin,json=cardBin,proto3" json:"card_bin,omitempty"`
	// The last four digits of the card.
	CardLastFour string `protobuf:"bytes,3,opt,name=card_last_four,json=cardLastFour,proto3" json:"card_last_four,omitempty"`
	// The currency code in ISO-4217 format.
	CurrencyCode string `protobuf:"bytes,4,opt,name=currency_code,json=currencyCode,proto3" json:"currency_code,omitempty"`
	// The decimal value of the transaction in the specified currency.
	Value float64 `protobuf:"fixed64,5,opt,name=value,proto3" json:"value,omitempty"`
	// The value of shipping in the specified currency. 0 for free or no shipping.
	ShippingValue float64 `protobuf:"fixed64,12,opt,name=shipping_value,json=shippingValue,proto3" json:"shipping_value,omitempty"`
	// Destination address if this transaction involves shipping a physical item.
	ShippingAddress *TransactionData_Address `protobuf:"bytes,6,opt,name=shipping_address,json=shippingAddress,proto3" json:"shipping_address,omitempty"`
	// Address associated with the payment method when applicable.
	BillingAddress *TransactionData_Address `protobuf:"bytes,7,opt,name=billing_address,json=billingAddress,proto3" json:"billing_address,omitempty"`
	// Information about the user paying/initiating the transaction.
	User *TransactionData_User `protobuf:"bytes,8,opt,name=user,proto3" json:"user,omitempty"`
	// Information about the user or users fulfilling the transaction.
	Merchants []*TransactionData_User `protobuf:"bytes,13,rep,name=merchants,proto3" json:"merchants,omitempty"`
	// Items purchased in this transaction.
	Items []*TransactionData_Item `protobuf:"bytes,14,rep,name=items,proto3" json:"items,omitempty"`
	// Information about the payment gateway's response to the transaction.
	GatewayInfo *TransactionData_GatewayInfo `protobuf:"bytes,10,opt,name=gateway_info,json=gatewayInfo,proto3" json:"gateway_info,omitempty"`
}

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

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

func (*TransactionData) ProtoMessage() {}

func (x *TransactionData) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_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 TransactionData.ProtoReflect.Descriptor instead.
func (*TransactionData) Descriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{9}
}

func (x *TransactionData) GetTransactionId() string {
	if x != nil && x.TransactionId != nil {
		return *x.TransactionId
	}
	return ""
}

func (x *TransactionData) GetPaymentMethod() string {
	if x != nil {
		return x.PaymentMethod
	}
	return ""
}

func (x *TransactionData) GetCardBin() string {
	if x != nil {
		return x.CardBin
	}
	return ""
}

func (x *TransactionData) GetCardLastFour() string {
	if x != nil {
		return x.CardLastFour
	}
	return ""
}

func (x *TransactionData) GetCurrencyCode() string {
	if x != nil {
		return x.CurrencyCode
	}
	return ""
}

func (x *TransactionData) GetValue() float64 {
	if x != nil {
		return x.Value
	}
	return 0
}

func (x *TransactionData) GetShippingValue() float64 {
	if x != nil {
		return x.ShippingValue
	}
	return 0
}

func (x *TransactionData) GetShippingAddress() *TransactionData_Address {
	if x != nil {
		return x.ShippingAddress
	}
	return nil
}

func (x *TransactionData) GetBillingAddress() *TransactionData_Address {
	if x != nil {
		return x.BillingAddress
	}
	return nil
}

func (x *TransactionData) GetUser() *TransactionData_User {
	if x != nil {
		return x.User
	}
	return nil
}

func (x *TransactionData) GetMerchants() []*TransactionData_User {
	if x != nil {
		return x.Merchants
	}
	return nil
}

func (x *TransactionData) GetItems() []*TransactionData_Item {
	if x != nil {
		return x.Items
	}
	return nil
}

func (x *TransactionData) GetGatewayInfo() *TransactionData_GatewayInfo {
	if x != nil {
		return x.GatewayInfo
	}
	return nil
}

// Risk analysis result for an event.
type RiskAnalysis struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Legitimate event score from 0.0 to 1.0.
	// (1.0 means very likely legitimate traffic while 0.0 means very likely
	// non-legitimate traffic).
	Score float32 `protobuf:"fixed32,1,opt,name=score,proto3" json:"score,omitempty"`
	// Reasons contributing to the risk analysis verdict.
	Reasons []RiskAnalysis_ClassificationReason `protobuf:"varint,2,rep,packed,name=reasons,proto3,enum=google.cloud.recaptchaenterprise.v1.RiskAnalysis_ClassificationReason" json:"reasons,omitempty"`
}

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

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

func (*RiskAnalysis) ProtoMessage() {}

func (x *RiskAnalysis) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_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 RiskAnalysis.ProtoReflect.Descriptor instead.
func (*RiskAnalysis) Descriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{10}
}

func (x *RiskAnalysis) GetScore() float32 {
	if x != nil {
		return x.Score
	}
	return 0
}

func (x *RiskAnalysis) GetReasons() []RiskAnalysis_ClassificationReason {
	if x != nil {
		return x.Reasons
	}
	return nil
}

// Properties of the provided event token.
type TokenProperties struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Whether the provided user response token is valid. When valid = false, the
	// reason could be specified in invalid_reason or it could also be due to
	// a user failing to solve a challenge or a sitekey mismatch (i.e the sitekey
	// used to generate the token was different than the one specified in the
	// assessment).
	Valid bool `protobuf:"varint,1,opt,name=valid,proto3" json:"valid,omitempty"`
	// Reason associated with the response when valid = false.
	InvalidReason TokenProperties_InvalidReason `protobuf:"varint,2,opt,name=invalid_reason,json=invalidReason,proto3,enum=google.cloud.recaptchaenterprise.v1.TokenProperties_InvalidReason" json:"invalid_reason,omitempty"`
	// The timestamp corresponding to the generation of the token.
	CreateTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
	// The hostname of the page on which the token was generated (Web keys only).
	Hostname string `protobuf:"bytes,4,opt,name=hostname,proto3" json:"hostname,omitempty"`
	// The name of the Android package with which the token was generated (Android
	// keys only).
	AndroidPackageName string `protobuf:"bytes,8,opt,name=android_package_name,json=androidPackageName,proto3" json:"android_package_name,omitempty"`
	// The ID of the iOS bundle with which the token was generated (iOS keys
	// only).
	IosBundleId string `protobuf:"bytes,9,opt,name=ios_bundle_id,json=iosBundleId,proto3" json:"ios_bundle_id,omitempty"`
	// Action name provided at token generation.
	Action string `protobuf:"bytes,5,opt,name=action,proto3" json:"action,omitempty"`
}

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

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

func (*TokenProperties) ProtoMessage() {}

func (x *TokenProperties) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_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 TokenProperties.ProtoReflect.Descriptor instead.
func (*TokenProperties) Descriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{11}
}

func (x *TokenProperties) GetValid() bool {
	if x != nil {
		return x.Valid
	}
	return false
}

func (x *TokenProperties) GetInvalidReason() TokenProperties_InvalidReason {
	if x != nil {
		return x.InvalidReason
	}
	return TokenProperties_INVALID_REASON_UNSPECIFIED
}

func (x *TokenProperties) GetCreateTime() *timestamppb.Timestamp {
	if x != nil {
		return x.CreateTime
	}
	return nil
}

func (x *TokenProperties) GetHostname() string {
	if x != nil {
		return x.Hostname
	}
	return ""
}

func (x *TokenProperties) GetAndroidPackageName() string {
	if x != nil {
		return x.AndroidPackageName
	}
	return ""
}

func (x *TokenProperties) GetIosBundleId() string {
	if x != nil {
		return x.IosBundleId
	}
	return ""
}

func (x *TokenProperties) GetAction() string {
	if x != nil {
		return x.Action
	}
	return ""
}

// Assessment for Fraud Prevention.
type FraudPreventionAssessment struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Probability (0-1) of this transaction being fraudulent. Summarizes the
	// combined risk of attack vectors below.
	TransactionRisk float32 `protobuf:"fixed32,1,opt,name=transaction_risk,json=transactionRisk,proto3" json:"transaction_risk,omitempty"`
	// Assessment of this transaction for risk of a stolen instrument.
	StolenInstrumentVerdict *FraudPreventionAssessment_StolenInstrumentVerdict `protobuf:"bytes,2,opt,name=stolen_instrument_verdict,json=stolenInstrumentVerdict,proto3" json:"stolen_instrument_verdict,omitempty"`
	// Assessment of this transaction for risk of being part of a card testing
	// attack.
	CardTestingVerdict *FraudPreventionAssessment_CardTestingVerdict `protobuf:"bytes,3,opt,name=card_testing_verdict,json=cardTestingVerdict,proto3" json:"card_testing_verdict,omitempty"`
}

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

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

func (*FraudPreventionAssessment) ProtoMessage() {}

func (x *FraudPreventionAssessment) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_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 FraudPreventionAssessment.ProtoReflect.Descriptor instead.
func (*FraudPreventionAssessment) Descriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{12}
}

func (x *FraudPreventionAssessment) GetTransactionRisk() float32 {
	if x != nil {
		return x.TransactionRisk
	}
	return 0
}

func (x *FraudPreventionAssessment) GetStolenInstrumentVerdict() *FraudPreventionAssessment_StolenInstrumentVerdict {
	if x != nil {
		return x.StolenInstrumentVerdict
	}
	return nil
}

func (x *FraudPreventionAssessment) GetCardTestingVerdict() *FraudPreventionAssessment_CardTestingVerdict {
	if x != nil {
		return x.CardTestingVerdict
	}
	return nil
}

// Account defender risk assessment.
type AccountDefenderAssessment struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Labels for this request.
	Labels []AccountDefenderAssessment_AccountDefenderLabel `protobuf:"varint,1,rep,packed,name=labels,proto3,enum=google.cloud.recaptchaenterprise.v1.AccountDefenderAssessment_AccountDefenderLabel" json:"labels,omitempty"`
}

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

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

func (*AccountDefenderAssessment) ProtoMessage() {}

func (x *AccountDefenderAssessment) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_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 AccountDefenderAssessment.ProtoReflect.Descriptor instead.
func (*AccountDefenderAssessment) Descriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{13}
}

func (x *AccountDefenderAssessment) GetLabels() []AccountDefenderAssessment_AccountDefenderLabel {
	if x != nil {
		return x.Labels
	}
	return nil
}

// The create key request message.
type CreateKeyRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The name of the project in which the key will be created, in the
	// format "projects/{project}".
	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
	// Required. Information to create a reCAPTCHA Enterprise key.
	Key *Key `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"`
}

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

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

func (*CreateKeyRequest) ProtoMessage() {}

func (x *CreateKeyRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_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 CreateKeyRequest.ProtoReflect.Descriptor instead.
func (*CreateKeyRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{14}
}

func (x *CreateKeyRequest) GetParent() string {
	if x != nil {
		return x.Parent
	}
	return ""
}

func (x *CreateKeyRequest) GetKey() *Key {
	if x != nil {
		return x.Key
	}
	return nil
}

// The list keys request message.
type ListKeysRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The name of the project that contains the keys that will be
	// listed, in the format "projects/{project}".
	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
	// Optional. The maximum number of keys to return. Default is 10. Max limit is
	// 1000.
	PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
	// Optional. The next_page_token value returned from a previous.
	// ListKeysRequest, if any.
	PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
}

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

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

func (*ListKeysRequest) ProtoMessage() {}

func (x *ListKeysRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_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 ListKeysRequest.ProtoReflect.Descriptor instead.
func (*ListKeysRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{15}
}

func (x *ListKeysRequest) GetParent() string {
	if x != nil {
		return x.Parent
	}
	return ""
}

func (x *ListKeysRequest) GetPageSize() int32 {
	if x != nil {
		return x.PageSize
	}
	return 0
}

func (x *ListKeysRequest) GetPageToken() string {
	if x != nil {
		return x.PageToken
	}
	return ""
}

// Response to request to list keys in a project.
type ListKeysResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Key details.
	Keys []*Key `protobuf:"bytes,1,rep,name=keys,proto3" json:"keys,omitempty"`
	// Token to retrieve the next page of results. It is set to empty if no keys
	// remain in results.
	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
}

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

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

func (*ListKeysResponse) ProtoMessage() {}

func (x *ListKeysResponse) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_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 ListKeysResponse.ProtoReflect.Descriptor instead.
func (*ListKeysResponse) Descriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{16}
}

func (x *ListKeysResponse) GetKeys() []*Key {
	if x != nil {
		return x.Keys
	}
	return nil
}

func (x *ListKeysResponse) GetNextPageToken() string {
	if x != nil {
		return x.NextPageToken
	}
	return ""
}

// The retrieve legacy secret key request message.
type RetrieveLegacySecretKeyRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The public key name linked to the requested secret key in the
	// format "projects/{project}/keys/{key}".
	Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
}

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

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

func (*RetrieveLegacySecretKeyRequest) ProtoMessage() {}

func (x *RetrieveLegacySecretKeyRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_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 RetrieveLegacySecretKeyRequest.ProtoReflect.Descriptor instead.
func (*RetrieveLegacySecretKeyRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{17}
}

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

// The get key request message.
type GetKeyRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The name of the requested key, in the format
	// "projects/{project}/keys/{key}".
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
}

func (x *GetKeyRequest) Reset() {
	*x = GetKeyRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[18]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*GetKeyRequest) ProtoMessage() {}

func (x *GetKeyRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[18]
	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 GetKeyRequest.ProtoReflect.Descriptor instead.
func (*GetKeyRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{18}
}

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

// The update key request message.
type UpdateKeyRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The key to update.
	Key *Key `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
	// Optional. The mask to control which fields of the key get updated. If the
	// mask is not present, all fields will be updated.
	UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"`
}

func (x *UpdateKeyRequest) Reset() {
	*x = UpdateKeyRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[19]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*UpdateKeyRequest) ProtoMessage() {}

func (x *UpdateKeyRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[19]
	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 UpdateKeyRequest.ProtoReflect.Descriptor instead.
func (*UpdateKeyRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{19}
}

func (x *UpdateKeyRequest) GetKey() *Key {
	if x != nil {
		return x.Key
	}
	return nil
}

func (x *UpdateKeyRequest) GetUpdateMask() *fieldmaskpb.FieldMask {
	if x != nil {
		return x.UpdateMask
	}
	return nil
}

// The delete key request message.
type DeleteKeyRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The name of the key to be deleted, in the format
	// "projects/{project}/keys/{key}".
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
}

func (x *DeleteKeyRequest) Reset() {
	*x = DeleteKeyRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[20]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*DeleteKeyRequest) ProtoMessage() {}

func (x *DeleteKeyRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[20]
	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 DeleteKeyRequest.ProtoReflect.Descriptor instead.
func (*DeleteKeyRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{20}
}

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

// The migrate key request message.
type MigrateKeyRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The name of the key to be migrated, in the format
	// "projects/{project}/keys/{key}".
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Optional. If true, skips the billing check.
	// A reCAPTCHA Enterprise key or migrated key behaves differently than a
	// reCAPTCHA (non-Enterprise version) key when you reach a quota limit (see
	// https://cloud.google.com/recaptcha-enterprise/quotas#quota_limit). To avoid
	// any disruption of your usage, we check that a billing account is present.
	// If your usage of reCAPTCHA is under the free quota, you can safely skip the
	// billing check and proceed with the migration. See
	// https://cloud.google.com/recaptcha-enterprise/docs/billing-information.
	SkipBillingCheck bool `protobuf:"varint,2,opt,name=skip_billing_check,json=skipBillingCheck,proto3" json:"skip_billing_check,omitempty"`
}

func (x *MigrateKeyRequest) Reset() {
	*x = MigrateKeyRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[21]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*MigrateKeyRequest) ProtoMessage() {}

func (x *MigrateKeyRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[21]
	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 MigrateKeyRequest.ProtoReflect.Descriptor instead.
func (*MigrateKeyRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{21}
}

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

func (x *MigrateKeyRequest) GetSkipBillingCheck() bool {
	if x != nil {
		return x.SkipBillingCheck
	}
	return false
}

// The get metrics request message.
type GetMetricsRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The name of the requested metrics, in the format
	// "projects/{project}/keys/{key}/metrics".
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
}

func (x *GetMetricsRequest) Reset() {
	*x = GetMetricsRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[22]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*GetMetricsRequest) ProtoMessage() {}

func (x *GetMetricsRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[22]
	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 GetMetricsRequest.ProtoReflect.Descriptor instead.
func (*GetMetricsRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{22}
}

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

// Metrics for a single Key.
type Metrics struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Output only. The name of the metrics, in the format
	// "projects/{project}/keys/{key}/metrics".
	Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"`
	// Inclusive start time aligned to a day (UTC).
	StartTime *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
	// Metrics will be continuous and in order by dates, and in the granularity
	// of day. All Key types should have score-based data.
	ScoreMetrics []*ScoreMetrics `protobuf:"bytes,2,rep,name=score_metrics,json=scoreMetrics,proto3" json:"score_metrics,omitempty"`
	// Metrics will be continuous and in order by dates, and in the granularity
	// of day. Only challenge-based keys (CHECKBOX, INVISIBLE), will have
	// challenge-based data.
	ChallengeMetrics []*ChallengeMetrics `protobuf:"bytes,3,rep,name=challenge_metrics,json=challengeMetrics,proto3" json:"challenge_metrics,omitempty"`
}

func (x *Metrics) Reset() {
	*x = Metrics{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[23]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Metrics) ProtoMessage() {}

func (x *Metrics) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[23]
	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 Metrics.ProtoReflect.Descriptor instead.
func (*Metrics) Descriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{23}
}

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

func (x *Metrics) GetStartTime() *timestamppb.Timestamp {
	if x != nil {
		return x.StartTime
	}
	return nil
}

func (x *Metrics) GetScoreMetrics() []*ScoreMetrics {
	if x != nil {
		return x.ScoreMetrics
	}
	return nil
}

func (x *Metrics) GetChallengeMetrics() []*ChallengeMetrics {
	if x != nil {
		return x.ChallengeMetrics
	}
	return nil
}

// Secret key is used only in legacy reCAPTCHA. It must be used in a 3rd party
// integration with legacy reCAPTCHA.
type RetrieveLegacySecretKeyResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The secret key (also known as shared secret) authorizes communication
	// between your application backend and the reCAPTCHA Enterprise server to
	// create an assessment.
	// The secret key needs to be kept safe for security purposes.
	LegacySecretKey string `protobuf:"bytes,1,opt,name=legacy_secret_key,json=legacySecretKey,proto3" json:"legacy_secret_key,omitempty"`
}

func (x *RetrieveLegacySecretKeyResponse) Reset() {
	*x = RetrieveLegacySecretKeyResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[24]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*RetrieveLegacySecretKeyResponse) ProtoMessage() {}

func (x *RetrieveLegacySecretKeyResponse) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[24]
	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 RetrieveLegacySecretKeyResponse.ProtoReflect.Descriptor instead.
func (*RetrieveLegacySecretKeyResponse) Descriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{24}
}

func (x *RetrieveLegacySecretKeyResponse) GetLegacySecretKey() string {
	if x != nil {
		return x.LegacySecretKey
	}
	return ""
}

// A key used to identify and configure applications (web and/or mobile) that
// use reCAPTCHA Enterprise.
type Key struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The resource name for the Key in the format
	// "projects/{project}/keys/{key}".
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Human-readable display name of this key. Modifiable by user.
	DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
	// Platform specific settings for this key. The key can only be used on a
	// platform for which the settings are enabled.
	//
	// Types that are assignable to PlatformSettings:
	//	*Key_WebSettings
	//	*Key_AndroidSettings
	//	*Key_IosSettings
	PlatformSettings isKey_PlatformSettings `protobuf_oneof:"platform_settings"`
	// See <a href="https://cloud.google.com/recaptcha-enterprise/docs/labels">
	// Creating and managing labels</a>.
	Labels map[string]string `protobuf:"bytes,6,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	// Output only. The timestamp corresponding to the creation of this Key.
	CreateTime *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
	// Options for user acceptance testing.
	TestingOptions *TestingOptions `protobuf:"bytes,9,opt,name=testing_options,json=testingOptions,proto3" json:"testing_options,omitempty"`
	// Settings for WAF
	WafSettings *WafSettings `protobuf:"bytes,10,opt,name=waf_settings,json=wafSettings,proto3" json:"waf_settings,omitempty"`
}

func (x *Key) Reset() {
	*x = Key{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[25]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Key) ProtoMessage() {}

func (x *Key) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[25]
	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 Key.ProtoReflect.Descriptor instead.
func (*Key) Descriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{25}
}

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

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

func (m *Key) GetPlatformSettings() isKey_PlatformSettings {
	if m != nil {
		return m.PlatformSettings
	}
	return nil
}

func (x *Key) GetWebSettings() *WebKeySettings {
	if x, ok := x.GetPlatformSettings().(*Key_WebSettings); ok {
		return x.WebSettings
	}
	return nil
}

func (x *Key) GetAndroidSettings() *AndroidKeySettings {
	if x, ok := x.GetPlatformSettings().(*Key_AndroidSettings); ok {
		return x.AndroidSettings
	}
	return nil
}

func (x *Key) GetIosSettings() *IOSKeySettings {
	if x, ok := x.GetPlatformSettings().(*Key_IosSettings); ok {
		return x.IosSettings
	}
	return nil
}

func (x *Key) GetLabels() map[string]string {
	if x != nil {
		return x.Labels
	}
	return nil
}

func (x *Key) GetCreateTime() *timestamppb.Timestamp {
	if x != nil {
		return x.CreateTime
	}
	return nil
}

func (x *Key) GetTestingOptions() *TestingOptions {
	if x != nil {
		return x.TestingOptions
	}
	return nil
}

func (x *Key) GetWafSettings() *WafSettings {
	if x != nil {
		return x.WafSettings
	}
	return nil
}

type isKey_PlatformSettings interface {
	isKey_PlatformSettings()
}

type Key_WebSettings struct {
	// Settings for keys that can be used by websites.
	WebSettings *WebKeySettings `protobuf:"bytes,3,opt,name=web_settings,json=webSettings,proto3,oneof"`
}

type Key_AndroidSettings struct {
	// Settings for keys that can be used by Android apps.
	AndroidSettings *AndroidKeySettings `protobuf:"bytes,4,opt,name=android_settings,json=androidSettings,proto3,oneof"`
}

type Key_IosSettings struct {
	// Settings for keys that can be used by iOS apps.
	IosSettings *IOSKeySettings `protobuf:"bytes,5,opt,name=ios_settings,json=iosSettings,proto3,oneof"`
}

func (*Key_WebSettings) isKey_PlatformSettings() {}

func (*Key_AndroidSettings) isKey_PlatformSettings() {}

func (*Key_IosSettings) isKey_PlatformSettings() {}

// Options for user acceptance testing.
type TestingOptions struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// All assessments for this Key will return this score. Must be between 0
	// (likely not legitimate) and 1 (likely legitimate) inclusive.
	TestingScore float32 `protobuf:"fixed32,1,opt,name=testing_score,json=testingScore,proto3" json:"testing_score,omitempty"`
	// For challenge-based keys only (CHECKBOX, INVISIBLE), all challenge requests
	// for this site will return nocaptcha if NOCAPTCHA, or an unsolvable
	// challenge if CHALLENGE.
	TestingChallenge TestingOptions_TestingChallenge `protobuf:"varint,2,opt,name=testing_challenge,json=testingChallenge,proto3,enum=google.cloud.recaptchaenterprise.v1.TestingOptions_TestingChallenge" json:"testing_challenge,omitempty"`
}

func (x *TestingOptions) Reset() {
	*x = TestingOptions{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[26]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*TestingOptions) ProtoMessage() {}

func (x *TestingOptions) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[26]
	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 TestingOptions.ProtoReflect.Descriptor instead.
func (*TestingOptions) Descriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{26}
}

func (x *TestingOptions) GetTestingScore() float32 {
	if x != nil {
		return x.TestingScore
	}
	return 0
}

func (x *TestingOptions) GetTestingChallenge() TestingOptions_TestingChallenge {
	if x != nil {
		return x.TestingChallenge
	}
	return TestingOptions_TESTING_CHALLENGE_UNSPECIFIED
}

// Settings specific to keys that can be used by websites.
type WebKeySettings struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// If set to true, it means allowed_domains will not be enforced.
	AllowAllDomains bool `protobuf:"varint,3,opt,name=allow_all_domains,json=allowAllDomains,proto3" json:"allow_all_domains,omitempty"`
	// Domains or subdomains of websites allowed to use the key. All subdomains
	// of an allowed domain are automatically allowed. A valid domain requires a
	// host and must not include any path, port, query or fragment.
	// Examples: 'example.com' or 'subdomain.example.com'
	AllowedDomains []string `protobuf:"bytes,1,rep,name=allowed_domains,json=allowedDomains,proto3" json:"allowed_domains,omitempty"`
	// If set to true, the key can be used on AMP (Accelerated Mobile Pages)
	// websites. This is supported only for the SCORE integration type.
	AllowAmpTraffic bool `protobuf:"varint,2,opt,name=allow_amp_traffic,json=allowAmpTraffic,proto3" json:"allow_amp_traffic,omitempty"`
	// Required. Describes how this key is integrated with the website.
	IntegrationType WebKeySettings_IntegrationType `protobuf:"varint,4,opt,name=integration_type,json=integrationType,proto3,enum=google.cloud.recaptchaenterprise.v1.WebKeySettings_IntegrationType" json:"integration_type,omitempty"`
	// Settings for the frequency and difficulty at which this key triggers
	// captcha challenges. This should only be specified for IntegrationTypes
	// CHECKBOX and INVISIBLE.
	ChallengeSecurityPreference WebKeySettings_ChallengeSecurityPreference `protobuf:"varint,5,opt,name=challenge_security_preference,json=challengeSecurityPreference,proto3,enum=google.cloud.recaptchaenterprise.v1.WebKeySettings_ChallengeSecurityPreference" json:"challenge_security_preference,omitempty"`
}

func (x *WebKeySettings) Reset() {
	*x = WebKeySettings{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[27]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*WebKeySettings) ProtoMessage() {}

func (x *WebKeySettings) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[27]
	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 WebKeySettings.ProtoReflect.Descriptor instead.
func (*WebKeySettings) Descriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{27}
}

func (x *WebKeySettings) GetAllowAllDomains() bool {
	if x != nil {
		return x.AllowAllDomains
	}
	return false
}

func (x *WebKeySettings) GetAllowedDomains() []string {
	if x != nil {
		return x.AllowedDomains
	}
	return nil
}

func (x *WebKeySettings) GetAllowAmpTraffic() bool {
	if x != nil {
		return x.AllowAmpTraffic
	}
	return false
}

func (x *WebKeySettings) GetIntegrationType() WebKeySettings_IntegrationType {
	if x != nil {
		return x.IntegrationType
	}
	return WebKeySettings_INTEGRATION_TYPE_UNSPECIFIED
}

func (x *WebKeySettings) GetChallengeSecurityPreference() WebKeySettings_ChallengeSecurityPreference {
	if x != nil {
		return x.ChallengeSecurityPreference
	}
	return WebKeySettings_CHALLENGE_SECURITY_PREFERENCE_UNSPECIFIED
}

// Settings specific to keys that can be used by Android apps.
type AndroidKeySettings struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// If set to true, allowed_package_names are not enforced.
	AllowAllPackageNames bool `protobuf:"varint,2,opt,name=allow_all_package_names,json=allowAllPackageNames,proto3" json:"allow_all_package_names,omitempty"`
	// Android package names of apps allowed to use the key.
	// Example: 'com.companyname.appname'
	AllowedPackageNames []string `protobuf:"bytes,1,rep,name=allowed_package_names,json=allowedPackageNames,proto3" json:"allowed_package_names,omitempty"`
}

func (x *AndroidKeySettings) Reset() {
	*x = AndroidKeySettings{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[28]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*AndroidKeySettings) ProtoMessage() {}

func (x *AndroidKeySettings) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[28]
	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 AndroidKeySettings.ProtoReflect.Descriptor instead.
func (*AndroidKeySettings) Descriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{28}
}

func (x *AndroidKeySettings) GetAllowAllPackageNames() bool {
	if x != nil {
		return x.AllowAllPackageNames
	}
	return false
}

func (x *AndroidKeySettings) GetAllowedPackageNames() []string {
	if x != nil {
		return x.AllowedPackageNames
	}
	return nil
}

// Settings specific to keys that can be used by iOS apps.
type IOSKeySettings struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// If set to true, allowed_bundle_ids are not enforced.
	AllowAllBundleIds bool `protobuf:"varint,2,opt,name=allow_all_bundle_ids,json=allowAllBundleIds,proto3" json:"allow_all_bundle_ids,omitempty"`
	// iOS bundle ids of apps allowed to use the key.
	// Example: 'com.companyname.productname.appname'
	AllowedBundleIds []string `protobuf:"bytes,1,rep,name=allowed_bundle_ids,json=allowedBundleIds,proto3" json:"allowed_bundle_ids,omitempty"`
}

func (x *IOSKeySettings) Reset() {
	*x = IOSKeySettings{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[29]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*IOSKeySettings) ProtoMessage() {}

func (x *IOSKeySettings) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[29]
	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 IOSKeySettings.ProtoReflect.Descriptor instead.
func (*IOSKeySettings) Descriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{29}
}

func (x *IOSKeySettings) GetAllowAllBundleIds() bool {
	if x != nil {
		return x.AllowAllBundleIds
	}
	return false
}

func (x *IOSKeySettings) GetAllowedBundleIds() []string {
	if x != nil {
		return x.AllowedBundleIds
	}
	return nil
}

// Score distribution.
type ScoreDistribution struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Map key is score value multiplied by 100. The scores are discrete values
	// between [0, 1]. The maximum number of buckets is on order of a few dozen,
	// but typically much lower (ie. 10).
	ScoreBuckets map[int32]int64 `protobuf:"bytes,1,rep,name=score_buckets,json=scoreBuckets,proto3" json:"score_buckets,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
}

func (x *ScoreDistribution) Reset() {
	*x = ScoreDistribution{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[30]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*ScoreDistribution) ProtoMessage() {}

func (x *ScoreDistribution) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[30]
	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 ScoreDistribution.ProtoReflect.Descriptor instead.
func (*ScoreDistribution) Descriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{30}
}

func (x *ScoreDistribution) GetScoreBuckets() map[int32]int64 {
	if x != nil {
		return x.ScoreBuckets
	}
	return nil
}

// Metrics related to scoring.
type ScoreMetrics struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Aggregated score metrics for all traffic.
	OverallMetrics *ScoreDistribution `protobuf:"bytes,1,opt,name=overall_metrics,json=overallMetrics,proto3" json:"overall_metrics,omitempty"`
	// Action-based metrics. The map key is the action name which specified by the
	// site owners at time of the "execute" client-side call.
	ActionMetrics map[string]*ScoreDistribution `protobuf:"bytes,2,rep,name=action_metrics,json=actionMetrics,proto3" json:"action_metrics,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}

func (x *ScoreMetrics) Reset() {
	*x = ScoreMetrics{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[31]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*ScoreMetrics) ProtoMessage() {}

func (x *ScoreMetrics) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[31]
	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 ScoreMetrics.ProtoReflect.Descriptor instead.
func (*ScoreMetrics) Descriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{31}
}

func (x *ScoreMetrics) GetOverallMetrics() *ScoreDistribution {
	if x != nil {
		return x.OverallMetrics
	}
	return nil
}

func (x *ScoreMetrics) GetActionMetrics() map[string]*ScoreDistribution {
	if x != nil {
		return x.ActionMetrics
	}
	return nil
}

// Metrics related to challenges.
type ChallengeMetrics struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Count of reCAPTCHA checkboxes or badges rendered. This is mostly equivalent
	// to a count of pageloads for pages that include reCAPTCHA.
	PageloadCount int64 `protobuf:"varint,1,opt,name=pageload_count,json=pageloadCount,proto3" json:"pageload_count,omitempty"`
	// Count of nocaptchas (successful verification without a challenge) issued.
	NocaptchaCount int64 `protobuf:"varint,2,opt,name=nocaptcha_count,json=nocaptchaCount,proto3" json:"nocaptcha_count,omitempty"`
	// Count of submitted challenge solutions that were incorrect or otherwise
	// deemed suspicious such that a subsequent challenge was triggered.
	FailedCount int64 `protobuf:"varint,3,opt,name=failed_count,json=failedCount,proto3" json:"failed_count,omitempty"`
	// Count of nocaptchas (successful verification without a challenge) plus
	// submitted challenge solutions that were correct and resulted in
	// verification.
	PassedCount int64 `protobuf:"varint,4,opt,name=passed_count,json=passedCount,proto3" json:"passed_count,omitempty"`
}

func (x *ChallengeMetrics) Reset() {
	*x = ChallengeMetrics{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[32]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*ChallengeMetrics) ProtoMessage() {}

func (x *ChallengeMetrics) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[32]
	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 ChallengeMetrics.ProtoReflect.Descriptor instead.
func (*ChallengeMetrics) Descriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{32}
}

func (x *ChallengeMetrics) GetPageloadCount() int64 {
	if x != nil {
		return x.PageloadCount
	}
	return 0
}

func (x *ChallengeMetrics) GetNocaptchaCount() int64 {
	if x != nil {
		return x.NocaptchaCount
	}
	return 0
}

func (x *ChallengeMetrics) GetFailedCount() int64 {
	if x != nil {
		return x.FailedCount
	}
	return 0
}

func (x *ChallengeMetrics) GetPassedCount() int64 {
	if x != nil {
		return x.PassedCount
	}
	return 0
}

// The request message to list memberships in a related account group.
type ListRelatedAccountGroupMembershipsRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The resource name for the related account group in the format
	// `projects/{project}/relatedaccountgroups/{relatedaccountgroup}`.
	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
	// Optional. The maximum number of accounts to return. The service might
	// return fewer than this value. If unspecified, at most 50 accounts are
	// returned. The maximum value is 1000; values above 1000 are coerced to 1000.
	PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
	// Optional. A page token, received from a previous
	// `ListRelatedAccountGroupMemberships` call.
	//
	// When paginating, all other parameters provided to
	// `ListRelatedAccountGroupMemberships` must match the call that provided the
	// page token.
	PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
}

func (x *ListRelatedAccountGroupMembershipsRequest) Reset() {
	*x = ListRelatedAccountGroupMembershipsRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[33]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*ListRelatedAccountGroupMembershipsRequest) ProtoMessage() {}

func (x *ListRelatedAccountGroupMembershipsRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[33]
	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 ListRelatedAccountGroupMembershipsRequest.ProtoReflect.Descriptor instead.
func (*ListRelatedAccountGroupMembershipsRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{33}
}

func (x *ListRelatedAccountGroupMembershipsRequest) GetParent() string {
	if x != nil {
		return x.Parent
	}
	return ""
}

func (x *ListRelatedAccountGroupMembershipsRequest) GetPageSize() int32 {
	if x != nil {
		return x.PageSize
	}
	return 0
}

func (x *ListRelatedAccountGroupMembershipsRequest) GetPageToken() string {
	if x != nil {
		return x.PageToken
	}
	return ""
}

// The response to a `ListRelatedAccountGroupMemberships` call.
type ListRelatedAccountGroupMembershipsResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The memberships listed by the query.
	RelatedAccountGroupMemberships []*RelatedAccountGroupMembership `protobuf:"bytes,1,rep,name=related_account_group_memberships,json=relatedAccountGroupMemberships,proto3" json:"related_account_group_memberships,omitempty"`
	// A token, which can be sent as `page_token` to retrieve the next page.
	// If this field is omitted, there are no subsequent pages.
	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
}

func (x *ListRelatedAccountGroupMembershipsResponse) Reset() {
	*x = ListRelatedAccountGroupMembershipsResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[34]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*ListRelatedAccountGroupMembershipsResponse) ProtoMessage() {}

func (x *ListRelatedAccountGroupMembershipsResponse) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[34]
	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 ListRelatedAccountGroupMembershipsResponse.ProtoReflect.Descriptor instead.
func (*ListRelatedAccountGroupMembershipsResponse) Descriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{34}
}

func (x *ListRelatedAccountGroupMembershipsResponse) GetRelatedAccountGroupMemberships() []*RelatedAccountGroupMembership {
	if x != nil {
		return x.RelatedAccountGroupMemberships
	}
	return nil
}

func (x *ListRelatedAccountGroupMembershipsResponse) GetNextPageToken() string {
	if x != nil {
		return x.NextPageToken
	}
	return ""
}

// The request message to list related account groups.
type ListRelatedAccountGroupsRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The name of the project to list related account groups from, in
	// the format "projects/{project}".
	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
	// Optional. The maximum number of groups to return. The service might return
	// fewer than this value. If unspecified, at most 50 groups are returned. The
	// maximum value is 1000; values above 1000 are coerced to 1000.
	PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
	// Optional. A page token, received from a previous `ListRelatedAccountGroups`
	// call. Provide this to retrieve the subsequent page.
	//
	// When paginating, all other parameters provided to
	// `ListRelatedAccountGroups` must match the call that provided the page
	// token.
	PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
}

func (x *ListRelatedAccountGroupsRequest) Reset() {
	*x = ListRelatedAccountGroupsRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[35]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*ListRelatedAccountGroupsRequest) ProtoMessage() {}

func (x *ListRelatedAccountGroupsRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[35]
	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 ListRelatedAccountGroupsRequest.ProtoReflect.Descriptor instead.
func (*ListRelatedAccountGroupsRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{35}
}

func (x *ListRelatedAccountGroupsRequest) GetParent() string {
	if x != nil {
		return x.Parent
	}
	return ""
}

func (x *ListRelatedAccountGroupsRequest) GetPageSize() int32 {
	if x != nil {
		return x.PageSize
	}
	return 0
}

func (x *ListRelatedAccountGroupsRequest) GetPageToken() string {
	if x != nil {
		return x.PageToken
	}
	return ""
}

// The response to a `ListRelatedAccountGroups` call.
type ListRelatedAccountGroupsResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The groups of related accounts listed by the query.
	RelatedAccountGroups []*RelatedAccountGroup `protobuf:"bytes,1,rep,name=related_account_groups,json=relatedAccountGroups,proto3" json:"related_account_groups,omitempty"`
	// A token, which can be sent as `page_token` to retrieve the next page.
	// If this field is omitted, there are no subsequent pages.
	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
}

func (x *ListRelatedAccountGroupsResponse) Reset() {
	*x = ListRelatedAccountGroupsResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[36]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*ListRelatedAccountGroupsResponse) ProtoMessage() {}

func (x *ListRelatedAccountGroupsResponse) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[36]
	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 ListRelatedAccountGroupsResponse.ProtoReflect.Descriptor instead.
func (*ListRelatedAccountGroupsResponse) Descriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{36}
}

func (x *ListRelatedAccountGroupsResponse) GetRelatedAccountGroups() []*RelatedAccountGroup {
	if x != nil {
		return x.RelatedAccountGroups
	}
	return nil
}

func (x *ListRelatedAccountGroupsResponse) GetNextPageToken() string {
	if x != nil {
		return x.NextPageToken
	}
	return ""
}

// The request message to search related account group memberships.
type SearchRelatedAccountGroupMembershipsRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The name of the project to search related account group
	// memberships from. Specify the project name in the following format:
	// "projects/{project}".
	Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"`
	// Optional. The unique stable hashed user identifier we should search
	// connections to. The identifier should correspond to a `hashed_account_id`
	// provided in a previous `CreateAssessment` or `AnnotateAssessment` call.
	HashedAccountId []byte `protobuf:"bytes,2,opt,name=hashed_account_id,json=hashedAccountId,proto3" json:"hashed_account_id,omitempty"`
	// Optional. The maximum number of groups to return. The service might return
	// fewer than this value. If unspecified, at most 50 groups are returned. The
	// maximum value is 1000; values above 1000 are coerced to 1000.
	PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
	// Optional. A page token, received from a previous
	// `SearchRelatedAccountGroupMemberships` call. Provide this to retrieve the
	// subsequent page.
	//
	// When paginating, all other parameters provided to
	// `SearchRelatedAccountGroupMemberships` must match the call that provided
	// the page token.
	PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
}

func (x *SearchRelatedAccountGroupMembershipsRequest) Reset() {
	*x = SearchRelatedAccountGroupMembershipsRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[37]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*SearchRelatedAccountGroupMembershipsRequest) ProtoMessage() {}

func (x *SearchRelatedAccountGroupMembershipsRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[37]
	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 SearchRelatedAccountGroupMembershipsRequest.ProtoReflect.Descriptor instead.
func (*SearchRelatedAccountGroupMembershipsRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{37}
}

func (x *SearchRelatedAccountGroupMembershipsRequest) GetProject() string {
	if x != nil {
		return x.Project
	}
	return ""
}

func (x *SearchRelatedAccountGroupMembershipsRequest) GetHashedAccountId() []byte {
	if x != nil {
		return x.HashedAccountId
	}
	return nil
}

func (x *SearchRelatedAccountGroupMembershipsRequest) GetPageSize() int32 {
	if x != nil {
		return x.PageSize
	}
	return 0
}

func (x *SearchRelatedAccountGroupMembershipsRequest) GetPageToken() string {
	if x != nil {
		return x.PageToken
	}
	return ""
}

// The response to a `SearchRelatedAccountGroupMemberships` call.
type SearchRelatedAccountGroupMembershipsResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The queried memberships.
	RelatedAccountGroupMemberships []*RelatedAccountGroupMembership `protobuf:"bytes,1,rep,name=related_account_group_memberships,json=relatedAccountGroupMemberships,proto3" json:"related_account_group_memberships,omitempty"`
	// A token, which can be sent as `page_token` to retrieve the next page.
	// If this field is omitted, there are no subsequent pages.
	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
}

func (x *SearchRelatedAccountGroupMembershipsResponse) Reset() {
	*x = SearchRelatedAccountGroupMembershipsResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[38]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*SearchRelatedAccountGroupMembershipsResponse) ProtoMessage() {}

func (x *SearchRelatedAccountGroupMembershipsResponse) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[38]
	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 SearchRelatedAccountGroupMembershipsResponse.ProtoReflect.Descriptor instead.
func (*SearchRelatedAccountGroupMembershipsResponse) Descriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{38}
}

func (x *SearchRelatedAccountGroupMembershipsResponse) GetRelatedAccountGroupMemberships() []*RelatedAccountGroupMembership {
	if x != nil {
		return x.RelatedAccountGroupMemberships
	}
	return nil
}

func (x *SearchRelatedAccountGroupMembershipsResponse) GetNextPageToken() string {
	if x != nil {
		return x.NextPageToken
	}
	return ""
}

// A membership in a group of related accounts.
type RelatedAccountGroupMembership struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The resource name for this membership in the format
	// `projects/{project}/relatedaccountgroups/{relatedaccountgroup}/memberships/{membership}`.
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// The unique stable hashed user identifier of the member. The identifier
	// corresponds to a `hashed_account_id` provided in a previous
	// `CreateAssessment` or `AnnotateAssessment` call.
	HashedAccountId []byte `protobuf:"bytes,2,opt,name=hashed_account_id,json=hashedAccountId,proto3" json:"hashed_account_id,omitempty"`
}

func (x *RelatedAccountGroupMembership) Reset() {
	*x = RelatedAccountGroupMembership{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[39]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*RelatedAccountGroupMembership) ProtoMessage() {}

func (x *RelatedAccountGroupMembership) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[39]
	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 RelatedAccountGroupMembership.ProtoReflect.Descriptor instead.
func (*RelatedAccountGroupMembership) Descriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{39}
}

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

func (x *RelatedAccountGroupMembership) GetHashedAccountId() []byte {
	if x != nil {
		return x.HashedAccountId
	}
	return nil
}

// A group of related accounts.
type RelatedAccountGroup struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The resource name for the related account group in the format
	// `projects/{project}/relatedaccountgroups/{related_account_group}`.
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
}

func (x *RelatedAccountGroup) Reset() {
	*x = RelatedAccountGroup{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[40]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*RelatedAccountGroup) ProtoMessage() {}

func (x *RelatedAccountGroup) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[40]
	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 RelatedAccountGroup.ProtoReflect.Descriptor instead.
func (*RelatedAccountGroup) Descriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{40}
}

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

// Settings specific to keys that can be used for WAF (Web Application
// Firewall).
type WafSettings struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The WAF service that uses this key.
	WafService WafSettings_WafService `protobuf:"varint,1,opt,name=waf_service,json=wafService,proto3,enum=google.cloud.recaptchaenterprise.v1.WafSettings_WafService" json:"waf_service,omitempty"`
	// Required. The WAF feature for which this key is enabled.
	WafFeature WafSettings_WafFeature `protobuf:"varint,2,opt,name=waf_feature,json=wafFeature,proto3,enum=google.cloud.recaptchaenterprise.v1.WafSettings_WafFeature" json:"waf_feature,omitempty"`
}

func (x *WafSettings) Reset() {
	*x = WafSettings{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[41]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*WafSettings) ProtoMessage() {}

func (x *WafSettings) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[41]
	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 WafSettings.ProtoReflect.Descriptor instead.
func (*WafSettings) Descriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{41}
}

func (x *WafSettings) GetWafService() WafSettings_WafService {
	if x != nil {
		return x.WafService
	}
	return WafSettings_WAF_SERVICE_UNSPECIFIED
}

func (x *WafSettings) GetWafFeature() WafSettings_WafFeature {
	if x != nil {
		return x.WafFeature
	}
	return WafSettings_WAF_FEATURE_UNSPECIFIED
}

// Structured address format for billing and shipping addresses.
type TransactionData_Address struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The recipient name, potentially including information such as "care of".
	Recipient string `protobuf:"bytes,1,opt,name=recipient,proto3" json:"recipient,omitempty"`
	// The first lines of the address. The first line generally contains the
	// street name and number, and further lines may include information such as
	// an apartment number.
	Address []string `protobuf:"bytes,2,rep,name=address,proto3" json:"address,omitempty"`
	// The town/city of the address.
	Locality string `protobuf:"bytes,3,opt,name=locality,proto3" json:"locality,omitempty"`
	// The state, province, or otherwise administrative area of the address.
	AdministrativeArea string `protobuf:"bytes,4,opt,name=administrative_area,json=administrativeArea,proto3" json:"administrative_area,omitempty"`
	// The CLDR country/region of the address.
	RegionCode string `protobuf:"bytes,5,opt,name=region_code,json=regionCode,proto3" json:"region_code,omitempty"`
	// The postal or ZIP code of the address.
	PostalCode string `protobuf:"bytes,6,opt,name=postal_code,json=postalCode,proto3" json:"postal_code,omitempty"`
}

func (x *TransactionData_Address) Reset() {
	*x = TransactionData_Address{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[42]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*TransactionData_Address) ProtoMessage() {}

func (x *TransactionData_Address) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[42]
	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 TransactionData_Address.ProtoReflect.Descriptor instead.
func (*TransactionData_Address) Descriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{9, 0}
}

func (x *TransactionData_Address) GetRecipient() string {
	if x != nil {
		return x.Recipient
	}
	return ""
}

func (x *TransactionData_Address) GetAddress() []string {
	if x != nil {
		return x.Address
	}
	return nil
}

func (x *TransactionData_Address) GetLocality() string {
	if x != nil {
		return x.Locality
	}
	return ""
}

func (x *TransactionData_Address) GetAdministrativeArea() string {
	if x != nil {
		return x.AdministrativeArea
	}
	return ""
}

func (x *TransactionData_Address) GetRegionCode() string {
	if x != nil {
		return x.RegionCode
	}
	return ""
}

func (x *TransactionData_Address) GetPostalCode() string {
	if x != nil {
		return x.PostalCode
	}
	return ""
}

// Details about a user's account involved in the transaction.
type TransactionData_User struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Unique account identifier for this user. If using account defender,
	// this should match the hashed_account_id field. Otherwise, a unique and
	// persistent identifier for this account.
	AccountId string `protobuf:"bytes,6,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"`
	// The epoch milliseconds of the user's account creation.
	CreationMs int64 `protobuf:"varint,1,opt,name=creation_ms,json=creationMs,proto3" json:"creation_ms,omitempty"`
	// The email address of the user.
	Email string `protobuf:"bytes,2,opt,name=email,proto3" json:"email,omitempty"`
	// Whether the email has been verified to be accessible by the user (OTP or
	// similar).
	EmailVerified bool `protobuf:"varint,3,opt,name=email_verified,json=emailVerified,proto3" json:"email_verified,omitempty"`
	// The phone number of the user, with country code.
	PhoneNumber string `protobuf:"bytes,4,opt,name=phone_number,json=phoneNumber,proto3" json:"phone_number,omitempty"`
	// Whether the phone number has been verified to be accessible by the user
	// (OTP or similar).
	PhoneVerified bool `protobuf:"varint,5,opt,name=phone_verified,json=phoneVerified,proto3" json:"phone_verified,omitempty"`
}

func (x *TransactionData_User) Reset() {
	*x = TransactionData_User{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[43]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*TransactionData_User) ProtoMessage() {}

func (x *TransactionData_User) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[43]
	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 TransactionData_User.ProtoReflect.Descriptor instead.
func (*TransactionData_User) Descriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{9, 1}
}

func (x *TransactionData_User) GetAccountId() string {
	if x != nil {
		return x.AccountId
	}
	return ""
}

func (x *TransactionData_User) GetCreationMs() int64 {
	if x != nil {
		return x.CreationMs
	}
	return 0
}

func (x *TransactionData_User) GetEmail() string {
	if x != nil {
		return x.Email
	}
	return ""
}

func (x *TransactionData_User) GetEmailVerified() bool {
	if x != nil {
		return x.EmailVerified
	}
	return false
}

func (x *TransactionData_User) GetPhoneNumber() string {
	if x != nil {
		return x.PhoneNumber
	}
	return ""
}

func (x *TransactionData_User) GetPhoneVerified() bool {
	if x != nil {
		return x.PhoneVerified
	}
	return false
}

// Line items being purchased in this transaction.
type TransactionData_Item struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The full name of the item.
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// The value per item that the user is paying, in the transaction currency,
	// after discounts.
	Value float64 `protobuf:"fixed64,2,opt,name=value,proto3" json:"value,omitempty"`
	// The quantity of this item that is being purchased.
	Quantity int64 `protobuf:"varint,3,opt,name=quantity,proto3" json:"quantity,omitempty"`
	// When a merchant is specified, its corresponding account_id. Necessary to
	// populate marketplace-style transactions.
	MerchantAccountId string `protobuf:"bytes,4,opt,name=merchant_account_id,json=merchantAccountId,proto3" json:"merchant_account_id,omitempty"`
}

func (x *TransactionData_Item) Reset() {
	*x = TransactionData_Item{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[44]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*TransactionData_Item) ProtoMessage() {}

func (x *TransactionData_Item) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[44]
	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 TransactionData_Item.ProtoReflect.Descriptor instead.
func (*TransactionData_Item) Descriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{9, 2}
}

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

func (x *TransactionData_Item) GetValue() float64 {
	if x != nil {
		return x.Value
	}
	return 0
}

func (x *TransactionData_Item) GetQuantity() int64 {
	if x != nil {
		return x.Quantity
	}
	return 0
}

func (x *TransactionData_Item) GetMerchantAccountId() string {
	if x != nil {
		return x.MerchantAccountId
	}
	return ""
}

// Details about the transaction from the gateway.
type TransactionData_GatewayInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Name of the gateway service (for example, stripe, square, paypal).
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Gateway response code describing the state of the transaction.
	GatewayResponseCode string `protobuf:"bytes,2,opt,name=gateway_response_code,json=gatewayResponseCode,proto3" json:"gateway_response_code,omitempty"`
	// AVS response code from the gateway
	// (available only when reCAPTCHA Enterprise is called after authorization).
	AvsResponseCode string `protobuf:"bytes,3,opt,name=avs_response_code,json=avsResponseCode,proto3" json:"avs_response_code,omitempty"`
	// CVV response code from the gateway
	// (available only when reCAPTCHA Enterprise is called after authorization).
	CvvResponseCode string `protobuf:"bytes,4,opt,name=cvv_response_code,json=cvvResponseCode,proto3" json:"cvv_response_code,omitempty"`
}

func (x *TransactionData_GatewayInfo) Reset() {
	*x = TransactionData_GatewayInfo{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[45]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*TransactionData_GatewayInfo) ProtoMessage() {}

func (x *TransactionData_GatewayInfo) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[45]
	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 TransactionData_GatewayInfo.ProtoReflect.Descriptor instead.
func (*TransactionData_GatewayInfo) Descriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{9, 3}
}

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

func (x *TransactionData_GatewayInfo) GetGatewayResponseCode() string {
	if x != nil {
		return x.GatewayResponseCode
	}
	return ""
}

func (x *TransactionData_GatewayInfo) GetAvsResponseCode() string {
	if x != nil {
		return x.AvsResponseCode
	}
	return ""
}

func (x *TransactionData_GatewayInfo) GetCvvResponseCode() string {
	if x != nil {
		return x.CvvResponseCode
	}
	return ""
}

// Information about stolen instrument fraud, where the user is not the
// legitimate owner of the instrument being used for the purchase.
type FraudPreventionAssessment_StolenInstrumentVerdict struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Probability (0-1) of this transaction being executed with a stolen
	// instrument.
	Risk float32 `protobuf:"fixed32,1,opt,name=risk,proto3" json:"risk,omitempty"`
}

func (x *FraudPreventionAssessment_StolenInstrumentVerdict) Reset() {
	*x = FraudPreventionAssessment_StolenInstrumentVerdict{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[46]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*FraudPreventionAssessment_StolenInstrumentVerdict) ProtoMessage() {}

func (x *FraudPreventionAssessment_StolenInstrumentVerdict) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[46]
	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 FraudPreventionAssessment_StolenInstrumentVerdict.ProtoReflect.Descriptor instead.
func (*FraudPreventionAssessment_StolenInstrumentVerdict) Descriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{12, 0}
}

func (x *FraudPreventionAssessment_StolenInstrumentVerdict) GetRisk() float32 {
	if x != nil {
		return x.Risk
	}
	return 0
}

// Information about card testing fraud, where an adversary is testing
// fraudulently obtained cards or brute forcing their details.
type FraudPreventionAssessment_CardTestingVerdict struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Probability (0-1) of this transaction attempt being part of a card
	// testing attack.
	Risk float32 `protobuf:"fixed32,1,opt,name=risk,proto3" json:"risk,omitempty"`
}

func (x *FraudPreventionAssessment_CardTestingVerdict) Reset() {
	*x = FraudPreventionAssessment_CardTestingVerdict{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[47]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*FraudPreventionAssessment_CardTestingVerdict) ProtoMessage() {}

func (x *FraudPreventionAssessment_CardTestingVerdict) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[47]
	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 FraudPreventionAssessment_CardTestingVerdict.ProtoReflect.Descriptor instead.
func (*FraudPreventionAssessment_CardTestingVerdict) Descriptor() ([]byte, []int) {
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{12, 1}
}

func (x *FraudPreventionAssessment_CardTestingVerdict) GetRisk() float32 {
	if x != nil {
		return x.Risk
	}
	return 0
}

var File_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto protoreflect.FileDescriptor

var file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDesc = []byte{
	0x0a, 0x3d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x72,
	0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69,
	0x73, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65,
	0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
	0x23, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65,
	0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73,
	0x65, 0x2e, 0x76, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69,
	0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f,
	0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63,
	0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65,
	0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f,
	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b,
	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
	0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xbc, 0x01, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61,
	0x74, 0x65, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x12, 0x4b, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x42, 0x33, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2d, 0x0a, 0x2b, 0x63, 0x6c, 0x6f,
	0x75, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65,
	0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d,
	0x2f, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74,
	0x12, 0x54, 0x0a, 0x0a, 0x61, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
	0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74,
	0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x73,
	0x73, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x61, 0x73, 0x73, 0x65,
	0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0xb7, 0x05, 0x0a, 0x10, 0x54, 0x72, 0x61, 0x6e, 0x73,
	0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x6e, 0x0a, 0x0a, 0x65,
	0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32,
	0x4a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72,
	0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69,
	0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f,
	0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69,
	0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x01,
	0x52, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x06, 0x72,
	0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01,
	0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
	0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x05, 0x76, 0x61,
	0x6c, 0x75, 0x65, 0x12, 0x3e, 0x0a, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x69, 0x6d,
	0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
	0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54,
	0x69, 0x6d, 0x65, 0x22, 0xba, 0x03, 0x0a, 0x14, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74,
	0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x26, 0x0a, 0x22,
	0x54, 0x52, 0x41, 0x4e, 0x53, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x56, 0x45, 0x4e,
	0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49,
	0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x4d, 0x45, 0x52, 0x43, 0x48, 0x41, 0x4e, 0x54,
	0x5f, 0x41, 0x50, 0x50, 0x52, 0x4f, 0x56, 0x45, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x4d, 0x45,
	0x52, 0x43, 0x48, 0x41, 0x4e, 0x54, 0x5f, 0x44, 0x45, 0x4e, 0x59, 0x10, 0x02, 0x12, 0x11, 0x0a,
	0x0d, 0x4d, 0x41, 0x4e, 0x55, 0x41, 0x4c, 0x5f, 0x52, 0x45, 0x56, 0x49, 0x45, 0x57, 0x10, 0x03,
	0x12, 0x11, 0x0a, 0x0d, 0x41, 0x55, 0x54, 0x48, 0x4f, 0x52, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f,
	0x4e, 0x10, 0x04, 0x12, 0x19, 0x0a, 0x15, 0x41, 0x55, 0x54, 0x48, 0x4f, 0x52, 0x49, 0x5a, 0x41,
	0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x43, 0x4c, 0x49, 0x4e, 0x45, 0x10, 0x05, 0x12, 0x13,
	0x0a, 0x0f, 0x50, 0x41, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x43, 0x41, 0x50, 0x54, 0x55, 0x52,
	0x45, 0x10, 0x06, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x41, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x43,
	0x41, 0x50, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x44, 0x45, 0x43, 0x4c, 0x49, 0x4e, 0x45, 0x10, 0x07,
	0x12, 0x0a, 0x0a, 0x06, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x10, 0x08, 0x12, 0x16, 0x0a, 0x12,
	0x43, 0x48, 0x41, 0x52, 0x47, 0x45, 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x49, 0x4e, 0x51, 0x55, 0x49,
	0x52, 0x59, 0x10, 0x09, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x48, 0x41, 0x52, 0x47, 0x45, 0x42, 0x41,
	0x43, 0x4b, 0x5f, 0x41, 0x4c, 0x45, 0x52, 0x54, 0x10, 0x0a, 0x12, 0x16, 0x0a, 0x12, 0x46, 0x52,
	0x41, 0x55, 0x44, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e,
	0x10, 0x0b, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x48, 0x41, 0x52, 0x47, 0x45, 0x42, 0x41, 0x43, 0x4b,
	0x10, 0x0c, 0x12, 0x1c, 0x0a, 0x18, 0x43, 0x48, 0x41, 0x52, 0x47, 0x45, 0x42, 0x41, 0x43, 0x4b,
	0x5f, 0x52, 0x45, 0x50, 0x52, 0x45, 0x53, 0x45, 0x4e, 0x54, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x0d,
	0x12, 0x16, 0x0a, 0x12, 0x43, 0x48, 0x41, 0x52, 0x47, 0x45, 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x52,
	0x45, 0x56, 0x45, 0x52, 0x53, 0x45, 0x10, 0x0e, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x45, 0x46, 0x55,
	0x4e, 0x44, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x0f, 0x12, 0x12, 0x0a, 0x0e,
	0x52, 0x45, 0x46, 0x55, 0x4e, 0x44, 0x5f, 0x44, 0x45, 0x43, 0x4c, 0x49, 0x4e, 0x45, 0x10, 0x10,
	0x12, 0x0a, 0x0a, 0x06, 0x52, 0x45, 0x46, 0x55, 0x4e, 0x44, 0x10, 0x11, 0x12, 0x12, 0x0a, 0x0e,
	0x52, 0x45, 0x46, 0x55, 0x4e, 0x44, 0x5f, 0x52, 0x45, 0x56, 0x45, 0x52, 0x53, 0x45, 0x10, 0x12,
	0x22, 0xa8, 0x07, 0x0a, 0x19, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x41, 0x73, 0x73,
	0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x49,
	0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x35, 0xe0, 0x41,
	0x02, 0xfa, 0x41, 0x2f, 0x0a, 0x2d, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65,
	0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d,
	0x65, 0x6e, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x6e, 0x0a, 0x0a, 0x61, 0x6e, 0x6e,
	0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x49, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63,
	0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65,
	0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65,
	0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x6e,
	0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0a, 0x61,
	0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x64, 0x0a, 0x07, 0x72, 0x65, 0x61,
	0x73, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x45, 0x2e, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74,
	0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31,
	0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d,
	0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x73, 0x6f,
	0x6e, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x73, 0x12,
	0x2f, 0x0a, 0x11, 0x68, 0x61, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e,
	0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52,
	0x0f, 0x68, 0x61, 0x73, 0x68, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64,
	0x12, 0x67, 0x0a, 0x11, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
	0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70,
	0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76,
	0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65,
	0x6e, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63,
	0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x7e, 0x0a, 0x0a, 0x41, 0x6e, 0x6e,
	0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x16, 0x41, 0x4e, 0x4e, 0x4f, 0x54,
	0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45,
	0x44, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4c, 0x45, 0x47, 0x49, 0x54, 0x49, 0x4d, 0x41, 0x54,
	0x45, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x46, 0x52, 0x41, 0x55, 0x44, 0x55, 0x4c, 0x45, 0x4e,
	0x54, 0x10, 0x02, 0x12, 0x18, 0x0a, 0x10, 0x50, 0x41, 0x53, 0x53, 0x57, 0x4f, 0x52, 0x44, 0x5f,
	0x43, 0x4f, 0x52, 0x52, 0x45, 0x43, 0x54, 0x10, 0x03, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1a, 0x0a,
	0x12, 0x50, 0x41, 0x53, 0x53, 0x57, 0x4f, 0x52, 0x44, 0x5f, 0x49, 0x4e, 0x43, 0x4f, 0x52, 0x52,
	0x45, 0x43, 0x54, 0x10, 0x04, 0x1a, 0x02, 0x08, 0x01, 0x22, 0xcf, 0x02, 0x0a, 0x06, 0x52, 0x65,
	0x61, 0x73, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x12, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x55,
	0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a,
	0x43, 0x48, 0x41, 0x52, 0x47, 0x45, 0x42, 0x41, 0x43, 0x4b, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10,
	0x43, 0x48, 0x41, 0x52, 0x47, 0x45, 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x46, 0x52, 0x41, 0x55, 0x44,
	0x10, 0x08, 0x12, 0x16, 0x0a, 0x12, 0x43, 0x48, 0x41, 0x52, 0x47, 0x45, 0x42, 0x41, 0x43, 0x4b,
	0x5f, 0x44, 0x49, 0x53, 0x50, 0x55, 0x54, 0x45, 0x10, 0x09, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x45,
	0x46, 0x55, 0x4e, 0x44, 0x10, 0x0a, 0x12, 0x10, 0x0a, 0x0c, 0x52, 0x45, 0x46, 0x55, 0x4e, 0x44,
	0x5f, 0x46, 0x52, 0x41, 0x55, 0x44, 0x10, 0x0b, 0x12, 0x18, 0x0a, 0x14, 0x54, 0x52, 0x41, 0x4e,
	0x53, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x50, 0x54, 0x45, 0x44,
	0x10, 0x0c, 0x12, 0x18, 0x0a, 0x14, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x41, 0x43, 0x54, 0x49, 0x4f,
	0x4e, 0x5f, 0x44, 0x45, 0x43, 0x4c, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x0d, 0x12, 0x16, 0x0a, 0x12,
	0x50, 0x41, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x48, 0x45, 0x55, 0x52, 0x49, 0x53, 0x54, 0x49,
	0x43, 0x53, 0x10, 0x02, 0x12, 0x18, 0x0a, 0x14, 0x49, 0x4e, 0x49, 0x54, 0x49, 0x41, 0x54, 0x45,
	0x44, 0x5f, 0x54, 0x57, 0x4f, 0x5f, 0x46, 0x41, 0x43, 0x54, 0x4f, 0x52, 0x10, 0x07, 0x12, 0x15,
	0x0a, 0x11, 0x50, 0x41, 0x53, 0x53, 0x45, 0x44, 0x5f, 0x54, 0x57, 0x4f, 0x5f, 0x46, 0x41, 0x43,
	0x54, 0x4f, 0x52, 0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x5f,
	0x54, 0x57, 0x4f, 0x5f, 0x46, 0x41, 0x43, 0x54, 0x4f, 0x52, 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10,
	0x43, 0x4f, 0x52, 0x52, 0x45, 0x43, 0x54, 0x5f, 0x50, 0x41, 0x53, 0x53, 0x57, 0x4f, 0x52, 0x44,
	0x10, 0x05, 0x12, 0x16, 0x0a, 0x12, 0x49, 0x4e, 0x43, 0x4f, 0x52, 0x52, 0x45, 0x43, 0x54, 0x5f,
	0x50, 0x41, 0x53, 0x53, 0x57, 0x4f, 0x52, 0x44, 0x10, 0x06, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x4f,
	0x43, 0x49, 0x41, 0x4c, 0x5f, 0x53, 0x50, 0x41, 0x4d, 0x10, 0x0e, 0x22, 0x1c, 0x0a, 0x1a, 0x41,
	0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e,
	0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xf3, 0x01, 0x0a, 0x18, 0x45, 0x6e,
	0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x25, 0x0a, 0x0d, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f,
	0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52,
	0x0c, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x23, 0x0a,
	0x0c, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62,
	0x65, 0x72, 0x12, 0x28, 0x0a, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x6f,
	0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0c,
	0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x55, 0x0a, 0x16,
	0x6c, 0x61, 0x73, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
	0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x14, 0x6c,
	0x61, 0x73, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54,
	0x69, 0x6d, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x22,
	0x8f, 0x05, 0x0a, 0x17, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66,
	0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x5b, 0x0a, 0x09, 0x65,
	0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65,
	0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73,
	0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x56, 0x65, 0x72,
	0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x65,
	0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x6c, 0x61, 0x6e, 0x67,
	0x75, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x0c, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x86, 0x01,
	0x0a, 0x1a, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x07, 0x20, 0x01,
	0x28, 0x0e, 0x32, 0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
	0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72,
	0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
	0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f,
	0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x18, 0x6c, 0x61,
	0x74, 0x65, 0x73, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1e, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61,
	0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x75, 0x73,
	0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xc8, 0x02, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c,
	0x74, 0x12, 0x16, 0x0a, 0x12, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50,
	0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x53, 0x55, 0x43,
	0x43, 0x45, 0x53, 0x53, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49,
	0x45, 0x44, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x55, 0x53,
	0x45, 0x52, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10,
	0x02, 0x12, 0x24, 0x0a, 0x20, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x53, 0x49, 0x54, 0x45, 0x5f,
	0x4f, 0x4e, 0x42, 0x4f, 0x41, 0x52, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x49, 0x4e, 0x43, 0x4f, 0x4d,
	0x50, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x03, 0x12, 0x1f, 0x0a, 0x1b, 0x45, 0x52, 0x52, 0x4f, 0x52,
	0x5f, 0x52, 0x45, 0x43, 0x49, 0x50, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x41,
	0x4c, 0x4c, 0x4f, 0x57, 0x45, 0x44, 0x10, 0x04, 0x12, 0x29, 0x0a, 0x25, 0x45, 0x52, 0x52, 0x4f,
	0x52, 0x5f, 0x52, 0x45, 0x43, 0x49, 0x50, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x41, 0x42, 0x55, 0x53,
	0x45, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x45, 0x58, 0x48, 0x41, 0x55, 0x53, 0x54, 0x45,
	0x44, 0x10, 0x05, 0x12, 0x1b, 0x0a, 0x17, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x52, 0x49,
	0x54, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x10, 0x06,
	0x12, 0x22, 0x0a, 0x1e, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d,
	0x45, 0x52, 0x5f, 0x51, 0x55, 0x4f, 0x54, 0x41, 0x5f, 0x45, 0x58, 0x48, 0x41, 0x55, 0x53, 0x54,
	0x45, 0x44, 0x10, 0x07, 0x12, 0x1f, 0x0a, 0x1b, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x56, 0x45,
	0x52, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x59, 0x50, 0x41, 0x53,
	0x53, 0x45, 0x44, 0x10, 0x08, 0x12, 0x1a, 0x0a, 0x16, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x56,
	0x45, 0x52, 0x44, 0x49, 0x43, 0x54, 0x5f, 0x4d, 0x49, 0x53, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x10,
	0x09, 0x22, 0xb8, 0x02, 0x0a, 0x1f, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x50, 0x61, 0x73,
	0x73, 0x77, 0x6f, 0x72, 0x64, 0x4c, 0x65, 0x61, 0x6b, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x12, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f,
	0x68, 0x61, 0x73, 0x68, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x0c, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x10, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x48, 0x61,
	0x73, 0x68, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x4a, 0x0a, 0x1f, 0x65, 0x6e, 0x63, 0x72,
	0x79, 0x70, 0x74, 0x65, 0x64, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x65,
	0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x0c, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x1c, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65,
	0x64, 0x55, 0x73, 0x65, 0x72, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73,
	0x48, 0x61, 0x73, 0x68, 0x12, 0x46, 0x0a, 0x1d, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65,
	0x64, 0x5f, 0x6c, 0x65, 0x61, 0x6b, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x70, 0x72, 0x65,
	0x66, 0x69, 0x78, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0c, 0x42, 0x03, 0xe0, 0x41, 0x03,
	0x52, 0x1a, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x4c, 0x65, 0x61, 0x6b, 0x4d,
	0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x12, 0x4e, 0x0a, 0x21,
	0x72, 0x65, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x5f, 0x75, 0x73, 0x65, 0x72,
	0x5f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x5f, 0x68, 0x61, 0x73,
	0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x1e, 0x72, 0x65,
	0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x43, 0x72, 0x65,
	0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x48, 0x61, 0x73, 0x68, 0x22, 0x90, 0x07, 0x0a,
	0x0a, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x17, 0x0a, 0x04, 0x6e,
	0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x04,
	0x6e, 0x61, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
	0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65,
	0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52,
	0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x5b, 0x0a, 0x0d, 0x72, 0x69, 0x73, 0x6b, 0x5f, 0x61,
	0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63,
	0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65,
	0x2e, 0x76, 0x31, 0x2e, 0x52, 0x69, 0x73, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73,
	0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0c, 0x72, 0x69, 0x73, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79,
	0x73, 0x69, 0x73, 0x12, 0x64, 0x0a, 0x10, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x70, 0x72, 0x6f,
	0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63,
	0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65,
	0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74,
	0x69, 0x65, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x50,
	0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x6f, 0x0a, 0x14, 0x61, 0x63, 0x63,
	0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61,
	0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63,
	0x63, 0x6f, 0x75, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x13, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x56, 0x65,
	0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x7e, 0x0a, 0x1b, 0x61, 0x63,
	0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x64, 0x65, 0x66, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x5f, 0x61,
	0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72,
	0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69,
	0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x44, 0x65, 0x66,
	0x65, 0x6e, 0x64, 0x65, 0x72, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x52,
	0x19, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x44, 0x65, 0x66, 0x65, 0x6e, 0x64, 0x65, 0x72,
	0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x91, 0x01, 0x0a, 0x22, 0x70,
	0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x5f,
	0x6c, 0x65, 0x61, 0x6b, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61,
	0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72,
	0x69, 0x76, 0x61, 0x74, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x4c, 0x65, 0x61,
	0x6b, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x1f, 0x70,
	0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x4c, 0x65,
	0x61, 0x6b, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x7e,
	0x0a, 0x1b, 0x66, 0x72, 0x61, 0x75, 0x64, 0x5f, 0x70, 0x72, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x69,
	0x6f, 0x6e, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x0b, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
	0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65,
	0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x72, 0x61, 0x75, 0x64, 0x50,
	0x72, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d,
	0x65, 0x6e, 0x74, 0x52, 0x19, 0x66, 0x72, 0x61, 0x75, 0x64, 0x50, 0x72, 0x65, 0x76, 0x65, 0x6e,
	0x74, 0x69, 0x6f, 0x6e, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x5f,
	0xea, 0x41, 0x5c, 0x0a, 0x2d, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e,
	0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61,
	0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65,
	0x6e, 0x74, 0x12, 0x2b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72,
	0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x61, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e,
	0x74, 0x73, 0x2f, 0x7b, 0x61, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x7d, 0x22,
	0xd8, 0x02, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x05, 0x74, 0x6f, 0x6b,
	0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x05, 0x74,
	0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1e, 0x0a, 0x08, 0x73, 0x69, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, 0x73, 0x69, 0x74,
	0x65, 0x4b, 0x65, 0x79, 0x12, 0x22, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x61, 0x67, 0x65,
	0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x75,
	0x73, 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x0f, 0x75, 0x73, 0x65, 0x72,
	0x5f, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28,
	0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0d, 0x75, 0x73, 0x65, 0x72, 0x49, 0x70, 0x41, 0x64,
	0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x2c, 0x0a, 0x0f, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65,
	0x64, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03,
	0xe0, 0x41, 0x01, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x41, 0x63, 0x74,
	0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x0a, 0x11, 0x68, 0x61, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x61, 0x63,
	0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x03,
	0xe0, 0x41, 0x01, 0x52, 0x0f, 0x68, 0x61, 0x73, 0x68, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75,
	0x6e, 0x74, 0x49, 0x64, 0x12, 0x64, 0x0a, 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74,
	0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65,
	0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73,
	0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e,
	0x44, 0x61, 0x74, 0x61, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73,
	0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x22, 0x99, 0x0c, 0x0a, 0x0f, 0x54,
	0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2a,
	0x0a, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64,
	0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61,
	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x61,
	0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x0d, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x68, 0x6f,
	0x64, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x62, 0x69, 0x6e, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x61, 0x72, 0x64, 0x42, 0x69, 0x6e, 0x12, 0x24, 0x0a, 0x0e,
	0x63, 0x61, 0x72, 0x64, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6f, 0x75, 0x72, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x61, 0x72, 0x64, 0x4c, 0x61, 0x73, 0x74, 0x46, 0x6f,
	0x75, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x63,
	0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x75, 0x72, 0x72, 0x65,
	0x6e, 0x63, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
	0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x25, 0x0a,
	0x0e, 0x73, 0x68, 0x69, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
	0x0c, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0d, 0x73, 0x68, 0x69, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x56,
	0x61, 0x6c, 0x75, 0x65, 0x12, 0x67, 0x0a, 0x10, 0x73, 0x68, 0x69, 0x70, 0x70, 0x69, 0x6e, 0x67,
	0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65,
	0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73,
	0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e,
	0x44, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x0f, 0x73, 0x68,
	0x69, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x65, 0x0a,
	0x0f, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73,
	0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65,
	0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61,
	0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x64, 0x64,
	0x72, 0x65, 0x73, 0x73, 0x52, 0x0e, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x41, 0x64, 0x64,
	0x72, 0x65, 0x73, 0x73, 0x12, 0x4d, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
	0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72,
	0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63,
	0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75,
	0x73, 0x65, 0x72, 0x12, 0x57, 0x0a, 0x09, 0x6d, 0x65, 0x72, 0x63, 0x68, 0x61, 0x6e, 0x74, 0x73,
	0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65,
	0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61,
	0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x55, 0x73, 0x65,
	0x72, 0x52, 0x09, 0x6d, 0x65, 0x72, 0x63, 0x68, 0x61, 0x6e, 0x74, 0x73, 0x12, 0x4f, 0x0a, 0x05,
	0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70,
	0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76,
	0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74,
	0x61, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x63, 0x0a,
	0x0c, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0a, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
	0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65,
	0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61,
	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61,
	0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x6e,
	0x66, 0x6f, 0x1a, 0xd0, 0x01, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1c,
	0x0a, 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07,
	0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x61,
	0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69,
	0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69,
	0x74, 0x79, 0x12, 0x2f, 0x0a, 0x13, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74, 0x72, 0x61,
	0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x72, 0x65, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x12, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x76, 0x65, 0x41,
	0x72, 0x65, 0x61, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f,
	0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e,
	0x43, 0x6f, 0x64, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x73, 0x74, 0x61, 0x6c, 0x5f, 0x63,
	0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x74, 0x61,
	0x6c, 0x43, 0x6f, 0x64, 0x65, 0x1a, 0xcd, 0x01, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1d,
	0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1f, 0x0a,
	0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x73, 0x12, 0x14,
	0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65,
	0x6d, 0x61, 0x69, 0x6c, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x76, 0x65,
	0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x65, 0x6d,
	0x61, 0x69, 0x6c, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x70,
	0x68, 0x6f, 0x6e, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x25,
	0x0a, 0x0e, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64,
	0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x56, 0x65, 0x72,
	0x69, 0x66, 0x69, 0x65, 0x64, 0x1a, 0x7c, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x12, 0x0a,
	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d,
	0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01,
	0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74,
	0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74,
	0x69, 0x74, 0x79, 0x12, 0x2e, 0x0a, 0x13, 0x6d, 0x65, 0x72, 0x63, 0x68, 0x61, 0x6e, 0x74, 0x5f,
	0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x11, 0x6d, 0x65, 0x72, 0x63, 0x68, 0x61, 0x6e, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e,
	0x74, 0x49, 0x64, 0x1a, 0xad, 0x01, 0x0a, 0x0b, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49,
	0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x67, 0x61, 0x74, 0x65, 0x77,
	0x61, 0x79, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52,
	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x61,
	0x76, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x76, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
	0x6e, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x63, 0x76, 0x76, 0x5f, 0x72,
	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x0f, 0x63, 0x76, 0x76, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43,
	0x6f, 0x64, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74,
	0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x22, 0xf2, 0x02, 0x0a, 0x0c, 0x52, 0x69, 0x73, 0x6b, 0x41,
	0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x60, 0x0a,
	0x07, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x46,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65,
	0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73,
	0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x69, 0x73, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69,
	0x73, 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x07, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x73, 0x22,
	0xe9, 0x01, 0x0a, 0x14, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x21, 0x43, 0x4c, 0x41, 0x53,
	0x53, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f,
	0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12,
	0x0e, 0x0a, 0x0a, 0x41, 0x55, 0x54, 0x4f, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12,
	0x1a, 0x0a, 0x16, 0x55, 0x4e, 0x45, 0x58, 0x50, 0x45, 0x43, 0x54, 0x45, 0x44, 0x5f, 0x45, 0x4e,
	0x56, 0x49, 0x52, 0x4f, 0x4e, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x54,
	0x4f, 0x4f, 0x5f, 0x4d, 0x55, 0x43, 0x48, 0x5f, 0x54, 0x52, 0x41, 0x46, 0x46, 0x49, 0x43, 0x10,
	0x03, 0x12, 0x1d, 0x0a, 0x19, 0x55, 0x4e, 0x45, 0x58, 0x50, 0x45, 0x43, 0x54, 0x45, 0x44, 0x5f,
	0x55, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x50, 0x41, 0x54, 0x54, 0x45, 0x52, 0x4e, 0x53, 0x10, 0x04,
	0x12, 0x18, 0x0a, 0x14, 0x4c, 0x4f, 0x57, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x44, 0x45, 0x4e,
	0x43, 0x45, 0x5f, 0x53, 0x43, 0x4f, 0x52, 0x45, 0x10, 0x05, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x55,
	0x53, 0x50, 0x45, 0x43, 0x54, 0x45, 0x44, 0x5f, 0x43, 0x41, 0x52, 0x44, 0x49, 0x4e, 0x47, 0x10,
	0x06, 0x12, 0x18, 0x0a, 0x14, 0x53, 0x55, 0x53, 0x50, 0x45, 0x43, 0x54, 0x45, 0x44, 0x5f, 0x43,
	0x48, 0x41, 0x52, 0x47, 0x45, 0x42, 0x41, 0x43, 0x4b, 0x10, 0x07, 0x22, 0xed, 0x03, 0x0a, 0x0f,
	0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12,
	0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05,
	0x76, 0x61, 0x6c, 0x69, 0x64, 0x12, 0x69, 0x0a, 0x0e, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64,
	0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x42, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63,
	0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65,
	0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74,
	0x69, 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x52, 0x65, 0x61, 0x73, 0x6f,
	0x6e, 0x52, 0x0d, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e,
	0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
	0x70, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a,
	0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x61, 0x6e, 0x64,
	0x72, 0x6f, 0x69, 0x64, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d,
	0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64,
	0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x69,
	0x6f, 0x73, 0x5f, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x0b, 0x69, 0x6f, 0x73, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x64, 0x12,
	0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x91, 0x01, 0x0a, 0x0d, 0x49, 0x6e, 0x76, 0x61,
	0x6c, 0x69, 0x64, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x1a, 0x49, 0x4e, 0x56,
	0x41, 0x4c, 0x49, 0x44, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50,
	0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x55, 0x4e, 0x4b,
	0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x52, 0x45, 0x41,
	0x53, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x4d, 0x41, 0x4c, 0x46, 0x4f, 0x52, 0x4d,
	0x45, 0x44, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x45, 0x58, 0x50, 0x49, 0x52, 0x45, 0x44, 0x10,
	0x03, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x55, 0x50, 0x45, 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x4d,
	0x49, 0x53, 0x53, 0x49, 0x4e, 0x47, 0x10, 0x05, 0x12, 0x11, 0x0a, 0x0d, 0x42, 0x52, 0x4f, 0x57,
	0x53, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x06, 0x22, 0xba, 0x03, 0x0a, 0x19,
	0x46, 0x72, 0x61, 0x75, 0x64, 0x50, 0x72, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x41,
	0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x74, 0x72, 0x61,
	0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x69, 0x73, 0x6b, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x02, 0x52, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e,
	0x52, 0x69, 0x73, 0x6b, 0x12, 0x92, 0x01, 0x0a, 0x19, 0x73, 0x74, 0x6f, 0x6c, 0x65, 0x6e, 0x5f,
	0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x64, 0x69,
	0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x56, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68,
	0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46,
	0x72, 0x61, 0x75, 0x64, 0x50, 0x72, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x73,
	0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x6f, 0x6c, 0x65, 0x6e, 0x49,
	0x6e, 0x73, 0x74, 0x72, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x64, 0x69, 0x63, 0x74,
	0x52, 0x17, 0x73, 0x74, 0x6f, 0x6c, 0x65, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x6d, 0x65,
	0x6e, 0x74, 0x56, 0x65, 0x72, 0x64, 0x69, 0x63, 0x74, 0x12, 0x83, 0x01, 0x0a, 0x14, 0x63, 0x61,
	0x72, 0x64, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x65, 0x72, 0x64, 0x69,
	0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x51, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68,
	0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46,
	0x72, 0x61, 0x75, 0x64, 0x50, 0x72, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x73,
	0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x61, 0x72, 0x64, 0x54, 0x65, 0x73,
	0x74, 0x69, 0x6e, 0x67, 0x56, 0x65, 0x72, 0x64, 0x69, 0x63, 0x74, 0x52, 0x12, 0x63, 0x61, 0x72,
	0x64, 0x54, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x56, 0x65, 0x72, 0x64, 0x69, 0x63, 0x74, 0x1a,
	0x2d, 0x0a, 0x17, 0x53, 0x74, 0x6f, 0x6c, 0x65, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x6d,
	0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x64, 0x69, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x69,
	0x73, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x04, 0x72, 0x69, 0x73, 0x6b, 0x1a, 0x28,
	0x0a, 0x12, 0x43, 0x61, 0x72, 0x64, 0x54, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x56, 0x65, 0x72,
	0x64, 0x69, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x69, 0x73, 0x6b, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x02, 0x52, 0x04, 0x72, 0x69, 0x73, 0x6b, 0x22, 0xbe, 0x02, 0x0a, 0x19, 0x41, 0x63, 0x63,
	0x6f, 0x75, 0x6e, 0x74, 0x44, 0x65, 0x66, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x41, 0x73, 0x73, 0x65,
	0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x6b, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73,
	0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x53, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65,
	0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x63,
	0x6f, 0x75, 0x6e, 0x74, 0x44, 0x65, 0x66, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x41, 0x73, 0x73, 0x65,
	0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x44, 0x65,
	0x66, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x06, 0x6c, 0x61, 0x62,
	0x65, 0x6c, 0x73, 0x22, 0xb3, 0x01, 0x0a, 0x14, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x44,
	0x65, 0x66, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x26, 0x0a, 0x22,
	0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x44, 0x45, 0x46, 0x45, 0x4e, 0x44, 0x45, 0x52,
	0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49,
	0x45, 0x44, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f,
	0x4d, 0x41, 0x54, 0x43, 0x48, 0x10, 0x01, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x55, 0x53, 0x50, 0x49,
	0x43, 0x49, 0x4f, 0x55, 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x49, 0x4e, 0x5f, 0x41, 0x43, 0x54, 0x49,
	0x56, 0x49, 0x54, 0x59, 0x10, 0x02, 0x12, 0x1f, 0x0a, 0x1b, 0x53, 0x55, 0x53, 0x50, 0x49, 0x43,
	0x49, 0x4f, 0x55, 0x53, 0x5f, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x43, 0x52, 0x45,
	0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x03, 0x12, 0x20, 0x0a, 0x1c, 0x52, 0x45, 0x4c, 0x41, 0x54,
	0x45, 0x44, 0x5f, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x53, 0x5f, 0x4e, 0x55, 0x4d, 0x42,
	0x45, 0x52, 0x5f, 0x48, 0x49, 0x47, 0x48, 0x10, 0x04, 0x22, 0xa0, 0x01, 0x0a, 0x10, 0x43, 0x72,
	0x65, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4b,
	0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x33,
	0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2d, 0x0a, 0x2b, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x72, 0x65, 0x73,
	0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x6a,
	0x65, 0x63, 0x74, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x3f, 0x0a, 0x03, 0x6b,
	0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68,
	0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b,
	0x65, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0xa4, 0x01, 0x0a,
	0x0f, 0x4c, 0x69, 0x73, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x12, 0x4b, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x42, 0x33, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2d, 0x0a, 0x2b, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x72,
	0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72,
	0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x0a,
	0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
	0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12,
	0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f,
	0x6b, 0x65, 0x6e, 0x22, 0x78, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x52,
	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18,
	0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
	0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e,
	0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x79, 0x52,
	0x04, 0x6b, 0x65, 0x79, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61,
	0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d,
	0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x62, 0x0a,
	0x1e, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x53,
	0x65, 0x63, 0x72, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
	0x40, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2e, 0xe0, 0x41,
	0x02, 0xfa, 0x41, 0x28, 0x0a, 0x26, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65,
	0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4b, 0x65, 0x79, 0x52, 0x03, 0x6b, 0x65,
	0x79, 0x22, 0x53, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x12, 0x42, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x42, 0x2e, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x28, 0x0a, 0x26, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74,
	0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4b, 0x65, 0x79,
	0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x95, 0x01, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74,
	0x65, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x03, 0x6b,
	0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68,
	0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b,
	0x65, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x40, 0x0a, 0x0b,
	0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
	0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x42, 0x03, 0xe0,
	0x41, 0x01, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x56,
	0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x12, 0x42, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x42, 0x2e, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x28, 0x0a, 0x26, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74,
	0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4b, 0x65, 0x79,
	0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x8a, 0x01, 0x0a, 0x11, 0x4d, 0x69, 0x67, 0x72, 0x61,
	0x74, 0x65, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x04,
	0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2e, 0xe0, 0x41, 0x02, 0xfa,
	0x41, 0x28, 0x0a, 0x26, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74,
	0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70,
	0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4b, 0x65, 0x79, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
	0x12, 0x31, 0x0a, 0x12, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67,
	0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41,
	0x01, 0x52, 0x10, 0x73, 0x6b, 0x69, 0x70, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x43, 0x68,
	0x65, 0x63, 0x6b, 0x22, 0x5b, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63,
	0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x32, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2c, 0x0a, 0x2a,
	0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72,
	0x69, 0x73, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63,
	0x6f, 0x6d, 0x2f, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
	0x22, 0xf1, 0x02, 0x0a, 0x07, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x17, 0x0a, 0x04,
	0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52,
	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74,
	0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
	0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65,
	0x12, 0x56, 0x0a, 0x0d, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63,
	0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61,
	0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63,
	0x6f, 0x72, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x0c, 0x73, 0x63, 0x6f, 0x72,
	0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x62, 0x0a, 0x11, 0x63, 0x68, 0x61, 0x6c,
	0x6c, 0x65, 0x6e, 0x67, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x03, 0x20,
	0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
	0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65,
	0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65,
	0x6e, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x10, 0x63, 0x68, 0x61, 0x6c,
	0x6c, 0x65, 0x6e, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x3a, 0x56, 0xea, 0x41,
	0x53, 0x0a, 0x2a, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65,
	0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69,
	0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x25, 0x70,
	0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74,
	0x7d, 0x2f, 0x6b, 0x65, 0x79, 0x73, 0x2f, 0x7b, 0x6b, 0x65, 0x79, 0x7d, 0x2f, 0x6d, 0x65, 0x74,
	0x72, 0x69, 0x63, 0x73, 0x22, 0x4d, 0x0a, 0x1f, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65,
	0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x52,
	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x6c, 0x65, 0x67, 0x61, 0x63,
	0x79, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x0f, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74,
	0x4b, 0x65, 0x79, 0x22, 0xb5, 0x06, 0x0a, 0x03, 0x4b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e,
	0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
	0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61,
	0x6d, 0x65, 0x12, 0x58, 0x0a, 0x0c, 0x77, 0x65, 0x62, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e,
	0x67, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68,
	0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x57,
	0x65, 0x62, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x48, 0x00, 0x52,
	0x0b, 0x77, 0x65, 0x62, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x64, 0x0a, 0x10,
	0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65,
	0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x64,
	0x72, 0x6f, 0x69, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x48,
	0x00, 0x52, 0x0f, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e,
	0x67, 0x73, 0x12, 0x58, 0x0a, 0x0c, 0x69, 0x6f, 0x73, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e,
	0x67, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68,
	0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x49,
	0x4f, 0x53, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x48, 0x00, 0x52,
	0x0b, 0x69, 0x6f, 0x73, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x4c, 0x0a, 0x06,
	0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61,
	0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e,
	0x76, 0x31, 0x2e, 0x4b, 0x65, 0x79, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74,
	0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72,
	0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
	0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03,
	0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x5c, 0x0a, 0x0f,
	0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18,
	0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
	0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e,
	0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74,
	0x69, 0x6e, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0e, 0x74, 0x65, 0x73, 0x74,
	0x69, 0x6e, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x53, 0x0a, 0x0c, 0x77, 0x61,
	0x66, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
	0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72,
	0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x61, 0x66, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e,
	0x67, 0x73, 0x52, 0x0b, 0x77, 0x61, 0x66, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x1a,
	0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
	0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,
	0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x4a, 0xea, 0x41, 0x47, 0x0a,
	0x26, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70,
	0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e,
	0x63, 0x6f, 0x6d, 0x2f, 0x4b, 0x65, 0x79, 0x12, 0x1d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74,
	0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6b, 0x65, 0x79, 0x73,
	0x2f, 0x7b, 0x6b, 0x65, 0x79, 0x7d, 0x42, 0x13, 0x0a, 0x11, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
	0x72, 0x6d, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x88, 0x02, 0x0a, 0x0e,
	0x54, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x23,
	0x0a, 0x0d, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x63,
	0x6f, 0x72, 0x65, 0x12, 0x71, 0x0a, 0x11, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x63,
	0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x44,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65,
	0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73,
	0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x4f, 0x70, 0x74, 0x69,
	0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x61, 0x6c, 0x6c,
	0x65, 0x6e, 0x67, 0x65, 0x52, 0x10, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x61,
	0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x22, 0x5e, 0x0a, 0x10, 0x54, 0x65, 0x73, 0x74, 0x69, 0x6e,
	0x67, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x12, 0x21, 0x0a, 0x1d, 0x54, 0x45,
	0x53, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x48, 0x41, 0x4c, 0x4c, 0x45, 0x4e, 0x47, 0x45, 0x5f,
	0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a,
	0x09, 0x4e, 0x4f, 0x43, 0x41, 0x50, 0x54, 0x43, 0x48, 0x41, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14,
	0x55, 0x4e, 0x53, 0x4f, 0x4c, 0x56, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4c, 0x4c,
	0x45, 0x4e, 0x47, 0x45, 0x10, 0x02, 0x22, 0xf1, 0x04, 0x0a, 0x0e, 0x57, 0x65, 0x62, 0x4b, 0x65,
	0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x61, 0x6c, 0x6c,
	0x6f, 0x77, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x41, 0x6c, 0x6c, 0x44, 0x6f,
	0x6d, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64,
	0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e,
	0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x2a,
	0x0a, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x61, 0x6d, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x66,
	0x66, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x61, 0x6c, 0x6c, 0x6f, 0x77,
	0x41, 0x6d, 0x70, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x12, 0x73, 0x0a, 0x10, 0x69, 0x6e,
	0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04,
	0x20, 0x01, 0x28, 0x0e, 0x32, 0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
	0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74,
	0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x65, 0x62, 0x4b, 0x65,
	0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0f,
	0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12,
	0x93, 0x01, 0x0a, 0x1d, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x5f, 0x73, 0x65,
	0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63,
	0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x4f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61,
	0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x65,
	0x62, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x43, 0x68, 0x61,
	0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x50, 0x72,
	0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x1b, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65,
	0x6e, 0x67, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x50, 0x72, 0x65, 0x66, 0x65,
	0x72, 0x65, 0x6e, 0x63, 0x65, 0x22, 0x5b, 0x0a, 0x0f, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x1c, 0x49, 0x4e, 0x54, 0x45,
	0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53,
	0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x43,
	0x4f, 0x52, 0x45, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x42, 0x4f,
	0x58, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x49, 0x4e, 0x56, 0x49, 0x53, 0x49, 0x42, 0x4c, 0x45,
	0x10, 0x03, 0x22, 0x76, 0x0a, 0x1b, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x53,
	0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63,
	0x65, 0x12, 0x2d, 0x0a, 0x29, 0x43, 0x48, 0x41, 0x4c, 0x4c, 0x45, 0x4e, 0x47, 0x45, 0x5f, 0x53,
	0x45, 0x43, 0x55, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e,
	0x43, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00,
	0x12, 0x0d, 0x0a, 0x09, 0x55, 0x53, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x10, 0x01, 0x12,
	0x0b, 0x0a, 0x07, 0x42, 0x41, 0x4c, 0x41, 0x4e, 0x43, 0x45, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08,
	0x53, 0x45, 0x43, 0x55, 0x52, 0x49, 0x54, 0x59, 0x10, 0x03, 0x22, 0x7f, 0x0a, 0x12, 0x41, 0x6e,
	0x64, 0x72, 0x6f, 0x69, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73,
	0x12, 0x35, 0x0a, 0x17, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x70, 0x61,
	0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x08, 0x52, 0x14, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x41, 0x6c, 0x6c, 0x50, 0x61, 0x63, 0x6b, 0x61,
	0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x61, 0x6c, 0x6c, 0x6f, 0x77,
	0x65, 0x64, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73,
	0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x13, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x50,
	0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x6f, 0x0a, 0x0e, 0x49,
	0x4f, 0x53, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x2f, 0x0a,
	0x14, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x62, 0x75, 0x6e, 0x64, 0x6c,
	0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x61, 0x6c, 0x6c,
	0x6f, 0x77, 0x41, 0x6c, 0x6c, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x64, 0x73, 0x12, 0x2c,
	0x0a, 0x12, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65,
	0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x61, 0x6c, 0x6c, 0x6f,
	0x77, 0x65, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x64, 0x73, 0x22, 0xc3, 0x01, 0x0a,
	0x11, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69,
	0x6f, 0x6e, 0x12, 0x6d, 0x0a, 0x0d, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x62, 0x75, 0x63, 0x6b,
	0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x48, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63,
	0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e,
	0x53, 0x63, 0x6f, 0x72, 0x65, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f,
	0x6e, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x45, 0x6e,
	0x74, 0x72, 0x79, 0x52, 0x0c, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74,
	0x73, 0x1a, 0x3f, 0x0a, 0x11, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74,
	0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
	0x38, 0x01, 0x22, 0xd6, 0x02, 0x0a, 0x0c, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x4d, 0x65, 0x74, 0x72,
	0x69, 0x63, 0x73, 0x12, 0x5f, 0x0a, 0x0f, 0x6f, 0x76, 0x65, 0x72, 0x61, 0x6c, 0x6c, 0x5f, 0x6d,
	0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61,
	0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e,
	0x76, 0x31, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75,
	0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x6f, 0x76, 0x65, 0x72, 0x61, 0x6c, 0x6c, 0x4d, 0x65, 0x74,
	0x72, 0x69, 0x63, 0x73, 0x12, 0x6b, 0x0a, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d,
	0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61,
	0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e,
	0x76, 0x31, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e,
	0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x45, 0x6e, 0x74,
	0x72, 0x79, 0x52, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63,
	0x73, 0x1a, 0x78, 0x0a, 0x12, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69,
	0x63, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4c, 0x0a, 0x05, 0x76, 0x61, 0x6c,
	0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68,
	0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53,
	0x63, 0x6f, 0x72, 0x65, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e,
	0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xa8, 0x01, 0x0a, 0x10,
	0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73,
	0x12, 0x25, 0x0a, 0x0e, 0x70, 0x61, 0x67, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x75,
	0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x70, 0x61, 0x67, 0x65, 0x6c, 0x6f,
	0x61, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6e, 0x6f, 0x63, 0x61, 0x70,
	0x74, 0x63, 0x68, 0x61, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03,
	0x52, 0x0e, 0x6e, 0x6f, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x43, 0x6f, 0x75, 0x6e, 0x74,
	0x12, 0x21, 0x0a, 0x0c, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x43, 0x6f,
	0x75, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x5f, 0x63, 0x6f,
	0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x70, 0x61, 0x73, 0x73, 0x65,
	0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xd3, 0x01, 0x0a, 0x29, 0x4c, 0x69, 0x73, 0x74, 0x52,
	0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f,
	0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x12, 0x60, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x42, 0x48, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x42, 0x12, 0x40, 0x72, 0x65,
	0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73,
	0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d,
	0x2f, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47,
	0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x52, 0x06,
	0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73,
	0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08,
	0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65,
	0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41,
	0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xe4, 0x01, 0x0a,
	0x2a, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f,
	0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68,
	0x69, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8d, 0x01, 0x0a, 0x21,
	0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f,
	0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70,
	0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61,
	0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65,
	0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75,
	0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x52, 0x1e, 0x72, 0x65, 0x6c,
	0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70,
	0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e,
	0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f,
	0x6b, 0x65, 0x6e, 0x22, 0xbf, 0x01, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x61,
	0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73,
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x56, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e,
	0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x3e, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x38, 0x12,
	0x36, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70,
	0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e,
	0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75,
	0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12,
	0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a,
	0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65,
	0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xba, 0x01, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65,
	0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75,
	0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6e, 0x0a, 0x16, 0x72, 0x65,
	0x6c, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x67, 0x72,
	0x6f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74,
	0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31,
	0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47,
	0x72, 0x6f, 0x75, 0x70, 0x52, 0x14, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63,
	0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65,
	0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b,
	0x65, 0x6e, 0x22, 0x88, 0x02, 0x0a, 0x2b, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x6c,
	0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70,
	0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x12, 0x62, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x42, 0x48, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x42, 0x12, 0x40, 0x72, 0x65, 0x63,
	0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
	0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72,
	0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x52, 0x07, 0x70,
	0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x2f, 0x0a, 0x11, 0x68, 0x61, 0x73, 0x68, 0x65, 0x64,
	0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x0c, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0f, 0x68, 0x61, 0x73, 0x68, 0x65, 0x64, 0x41, 0x63,
	0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f,
	0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52,
	0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67,
	0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0,
	0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xe6, 0x01,
	0x0a, 0x2c, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41,
	0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65,
	0x72, 0x73, 0x68, 0x69, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8d,
	0x01, 0x0a, 0x21, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75,
	0x6e, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73,
	0x68, 0x69, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74,
	0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31,
	0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47,
	0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x52, 0x1e,
	0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72,
	0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, 0x12, 0x26,
	0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65,
	0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67,
	0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xca, 0x02, 0x0a, 0x1d, 0x52, 0x65, 0x6c, 0x61, 0x74,
	0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65,
	0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x12, 0x5c, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x48, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x42, 0x0a, 0x40,
	0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72,
	0x69, 0x73, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63,
	0x6f, 0x6d, 0x2f, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e,
	0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70,
	0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x68, 0x61, 0x73, 0x68, 0x65, 0x64,
	0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x0c, 0x52, 0x0f, 0x68, 0x61, 0x73, 0x68, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
	0x49, 0x64, 0x3a, 0x9e, 0x01, 0xea, 0x41, 0x9a, 0x01, 0x0a, 0x40, 0x72, 0x65, 0x63, 0x61, 0x70,
	0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x65,
	0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75,
	0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x12, 0x56, 0x70, 0x72, 0x6f,
	0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f,
	0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x67, 0x72,
	0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x61, 0x63, 0x63,
	0x6f, 0x75, 0x6e, 0x74, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65,
	0x72, 0x73, 0x68, 0x69, 0x70, 0x73, 0x2f, 0x7b, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68,
	0x69, 0x70, 0x7d, 0x22, 0xe5, 0x01, 0x0a, 0x13, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41,
	0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x52, 0x0a, 0x04, 0x6e,
	0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x3e, 0xe0, 0x41, 0x02, 0xfa, 0x41,
	0x38, 0x0a, 0x36, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65,
	0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69,
	0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63,
	0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x3a,
	0x7a, 0xea, 0x41, 0x77, 0x0a, 0x36, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65,
	0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64,
	0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x3d, 0x70, 0x72,
	0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d,
	0x2f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x67,
	0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x61, 0x63,
	0x63, 0x6f, 0x75, 0x6e, 0x74, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x22, 0xea, 0x02, 0x0a, 0x0b,
	0x57, 0x61, 0x66, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x61, 0x0a, 0x0b, 0x77,
	0x61, 0x66, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e,
	0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
	0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72,
	0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x61, 0x66, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e,
	0x67, 0x73, 0x2e, 0x57, 0x61, 0x66, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, 0x03, 0xe0,
	0x41, 0x02, 0x52, 0x0a, 0x77, 0x61, 0x66, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x61,
	0x0a, 0x0b, 0x77, 0x61, 0x66, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0e, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
	0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65,
	0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x61, 0x66, 0x53, 0x65, 0x74,
	0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x57, 0x61, 0x66, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65,
	0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x77, 0x61, 0x66, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72,
	0x65, 0x22, 0x62, 0x0a, 0x0a, 0x57, 0x61, 0x66, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12,
	0x1b, 0x0a, 0x17, 0x57, 0x41, 0x46, 0x5f, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x55,
	0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e,
	0x43, 0x48, 0x41, 0x4c, 0x4c, 0x45, 0x4e, 0x47, 0x45, 0x5f, 0x50, 0x41, 0x47, 0x45, 0x10, 0x01,
	0x12, 0x11, 0x0a, 0x0d, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x4f, 0x4b, 0x45,
	0x4e, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x4f,
	0x4b, 0x45, 0x4e, 0x10, 0x03, 0x22, 0x31, 0x0a, 0x0a, 0x57, 0x61, 0x66, 0x53, 0x65, 0x72, 0x76,
	0x69, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x57, 0x41, 0x46, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49,
	0x43, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00,
	0x12, 0x06, 0x0a, 0x02, 0x43, 0x41, 0x10, 0x01, 0x32, 0xb1, 0x15, 0x0a, 0x1a, 0x52, 0x65, 0x63,
	0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65,
	0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xce, 0x01, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61,
	0x74, 0x65, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3c, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61,
	0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e,
	0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d,
	0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74,
	0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31,
	0x2e, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x4b, 0xda, 0x41, 0x11,
	0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e,
	0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x3a, 0x0a, 0x61, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d,
	0x65, 0x6e, 0x74, 0x22, 0x23, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74,
	0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x61, 0x73, 0x73,
	0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0xe0, 0x01, 0x0a, 0x12, 0x41, 0x6e, 0x6e,
	0x6f, 0x74, 0x61, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x12,
	0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72,
	0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69,
	0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x41, 0x73,
	0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
	0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72,
	0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69,
	0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x41, 0x73,
	0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
	0x22, 0x49, 0xda, 0x41, 0x0f, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x3a, 0x01, 0x2a, 0x22, 0x2c, 0x2f,
	0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74,
	0x73, 0x2f, 0x2a, 0x2f, 0x61, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f,
	0x2a, 0x7d, 0x3a, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x12, 0xa4, 0x01, 0x0a, 0x09,
	0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63,
	0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e,
	0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x1a, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
	0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72,
	0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x79, 0x22, 0x36, 0xda, 0x41, 0x0a, 0x70,
	0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x6b, 0x65, 0x79, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x3a,
	0x03, 0x6b, 0x65, 0x79, 0x22, 0x1c, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e,
	0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6b, 0x65,
	0x79, 0x73, 0x12, 0xa6, 0x01, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x12,
	0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72,
	0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69,
	0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
	0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e,
	0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74,
	0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2d, 0xda, 0x41,
	0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x12, 0x1c, 0x2f,
	0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65,
	0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6b, 0x65, 0x79, 0x73, 0x12, 0xe7, 0x01, 0x0a, 0x17,
	0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x53, 0x65,
	0x63, 0x72, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61,
	0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65,
	0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x53, 0x65, 0x63, 0x72,
	0x65, 0x74, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x44, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61,
	0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e,
	0x76, 0x31, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x4c, 0x65, 0x67, 0x61, 0x63,
	0x79, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x22, 0x41, 0xda, 0x41, 0x03, 0x6b, 0x65, 0x79, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x35,
	0x12, 0x33, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6b, 0x65, 0x79, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65,
	0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6b, 0x65, 0x79, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x72, 0x65,
	0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x53, 0x65, 0x63, 0x72,
	0x65, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x93, 0x01, 0x0a, 0x06, 0x47, 0x65, 0x74, 0x4b, 0x65, 0x79,
	0x12, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
	0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72,
	0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
	0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74,
	0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x79, 0x22, 0x2b,
	0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x12, 0x1c, 0x2f,
	0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74,
	0x73, 0x2f, 0x2a, 0x2f, 0x6b, 0x65, 0x79, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xad, 0x01, 0x0a, 0x09,
	0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63,
	0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e,
	0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x1a, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
	0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72,
	0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x79, 0x22, 0x3f, 0xda, 0x41, 0x0f, 0x6b,
	0x65, 0x79, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3,
	0xe4, 0x93, 0x02, 0x27, 0x3a, 0x03, 0x6b, 0x65, 0x79, 0x32, 0x20, 0x2f, 0x76, 0x31, 0x2f, 0x7b,
	0x6b, 0x65, 0x79, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74,
	0x73, 0x2f, 0x2a, 0x2f, 0x6b, 0x65, 0x79, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x87, 0x01, 0x0a, 0x09,
	0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63,
	0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e,
	0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
	0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x2b, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d,
	0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x2a, 0x1c, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61,
	0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6b, 0x65,
	0x79, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x9f, 0x01, 0x0a, 0x0a, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74,
	0x65, 0x4b, 0x65, 0x79, 0x12, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
	0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74,
	0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x69, 0x67, 0x72, 0x61,
	0x74, 0x65, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61,
	0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e,
	0x76, 0x31, 0x2e, 0x4b, 0x65, 0x79, 0x22, 0x2f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x3a, 0x01,
	0x2a, 0x22, 0x24, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f,
	0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6b, 0x65, 0x79, 0x73, 0x2f, 0x2a, 0x7d, 0x3a,
	0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x12, 0xa7, 0x01, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x4d,
	0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65,
	0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74,
	0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65,
	0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73,
	0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x22, 0x33, 0xda, 0x41,
	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x12, 0x24, 0x2f, 0x76, 0x31,
	0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f,
	0x2a, 0x2f, 0x6b, 0x65, 0x79, 0x73, 0x2f, 0x2a, 0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73,
	0x7d, 0x12, 0xe6, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65,
	0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x44,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65,
	0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73,
	0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64,
	0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x1a, 0x45, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
	0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74,
	0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52,
	0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f,
	0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3d, 0xda, 0x41, 0x06,
	0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x12, 0x2c, 0x2f, 0x76,
	0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63,
	0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x61, 0x63, 0x63,
	0x6f, 0x75, 0x6e, 0x74, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x92, 0x02, 0x0a, 0x22, 0x4c,
	0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e,
	0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70,
	0x73, 0x12, 0x4e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
	0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70,
	0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x61,
	0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d,
	0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x1a, 0x4f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
	0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70,
	0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x61,
	0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d,
	0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x22, 0x4b, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4,
	0x93, 0x02, 0x3c, 0x12, 0x3a, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74,
	0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x72, 0x65, 0x6c, 0x61,
	0x74, 0x65, 0x64, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73,
	0x2f, 0x2a, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, 0x12,
	0xb2, 0x02, 0x0a, 0x24, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65,
	0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d,
	0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, 0x12, 0x50, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68,
	0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53,
	0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f,
	0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68,
	0x69, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x51, 0x2e, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74,
	0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31,
	0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63,
	0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72,
	0x73, 0x68, 0x69, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x65, 0xda,
	0x41, 0x19, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2c, 0x68, 0x61, 0x73, 0x68, 0x65, 0x64,
	0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02,
	0x43, 0x3a, 0x01, 0x2a, 0x22, 0x3e, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65,
	0x63, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x72,
	0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x67, 0x72, 0x6f,
	0x75, 0x70, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, 0x3a, 0x73, 0x65,
	0x61, 0x72, 0x63, 0x68, 0x1a, 0x56, 0xca, 0x41, 0x22, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63,
	0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2, 0x41, 0x2e, 0x68, 0x74,
	0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x63, 0x6c,
	0x6f, 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0x99, 0x02, 0x0a,
	0x21, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x65, 0x63, 0x61,
	0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e,
	0x76, 0x31, 0x42, 0x18, 0x52, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x45, 0x6e, 0x74,
	0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x5c,
	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d,
	0x2f, 0x67, 0x6f, 0x2f, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74,
	0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, 0x76, 0x32, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31,
	0x2f, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70,
	0x72, 0x69, 0x73, 0x65, 0x70, 0x62, 0x3b, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61,
	0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x70, 0x62, 0xa2, 0x02, 0x04, 0x47,
	0x43, 0x52, 0x45, 0xaa, 0x02, 0x23, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f,
	0x75, 0x64, 0x2e, 0x52, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x45, 0x6e, 0x74, 0x65,
	0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x23, 0x47, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x52, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63,
	0x68, 0x61, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x5c, 0x56, 0x31, 0xea,
	0x02, 0x26, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a,
	0x3a, 0x52, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70,
	0x72, 0x69, 0x73, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescOnce sync.Once
	file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescData = file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDesc
)

func file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP() []byte {
	file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescOnce.Do(func() {
		file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescData)
	})
	return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescData
}

var file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_enumTypes = make([]protoimpl.EnumInfo, 12)
var file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes = make([]protoimpl.MessageInfo, 51)
var file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_goTypes = []interface{}{
	(TransactionEvent_TransactionEventType)(0),                // 0: google.cloud.recaptchaenterprise.v1.TransactionEvent.TransactionEventType
	(AnnotateAssessmentRequest_Annotation)(0),                 // 1: google.cloud.recaptchaenterprise.v1.AnnotateAssessmentRequest.Annotation
	(AnnotateAssessmentRequest_Reason)(0),                     // 2: google.cloud.recaptchaenterprise.v1.AnnotateAssessmentRequest.Reason
	(AccountVerificationInfo_Result)(0),                       // 3: google.cloud.recaptchaenterprise.v1.AccountVerificationInfo.Result
	(RiskAnalysis_ClassificationReason)(0),                    // 4: google.cloud.recaptchaenterprise.v1.RiskAnalysis.ClassificationReason
	(TokenProperties_InvalidReason)(0),                        // 5: google.cloud.recaptchaenterprise.v1.TokenProperties.InvalidReason
	(AccountDefenderAssessment_AccountDefenderLabel)(0),       // 6: google.cloud.recaptchaenterprise.v1.AccountDefenderAssessment.AccountDefenderLabel
	(TestingOptions_TestingChallenge)(0),                      // 7: google.cloud.recaptchaenterprise.v1.TestingOptions.TestingChallenge
	(WebKeySettings_IntegrationType)(0),                       // 8: google.cloud.recaptchaenterprise.v1.WebKeySettings.IntegrationType
	(WebKeySettings_ChallengeSecurityPreference)(0),           // 9: google.cloud.recaptchaenterprise.v1.WebKeySettings.ChallengeSecurityPreference
	(WafSettings_WafFeature)(0),                               // 10: google.cloud.recaptchaenterprise.v1.WafSettings.WafFeature
	(WafSettings_WafService)(0),                               // 11: google.cloud.recaptchaenterprise.v1.WafSettings.WafService
	(*CreateAssessmentRequest)(nil),                           // 12: google.cloud.recaptchaenterprise.v1.CreateAssessmentRequest
	(*TransactionEvent)(nil),                                  // 13: google.cloud.recaptchaenterprise.v1.TransactionEvent
	(*AnnotateAssessmentRequest)(nil),                         // 14: google.cloud.recaptchaenterprise.v1.AnnotateAssessmentRequest
	(*AnnotateAssessmentResponse)(nil),                        // 15: google.cloud.recaptchaenterprise.v1.AnnotateAssessmentResponse
	(*EndpointVerificationInfo)(nil),                          // 16: google.cloud.recaptchaenterprise.v1.EndpointVerificationInfo
	(*AccountVerificationInfo)(nil),                           // 17: google.cloud.recaptchaenterprise.v1.AccountVerificationInfo
	(*PrivatePasswordLeakVerification)(nil),                   // 18: google.cloud.recaptchaenterprise.v1.PrivatePasswordLeakVerification
	(*Assessment)(nil),                                        // 19: google.cloud.recaptchaenterprise.v1.Assessment
	(*Event)(nil),                                             // 20: google.cloud.recaptchaenterprise.v1.Event
	(*TransactionData)(nil),                                   // 21: google.cloud.recaptchaenterprise.v1.TransactionData
	(*RiskAnalysis)(nil),                                      // 22: google.cloud.recaptchaenterprise.v1.RiskAnalysis
	(*TokenProperties)(nil),                                   // 23: google.cloud.recaptchaenterprise.v1.TokenProperties
	(*FraudPreventionAssessment)(nil),                         // 24: google.cloud.recaptchaenterprise.v1.FraudPreventionAssessment
	(*AccountDefenderAssessment)(nil),                         // 25: google.cloud.recaptchaenterprise.v1.AccountDefenderAssessment
	(*CreateKeyRequest)(nil),                                  // 26: google.cloud.recaptchaenterprise.v1.CreateKeyRequest
	(*ListKeysRequest)(nil),                                   // 27: google.cloud.recaptchaenterprise.v1.ListKeysRequest
	(*ListKeysResponse)(nil),                                  // 28: google.cloud.recaptchaenterprise.v1.ListKeysResponse
	(*RetrieveLegacySecretKeyRequest)(nil),                    // 29: google.cloud.recaptchaenterprise.v1.RetrieveLegacySecretKeyRequest
	(*GetKeyRequest)(nil),                                     // 30: google.cloud.recaptchaenterprise.v1.GetKeyRequest
	(*UpdateKeyRequest)(nil),                                  // 31: google.cloud.recaptchaenterprise.v1.UpdateKeyRequest
	(*DeleteKeyRequest)(nil),                                  // 32: google.cloud.recaptchaenterprise.v1.DeleteKeyRequest
	(*MigrateKeyRequest)(nil),                                 // 33: google.cloud.recaptchaenterprise.v1.MigrateKeyRequest
	(*GetMetricsRequest)(nil),                                 // 34: google.cloud.recaptchaenterprise.v1.GetMetricsRequest
	(*Metrics)(nil),                                           // 35: google.cloud.recaptchaenterprise.v1.Metrics
	(*RetrieveLegacySecretKeyResponse)(nil),                   // 36: google.cloud.recaptchaenterprise.v1.RetrieveLegacySecretKeyResponse
	(*Key)(nil),                                               // 37: google.cloud.recaptchaenterprise.v1.Key
	(*TestingOptions)(nil),                                    // 38: google.cloud.recaptchaenterprise.v1.TestingOptions
	(*WebKeySettings)(nil),                                    // 39: google.cloud.recaptchaenterprise.v1.WebKeySettings
	(*AndroidKeySettings)(nil),                                // 40: google.cloud.recaptchaenterprise.v1.AndroidKeySettings
	(*IOSKeySettings)(nil),                                    // 41: google.cloud.recaptchaenterprise.v1.IOSKeySettings
	(*ScoreDistribution)(nil),                                 // 42: google.cloud.recaptchaenterprise.v1.ScoreDistribution
	(*ScoreMetrics)(nil),                                      // 43: google.cloud.recaptchaenterprise.v1.ScoreMetrics
	(*ChallengeMetrics)(nil),                                  // 44: google.cloud.recaptchaenterprise.v1.ChallengeMetrics
	(*ListRelatedAccountGroupMembershipsRequest)(nil),         // 45: google.cloud.recaptchaenterprise.v1.ListRelatedAccountGroupMembershipsRequest
	(*ListRelatedAccountGroupMembershipsResponse)(nil),        // 46: google.cloud.recaptchaenterprise.v1.ListRelatedAccountGroupMembershipsResponse
	(*ListRelatedAccountGroupsRequest)(nil),                   // 47: google.cloud.recaptchaenterprise.v1.ListRelatedAccountGroupsRequest
	(*ListRelatedAccountGroupsResponse)(nil),                  // 48: google.cloud.recaptchaenterprise.v1.ListRelatedAccountGroupsResponse
	(*SearchRelatedAccountGroupMembershipsRequest)(nil),       // 49: google.cloud.recaptchaenterprise.v1.SearchRelatedAccountGroupMembershipsRequest
	(*SearchRelatedAccountGroupMembershipsResponse)(nil),      // 50: google.cloud.recaptchaenterprise.v1.SearchRelatedAccountGroupMembershipsResponse
	(*RelatedAccountGroupMembership)(nil),                     // 51: google.cloud.recaptchaenterprise.v1.RelatedAccountGroupMembership
	(*RelatedAccountGroup)(nil),                               // 52: google.cloud.recaptchaenterprise.v1.RelatedAccountGroup
	(*WafSettings)(nil),                                       // 53: google.cloud.recaptchaenterprise.v1.WafSettings
	(*TransactionData_Address)(nil),                           // 54: google.cloud.recaptchaenterprise.v1.TransactionData.Address
	(*TransactionData_User)(nil),                              // 55: google.cloud.recaptchaenterprise.v1.TransactionData.User
	(*TransactionData_Item)(nil),                              // 56: google.cloud.recaptchaenterprise.v1.TransactionData.Item
	(*TransactionData_GatewayInfo)(nil),                       // 57: google.cloud.recaptchaenterprise.v1.TransactionData.GatewayInfo
	(*FraudPreventionAssessment_StolenInstrumentVerdict)(nil), // 58: google.cloud.recaptchaenterprise.v1.FraudPreventionAssessment.StolenInstrumentVerdict
	(*FraudPreventionAssessment_CardTestingVerdict)(nil),      // 59: google.cloud.recaptchaenterprise.v1.FraudPreventionAssessment.CardTestingVerdict
	nil,                           // 60: google.cloud.recaptchaenterprise.v1.Key.LabelsEntry
	nil,                           // 61: google.cloud.recaptchaenterprise.v1.ScoreDistribution.ScoreBucketsEntry
	nil,                           // 62: google.cloud.recaptchaenterprise.v1.ScoreMetrics.ActionMetricsEntry
	(*timestamppb.Timestamp)(nil), // 63: google.protobuf.Timestamp
	(*fieldmaskpb.FieldMask)(nil), // 64: google.protobuf.FieldMask
	(*emptypb.Empty)(nil),         // 65: google.protobuf.Empty
}
var file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_depIdxs = []int32{
	19, // 0: google.cloud.recaptchaenterprise.v1.CreateAssessmentRequest.assessment:type_name -> google.cloud.recaptchaenterprise.v1.Assessment
	0,  // 1: google.cloud.recaptchaenterprise.v1.TransactionEvent.event_type:type_name -> google.cloud.recaptchaenterprise.v1.TransactionEvent.TransactionEventType
	63, // 2: google.cloud.recaptchaenterprise.v1.TransactionEvent.event_time:type_name -> google.protobuf.Timestamp
	1,  // 3: google.cloud.recaptchaenterprise.v1.AnnotateAssessmentRequest.annotation:type_name -> google.cloud.recaptchaenterprise.v1.AnnotateAssessmentRequest.Annotation
	2,  // 4: google.cloud.recaptchaenterprise.v1.AnnotateAssessmentRequest.reasons:type_name -> google.cloud.recaptchaenterprise.v1.AnnotateAssessmentRequest.Reason
	13, // 5: google.cloud.recaptchaenterprise.v1.AnnotateAssessmentRequest.transaction_event:type_name -> google.cloud.recaptchaenterprise.v1.TransactionEvent
	63, // 6: google.cloud.recaptchaenterprise.v1.EndpointVerificationInfo.last_verification_time:type_name -> google.protobuf.Timestamp
	16, // 7: google.cloud.recaptchaenterprise.v1.AccountVerificationInfo.endpoints:type_name -> google.cloud.recaptchaenterprise.v1.EndpointVerificationInfo
	3,  // 8: google.cloud.recaptchaenterprise.v1.AccountVerificationInfo.latest_verification_result:type_name -> google.cloud.recaptchaenterprise.v1.AccountVerificationInfo.Result
	20, // 9: google.cloud.recaptchaenterprise.v1.Assessment.event:type_name -> google.cloud.recaptchaenterprise.v1.Event
	22, // 10: google.cloud.recaptchaenterprise.v1.Assessment.risk_analysis:type_name -> google.cloud.recaptchaenterprise.v1.RiskAnalysis
	23, // 11: google.cloud.recaptchaenterprise.v1.Assessment.token_properties:type_name -> google.cloud.recaptchaenterprise.v1.TokenProperties
	17, // 12: google.cloud.recaptchaenterprise.v1.Assessment.account_verification:type_name -> google.cloud.recaptchaenterprise.v1.AccountVerificationInfo
	25, // 13: google.cloud.recaptchaenterprise.v1.Assessment.account_defender_assessment:type_name -> google.cloud.recaptchaenterprise.v1.AccountDefenderAssessment
	18, // 14: google.cloud.recaptchaenterprise.v1.Assessment.private_password_leak_verification:type_name -> google.cloud.recaptchaenterprise.v1.PrivatePasswordLeakVerification
	24, // 15: google.cloud.recaptchaenterprise.v1.Assessment.fraud_prevention_assessment:type_name -> google.cloud.recaptchaenterprise.v1.FraudPreventionAssessment
	21, // 16: google.cloud.recaptchaenterprise.v1.Event.transaction_data:type_name -> google.cloud.recaptchaenterprise.v1.TransactionData
	54, // 17: google.cloud.recaptchaenterprise.v1.TransactionData.shipping_address:type_name -> google.cloud.recaptchaenterprise.v1.TransactionData.Address
	54, // 18: google.cloud.recaptchaenterprise.v1.TransactionData.billing_address:type_name -> google.cloud.recaptchaenterprise.v1.TransactionData.Address
	55, // 19: google.cloud.recaptchaenterprise.v1.TransactionData.user:type_name -> google.cloud.recaptchaenterprise.v1.TransactionData.User
	55, // 20: google.cloud.recaptchaenterprise.v1.TransactionData.merchants:type_name -> google.cloud.recaptchaenterprise.v1.TransactionData.User
	56, // 21: google.cloud.recaptchaenterprise.v1.TransactionData.items:type_name -> google.cloud.recaptchaenterprise.v1.TransactionData.Item
	57, // 22: google.cloud.recaptchaenterprise.v1.TransactionData.gateway_info:type_name -> google.cloud.recaptchaenterprise.v1.TransactionData.GatewayInfo
	4,  // 23: google.cloud.recaptchaenterprise.v1.RiskAnalysis.reasons:type_name -> google.cloud.recaptchaenterprise.v1.RiskAnalysis.ClassificationReason
	5,  // 24: google.cloud.recaptchaenterprise.v1.TokenProperties.invalid_reason:type_name -> google.cloud.recaptchaenterprise.v1.TokenProperties.InvalidReason
	63, // 25: google.cloud.recaptchaenterprise.v1.TokenProperties.create_time:type_name -> google.protobuf.Timestamp
	58, // 26: google.cloud.recaptchaenterprise.v1.FraudPreventionAssessment.stolen_instrument_verdict:type_name -> google.cloud.recaptchaenterprise.v1.FraudPreventionAssessment.StolenInstrumentVerdict
	59, // 27: google.cloud.recaptchaenterprise.v1.FraudPreventionAssessment.card_testing_verdict:type_name -> google.cloud.recaptchaenterprise.v1.FraudPreventionAssessment.CardTestingVerdict
	6,  // 28: google.cloud.recaptchaenterprise.v1.AccountDefenderAssessment.labels:type_name -> google.cloud.recaptchaenterprise.v1.AccountDefenderAssessment.AccountDefenderLabel
	37, // 29: google.cloud.recaptchaenterprise.v1.CreateKeyRequest.key:type_name -> google.cloud.recaptchaenterprise.v1.Key
	37, // 30: google.cloud.recaptchaenterprise.v1.ListKeysResponse.keys:type_name -> google.cloud.recaptchaenterprise.v1.Key
	37, // 31: google.cloud.recaptchaenterprise.v1.UpdateKeyRequest.key:type_name -> google.cloud.recaptchaenterprise.v1.Key
	64, // 32: google.cloud.recaptchaenterprise.v1.UpdateKeyRequest.update_mask:type_name -> google.protobuf.FieldMask
	63, // 33: google.cloud.recaptchaenterprise.v1.Metrics.start_time:type_name -> google.protobuf.Timestamp
	43, // 34: google.cloud.recaptchaenterprise.v1.Metrics.score_metrics:type_name -> google.cloud.recaptchaenterprise.v1.ScoreMetrics
	44, // 35: google.cloud.recaptchaenterprise.v1.Metrics.challenge_metrics:type_name -> google.cloud.recaptchaenterprise.v1.ChallengeMetrics
	39, // 36: google.cloud.recaptchaenterprise.v1.Key.web_settings:type_name -> google.cloud.recaptchaenterprise.v1.WebKeySettings
	40, // 37: google.cloud.recaptchaenterprise.v1.Key.android_settings:type_name -> google.cloud.recaptchaenterprise.v1.AndroidKeySettings
	41, // 38: google.cloud.recaptchaenterprise.v1.Key.ios_settings:type_name -> google.cloud.recaptchaenterprise.v1.IOSKeySettings
	60, // 39: google.cloud.recaptchaenterprise.v1.Key.labels:type_name -> google.cloud.recaptchaenterprise.v1.Key.LabelsEntry
	63, // 40: google.cloud.recaptchaenterprise.v1.Key.create_time:type_name -> google.protobuf.Timestamp
	38, // 41: google.cloud.recaptchaenterprise.v1.Key.testing_options:type_name -> google.cloud.recaptchaenterprise.v1.TestingOptions
	53, // 42: google.cloud.recaptchaenterprise.v1.Key.waf_settings:type_name -> google.cloud.recaptchaenterprise.v1.WafSettings
	7,  // 43: google.cloud.recaptchaenterprise.v1.TestingOptions.testing_challenge:type_name -> google.cloud.recaptchaenterprise.v1.TestingOptions.TestingChallenge
	8,  // 44: google.cloud.recaptchaenterprise.v1.WebKeySettings.integration_type:type_name -> google.cloud.recaptchaenterprise.v1.WebKeySettings.IntegrationType
	9,  // 45: google.cloud.recaptchaenterprise.v1.WebKeySettings.challenge_security_preference:type_name -> google.cloud.recaptchaenterprise.v1.WebKeySettings.ChallengeSecurityPreference
	61, // 46: google.cloud.recaptchaenterprise.v1.ScoreDistribution.score_buckets:type_name -> google.cloud.recaptchaenterprise.v1.ScoreDistribution.ScoreBucketsEntry
	42, // 47: google.cloud.recaptchaenterprise.v1.ScoreMetrics.overall_metrics:type_name -> google.cloud.recaptchaenterprise.v1.ScoreDistribution
	62, // 48: google.cloud.recaptchaenterprise.v1.ScoreMetrics.action_metrics:type_name -> google.cloud.recaptchaenterprise.v1.ScoreMetrics.ActionMetricsEntry
	51, // 49: google.cloud.recaptchaenterprise.v1.ListRelatedAccountGroupMembershipsResponse.related_account_group_memberships:type_name -> google.cloud.recaptchaenterprise.v1.RelatedAccountGroupMembership
	52, // 50: google.cloud.recaptchaenterprise.v1.ListRelatedAccountGroupsResponse.related_account_groups:type_name -> google.cloud.recaptchaenterprise.v1.RelatedAccountGroup
	51, // 51: google.cloud.recaptchaenterprise.v1.SearchRelatedAccountGroupMembershipsResponse.related_account_group_memberships:type_name -> google.cloud.recaptchaenterprise.v1.RelatedAccountGroupMembership
	11, // 52: google.cloud.recaptchaenterprise.v1.WafSettings.waf_service:type_name -> google.cloud.recaptchaenterprise.v1.WafSettings.WafService
	10, // 53: google.cloud.recaptchaenterprise.v1.WafSettings.waf_feature:type_name -> google.cloud.recaptchaenterprise.v1.WafSettings.WafFeature
	42, // 54: google.cloud.recaptchaenterprise.v1.ScoreMetrics.ActionMetricsEntry.value:type_name -> google.cloud.recaptchaenterprise.v1.ScoreDistribution
	12, // 55: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.CreateAssessment:input_type -> google.cloud.recaptchaenterprise.v1.CreateAssessmentRequest
	14, // 56: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.AnnotateAssessment:input_type -> google.cloud.recaptchaenterprise.v1.AnnotateAssessmentRequest
	26, // 57: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.CreateKey:input_type -> google.cloud.recaptchaenterprise.v1.CreateKeyRequest
	27, // 58: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.ListKeys:input_type -> google.cloud.recaptchaenterprise.v1.ListKeysRequest
	29, // 59: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.RetrieveLegacySecretKey:input_type -> google.cloud.recaptchaenterprise.v1.RetrieveLegacySecretKeyRequest
	30, // 60: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.GetKey:input_type -> google.cloud.recaptchaenterprise.v1.GetKeyRequest
	31, // 61: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.UpdateKey:input_type -> google.cloud.recaptchaenterprise.v1.UpdateKeyRequest
	32, // 62: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.DeleteKey:input_type -> google.cloud.recaptchaenterprise.v1.DeleteKeyRequest
	33, // 63: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.MigrateKey:input_type -> google.cloud.recaptchaenterprise.v1.MigrateKeyRequest
	34, // 64: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.GetMetrics:input_type -> google.cloud.recaptchaenterprise.v1.GetMetricsRequest
	47, // 65: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.ListRelatedAccountGroups:input_type -> google.cloud.recaptchaenterprise.v1.ListRelatedAccountGroupsRequest
	45, // 66: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.ListRelatedAccountGroupMemberships:input_type -> google.cloud.recaptchaenterprise.v1.ListRelatedAccountGroupMembershipsRequest
	49, // 67: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.SearchRelatedAccountGroupMemberships:input_type -> google.cloud.recaptchaenterprise.v1.SearchRelatedAccountGroupMembershipsRequest
	19, // 68: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.CreateAssessment:output_type -> google.cloud.recaptchaenterprise.v1.Assessment
	15, // 69: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.AnnotateAssessment:output_type -> google.cloud.recaptchaenterprise.v1.AnnotateAssessmentResponse
	37, // 70: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.CreateKey:output_type -> google.cloud.recaptchaenterprise.v1.Key
	28, // 71: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.ListKeys:output_type -> google.cloud.recaptchaenterprise.v1.ListKeysResponse
	36, // 72: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.RetrieveLegacySecretKey:output_type -> google.cloud.recaptchaenterprise.v1.RetrieveLegacySecretKeyResponse
	37, // 73: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.GetKey:output_type -> google.cloud.recaptchaenterprise.v1.Key
	37, // 74: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.UpdateKey:output_type -> google.cloud.recaptchaenterprise.v1.Key
	65, // 75: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.DeleteKey:output_type -> google.protobuf.Empty
	37, // 76: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.MigrateKey:output_type -> google.cloud.recaptchaenterprise.v1.Key
	35, // 77: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.GetMetrics:output_type -> google.cloud.recaptchaenterprise.v1.Metrics
	48, // 78: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.ListRelatedAccountGroups:output_type -> google.cloud.recaptchaenterprise.v1.ListRelatedAccountGroupsResponse
	46, // 79: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.ListRelatedAccountGroupMemberships:output_type -> google.cloud.recaptchaenterprise.v1.ListRelatedAccountGroupMembershipsResponse
	50, // 80: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.SearchRelatedAccountGroupMemberships:output_type -> google.cloud.recaptchaenterprise.v1.SearchRelatedAccountGroupMembershipsResponse
	68, // [68:81] is the sub-list for method output_type
	55, // [55:68] is the sub-list for method input_type
	55, // [55:55] is the sub-list for extension type_name
	55, // [55:55] is the sub-list for extension extendee
	0,  // [0:55] is the sub-list for field type_name
}

func init() { file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_init() }
func file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_init() {
	if File_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CreateAssessmentRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TransactionEvent); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AnnotateAssessmentRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AnnotateAssessmentResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*EndpointVerificationInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AccountVerificationInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PrivatePasswordLeakVerification); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Assessment); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Event); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TransactionData); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RiskAnalysis); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TokenProperties); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*FraudPreventionAssessment); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AccountDefenderAssessment); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CreateKeyRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ListKeysRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ListKeysResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RetrieveLegacySecretKeyRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetKeyRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UpdateKeyRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeleteKeyRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MigrateKeyRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetMetricsRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Metrics); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RetrieveLegacySecretKeyResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Key); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TestingOptions); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*WebKeySettings); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AndroidKeySettings); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*IOSKeySettings); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ScoreDistribution); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ScoreMetrics); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ChallengeMetrics); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ListRelatedAccountGroupMembershipsRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ListRelatedAccountGroupMembershipsResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ListRelatedAccountGroupsRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ListRelatedAccountGroupsResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SearchRelatedAccountGroupMembershipsRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SearchRelatedAccountGroupMembershipsResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RelatedAccountGroupMembership); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RelatedAccountGroup); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*WafSettings); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TransactionData_Address); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TransactionData_User); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TransactionData_Item); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TransactionData_GatewayInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*FraudPreventionAssessment_StolenInstrumentVerdict); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*FraudPreventionAssessment_CardTestingVerdict); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[4].OneofWrappers = []interface{}{
		(*EndpointVerificationInfo_EmailAddress)(nil),
		(*EndpointVerificationInfo_PhoneNumber)(nil),
	}
	file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[9].OneofWrappers = []interface{}{}
	file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[25].OneofWrappers = []interface{}{
		(*Key_WebSettings)(nil),
		(*Key_AndroidSettings)(nil),
		(*Key_IosSettings)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDesc,
			NumEnums:      12,
			NumMessages:   51,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_goTypes,
		DependencyIndexes: file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_depIdxs,
		EnumInfos:         file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_enumTypes,
		MessageInfos:      file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes,
	}.Build()
	File_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto = out.File
	file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDesc = nil
	file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_goTypes = nil
	file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_depIdxs = nil
}

// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConnInterface

// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion6

// RecaptchaEnterpriseServiceClient is the client API for RecaptchaEnterpriseService service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type RecaptchaEnterpriseServiceClient interface {
	// Creates an Assessment of the likelihood an event is legitimate.
	CreateAssessment(ctx context.Context, in *CreateAssessmentRequest, opts ...grpc.CallOption) (*Assessment, error)
	// Annotates a previously created Assessment to provide additional information
	// on whether the event turned out to be authentic or fraudulent.
	AnnotateAssessment(ctx context.Context, in *AnnotateAssessmentRequest, opts ...grpc.CallOption) (*AnnotateAssessmentResponse, error)
	// Creates a new reCAPTCHA Enterprise key.
	CreateKey(ctx context.Context, in *CreateKeyRequest, opts ...grpc.CallOption) (*Key, error)
	// Returns the list of all keys that belong to a project.
	ListKeys(ctx context.Context, in *ListKeysRequest, opts ...grpc.CallOption) (*ListKeysResponse, error)
	// Returns the secret key related to the specified public key.
	// You must use the legacy secret key only in a 3rd party integration with
	// legacy reCAPTCHA.
	RetrieveLegacySecretKey(ctx context.Context, in *RetrieveLegacySecretKeyRequest, opts ...grpc.CallOption) (*RetrieveLegacySecretKeyResponse, error)
	// Returns the specified key.
	GetKey(ctx context.Context, in *GetKeyRequest, opts ...grpc.CallOption) (*Key, error)
	// Updates the specified key.
	UpdateKey(ctx context.Context, in *UpdateKeyRequest, opts ...grpc.CallOption) (*Key, error)
	// Deletes the specified key.
	DeleteKey(ctx context.Context, in *DeleteKeyRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
	// Migrates an existing key from reCAPTCHA to reCAPTCHA Enterprise.
	// Once a key is migrated, it can be used from either product. SiteVerify
	// requests are billed as CreateAssessment calls. You must be
	// authenticated as one of the current owners of the reCAPTCHA Site Key, and
	// your user must have the reCAPTCHA Enterprise Admin IAM role in the
	// destination project.
	MigrateKey(ctx context.Context, in *MigrateKeyRequest, opts ...grpc.CallOption) (*Key, error)
	// Get some aggregated metrics for a Key. This data can be used to build
	// dashboards.
	GetMetrics(ctx context.Context, in *GetMetricsRequest, opts ...grpc.CallOption) (*Metrics, error)
	// List groups of related accounts.
	ListRelatedAccountGroups(ctx context.Context, in *ListRelatedAccountGroupsRequest, opts ...grpc.CallOption) (*ListRelatedAccountGroupsResponse, error)
	// Get memberships in a group of related accounts.
	ListRelatedAccountGroupMemberships(ctx context.Context, in *ListRelatedAccountGroupMembershipsRequest, opts ...grpc.CallOption) (*ListRelatedAccountGroupMembershipsResponse, error)
	// Search group memberships related to a given account.
	SearchRelatedAccountGroupMemberships(ctx context.Context, in *SearchRelatedAccountGroupMembershipsRequest, opts ...grpc.CallOption) (*SearchRelatedAccountGroupMembershipsResponse, error)
}

type recaptchaEnterpriseServiceClient struct {
	cc grpc.ClientConnInterface
}

func NewRecaptchaEnterpriseServiceClient(cc grpc.ClientConnInterface) RecaptchaEnterpriseServiceClient {
	return &recaptchaEnterpriseServiceClient{cc}
}

func (c *recaptchaEnterpriseServiceClient) CreateAssessment(ctx context.Context, in *CreateAssessmentRequest, opts ...grpc.CallOption) (*Assessment, error) {
	out := new(Assessment)
	err := c.cc.Invoke(ctx, "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/CreateAssessment", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *recaptchaEnterpriseServiceClient) AnnotateAssessment(ctx context.Context, in *AnnotateAssessmentRequest, opts ...grpc.CallOption) (*AnnotateAssessmentResponse, error) {
	out := new(AnnotateAssessmentResponse)
	err := c.cc.Invoke(ctx, "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/AnnotateAssessment", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *recaptchaEnterpriseServiceClient) CreateKey(ctx context.Context, in *CreateKeyRequest, opts ...grpc.CallOption) (*Key, error) {
	out := new(Key)
	err := c.cc.Invoke(ctx, "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/CreateKey", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *recaptchaEnterpriseServiceClient) ListKeys(ctx context.Context, in *ListKeysRequest, opts ...grpc.CallOption) (*ListKeysResponse, error) {
	out := new(ListKeysResponse)
	err := c.cc.Invoke(ctx, "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/ListKeys", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *recaptchaEnterpriseServiceClient) RetrieveLegacySecretKey(ctx context.Context, in *RetrieveLegacySecretKeyRequest, opts ...grpc.CallOption) (*RetrieveLegacySecretKeyResponse, error) {
	out := new(RetrieveLegacySecretKeyResponse)
	err := c.cc.Invoke(ctx, "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/RetrieveLegacySecretKey", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *recaptchaEnterpriseServiceClient) GetKey(ctx context.Context, in *GetKeyRequest, opts ...grpc.CallOption) (*Key, error) {
	out := new(Key)
	err := c.cc.Invoke(ctx, "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/GetKey", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *recaptchaEnterpriseServiceClient) UpdateKey(ctx context.Context, in *UpdateKeyRequest, opts ...grpc.CallOption) (*Key, error) {
	out := new(Key)
	err := c.cc.Invoke(ctx, "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/UpdateKey", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *recaptchaEnterpriseServiceClient) DeleteKey(ctx context.Context, in *DeleteKeyRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
	out := new(emptypb.Empty)
	err := c.cc.Invoke(ctx, "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/DeleteKey", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *recaptchaEnterpriseServiceClient) MigrateKey(ctx context.Context, in *MigrateKeyRequest, opts ...grpc.CallOption) (*Key, error) {
	out := new(Key)
	err := c.cc.Invoke(ctx, "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/MigrateKey", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *recaptchaEnterpriseServiceClient) GetMetrics(ctx context.Context, in *GetMetricsRequest, opts ...grpc.CallOption) (*Metrics, error) {
	out := new(Metrics)
	err := c.cc.Invoke(ctx, "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/GetMetrics", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *recaptchaEnterpriseServiceClient) ListRelatedAccountGroups(ctx context.Context, in *ListRelatedAccountGroupsRequest, opts ...grpc.CallOption) (*ListRelatedAccountGroupsResponse, error) {
	out := new(ListRelatedAccountGroupsResponse)
	err := c.cc.Invoke(ctx, "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/ListRelatedAccountGroups", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *recaptchaEnterpriseServiceClient) ListRelatedAccountGroupMemberships(ctx context.Context, in *ListRelatedAccountGroupMembershipsRequest, opts ...grpc.CallOption) (*ListRelatedAccountGroupMembershipsResponse, error) {
	out := new(ListRelatedAccountGroupMembershipsResponse)
	err := c.cc.Invoke(ctx, "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/ListRelatedAccountGroupMemberships", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *recaptchaEnterpriseServiceClient) SearchRelatedAccountGroupMemberships(ctx context.Context, in *SearchRelatedAccountGroupMembershipsRequest, opts ...grpc.CallOption) (*SearchRelatedAccountGroupMembershipsResponse, error) {
	out := new(SearchRelatedAccountGroupMembershipsResponse)
	err := c.cc.Invoke(ctx, "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/SearchRelatedAccountGroupMemberships", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

// RecaptchaEnterpriseServiceServer is the server API for RecaptchaEnterpriseService service.
type RecaptchaEnterpriseServiceServer interface {
	// Creates an Assessment of the likelihood an event is legitimate.
	CreateAssessment(context.Context, *CreateAssessmentRequest) (*Assessment, error)
	// Annotates a previously created Assessment to provide additional information
	// on whether the event turned out to be authentic or fraudulent.
	AnnotateAssessment(context.Context, *AnnotateAssessmentRequest) (*AnnotateAssessmentResponse, error)
	// Creates a new reCAPTCHA Enterprise key.
	CreateKey(context.Context, *CreateKeyRequest) (*Key, error)
	// Returns the list of all keys that belong to a project.
	ListKeys(context.Context, *ListKeysRequest) (*ListKeysResponse, error)
	// Returns the secret key related to the specified public key.
	// You must use the legacy secret key only in a 3rd party integration with
	// legacy reCAPTCHA.
	RetrieveLegacySecretKey(context.Context, *RetrieveLegacySecretKeyRequest) (*RetrieveLegacySecretKeyResponse, error)
	// Returns the specified key.
	GetKey(context.Context, *GetKeyRequest) (*Key, error)
	// Updates the specified key.
	UpdateKey(context.Context, *UpdateKeyRequest) (*Key, error)
	// Deletes the specified key.
	DeleteKey(context.Context, *DeleteKeyRequest) (*emptypb.Empty, error)
	// Migrates an existing key from reCAPTCHA to reCAPTCHA Enterprise.
	// Once a key is migrated, it can be used from either product. SiteVerify
	// requests are billed as CreateAssessment calls. You must be
	// authenticated as one of the current owners of the reCAPTCHA Site Key, and
	// your user must have the reCAPTCHA Enterprise Admin IAM role in the
	// destination project.
	MigrateKey(context.Context, *MigrateKeyRequest) (*Key, error)
	// Get some aggregated metrics for a Key. This data can be used to build
	// dashboards.
	GetMetrics(context.Context, *GetMetricsRequest) (*Metrics, error)
	// List groups of related accounts.
	ListRelatedAccountGroups(context.Context, *ListRelatedAccountGroupsRequest) (*ListRelatedAccountGroupsResponse, error)
	// Get memberships in a group of related accounts.
	ListRelatedAccountGroupMemberships(context.Context, *ListRelatedAccountGroupMembershipsRequest) (*ListRelatedAccountGroupMembershipsResponse, error)
	// Search group memberships related to a given account.
	SearchRelatedAccountGroupMemberships(context.Context, *SearchRelatedAccountGroupMembershipsRequest) (*SearchRelatedAccountGroupMembershipsResponse, error)
}

// UnimplementedRecaptchaEnterpriseServiceServer can be embedded to have forward compatible implementations.
type UnimplementedRecaptchaEnterpriseServiceServer struct {
}

func (*UnimplementedRecaptchaEnterpriseServiceServer) CreateAssessment(context.Context, *CreateAssessmentRequest) (*Assessment, error) {
	return nil, status.Errorf(codes.Unimplemented, "method CreateAssessment not implemented")
}
func (*UnimplementedRecaptchaEnterpriseServiceServer) AnnotateAssessment(context.Context, *AnnotateAssessmentRequest) (*AnnotateAssessmentResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method AnnotateAssessment not implemented")
}
func (*UnimplementedRecaptchaEnterpriseServiceServer) CreateKey(context.Context, *CreateKeyRequest) (*Key, error) {
	return nil, status.Errorf(codes.Unimplemented, "method CreateKey not implemented")
}
func (*UnimplementedRecaptchaEnterpriseServiceServer) ListKeys(context.Context, *ListKeysRequest) (*ListKeysResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method ListKeys not implemented")
}
func (*UnimplementedRecaptchaEnterpriseServiceServer) RetrieveLegacySecretKey(context.Context, *RetrieveLegacySecretKeyRequest) (*RetrieveLegacySecretKeyResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method RetrieveLegacySecretKey not implemented")
}
func (*UnimplementedRecaptchaEnterpriseServiceServer) GetKey(context.Context, *GetKeyRequest) (*Key, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetKey not implemented")
}
func (*UnimplementedRecaptchaEnterpriseServiceServer) UpdateKey(context.Context, *UpdateKeyRequest) (*Key, error) {
	return nil, status.Errorf(codes.Unimplemented, "method UpdateKey not implemented")
}
func (*UnimplementedRecaptchaEnterpriseServiceServer) DeleteKey(context.Context, *DeleteKeyRequest) (*emptypb.Empty, error) {
	return nil, status.Errorf(codes.Unimplemented, "method DeleteKey not implemented")
}
func (*UnimplementedRecaptchaEnterpriseServiceServer) MigrateKey(context.Context, *MigrateKeyRequest) (*Key, error) {
	return nil, status.Errorf(codes.Unimplemented, "method MigrateKey not implemented")
}
func (*UnimplementedRecaptchaEnterpriseServiceServer) GetMetrics(context.Context, *GetMetricsRequest) (*Metrics, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetMetrics not implemented")
}
func (*UnimplementedRecaptchaEnterpriseServiceServer) ListRelatedAccountGroups(context.Context, *ListRelatedAccountGroupsRequest) (*ListRelatedAccountGroupsResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method ListRelatedAccountGroups not implemented")
}
func (*UnimplementedRecaptchaEnterpriseServiceServer) ListRelatedAccountGroupMemberships(context.Context, *ListRelatedAccountGroupMembershipsRequest) (*ListRelatedAccountGroupMembershipsResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method ListRelatedAccountGroupMemberships not implemented")
}
func (*UnimplementedRecaptchaEnterpriseServiceServer) SearchRelatedAccountGroupMemberships(context.Context, *SearchRelatedAccountGroupMembershipsRequest) (*SearchRelatedAccountGroupMembershipsResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method SearchRelatedAccountGroupMemberships not implemented")
}

func RegisterRecaptchaEnterpriseServiceServer(s *grpc.Server, srv RecaptchaEnterpriseServiceServer) {
	s.RegisterService(&_RecaptchaEnterpriseService_serviceDesc, srv)
}

func _RecaptchaEnterpriseService_CreateAssessment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(CreateAssessmentRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(RecaptchaEnterpriseServiceServer).CreateAssessment(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/CreateAssessment",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(RecaptchaEnterpriseServiceServer).CreateAssessment(ctx, req.(*CreateAssessmentRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _RecaptchaEnterpriseService_AnnotateAssessment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(AnnotateAssessmentRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(RecaptchaEnterpriseServiceServer).AnnotateAssessment(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/AnnotateAssessment",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(RecaptchaEnterpriseServiceServer).AnnotateAssessment(ctx, req.(*AnnotateAssessmentRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _RecaptchaEnterpriseService_CreateKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(CreateKeyRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(RecaptchaEnterpriseServiceServer).CreateKey(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/CreateKey",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(RecaptchaEnterpriseServiceServer).CreateKey(ctx, req.(*CreateKeyRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _RecaptchaEnterpriseService_ListKeys_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ListKeysRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(RecaptchaEnterpriseServiceServer).ListKeys(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/ListKeys",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(RecaptchaEnterpriseServiceServer).ListKeys(ctx, req.(*ListKeysRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _RecaptchaEnterpriseService_RetrieveLegacySecretKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(RetrieveLegacySecretKeyRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(RecaptchaEnterpriseServiceServer).RetrieveLegacySecretKey(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/RetrieveLegacySecretKey",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(RecaptchaEnterpriseServiceServer).RetrieveLegacySecretKey(ctx, req.(*RetrieveLegacySecretKeyRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _RecaptchaEnterpriseService_GetKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetKeyRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(RecaptchaEnterpriseServiceServer).GetKey(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/GetKey",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(RecaptchaEnterpriseServiceServer).GetKey(ctx, req.(*GetKeyRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _RecaptchaEnterpriseService_UpdateKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(UpdateKeyRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(RecaptchaEnterpriseServiceServer).UpdateKey(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/UpdateKey",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(RecaptchaEnterpriseServiceServer).UpdateKey(ctx, req.(*UpdateKeyRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _RecaptchaEnterpriseService_DeleteKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(DeleteKeyRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(RecaptchaEnterpriseServiceServer).DeleteKey(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/DeleteKey",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(RecaptchaEnterpriseServiceServer).DeleteKey(ctx, req.(*DeleteKeyRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _RecaptchaEnterpriseService_MigrateKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(MigrateKeyRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(RecaptchaEnterpriseServiceServer).MigrateKey(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/MigrateKey",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(RecaptchaEnterpriseServiceServer).MigrateKey(ctx, req.(*MigrateKeyRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _RecaptchaEnterpriseService_GetMetrics_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetMetricsRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(RecaptchaEnterpriseServiceServer).GetMetrics(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/GetMetrics",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(RecaptchaEnterpriseServiceServer).GetMetrics(ctx, req.(*GetMetricsRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _RecaptchaEnterpriseService_ListRelatedAccountGroups_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ListRelatedAccountGroupsRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(RecaptchaEnterpriseServiceServer).ListRelatedAccountGroups(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/ListRelatedAccountGroups",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(RecaptchaEnterpriseServiceServer).ListRelatedAccountGroups(ctx, req.(*ListRelatedAccountGroupsRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _RecaptchaEnterpriseService_ListRelatedAccountGroupMemberships_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ListRelatedAccountGroupMembershipsRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(RecaptchaEnterpriseServiceServer).ListRelatedAccountGroupMemberships(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/ListRelatedAccountGroupMemberships",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(RecaptchaEnterpriseServiceServer).ListRelatedAccountGroupMemberships(ctx, req.(*ListRelatedAccountGroupMembershipsRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _RecaptchaEnterpriseService_SearchRelatedAccountGroupMemberships_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(SearchRelatedAccountGroupMembershipsRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(RecaptchaEnterpriseServiceServer).SearchRelatedAccountGroupMemberships(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/SearchRelatedAccountGroupMemberships",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(RecaptchaEnterpriseServiceServer).SearchRelatedAccountGroupMemberships(ctx, req.(*SearchRelatedAccountGroupMembershipsRequest))
	}
	return interceptor(ctx, in, info, handler)
}

var _RecaptchaEnterpriseService_serviceDesc = grpc.ServiceDesc{
	ServiceName: "google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService",
	HandlerType: (*RecaptchaEnterpriseServiceServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "CreateAssessment",
			Handler:    _RecaptchaEnterpriseService_CreateAssessment_Handler,
		},
		{
			MethodName: "AnnotateAssessment",
			Handler:    _RecaptchaEnterpriseService_AnnotateAssessment_Handler,
		},
		{
			MethodName: "CreateKey",
			Handler:    _RecaptchaEnterpriseService_CreateKey_Handler,
		},
		{
			MethodName: "ListKeys",
			Handler:    _RecaptchaEnterpriseService_ListKeys_Handler,
		},
		{
			MethodName: "RetrieveLegacySecretKey",
			Handler:    _RecaptchaEnterpriseService_RetrieveLegacySecretKey_Handler,
		},
		{
			MethodName: "GetKey",
			Handler:    _RecaptchaEnterpriseService_GetKey_Handler,
		},
		{
			MethodName: "UpdateKey",
			Handler:    _RecaptchaEnterpriseService_UpdateKey_Handler,
		},
		{
			MethodName: "DeleteKey",
			Handler:    _RecaptchaEnterpriseService_DeleteKey_Handler,
		},
		{
			MethodName: "MigrateKey",
			Handler:    _RecaptchaEnterpriseService_MigrateKey_Handler,
		},
		{
			MethodName: "GetMetrics",
			Handler:    _RecaptchaEnterpriseService_GetMetrics_Handler,
		},
		{
			MethodName: "ListRelatedAccountGroups",
			Handler:    _RecaptchaEnterpriseService_ListRelatedAccountGroups_Handler,
		},
		{
			MethodName: "ListRelatedAccountGroupMemberships",
			Handler:    _RecaptchaEnterpriseService_ListRelatedAccountGroupMemberships_Handler,
		},
		{
			MethodName: "SearchRelatedAccountGroupMemberships",
			Handler:    _RecaptchaEnterpriseService_SearchRelatedAccountGroupMemberships_Handler,
		},
	},
	Streams:  []grpc.StreamDesc{},
	Metadata: "google/cloud/recaptchaenterprise/v1/recaptchaenterprise.proto",
}
